Work is going well. I have finished a first pass at a Java code generator for our CORBA 3 implementation. It will probably take another week or so to create all the remaining templates, and then probably two to four weeks to iron out bugs.
I wrote the generator in Python (displaying that well known affinity for one's preferred scripting languge), mostly so I could use the supernifty print-using-values-from-a-hash operator. I know somewhere deep down that Perl is likely better suited to this task, but I really don't know Perl that well.
Development followed the classic Leif Python pattern :
- Write colossal single file with necessary classes and functions from a first glance at problem.
- Realize colossal single file is difficult to maintain and hard for others to read.
- Reanalyze structure of program, split colossal file into smaller files (usually one per class).
- Add functionality to smaller files until they are colossal.
- Go to step 2 for each new colossal file.
I enjoy writing Python programs because I get the opportunity to see the structure of my program evolve. Thanks to Python's fascist indentation policies, I actually get to see the design of my programs in the way they code is laid out on my screen. I like that in a programming language. Also, did I mention that the print-using-values-from-a-hash operator is groovy ?
The other fantastic thing about scripting programs (in general) is their ability to adapt to changing external environments automatically thanks to functions like eval and doing things like executing code over elements of a list. So, for example, in this code generator, a general enough driver class in Python is able to dynamically read values in from code templates and adapt to those values accordingly. Change the template, change the resulting functionality. Want to generate a different output language or add new functionality to an existing output language ? Just write a new set of self-referential templates. No compilation needed.
GStreamer and drumbox
This weekend I spent quite a bit of time working on some things related to GStreamer. In particular, I got a new web site for drumbox whipped up, and I started moving code from the old drumbox libs into the playondemand filter. wingo suggested I look in to making a GInterface for a sequencer element, so I think I will take a look this week.
The app will still take a while to program, at least several months, but I am looking forward to it now. After reducing the scope of the drumbox interface itself, the project is looking much more feasible (and easier to debug).
Fonts and the Gnome 2 desktop
I finally figured out how to get the fonts I want (i.e. Verdana) using my Debian Gnome 2 desktop ! I had to add
dir "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"to my /etc/X11/XftConfig file. Things now are looking really good.