Unittesting Vs Unittesting

I have read a really good article at
http://blog.wekeroad.com/blog/my-enemy-my-self/
I is really interesting, and indicated lots of thoughts in me, I think the unittesting is an essential and a must have in every software project, but the way you implement it DOES matter. I am developing a little framework and started it without unittests, after I have written all the unittests to the top level classes, it helped a lot. When something went wrong at the lower level of hierarchy I was able to debug it and find solutions for the upcoming problems in an easy way. It came I started to write the unittest of te low level classes, and started a bigger refactoring as well, it took a long time, much longer if I haw written all the unittests at first, BUT the problem is if you write unittest too soon may tend to start the "refactoring" too soon and has no results, just tests that doesn't satisfy your customers.

It looks simple to write good and practical unittesting, but it takes time to have the skills and a good and healthy view on it.

A little hack of file permissions recursively

Sometimes it is essential to change file permissions except the directories, here is the solulution:
find . -type f -print0 | xargs -0 chmod u-x

enjoy it.

little research on recent Version Controll Systems part2

There was some buzz in my head and I took a closer look at the part that I hadn't. Yes it was the Bazaar. I can tell you git is super-fast, and a really good and mature system, but developed for Linux an *nix like systems. Windows is not officially supported, however I can tell you it is really usable. And it has got a disadvantage over Bazaar that cannot correctly follow the renaming of the tree items. Bazaar developed in python because of this that supports windows naively. I am not a windows fun, but if your company is you can't use other systems.

I have two actively developed projects, one of them is on Windows, and the other hacked from Linux and Windows. Both has a smaller team, and we migrated toBbazaar at the development machines and both uses Svn on the server side. On the last mentioned we decided to move to Bazaar completely, and everybody loves it, compared to the Svn in the client side it is really easy to create, and merge branches. It has got several gui-s to manage your bazaar branches, but believe me the command line is still superior, and quite easy to manage your versioning related jobs. I definetly positive about that to if someone migrates from Svn to Bazaar it 'll be fun and not a problem. Some example lines the ones who are still in doubt.


If you are familiar with svn it wont't be a problem
bzr co svn://path_to_your_project

If it is an svn project that won't be a problem for the bazaar too:).
bzr co https:// path_to_your_project

If you stand in a Bazaar repo and you say
bzr commit --local
Yout bazaar will commit your changeset locally, and won't touch the server, if you do it several Times after each other, and someone has commited into the central repo you just say:
bzr update
bzr commit

The magic just happens and your local changes merged with the central repo and your changes ar on the server. Bazaar knows exactly where drom your branch comes from therefor it does not makes conflicts only if it is really needed.

The big big plus that it is working if you are offline too. You have the whole repo with yoursef and ar eble to look back and find something in your older revisions.

Releasing a new project under a free license.

I have developed a little framework for GWT, it's biggest feature is the easy form/table creation and validation, the project possible name is GWTFormAllIn. you can create any kind of forms with it on horizontal and vertical layout , it has a really flexible input model, so you can create any kind of inputs to it, it is ready to use , but it is not complete.
The highest classes on the hierarchy are unit tested, but the remaining approx 100 classes are not there would be a lots of thing to refactor (as always if your project is in change), it is a really hard thing to let it out of your hands and show it to the public. I fell that it is impossible to make it mature without others help, but i don't wanna be too fast, on releasing a project that is not the best :) (I hope you know what I mean), this paradox won't kill me and I am really positive to release it soon.
This step possibly will force me tho rethink it, and move it along a direction that was not in the plan, but as I am writing this message getting curious.
When I release it i have a few possibility to publicate it, but there is 2 on my mind that I would use
  1. code.google.com
  2. github.com
So there are a lots of crossroads, an you decide when, and witch way to go, I think there are no bad or good decisions, but you must start, because waiting for the sing from the heavens is not always the best solution.

little research on recent Version Controll Systems

In this days i had the opportunity, to get deeper in version control systems. Recently I use SVN for this task but it has the week points, and I think it is good to look around, i started to read thebook called Version Control with Git. It is a really good book to get introduced into the topic, butthere are some more distributed visioning systems too. I think it is the best thing to do is to readmore about them. So I read about
  • Git
  • Bazaar
  • Mercurial
I know, there are lot more solution for that purpose, but I had to select from them. I found some video resources as well, I gonna share it with you.
The following is a good intro into git:

This is an old, but a nice description on mercurial:

I had no time to review the any videos on bazaar, but it is the part of the GNU project, I think it is a good point for this project, and has a really good documentation, so it is worthy to spend a few minutes on it's site.

I think the future of the Version Control Systems is on the distributed way. Of course I cannot serve any conclusion for anybody, but I can say, Git is worthy to use it on some sample projects, and i'll be happy with it. I tend to that one of the most outstanding feature of the system of ti's extraordonary merging and branching mechanism, and the debugging feature called "bisec", if you are interested look for it, try it int the distributed way, and have a nice journey

No conclusion, and at the end some subjective perspective, take care!