There has obviously been a gap of four week-ends in the documentation of progress
Unfortunately I am more of a programmer than a writer, and it’s very difficult for me to stop coding and start writing…
Anyhow, tonight I forced myself to sit down and spend a bit of time to summarize what I have been doing during the past 4 weeks, what’s left to be done and to discuss if there are any news.
During the past four weeks I spent most of the time working on Table Diff, making sure it does what it says on the box. There were a few things that I was worried about, including:
- Automatic updates;
- Error handling and reporting;
For what concerns automatic updates, at the very beginning of this project I thought the application would not need such a feature. The application would not need to check if a new version was available. However, this decision put a lot of pressure on me in trying to make sure no bugs could be found in the first version. Obviously, I soon realized that it would be easier and safer to include a “check for updates” feature rather than going crazy tring to find out even the tiniest bugs.
So, now the application silently checks if a newer version is available. If so, it asks the user if he wants to update. Table Diff is pretty light (approximately 5 MB at the moment), therefore the update should be quite fast (I guess most people will download and install the update in less than a minute).
The “check for updates” functionality also makes me feel a bit safer. If someone finds a major bug, I can just release a new version with a fix to that bug, and hopefully most people will not be affected by the bug. I now feel that ALL desktop application should have this feature. It’s so useful!
Next, I worried about error handling. I want to know what problems the users are encountering, so I can fix them. However, people do not always have time to spend to send you detailed error reports indicating the scenario in which a specific bug can be reproduced. So, I decided to put a good bit of effort in devoloping an error-handling mechanism that will catch the most important details about an error (e.g. the stack trace) and will ask the user if he would like to notify Volpet Software about it. This is currently under development, but I guess it will be ready soon
Today I completed working on the Volpet Software logo. I have done it myself. I really did not feel like spending 500 Euro and risking not being happy with the work. If the company will go well, then I will definitely get someone to improve it. However, for the time being, it does the trick. Designing this logo took around 3 or 4 hours. Hopefully by tomorrow night I will have the Table Diff logo ready as well. The idea at the moment is to have a box with two tables in it, two arrows indicating data flowing between the two tables, and the text “Table Diff” on the right of the box. Simple enough, but it might prove challanging for me.
For the design of the logo I am using the Gimp. It’s the only graphics editing program I can handle, and Photoshop is way too expensive (again!) for what I need to do.
The big news: I plan to release the first version of Table Diff on Sunday the 1st of November (2009!)
It’s a very tight schedule, but I will try. I profoundly believe in Parkinson’s law “work expands so as to fill the time available for its completion”. I feel that having a tight deadline allows me improving productivity and allows me to focus on what’s important. There’s no time for stuff that’s not important!
To improve productivity, I have also started doing something that I’ve never seen anybody else do. Whenever I start a new task (e.g. fix bug #123), I write down on a piece of paper the exact time in which I start, and then when I finish I write down the total number of minutes (or hours) it took to finish. This challanges me to do what I need to do as fast as possible, without getting distracted with other things. It’s very easy to get distracted when you start googling for things. So.. this seems to help out. Give it a try
I am planning to discuss Table Diff in my dissertation (yes, I am doing a masters). I am currently evaluating if I could discuss the algorithms side of it. It would be interesting to make a performance (e.g. speed or memory utilization) comparison between the leading products and see which one is the best. Then make Table Diff the best one, and discuss in the dissertation how I achieved that. Obviously it’s an ambitius project, but heck, I guess I could give it a try
Now, what’s next?
- Complete error handling solution;
- Design the Table Diff logo;
- Complete the setup program using Inno Setup;
- Develop a simple form to collect the user email address when he downloads the trial, so that I can ask him for feedback later on;
- Do some performance fixes;
Ohh, I forgot to mention that this week I tested the comparison algorithm against two tables with 2,000,000 records each, and worked like a charm. It took under 10 seconds to compare the two tables. I was quite happy with the results. The tables had only 4 columns each, but I guess that the performance is already acceptable.
Good night, and stay tuned! I’ll try to post more regularly!