Getting Vista?

When this is the best argument a pro-microsoft person can come up with, you know it’s time to abandon all hope.

10. Face it, you have no choice. When Microsoft brings out a major renovation to Windows, you can choose to ignore it for a year or two, but then the device drivers start drying up for older versions of Windows, your friends start asking questions about their new PC that you can’t answer, and even if you use Linux, you’ll inevitably need familiarity with Microsoft’s latest interoperability blockers. Face it: your arse belongs to Redmond. —10 reasons to upgrade to Vista


Emacs vs Eclipse

Steve Yegge has yet another very long, but hugely informative post up: The Pinocchio Problem. It’s all about what makes great software. Or at least, less-bad software.

One of the things he touches on is Emacs and Eclipse extensions, when compared to Firefox.

The very best plug-in systems are powerful enough to build the entire application in its own plug-in system. This has been the core philosophy behind both Emacs and Eclipse.

Recently (the last 6 months), I’ve been doing almost exclusively Java work, and pretty much exclusively in Eclipse. Before that, I was a die hard Emacs user. Why switch? Well, trying to develop Java code without the help of an IDE is like pulling teeth, basically. Eclipse is an astonishing piece of software, but I’d hesitate to call it “good”. Least-bad is a far better moniker.

But I’m really concerned about the extensions. In Emacs, when you want to extend it, you have to write some lisp code. It sounds scary, but Emacs goes out of its way to make this as easy as possible. Whenever you ask for help on a keystroke, there’s a little link to the source code. You can quickly learn how something works by reading the code for how similar things work. Then, when it comes to actually writing some code, Emacs has a handy interactive mode where you can type code in, run it and see what it does. It’s a real pleasure to use.

Eclipse, being based on Java, goes out of it’s way to make your life difficult. When you want to write an add-on, there is no simple way to see the source code for any of the existing bits. First you have to create a plugin-project. Then diddle the classpath to see which bits of Eclipse you want to extend (Which bits do you need? It’s probably documented on the vast and rambling website somewhere).

Then it’s code writing time. Eclipse tries very hard to make Java palatable by compiling as you type. But it’s still ugly. And what code to write? Well, the “New plugin project” wizard probably made you some examples, if what you were doing was close enough to one of the seven or eight things that the authors thought of.

And how do you run this code you’ve written? Fire up a second copy of eclipse, along with a new workspace. Yes, that’s right, another several hundred Mb of memory just to test-run an extension. Genius, folks. Sheer genius.

Not that this situation has me annoyed at all. I even bought a book to try and understand the process (side note: what is it with all the frames, eclipse people? Pay a designer already). I got about a third of the way through before realising that I wasn’t prepared to even contemplate the herculean effort involved in writing plugins.

The whole experience has left me realising quite how powerful Emacs is. Sure it has it’s flaws (no lexical variables in elisp), but it’s just so much easier to use than Eclipse, it’s scary.


Brighton SkillSwap

SkillSwap is a really neat idea set up some time ago by Andy Budd. It’s all about getting the local web design community together to provide free training for each other. I managed to get into it fairly late on, and gave a presentation on subversion.

Unfortunately, in the last couple of years, Andy’s been really, really busy with his new business, clear:left. So there’s been no time to organise anything SkillSwap related.

I met with Andy and Ribot at the BBC Backstage Bash late last year and we all expressed an interest in reviving SkillSwap. To that end, we’re all going to the pub. From my mail to BNM:

Ok, I’ll be in the Earth & Stars along with Mr Ribot and Mr Budd on Thursday 18th (a week tomorrow). I’ll be there from 18:30 onwards.

If you’re at all interested in reviving SkillSwap, please come along. Hopefully we can have a good discussion and get some ideas about what people would like to see.

If you can’t make it, but still want to contribute, drop me an email with your suggestions and I’ll bring it along on the night.

I’m really excited about this—SkillSwap was an incredibly useful thing and I’d very much like to see it come back to life. But that’s only going to happen if we get people interested. So please spread the word and come to the pub next week!


Brighton Ruby Users Group

Last night was the inaugural meeting of the Brighton Ruby User Group at the Eagle. I gave a (slightly) slimmer version of my Unicode for Rails talk1. I really should learn about code on slides though. Just because something looks good on screen, the lovely soft focus effect that projectors provide quickly turns it to mush…

Jay Gooby also gave an excellent off-the-cuff introduction to some of the neat bits which are up & coming in Rails 1.2 (simply_restful in particular). rake rails:freeze:edge is the magic. And if you get bored, just rm -rf vendor/rails.

But it’s the people that make the evening. And we had a superb turnout—at least 14 people. There were lots of faces I hadn’t seen before, which is excellent. Also, a very wide range of Ruby / Rails experience from “none” to “lots”. In retrospect, I hope I didn’t scare anybody with the deep technical stuff in my talk… Next time I think an “intro to Ruby” talk might be a good idea, judging by the comments.

Anyway, my thanks to James for organising. I’m looking forward to the next one!

1 Slides are over here.


The year of XQuery?

Apparently, it’s the year of xquery. I’ve just started a large project at $WORK, of which XQuery is a fundamental piece. And I have to say I’m not so sure.

From what I’ve seen so far, there are good and bad bits to XQuery. The good bits are that it’s really flexible and very easy to pull apart large quantities of XML documents in ways in which it’s much, much harder with XSLT. I like the way XML fragments are treated as just another datatype, like E4X but done right. I also like the way that it’s built on XPath, as XPath rocks.

Sadly, there are quite a few more bad bits.

  • The development environment leaves a lot to be desired (an eclipse plugin would be nice, as would vim1 or emacs2 syntax highlighting).
  • XQuery itself is really verbose. There appears to be a lot of syntax, and the grammar is on the large side. This means that it’s really hard to pick up large bodies of other peoples code. Coincidentally like the stuff I’ve been dumped with.
  • The spirit of the language is more like SQL than any procedural language. Yet it presents a veneer of procedurality, which fools you into thinking you can get away with things like “just throw an extra statement in”. It’s not that simple. Your XQuery code is returning a list of items3, so instead you have to insert your extra code as a previous item in the list. Essentially, this means you must end your extra code with a comma, instead of the expected semicolon or nothing. This continues to bite me.
  • It’s still not a standard. “Nearly there now”, apparently. It’s beginning to sound like Perl 6…
  • Namespaces continue to cause me much wailing and gnashing of teeth. In XQuery, there is a tendency to use quite a few of them as well. In fairness, this is more of an XML problem than an XQuery problem, but it’s really irritating to still be tripped up by having xpath not match because you’re not looking at a namespace by accident.
  • The type system is a pain. XQuery may or may not be strongly typed, depending upon the code you’re using, the implementation, or the phase of the moon. It has had a tendency to get in the way, in all the stuff I’ve seen so far.
  • For all its verbosity, the language itself is quite limited. I’ve been needing to use a lot of implementation-specific extensions in the work I’ve been doing. Particularly for things like updates.
  • Oh, and whoever chose fucking smileys as the comment syntax needs to be shot. Now.

Having said all that, I think XQuery is still useful in the area I’m working in (large corpus’ of XML documents). Despite my rash of indignation, it’s proved a lot easier to deal with than our previous technology (flat files plus manually created indexes in an RDBMS plus Lucene for searching). It has a future. I just hope it develops quicker than it has so far.

1 That doesn’t suck, anyway, unlike xquery.vim.

2 I haven’t tried xquery-mode.el yet.

3 Except where it isn’t, e.g. defining functions.



Three years ago, I picked up a copy of Judge Dredd Megazine on a whim to read on a train journey. I hadn’t really read 2000AD since I was a kid. One of the things that utterly captivated me was Scarlet Traces, a story about what happened after the martian invasion in War of the Worlds. It was well scripted, and beautifully drawn, with large, clean lines and lovely colour. I couldn’t wait for the next installment in the story, and I’ve not missed a megazine since. Plus I’ve accrued quite a few graphic novels.

Anyway, in the last megazine, I noticed an ad for a book, Leviathan, with the magic names attached again, Ian Edgington and D’Israeli.

Naturally, when I saw a copy in Borders, I picked it up without hesitation. From the back cover:

In 1928, the Leviathan, the largest cruise liner the world had ever seen, was launched, bound for New York, with a crew and passenger complement totalling nearly 30,000 people. It was never seen again.

Twenty years later, one of the remaining passengers, Detective Sergeant Lament, begins to investigate the mystery at the liner’s heart. What he discovers will change his world forever—but it might just bring the Leviathan home…

From the very first pictures, they’ve really managed to show quite how large the ship actually is. Sometimes, it’s really hard to get perspective across that well, but they’ve done it well. When you get into the ship itself, it’s all done in impeccable taste, but everything is drawn white-on-black to give a very noir feel to it. The main character, Aurelius Lament, is a detective called in to investigate the murder of a 1st class passenger, one Jerry Leadbeater (har har). Things start to get really mysterious when the captain reveals that the ship should have run out of fuel decades ago…

Oh hell, it’s a cracking good yarn, drawn beautifully. I love it. And what can I say? I love the whole steampunk idea. More, please!