A few of us at work are working on a fairly sizable equipment control application. Because various pieces of the equipment are pluggable and a single piece of equipment can actually perform several different tasks, we broke the equipment down in terms of interfaces. So far, that has been a great decision… until yesterday.
I must preface this with saying that I don’t do much Java work. Perhaps it’s more friendly for a different domain of work, but at least for me I find that it’s overly complicated to do simple things.
So, I just finished reading the The Book of Qt4 and it has almost convinced to do more C++ programming again. I say almost because there are Python binding for Qt4, so I’ll just use Python instead. However, I did sit down and write several simple applications with it and I must say it is the most well thought out, well designed C++ library I have ever seen. I’ve written several X apps (Motif), MFC, wxWidgets, and several other apps using some obscure toolkits and I must Qt4 is absolutely the best GUI framework I’ve ever seen. The signals and slots paradigm is awesome and exactly the loose coupling that GUI developers need. I wish Java had something similar… I could definitely use it on a project or two right now.
Several of our projects have grown to the point where the test suite and/or the full suite of builds has become time consuming. Moreover, we’ve been faced more and more with the need and desire to have a set of “official” builds that we use for testing. The current scheme of embedding the version number in the binary doesn’t include enough information to let a tester know where the binary came from. That includes which developer as well as which revision of what branch in the source tree. So I finally got a build server cobbled together (actually two: one for Windows and one for Linux). Myself and one other co-worker did a pretty exhaustive survey of build servers and finally settled on one: Quickbuild. We did so mainly because it seemed the easiest to configure, authenticated against Active Directory, and could support multi-platform builds.
I just got finished reading an interesting book call Beautiful Code. The editors sought out a number of developers and asked them to author chapters about what they felt was the most beautiful code they had seen. Karl Fogel, of Subversion fame, had a chapter about Subversion’s delta editor (congrats to Karl!). There were some interesting stories about some optimization techniques, testing, and even style. But that one that stood out the most was the final chapter of the book: Writing Programs for “The Book” by Brian Hayes. That chapter wholly lined up with my vision of beautiful code. In the chapter, Brian states: