April 15th, 2008
My aviation logbook project, Sqlpilot, recently become usable (for me). I was able to turn my old data into CSV with plenty of grep, sed, awk, sql, manual labor, trial and error, and luck. Sqlpilot is a C program linking to gtk and sqlite. Using a relational database feels like the right way to manage a logbook and I now have a whole new view of my flight log. I've been querying things like average leg time and distance for specific aircraft, number of days with over eight hours of flying, number of approaches flown grouped by month, total time in each aircraft and type, and other interesting trivial things that I would have never known had I not started this project.
I actually moved it into production without realizing it and my changes quickly became incompatible with the database schema I was using to record my time. Problem was, some of those changes fixed bugs so I had good compatible changes mixed with incompatible ones. I'd read that ad-hoc merging was a strength of git so I imported my svn repository into git and started pulling the good changes from different commits into the working directory. There is no need to explicitly tell git the changes represent a merge. It's like being able to do svn update/revert to set parts of the working tree to different versions and then commit. If I rolled back part of the working tree to an old revision in subversion without explicitly using a merge it would fail to commit. Git doesn't care where changes come from so it works. The way git handles branching is pretty neat too and IMHO it makes subversion's branching look like a clever but inelegant hack. The other neat thing is that I was able to do this in the back of a jet while on my way to work. Storing version history locally is really nice for traveling.
The interface needs work and I have a list of things to change under the hood but it's usable on my laptop. I've run it in the maemo environment for the Nokia handheld but it really needs a new UI for a small screen. Thanks to glade and gtk-builder that will be easy to do. A few screenshots follow.