Syncing reports between our testing and productions environments was always a hassle.

SSRS provided no easy means for this. Here is a tool I developed the easy the task.

It has become quite popular since I first uploaded it last year.

There are a lot of features still pending to be developed.

Still here it is:


  •  Sync reports between two SSRS servers
  •  Download rdls from SSRS to local PC
  •  Upload files to a SSRS server
  •  Attach datasources automatically on upload(Data source name given in the report must

Getting started:

You only need to tell reportsync the reportserver url of your ssrs server.
And give it a user credentials to log on to the server.

If you are not sure what your reports url is, you can find this in your Reporting Services Configuration Manager.

Here is what it looks like:




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.

Startup advice.


Don’t count on donations is my advice.

Selling consumer software: very tough, but can be done by one individual.

Selling to businesses: very specialized, much easier to make your first $100K, but you can’t be a one-man shop.

I found this advice in a comment on hacker news. I would say, I do agree with it.

Python is awesome


pythonPython is an awesome language. The objective of a programming language is to instruct the computer what you want it to do. Ideally, the lesser instructions you need to give, the better the language. What makes python awesome is not just the ease of programming or readability but the availability of a large number of really useful libraries. You can get directly to what you want to do, and let the machine bother about the rest.

Let me give you an example: Say you want your computer to read out all the post from an RSS/atom feed. Just put together a few lines of code as follows:

import feedparser;
import speech;
import sys;

feed = "";
if len(sys.argv)==2:
	feed = sys.argv[1];
d = feedparser.parse(feed);
for e in d.entries:
        print e.title;
        print e.description;

If you wish to download python you can get it from the official python download page. A lot of flavors of Linux would already have it installed.

You will need the libraries feedParser (To read RSS/atom feeds) and pyspeech(To read out the text). These are not part of python by default. You can download them, or install using easy_install. Here is some very good documentation on easy_intall.

All hail John Resig


John Resig is the creater of jQuery. jQuery is java-script library. What makes it really wonderful is that it lets you do a lot of dom modification is just a few lines. Additionally most of the cross browsers issues are taken care of by the library. That means you spend more time doing what you want.

No. This site does not use jQuery. But I use it at work, and find it awesome. If I am to redesign jQuery will surely come handy.

Everyone should know programming…


Since computers first appeared, they have gone on to make human life better and easier. What troubles me is that still only a handful of people can really tell a computer what to do. Yes we are way better than a few years ago; but still a lot of people don’t know how to harness the power of a machine to solve their problems. Make their day to day life easier.

There will always be those who know tools better, and can solve problems faster. But if the commoner was able to instruct a computer how to solve a problem, we would be much better off. What keeps the commoner away? Computers still cannot understand natural language. We can reasonably state that it will be a long time before they can understand natural language instructions and code for themselves. However as languages improve and allow people to specify instructions at a much higher level, giving the instructions should be easier. I hope this enables more people to program.

The other remedy to the situation is that we learn to speak the language of computers. Fundamental programming logic should be a part of school education. Just as kids learn languages to talk to other humans, it is necessary that they know how to talk to computers too. What do I mean by fundamental programming logic? Anyone who understands programming in one language, understands how to communicate with a computer. It is then no big deal to learn programming in another language. Just a matter of picking up the syntax.

Why is this knowledge needed? Machines are better at solving certain types of problems. Excellent candidates to carry out repetitive tasks. But people who are oblivious to the world of computers and programming, often don’t realize the many ways in which these machines can help them. As a result a lot of things that can be automated are still waiting for someone who understands both the task and computers to automate the process. Tell the machines how to do it once… and no one will have to waste their time doing it in future. To make that future happen, everyone should know some programming.

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.