Folder Patch
This tiny utility will compare and sync two folders. It can find any new or modified files and put those in a zip file, thus creating a patch.
This patch can then be applied to the base folder, or a copy of the base folder, to replicate all the changes.


Why did I create this?
I have spent a lot of time working on We often create publishes that are deployed on remote server.
A complete publish of a business applicaiton can at times be huge. Sending all the files always isn’t the best way around.
The problem with sending incremental publishes often though is that it is prone to human error.
Yes, there are tools like winmerge that can tell you which files have changed but that still needs human effort to put the changes together.
I believe that comparing two folder for changes, creating a patch and applying the patch are all mechinical jobs.
To this tiny utility that will compare two folders, find the changes and give you a patch.
You can apply this patch anywhere you want, to patch the local folder or to mail the patch to be applied at a remote location.

How to use it?
1. Creating a patch:
The folder that you want to patch is the base folder.
The folder that you want to have in the end is the target folder.
After you have selected the base and target folders, specify where the patch should be stored.
Click “Create Patch”. You should get a message, “Patch file created successfully”.
Voila, you have a patch.
If you want to verify the changes, you can open this patch(a zip file) and see the changes.

2. Applying a patch:

The folder that you want to patch is the base folder.
Select the patch file.
Click “Apply Patch”. You should get a message “Patch applied successfully”.

This is open source, and under active development.
You can visit the project at:
You can download it from:
If you wish to contribute to it, feel free to leave me a message. I will add you in as a developer.



needs time.

If all your energies are dedicated to just completing a task, you will almost always decide to do it a way you know for sure will work. To innovate; to find better, simpler, faster, or more elegant solutions, one needs to have time to think about the problem at hand. Innovation needs you to experiment, have time to make mistakes and recover from them.

Naturally no one has infinite time to solve a problem. But if you are very hard pressed for time, processes will stagnate. Innovation will almost come to a stop. I believe that one should always be pursue innovation. That means that one should always have more time alloted for a task than strictly necessary.

The road to innovation is not by thinking out the best way. But by experimenting on several alternatives. Making the mistakes along the way. And learning the lessons forever.

Keep experimenting. Keep innovating.

Never work under a dumb boss


I am sure all those working normal jobs have at some point cribbed about how dumb there bosses are. No boss can be dumber than one who wastes the time of his team. There are several ways to waste time. I will not elaborate on those here. If you get a dumb boss, move on. Smart people are hard to find, but they are always good to work with. Hunt such smart people and work with them. Forget the rest. Respect your time. Someone who doesn’t respect his own time, and doesn’t care about yours; is wasting your life.

It is just your very immediate boss that matters. How do you know if you are working under someone dumb? Well, I am sure most of you can tell, but still: someone who wastes you time in needless tasks, isn’t confident in the skills of their team, takes all credit for things that go right, and blames the team for everything that goes wrong. The easiest way to find someone unfit as a boss is if the person doesn’t take responsibility for his team.

Keep meetings short


“Meetings are the best way to kill productivity and crush creativity so keep ‘em short.”

I read this on a blog post today, and couldn’t agree more. Why? Well I have wasted a lot of time in unproductive meetings lately. They have wasted my time, wasted a lot of energy and as for creativity; as a result of those last few meetings I have come to believe that: The creativity of a group in a  meeting comes down to that of the least creative amoung the group, maybe even lower…

Sadly meetings cannot be totally done away with. You will surely find a lot of sites that will give you a lot of good ways to conduct meetings. But I prefer them short. Set a finite time so that you don’t get carried on. Communicate what you need to. If something needs to be talked out, and you run out of time, schedule another meeting, the next day if possible. This will give everyone involved a lot of time to think about what they have to say. Should avoid beating around the bush. Ranting away your thoughts in a meeting will very often waste the time of everyone involved.

Yes I know that short meetings and rescheduling is not always possible. But when possible, it will help a lot by increasing the intellectual thought put into the ideas to be discussed in the meeting.

And I am back!


Yes, I have been gone long. Given how the web works, I doubt if ppl are still reading this site. So for the blog, this is a new start. I love expressing my ideas in words, and will always do so, talking to a friend, chatting on some IM or here.

Q: Where have I been?
A: A lot of places. Amsterdam, Antwerp, Brugge, Brussels, Cologne, Dinant, Paris.

Q: Was that a vacation?
A: No. I was working in Antwerp, for AXA. It was a nice place to work.

Q: Did I learn dutch or french?
A: I did not. Most of the people of Antwerp speak english, so I managed just fine. I did learn a few words and phrases though.

Q: Will I be going again?
A: No. I quit that job. Joined a startup Finacus, that makes financial products. Learn’t C# there; using it to develop a RAD framework. Its fun to be working with friends here.

There will be a lot more blogs, rants, cribs here soon…

The more problems you face, the more you learn


Yesterday was one of those days when a lot of things went wrong. An investigation into the exact cause of what caused the trobule taught me a lot of things I was not aware of earlier.

Often when things run the way they are supposed to, no one is bothered about how they run.
When you flick a light switch you expect the room to be lit. No even thinks at that moment the number of things in the background that need to be just right for it to turn on.
You need to have power-supply. There needs to be a particular minimum voltage. Your bulb needs to have a proper filment… if you really want to think more… the bulb needs to have an inert gas in it and all..Do we even have the time to think of all this every time we put on a switch?!

You know what the problem with problems is?! Some people learn from their problems, some people just don’t. You can solve your problems yourself. Or you can look for an easy way out. Lets take the same example: The bulb in your room does not turn on. You would probably check your power supply(I am assuming any human would do this basic check before accepting that the bulb does not work). Now you have a choice, you can find why there is no power… or you can take the easy way out; just call an electrician, and he will do it for you. If you call an electrician you learn nothing. Then there are those times when you are left without much of a choice, like my case. When the electrician is just not available. You could live without the bulb, which would be really messy. Or you could call it a bad day and get down to solving your own problems. In the process you learn what an electrician does.

Learning from other problems is like studying history. Its really good to know it… I don’t dispute that. But it is so damn boring. But solving your problems… your own way; is fun! It feels great when you pull yourself out of a mess. Now historians will tell you, you could have stayed out of the mess in the first place. But when you goof around, you put yourself in a bigger mess… you learn more. The bigger a mess you are able to pull yourself out of, the better you feel.

Be goofy! Learn more!!

Crazy code


Programming, as I understand it, is something that needs one to solve problems by analytical thinking. But one thing that I have noticed recently reviewing code is that a lot of people code in a pretty haphazard, “just finish it” kind of way. What happens due to this is that, you end up with a lot of crazy code. Crazy code?! Oh, this is not code that won’t work. It will work all right… cause that was the objective from the start right? to get it working. What makes it crazy is that, it present to you the work created by a shut-out mind. Sometimes it feels like the person was almost brain dead or highly doped. Yup! I find no traces of the logical work by a thinking mind.

There will always be those who are no good at programming. Who are just doing a job with no love for the programming and logic that goes behind it. I can’t seem to find a way to help them, but what was more shocking was that, a lot of good programmers too wrote crazy code.  Why?! One thing that totally kills the thinking mind are deadlines set by a non thinking mind. When you work in a services company, and have clients who always want the code ready before they thought of developing it you get mindless deadlines. Yes, you can argue; you can get extentions… But whenever there is a deadline, that leave no scope for a programmer to sit there, think about the situation and decide the best solution, you are bound to find crazy code.

Who pays for it?! Before we talk about who pays, lets see what all costs we are talking about here. I have found that you spend more time writing crazy code that writing well thought out code. Yes it may appear that you are just scribbling on paper when you should be programming… but that saves time. So the first cost comes in extra time spent by programmers. The code is inefficient, so system performance is degraded. User experience will be bad and you are bound to loose value. This code is difficult to understand, debug, modify, fix, maintain… they all add to a lot of extra cost. In the end you will hire more programmers, tighten the deadline, mess up the code even more, and come up with a crappy product. Losses losses losses….

If you are a programmer who wants to avoid writing crazy code, I suggest writing a small plan on paper, needn’t be a complex flow chart or something, but just a few lines of step by step documentation of how you plan to solve the problem at hand. Before this is ready, don’t even start coding. You are bound to miss out a lot of things. This plan is not foolproof, but avoid a lot of logical errors.

If you are someone who sets deadlines…. GIVE YOUR PROGRAMMERS TIME TO THINK!

Code phata!!


I don’t know where and when this phrase originated, or how it came to be part of the indian IT scene. But a very comman phrase that many must have heard of was “code phata”.. Phata is a hindi word, that literally means tear. Now we all know that compueter programs are not written on paper, and it cannot in the normal sense tear. So when does the Indian IT engineer use it?! It is used when the program crashes or throws exceptions. So when someone yells “code phata”, they have found a bug; that causes an application to crash

When I heard it for the first time, I thought it was something that just my programming team used… one of those phrases that a team develops when the work together for a long time, but later I learned that they all had picked it up from previous work places. Being a little inquisitive, I spoke about this to college friends who are now in IT too. And they all had heard it at their workplaces too.I have not been able to trace down the origins of this phrase, but if you are an Indian IT engineer, chances are very high that you have heard it.

Why am I writing about it?! Well, it is not popular enough yet to be included in a dictionary yet… lets say the dictionary of Indian IT slang! But who knows, one day it may just make it. I guess this is how language develops, borrowing from other languages where there is a confluence  of cultures; coined by groups who need new words and phrases to communicate cause the language does not offer simple alternatives. To catch a jargon in the making would be quite cool, isn’t it!

To all you programmers out there, hope you keeping writing great code, and that you don’t hear ppl yelling “code phata”, around you.

I am lazy


I am really lazy… you too should be!
I am really lazy… and who knows, one day civilization may progress due to me!

Did that sound stupid to you? Think again! Those who are not lazy, usually go about doing the same routine tasks daily. And most of them even feel proud about that. It is us lazy ones who bring about change, invent new ways to make our lives easier, and that is how civilization has progressed.

We need to be very clear about one thing here: we all usually have some work that has to be done. There are those “non-lazy” types, who will start right away and slog like a beast of burden till they have it done. But most work is repetitive; the most apparent way may not be the easiest. If you have to move a group of boulders, starting to push them right-away is not the best solution. The lazy types like me spend some time to find a couple of logs that you can roll under them.

Mechanical or routine jobs are meant for machines and should be entrusted to them. If you do the same thing everyday, there sure must be a way to make a machine do it. Of course in the real world this may not always be feasible… but when it comes to computers, you can automate all routine work. That is when it helps to know programming. No I am not evangelizing that you learn programming (it is always good to know it though), I am just saying that, any job needs some thought before you start of. That brings me to the, “I didn’t know” types. Oh, putting logs under that boulder would make it so easy to move it, I just didn’t know. You didn’t think. You didn’t even bother to find out the various possibilities. There are so many innovations taking place every day, you need to be looking out if you want to save yourself of some trouble. There are sufficient lazy people around the world trying to make life easier. Someone may have found a better way to do your tasks.

Ignorance is a crime. Laziness is not. Not to have the want to learn something, not to try out new methods to doing things is to get stuck back in time. But most of the “non-lazy” fellow beings seem to resist any change introduced to them. They love the routine. I simply hate it. I need things to keep changing. That is what makes life lively, worth living. A very common belief is that lazy people don’t change a thing, but it they who make most of the changes that matter.

Now what do you think!! Would you still look down upon laziness? I hope not!!

So, go ahead; be a less ignorant and more lazy and make your life worth living.

Where should I work?


Interestingly, the use of a technical test in interviews can
actually work both ways. In my recent hunt for a new job I
automatically turned down any vacancy where I was *not* given a
technical test. My reasoning behind that is that I know *I* can
program, but do I want to work with *other* programmers who haven’t
been tested?

The harder the test I was given, the more excited I was about the vacancy.

If anyone out there is looking for a new job I urge you to bear that in mind.
James on February 27, 2007 02:46 AM

I found this in the user comment on coding horror. Just something to take note off. Lately a lot of ppl have been asking me where should they look to work. I found this as good advice. I don’t know who the author James is… as there was no link… the name is included here just so that one day I might find out.