Programming languages

All programming languages suck. I will try to focus mostly on the languages I have really used. C is a nice-enough platform-independent assembly language, but it’s too low-level. C++ addresses the low-level aspect, adding OO and the STL, but then adds a whole pile of crazy complexity, like some crazed hoarder. Read Exceptional C++ and maybe a book on template meta-programming. And closures? Seriously? In a language like C++? *sigh*.

Haskell, on the other hand, is nicely high-level. It’s pure, it’s got a nice type system, and a decent compiler. The less popular libraries can be a big dodgy, and it’s garbage-collected which makes it inappropriate for some applications, but generally I pretty much like it. The main downsides from my experience are that space leaks can be a real pain to track down, and there’s a temptation to use increasingly experimental features which can get in the way of genuine productivity.

After Haskell, modern Java was something of a surprise. It’s an Enterprise Language, so there’s a lot more grinding code out, but the IDEs make this much simpler, and it’s pleasant enough. Generics are almost good, and their versions of closures... could be worse I guess. If Java were a colour, it would be beige. C# looks a little better, kinda Java++, but still too tied to MS.

I should probably have a decent go with ocaml sometime.

When I was designing the interface for our next generation quant library, we used Lua for a scripting layer. I don’t like dynamic typing (if you can spot a bug earlier, all the better!), but if you need to go that way, you could do a lot worse than Lua. It all fits together pretty nicely, runs reasonably speedily for an interpreted language, and embeds wonderfully in whatever you want.

In comparison, JavaScript is just Lua done badly. It’s taken over the world. Ho hum.

And then there’s Python, which I must admit I’ve not used much in anger. Dynamically-typed, it’s a magpie language by someone who didn’t really understand the features they were picking up. However, as a lowest common denominator, it’s a popular glue language, which just shows how much my sense of taste counts for. It has a billion bindings, so if you’re not looking for an embedded language, yeah fine, whatever.

At least it’s not Perl.

Smalltalk looks interesting up to the point where someone tries to use it for a large system. The horror stories I’ve heard....

I’m still not sure where I sit on Lisp. The functional part is effectively superseded by languages like Haskell (with static typing to boot), so the question is whether macros are still a good argument. Lazy evaluation and a decent compiler can do a certain amount of that. To go further, Haskell has Template Haskell, but it’s pretty horrid. I need to learn a little bit more.

Rust and Go are high up my “to learn” list. I’ll get back to you on that.

And the other stuff

I’m one of those Linux people, and have been since 1995. I’ve never contributed any code, though. That’s someone else’s problem....

I used to play a fair amount of Quakeworld and Quake 3, including being on the Varsity team that (repeatedly) stomped on Oxford at Quake 3. (I also competed against them at go (also geeky) and judo (less geeky).)

Ray-tracing is easy, so I wrote a little sphere ray-tracer a while ago. I made a program that produces pictures of shiny baubles. Here is a picture of shiny baubles. Exciting, eh? Then, during my last job, I wrote a ray-tracer in function-mode Excel. It’s rather simplistic, and available here. Source on GitHub.

A while ago, I tried to find the original Mosaic spinner (the thingie that animates while you’re waiting for web pages, also known as a throbber). I couldn’t find it anywhere on the web - probably evil copyright issues. So, I downloaded ancient source, promptly ignored the copyright, and have created an animated gif. It’s much less pretty than I remember it. Remarkably useless, really.

This is a rather random picture of a pile of monitors in greenery. Why? ’cos it’s a CUCPS haul that we were going to store that briefly sat in a friend’s garden, which I thought looked rather funky, so I got a photo. “What’s CUCPS?” I hear you ask. It’s a somewhat niche university retrocomputing society which I used to be on the committee of. They do give away lots of old computer junk, which if you’re me is annoyingly irresistable.

More recent (post-2000?) silly things (pixel art cross-stitch, anyone?) can befound on my blog.

Last updated 1 May 2015. Mail me at