Well we’ve been here for over a year now. Although I’ve had the occasional rant or travelogue, it’s mostly been concerned with my “hobby” programming. My State of the Blog follows.
I was thinking about my various projects and feeling a bit guilty. I have lots of ideas but I’m pretty lazy about developing them. Sometimes I get home from my eight hours at work and just blob out instead of programming or blogging!
Part of the blogging experiment is to see if it impels me to make progress on things. The theory is that, instead of working on something and then deciding to document it, I will envisage a nice post and then have the motivation to create something worth documenting. There is a pull relationship between the two activities, rather than a push one.
Here is a summary of my current projects. Not all have been mentioned on the blog, because I’ve been too lazy even to get that far with them. ;-)
Higher-level C (panic/procrastinate). A couple of things in draft, and a long list of possible topics. How much material I thought I had when I drew that up! I have become a (IMHO) better C programmer in the last year: applying higher-level patterns in the fractal and compiler projects. Can that translate into an article or two?
Gravity simulation (procrastinate). A few refactorings to be made. There are techniques to apply here that I picked up working on fractal, not least among them the use of OpenCL. (Examples of OpenCL N-body implementations exist; there are some clever tricks to optimising them given the peculiarities of GPUs. Whether Barnes-Hut will be as straightforward remains to be seen.)
Cloth simulation (plan). Only an old animation exists, so I need to write it from scratch. Some ideas on how the physics will work. I also bought a massive textbook on “fluid dynamics” which may help somehow (though perhaps more for my upcoming cloud simulation).
Compiler (ponder/procrastinate). Currently broken! The register allocator started making things complicated. There are some lower-hanging fruit (type checking is close to the head of the queue). But it’s all a bit theoretical unless the allocator can be made to work again.
File system (procrastinate). A good first real attempt in the subject area. But it’s useless. Time to apply the experience to something practical?
Network and bridges logic games (procrastinate/polish/publish). They work, they’re even fun, they just need GUIs.
QuantCup entry (ponder). I did not do any further optimisation since qualifying as a mere “enthusiast”. And the winning entry was significantly faster — I’d like to see their code. Presumably we can look forward to QuantCup contest #2 at some point.
Backups (procrastinate). In the early days of the blog I started a couple of drafts explaining the NTFS Journal and how to use Hardlinks and Symlinks for backups in Windows. Still unpublished! But that’s what’s keeping my files backed up. No offsite backups apart from Google Code yet — Dropbox looks too primitive and dumbed down for my tastes.
Start Control 2 mod (participate). The other guys have continued to work hard. I have phases where I help out a bit. Lately it looks like we’ll be implementing a dialogue scripting language. My proposal for this is quite simple and might not be accepted.
Version control (ponder). I’m actually pretty happy with Subversion and Google Code now. And I even use their issue tracker (as a place to accumulate tasks that I have every intention of one day, eventually, getting round to).
PostgreSQL (procrastinate). A little over a year ago I began working on Loose Index Scans for PostgreSQL. Lost track a bit when they changed their Git repository and made mine an orphan. The powers of the PostgreSQL planner and optimiser have continued to improve with every release though — this could be obsolete before I get a first draft working.
Music synthesis (ponder/procrastinate). Have at least been typing in the remaining notes from the BWV 565 Fugue. When that’s done, I can do some analysis. Also began “reverse engineering” the Rudorff chorales. One of the goals of that is to learn the harmonic characteristics of an organ. Bigger than both of those is the implementation of a new musical notation, though. I’ve made a few false starts (involving some Lispy ones), but I’m still on the drawing board there.
Reviews (procrastinate). It took me over a month to write the Mass Effect review. I haven’t finished any other games or books in that time. I’ve hardly seen any movies or TV either. I have listened to some new music, though.
Hardware (procrastinate/plan). Cooling (or more properly, the consequent fan noise) is still outstanding on my awesome (but increasingly obsolete) six-core Phenom II. I’m thinking more and more about water cooling. Is it worth the risk? Remember to apply the Edmund-specific risk adjustment factor of 300%.
Python code analysis (polish/publish). This works pretty well and makes nice pictures. I’m not sure it’s helped me refactor the diabolical RVML generator yet.
Snowflake (procrastinate/polish). Hey, it works. It just doesn’t do much.
IRC Bot / NL parser (procrastinate). Written a couple of months ago, but not heading in any direction since I can’t think of anything useful for it to do. It kind of parses English sentences and draws pictures of them, though.
Is it a problem of having too many projects on the go? Too many interests, even? (People have previously scoffed at my claim to having a moderately wide range of interests — but I wonder if they were mistaking a mere lack of completion with unenthusiasm…)
This year, I think I should stop starting new projects and try to finish a few of these. Or at least put them out of their misery, starting with the File system. I suspect, however, that the most satisfying way of doing that is to start work on a sequel.
It seems clear that blogging is not quite keeping up with my projects. So, the first tasks should be to write about some of the outstanding items: the compiler, the IRC bot, the backup system, and the Loose Index Scans.
And don’t forget to publish another article on Higher Level C. D: