In April I am co-hosting a German-language Ruby on Rails workshop in Munich, Germany. If you're interested in coming along, now's your chance to book a place before it's too late.
In keeping with my tradition of posting here approximately once per year, I'm going to note for posterity what I've been up to in recent months.
In the last year I have divided my time between lucrative consulting clients and unpaid work on my own business. My clients often hire me to help out on projects built primarily in Java; my theory is that rates for Java-related work outstrip those for other languages because they include "mental health danger money" that is required to compensate for loss of brain cells and pulled-out hair.
The greatest danger to a highly pragmatic consultant is the presence of Enterprise-minded "Architect" types. The cult of Deep Knowledge surrounding - and cultivated by - these over-serious individuals hinders the consultant's goal of just doing what is most appropriate. These types are characterised by the monotonically increasing complexity of their codebases, and their stressed response to requests for business-driven changes.
In contrast, bootstrapping my own business pays poorly but affords me the luxury of freely choosing and optimising my toolset, along with the satisfaction of moving faster and getting feedback sooner. Powered by a heady cocktail of Darcs, Rails, PostgreSQL, Debian, Trac and coffee, I have single-handedly built and launched a commercial baby web log site in a matter of months.
I expect to soon be blogging on my own site about what has worked for me, in the hope that other enterprising programmers will be encouraged to step up to their obligation to maximise their creative output.
13 Jan 2005 (updated 13 Jan 2005 at 01:25 UTC) »
A state of acute fatherhood has turned my mailbox into a black hole for communication about existing projects (PyUnit in particular), but a good friend and I have still managed to write some useful open-source code. As yet unreleased and unlicenced, Airspeed is an uncomplicated template library whose templates are compatible with those written for Velocity.
(Oh, and I also recently fixed up dbdoc to generate Oracle schema documentation with Jython + zxJDBC -- this plugs nicely into Ant builds. Column comments are read directly from the schema when they are available. Code available on request, until I get time to cut a release.)
I found Zope to be overblown, and the likes of Quixote to be too focused on page templating. Jon's work gives me what I need; servlet-style building blocks for crafting my own MVC web applications. He defines a common Request object that encapsulates the request/response data and logic, conveniently presenting query parameters, uploaded files and cookies. Adaptors for the disparate deployment models of FCGI, straight CGI and mod_python present the exact same Request interface to the developer's code. Wonderful.
As if that weren't enough, Jon throws in a web templating solution and an ingenious database connection pooling module.
The appearance of such a necessary and well-executed package in such a low-key form is typical of the no-nonsense Python world, though I can't help thinking that more of a song and dance is warranted in this case.
Now Smarty has arrived and has quickly become the definitive templating solution. This is a good thing, more because of the pattern it presents rather than the specific solution (since with discipline plain PHP can make a good templating language). Smarty nicely covers the V of MVC, and a good C comes in the form of Phrame, which is a PHP port of Java's popular struts framework. A nice simple M is left as an exercise for the reader, but plain objects and arrays work well for the majority of PHP applications.
So call me slow, but yesterday I decided to catch up and give CSS another chance. What did I discover? The little kid grew up, browser support is now widespread and generally excellent, and I can finally cast aside my table and transparent pixel baggage. At the end of the day, it boils down to throwing away unnecessary code, and that's one of the best things that can happen to a hacker.
What I'm wondering now, though, is how to avoid delaying this kind of enlightenment in future. At some hard-to-define point, using a particular technology flips from being a liability to a superability. I want to define that point for myself.
Alongside that, I've set up pythonconsulting.com to cover my Python-related consulting work; if you're looking for a Python expert, I might be able to find time for you.
(Linux weenies take note: I'm hosting a number of sites on a User Mode Linux virtual machine at Bytemark -- I can't recommend them highly enough for their fast, personal and expert service.)
20 Apr 2003 (updated 29 May 2003 at 21:33 UTC) »
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!