A colleague pointed me at Thinlets, and I'm thoroughly impressed. Looks like a nice technology for those that can't decide between a web application and a 'traditional' GUI app. Compare heavyweight Swing and middleweight SWT with this demo.
Today I tip my hat to Jonathan Ribbens, whose jonpy project is a breath of fresh air for Python web programming.
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.
The Coolest Software Ever Award, for today at least, goes to x2vnc (that's Win2vnc for you Windows people). Now I can use my debianised ThinkPad's wonderful keyboard and trackpoint to control its nasty Windows desktop neighbour without needing to do the keyboard shuffle every 10 seconds. Very civilised.
I've been hacking on gaim to add a Yahoo-IM-style display of status messages. No other open source IM client has that, but Yahoo IM users often end up changing their status messages for entertainment value.
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.)
My photography website is now live, at www.purcellimages.com, for those who may care to take a look. This has been an exercise in discovering why the PHP/MySQL combination is so popular. Developing the site has been a breeze in comparison to the equivalent task using Java, but I'm shocked by the limitations of PHP; I particularly miss exceptions.
I am pleased to write that I have started work today for ThoughtWorks in London, with whom I look forward to some fun and challenging hacking with excellent colleagues. The firm is actively hiring world-wide, so if you're a talented and pragmatic programmer, you might care to apply.
I'm currently looking for freelance work, preferably involving open source technologies, and to include server-side Java and/or Python on Linux or Solaris. Interested parties can mail me at the above address for my resumé.
Only some poetry written last week:
The shape of my ignorance
Cast in thoughts of knowing;
Is an absence
Not a presence.
and this one:
Leaves and dust
On the bonnet
When speed is gathered.
Paint on your windows
What you have to sell;
The buyers will enter.
Mail me if you enjoyed them!
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
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!