Christmas, Christmas, Christmas

What a year! Now that I am about to leave for my holiday I am looking back at how things have gone the last year and, on balance, I am pretty pleased with how everything has turned out. Sire has taken a lot longer to develop than I thought (isn't that always the case!?), though the reasons for the delays have been worth it; e.g. dumping NetObjects in March was, in hindsight, one of the best design decisions I made, and writing SireCAS has brought so many benefits, many of which I am only now beginning to exploit (check out the function code in SireFF - and wait until you see the Monitor and GeneralRestraint classes that are in the pipeline!). Perhaps the biggest change though was the shift over to self-managed objects, in particular the shift to self-managed, implicitly shared objects. That changeover was very painful, and cost a lot of time to implement, but again the benefit from the change was a much more consistent framework and a very strong structure from which I can now start building the fine-art implementation of the code. I am very happy with how this shift has completely simplified the networking and state monitoring in the code, and, albeit my own biased opinion, I think that my Monte Carlo implementation is the most elegent and beautiful Monte Carlo implementation that I know (the proof of this is the huge efficiency gains that were made in InterCLJFF, and the huge simplification of the forcefield API).

During this year I have learned a lot of new programming techniques (assertation based programming, promise-based or lazy programming, duck typing etc.), and the design of Sire has evolved as I have cherry picked what I liked from each of these styles. Perhaps that is why I enjoy coding in C++ - it is a multi-paradigm language that is sufficiently flexible to accomodate a range of styles. I still feel that I am still learning how to program, and I doubt that I will ever believe that I know everything.

The size of the Sire code base has grown significantly this year, with nearly 500 subversion commits (about the same as last year - I am now on commit 961, including the old repository - maybe I should have a party for commit 1000?) and over 90k lines of code. There will be some pruning of some parts that I know need changing, but I think that the beta release will be close to 150k! Big changes that I see next year are the move to gcc4.2 (which promises better optimisations and openmp support), greater use of CMake, moving Sire to depend on Qt4.2 and my move back into writing MPI code. SireLog, which has been on the drawing board for several months now will eventually be implemented, and perhaps I will get Spier working again..? (it is still broken from the shift over to the new Molecule design). The biggest change however will be the explosion of applications - now that the design and foundation of the code is becoming stable, I can finally start writing all of the algorithms and applications that will make Sire useful. I've always held back from adding functionality to the code as it is difficult to maintain while the core is under development (maintaining Spier was difficult enough!), but now that the core is becoming solid, I can begin to forge ahead. In many ways I see writing a code to be like building a skyscraper (or shopping centre - especially relevant for Bristol residents at the moment!). Absolutely forever is spent digging the foundations and making the skeleton, during which time everything just looks like a bomb has hit it! Even when the skeleton is complete, forever is then spent on the brickwork, electrics and plumbing, and things still look like a mess. However, once all of that is done, an almost miraculous transformation occurs when all of the plastering, fixtures and fittings are put in place, and it is then that the building looks nice. I have only now really finished the foundations of Sire, and am still constructing the skeleton. Next year I hope to complete the electrics and plumbing. It will be 2008 when I will worry about making it look pretty... :-)

Time now for me to go and get my bus. I will probably not be touching a computer again until 2007. I want to wish everyone I know a very Merry Christmas, with best wishes for an excellent 2007. I have a good feeling about next year - its going to be a fun ride!