Older blog entries for purcell (starting at number 37)

PHP is getting serious. For a long time it required a great deal of work to structure a large PHP application into a maintainable form, and every developer did it in his own 'special' way. Projects like phpGroupWare produced frameworks for plugging applications into an assembly but apparently failed to evolve the definitive pattern for writing a generic PHP site.

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.

I'm embarrassed to admit that the last time I took a serious look at CSS was in 1999, when I worked alongside two of the top DHTML/Javascript guys in the world -- Peter Belesis and Giorgio Braga. At that time of Netscape 4 and IE 3/4, support for CSS was patchy and much sneakiness was necessary in order to get the right effect. (Somehow, Peter and Giorgio managed to construct an entire javascript-based presentation rendering engine, replete with animations and shared whiteboard conferencing.) As a bystander, I learnt to avoid CSS and instead rely on the old-fashioned HTML layout tricks of <table>-ing and transparent-pixeling pages to death.

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.)

20 Apr 2003 (updated 29 May 2003 at 21:33 UTC) »

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;
Clear seeing
Is an absence
Not a presence.

and this one:

Leaves and dust
On the bonnet
Blow off
When speed is gathered.

and finally:

Paint on your windows
What you have to sell;
The buyers will enter.

Mail me if you enjoyed them!

A rainy public-holiday Monday in Bavaria...

I'm gradually getting around to acting on the patches and suggestions people have sent me over the last few months. Today it was the turn of Jargs to get a facelift, a polishing and a minor release.

After months of concentrating on photography, paid work and unstructured PHP hacking, perhaps I'll manage to release some more useful things. But only if the weather's not 29 degrees and sunny, because Biergärten and laptops don't mix!

Spring has arrived early in Munich. While hibernating I've had almost nothing to do with coding, and I've failed to reply to so many e-mails that I should probably be excommunicated from the open source world.

My penance has begun with an effort to catch up on those mails and patches. I've just made release 0.4 of WebUnit which adds HTTPS support courtesy of a patch from Oliver Rutherfurd. (That's the first release since last July, I think.)

If anybody reading this sent me mail, I apologise; you almost certainly haven't had a reply yet. I could claim a disk crash, but that would be a disservice to my ThinkPad.

Release numbers are a strange thing. It seems apparent that there is no logical scheme for numbering releases over the lifetime of a piece of software, other than that release numbers should usually increase as time goes on.

For some programmers, I imagine that release numbers are proportional to the length of the feature list, the number of lines of code, or even the number of bugs.

Not for me. For the record, my release numbers are not particularly intended to converge on 1.0. What would 1.0 mean anyway? Instead, I earn release number increments. Usually I only earn '0.1' at a time, but sometimes I feel like I've earned more, so I bump the release number by 0.5.

Works For Me™

28 older entries...

New Advogato Features

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!