Neil Mitchell on F# from a Haskell perspective

Neil Mitchell on the F# language [dons].

j-star 08, Holotronica, and Pierre/Gondry at onedotzero_adventures in motion at the BFI

Here are some words and some (mainly excellent) music videos for you.

The above is the gorgeous video for the equally beautiful and gentle song “Omstart” by Cornelius. It is one of two things I saw three weeks ago at the British Film Institute which particularly caught my eye/ear. The other is this 1998 video, “Deadly Media” by Hexstatic:

Actually, that’s a lie; several other vids caught my eye/ear to a similar if lesser extent…

I’d gone to London to see Bash, to hear Alan Moore and Melinda Gebbie talk about Lost Girls at the V&A, and to go to Bash’s flat-warming party. On Sunday afternoon she had to work, so I was at a loose end and popped along to the National Film Theatre to catch j-star 08, “the latest and most inspiring music videos, motion graphics and shorts from some of japan’s finest moving image-makers and young talent” — part of the onedotzero_adventures in motion event taking place that weekend. I rather like shorts, and music videos, and the Japanese aspect promised an interesting time. While the results were mixed, I wasn’t disappointed.

On the way in, I noticed a “Holotronica” exhibit and, while scoffing at the hubris of an artist claiming to “devise” a term, and while unimpressed by the 3-d aspect of the display, I did rather enjoy the music playing as I walked past: the Hexstatic piece linked above. I thought it was a bit old-fashioned, but good for it — and of course now I see it’s 10 years old, so that makes sense. The use of vocal samples was reminscent of JMJ’s pioneering and wonderfully cheesy yet still compelling Zoolook (the video for which introduced a young me to the lovely word “Djibouti”), and the audio/video link made me think of Lasse Gjertsen’s modern classic Hyperactive.

The j-star show was very enjoyable, though a bit tedious in places. Many of the shorts were too long, and it was very very CGI heavy: only a few pieces weren’t entirely CG, and it often felt like it didn’t add anything, or wasn’t used imaginatively. The Cornelius video above was the standout exception, indeed the best thing in the show — thoughtful, subtle, and making the most of the total possibility of CG without just being a bunch of flashy effects. A number of other vids were just flashy effects (usually to some generic breakbeat music), a few were “in love with the underlying model” (exposing wireframes, etc., which is cute but ultimately empty) and some were cartoonish, and kinda fun but not soooo amusing. On reflection I think my enjoyment was often coloured by the music as well, of course. With that in mind, a few (non-exhaustive) comments…

Three of the pieces which weren’t totally CGI were excellent. Kosai Sekine’s video for Maledict Car by Jemapur used real world footage and imaginative symmetry to very good effect, I thought — and the music was great. K+Me’s Screaming Dance by Leonard de Leonard was very good fun and again had the advantage of a rather stonking tune. Finally, this Nike cosplay ad by Kan Eguchi is classic Japanese madness, and utterly awesome. The other vids with a substantial reality presence were Junji Kojima’s video for You-you-you by Polysics, which I quite enjoyed but didn’t find beautiful, and “Evening Before the Hangover” by Ichiro Sato, (I can’t find it online) of which I wrote “Alien disco, but so what?”. It was a cute joke, but basically dull.

Clear Skies In May by Tetsuo Suzuka was beautiful, imaginative, classical, and beautifully typographical. Well worth a look.

There were two 8-bit nostalgia trips, only one of which I enjoyed. Yosawya San by Tsuyoshi Hirooka & Yohei Ito was great: musically interesting, and a very cute video. Compared to the other (below), it seemed truer to the 8-bit gaming tradition, and with some really imaginative touches, perspective, etc. (Look out for the Go game on the TV screen.) The other, Hideyuki Tanaka’s video for Ram Rider’s hello_8 bit edition seemed more lego than 8-bit (in the video, anyway), and was about 2 minutes too long; I didn’t like the music though, which can’t have helped — although on reflection it was truer to the 8-bit tradition than the other offering, so there you go. Well, there it is: you might enjoy it, but I certainly didn’t.

On the cartoony side, it probably suffices to just mention Usavich – Beware of Dance — the first of three Usavich cartoons, and quite funny (I wrote “Tyres goes disco bunnies”, meaning Tyres from Spaced), but by the third I was really bored of them.

Afterwards, I took a saunter round the BFI, experienced and enjoyed The All-Seeing Eye (The Hardcore Techno Version) by Pierre Bismuth & Michel Gondry, and, wrote on a wall. I can’t remember the details of whose installation this was, but projected onto this wall/whiteboard was a cartoon view of a town, on which we were invited to draw “where you live” using the available coloured pens. I found a suitably rectangular collection of roads and drew a simple commutative diagram encapsulating commutativity of function application, which felt like as a good an explanation of where I live just now than anything else I could think of.

Then I went back to Bash’s and cooked a mighty vegetarian lasagna for the six of us there present.

To conclude: a great day (and weekend!), and one which made me think it might be worth living in London (for a while) after all.

Where I’m at, where I’ve been

I’m in Newcastle, staying at a hotel in the shadow of the rather impressive Tyne Bridge. I’m up here with Harold and others, visiting Michael Harrison, doing talks, etc. I spoke today, about “generating theorems from user interface automata”: lots of good discussion and nice ideas for what to do with this next. More of the same tomorrow, then back to Swansea on Thursday; it takes all day on the train. Oh yeah, and it’s frickin’ freezin’ up here. It keeps snowing, just a dusting. Thank heaven for warm gloves, warm hats, and Montane.

Lots of gallivanting of late. This time last week I was up in Gregynog for the annual Swansea CompSci shenanigans. For the first time since I joined Swansea, I wasn’t organising the trip (my sixth time there, and seventh in total) — but I didn’t get to relax because I was still doing the pub quiz (very well received), and a talk on my research (also seemed good, and by the way, woo Keynote!), and helping out because illness had knocked a few members of staff out of the proceedings. Oh, and I sang the first verse of a Czech folk song solo, and didn’t completely screw it up – so that was good too.

Then on Cardiff went to Friday (other way round) with gorgeous friend Adwoa, stayed overnight at gorgeous friend Kate’s house, then flew to Amsterdam for to see Rodrigo y Gabriela at Paradiso. Kate had spotted this gig and suggested a mission, and somehow Adwoa and I were so taken aback by the audacity of the proposal that we had to agree. A 24-hour trip to another country to see a band neither of us knew yet? Fantastic! And it was: with one notable exception I’d say this was the best gig I’ve seen since The Chemical Brothers in Cardiff in 1997. Gabriela is absolutely the star, to my mind (sound quality awful but just watch her go; better quality but less animation), but I would say that because I favour rhythm, and that’s where she’s at. Anyway, yeah, they rocked and I’ll be buying the live album when it’s out.

Then we popped back to our hotel and asked the guy on the front desk if he knew of anywhere nearby doing decent electronic music, and he suggested Melkweg, casually mentioning that Nathan Fake (of my love for whom see here) was playing live. WTF? Oh yes, and Speedy J (hugely influential to my early electronic awakenings, e.g. via The Oil Zone) was DJ’ing. So we went there.

Electric Deluxe poster at Melkweg

Actually, I found Fake’s live set disappointing: way too much glitch, not enough repetition, just too screwed up — Adwoa seemed to rather enjoy it, however. And I couldn’t fault what I saw of Speedy J, though I confess I didn’t stay for the whole five hours. ;-)

Didn’t get much sleep, but it was pleasant. Awake at 7; on a tram at 7.30; at railway station at 08.00; at airport at 08.30; at departure gate at 09.10; liftoff 09.55; land Cardiff just over an hour later; asleep just over an hour later (again, at Kate’s). Since I was getting a train to Newcastle the next day, it seemed more sensible to stay there than to go to Swansea, so that’s what I did. Then I came here. Then stuff happened. Then I started writing this. Right, that’s me up to date. Bedtime!

Gay (and poly) marriage: the database engineering perspective

Awesome database/sexual equality tutorial — required reading! [mrdaveb]

Frances the Cat Finds Enlightenment behind the Couch

Frances the Cat Finds Enlightenment behind the Couch.

The cotton belt, and the Cornish highlands

Two map-related items of interest:

From Pickin’ Cotton to Pickin’ Presidents correlates deep-south counties voting for Obama with cotton production in 1860, in a very striking manner. I found the following rather notable:

As it turns out, president-elect Obama won with the an overall support of 53%, but that includes over 90% of black voters.

Of white voters, only 43% voted for Obama; since Lyndon B. Johnson, no Democratic candidate for the highest office has ever garnered more than half the votes of European-Americans.

Then, comment #96 provides the geological context, expanded upon here, and in particular pointing at this fascinating map of “shorelines in the Cretaceous period”.

You can just see Britain on the right of that map, and ooh look, it’s all underwater apart from part of Scotland, most of Ireland, and south-west England including all of Devon and Cornwall. The most prominent topographical features of Devon and Cornwall these days are Dartmoor and Bodmin Moor, worn down “ancient mountains” as my geography teacher put it to me one day; it looks like, in the cretaceous, they weren’t quite so worn down…

Upside Down Dogs

An upside down dog

I’m rather enjoying Upside Down Dogs, though it is occasionally a bit scary. All those fangs…

For example, see Maria Full Of Grace (Marston, 2004)

As I’ve been saying for a few years now, there’s no such thing as Fair-Trade cocaine; this may, of course, be freely construed as an argument for legalisation or for greater sanctions, according to your prevailing political worldview.

Bash had her iPhone stolen

Bash had her iPhone stolen yesterday, in a rather ugly-sounding scam — and then wrote an eloquent and reflective blog post about it. Kudos.

The Fall

The Fall — oh my, that’s a wonderful movie. You should totally go see it. A load of us went to Taliesin for it tonight and universally lurved it. Just… oh, wonderful.

Here’s the interview that made me want to see it, and here’s the trailer (which is mildly spoilerish, but the joy of this film isn’t in the plot, but in its heart, and its eyes).

Beyond peace and quiet

Forget the houses. This is what it’s all about.

Bringing the house down

An extremely readable piece in yesterday’s Guardian magazine on the UK property market: how it got like it is, why it’s so different to its friends overseas, and what’s (in his opinion) likely to happen. I found the background more interesting than the predictioneering, of course. Tasters:

Say you bought your house in 1970, and paid the then-national average price for it: £4,378. At the peak of the current spike in prices, that same average house would have been worth £184,431. Congratulations! You’ve multiplied your money almost 43 times. You’re rich, do you hear me?

Rich! Except you aren’t, really. Strip out the effect of inflation, and that spectacular sounding 4,300% price rise works out as 2.4% a year in real terms. This is close, in other words, to the historic long-term average for investments regarded as being more or less without any risk at all. That’s where the expression “safe as houses” comes from.

British householders are allergic to fixed interest rates; we prefer variable loans. No one quite knows why, since fixed interest rates often make good sense, and have the effect of transferring some of the risk of the loan to the banks. If you have a variable rate mortgage, and the central bank interest rate goes up, you feel it in your pocket; if you have a fixed rate and the same thing happens, the bank feels it. In the US, the two institutions designed to help the banking system to bear the risk of this fixed-rate lending are called Fannie Mae and Freddie Mac. That’s the same Fannie Mae and Freddie Mac that on September 7 were taken over by the US government in the biggest nationalisation in the history of the world; and the reason they went under was precisely because they were swamped by the cost of these risks.

Towards the end of 2006, the average investment yield on a buy-to-let property no longer covered the mortgage that had been taken out to buy it. In other words, the average buy-to-let investor was losing money on a monthly basis. The reason for hanging on in there was the hope for capital growth. But house prices in the UK are now in decline. The Nationwide survey for the year to October showed a decline of 14.6%; add the CPI inflation rate of 5.2%, and prices have fallen almost 20% already. So for those buy-to-letters already losing money on the interest payments, capital growth now looks some way off. Depending on what was paid for the property, it may be many years off. If all buy-to-let investors realise this and stampede for the exit at the same time, the UK property market will go off the edge of a cliff.

Marcus du Sautoy interview, Guardian

An interview with Marcus du Sautoy from last Monday’s G2 — which I’ve only just got round to reading. Pleasant.

“You know, I’m not terribly fast at my times tables, because that’s not what I think mathematics is about. I think it’s the same thing as thinking that a good speller will make a great writer. Well, no, actually – great writers can be crap at spelling, but have great vision and ways of bringing stories alive – and I think you’ve got to put over that mathematics is a similar idea.”

Sadly, I think he’s wrong that “nobody’s going to question” that there are infinitely many primes, despite the existence of a simple proof (woo Euclid!): I’m pretty sure I’ve seen crackpot pages on the web asserting that the whole thing’s part of a big conspiracy. Yes, of course they’re nonsensical crackpots who should be ignored, but when did that ever shut anyone up? (Eh, Dawkins!? Eh!? ;-) )

I’ll Be Gone

I’ll Be Gone — great vid. Nice bass, too, though I think the song’s a bit weak (Mario Basanov & Vidis) [via someone's tweet, I reckon].

Real Life Tron on an Apple IIgs

I can’t remember where I saw this, but: Real Life Tron on an Apple IIgs.

T Rex at his best

I think this is my favourite Dinosaur Comic — at least so far. (It’s taking me a long time to work through them, a few every week or so…)

Also very good, especially around Talk Like A Pirate Day — the alt tag’s where it’s at for this one, mind.

What motivates terrorists?

Schneier on terrorist motivation, positing that it’s less about achieving political ends, and more about being part of a social structure [brunns]. Sounds quite reasonable. I was struck a bit by this sentence:

We also need to pay more attention to the socially marginalized than to the politically downtrodden, like unassimilated communities in Western countries.

Now, I won’t argue with that, except: aren’t they often the same people?

So, some voting happened

Sums up some of the main issues with voting machines quite nicely, I think [pwb].

In other news, I hear the American electorate did something right yesterday (or to put it another way…); unfortunately, at time of writing it remains unclear whether Californian voters have dropped the ball and approved Proposition 8. Sadly, it looks like they have, and Stephen Fry claims they have, but I suspect he’s responding to polls not actual results, as the latter don’t seem to have be announced yet. OTOH maybe there’s something about being a British National Treasure in the middle of nowhere in Madagascar that gives you prophetic powers. It’s looking like an increasingly near thing, so there’s hope yet.

A short survey of some chart-drawing options for Python and Haskell

I’ve been thinking about chart drawing a bit lately, partially because I’ve been doing some work which needs it, and partially because I keep seeing pretty pictures like the ones here (or in these slides) and wondering how people produce them.

Perhaps old news, but today I came across the Google charts API, for drawing charts (line, bar, pie, scatter, radar, etc.) via URLs. It’s clearly not capable of the prettiness linked above, but seems quite neat for “workhorse” charting, e.g.

Example pie chart

I particularly like the maps option:

Example map

Naturally, there exist Python and Haskell bindings.

I’ve previously looked at NetworkX, matplotlib and gnuplot, all of which are a bit more heavyweight — though I think only NetworkX, if any, could handle the prettiness mentioned initially.

HaskellCharts was mentioned in the latest Haskell Weekly News.

Today I also found Cairoplot, Chaco (very plot-centric), and the fruity Mac goodness that is NodeBox — very pretty, and looks lots of fun, but not exactly a charting app.

Right. That should be enough to be getting on with, anyway…

For your listening pleasure

Finally: I’ve created an artist account on, and now you can listen to all the music I’ve ever made that might not be total rubbish, conveniently organised into four albums spanning the last twelve years of mildly frustrated but entertaining knob twiddling.

I might even get royalties if enough people listen to them…

Arrows in JavaScript

Arrows in JavaScript.

Arrows generalise computation schemes from the sequential version provided by monads, and are thus hard to bend one’s head around. It’s interesting to see them in JS.

Have you seen this cat?

Have you seen this cat? [bash].

SPJ/Haskell interview in Australian Computerworld

Simon Peyton Jones interview in Australian Computerworld [via galois].

A nice interview discussing various aspects of the history and philosophy of Haskell. SPJ sees purity, monads, and type classes as Haskell’s key aspects, and mentions a number of interesting other ideas along the way (along with uniqueness typing as seen in Clean, and functional reactive animation, which I first came across back when I was investigating music in Haskell).

More generally, this looks like a good series to keep an eye on: also contains interviews on Forth, JavaScript, Lua and other more boring languages such as C++. Shame there’s no obvious feed.

Another missed opportunity

I’ve just realised that the title of that previous post should have been “Two guys, one dinosaur cup”. Ah well.

Dinosaur cup not in fact optional

If you’re anything like me, you’ve been wondering when and indeed whether those noted culinary swashbucklers Dave & Zac would return with more great recipes for us to try out.

Wait no longer, dear friends. The final two installments are here! We have high-tech Gourmet Chocolate Pancakes and surely the pinnacle of their joint works, yes it’s Sausage Croissants. Mmmm, mmmmmm, that is a tasty croissant.

sshfs with RSA keys on OS X using MacFUSE

MacFUSE is nifty, and in particular supports sshfs for mounting filesystems from ssh-accessible remote boxes.

However, I found today that using the GUI always asks you for your “ssh password”. I don’t use a ssh password; indeed, all my boxes have password tunneling disabled: you can only log in via keys. The GUI didn’t/doesn’t seem to be key-aware.

Thankfully, the command-line version (sshfs-static) mentioned on the wiki page linked above is aware – so I succeeded in mounting my remote fs using:

Applications/ om: om \

I’ve set up an alias for that in my .zshrc and am now in sshfs happiness land.

(Oh yes, perhaps I should have mentioned: I’m using OS X now, for my desk/laptop needs at least. More on this as time progresses, no doubt.)

A dog on a trampoline

A dog on a trampoline — does exactly what it says on the tin.

What Every Programmer Should Know About Memory

What Every Programmer Should Know About Memory (114 page PDF) [abstract absurdities].

I didn’t teach him to swear like that!

Take one-time Gimbo tutee and long-time beard user DaveA, and one handsome stranger from outta town goes by the name of Zac, some beer and some Jaegermeister, whisk them together briskly in a kitchen in Helsinki and you’ve got what we in the 1970s American sitcom business call a recipe for laughter. Oh yes.

Gourmet Pizza Tacos.

Microwave chocolate cake.

Go you.

Update 2008-09-15: they have a website!

Update 2008-10-01: two more recipes!

Big Music From Small Nations 2008

I’ve been to two festivals this summer, and it’s high time I wrote about them. The first was Big Music From Small Nations, back in mid July. Sadly I don’t have any photos – some of my friends took some but they’re locked away on Facebook so I can’t post them here. :-(

Still, let it be known I had a great time: my best festival experience so far, in fact (until the next festival, Dance Camp, of which more later). In 2007 Bash and I went (for which there are photos) and had a good time, but it rained rather a lot and the place got pretty muddy – we still had a good time, in I called it the first time I’d enjoyed a wet festival, but I’ve gotta say, this year was much better. It still rained a bit, but much less, and the areas that got very muddy last year (in particular the bottleneck between campsite and main site) were better protected.

The main difference was that this year’s Small Nations was smaller. It’s a fairly dinky festival anyway: about 1500 people last year — but I heard there were only 900 there this year. It’s been a bad year for festivals in general after so many were washouts last year, and the weather leading up to Small Nations this year wasn’t great, so I think a lot of “wait and see” types decided against going. That was their loss though, because it was fine.

As well as less people, there were only two stages this year, as opposed to three in 2007. I didn’t mind that at all, actually, because there was still always something on that was worth seeing, and you were less likely to miss something cool by being in the wrong place. The only part I minded was the absence of an open mic tent, because last year Shiko did a spot there and it was great fun — and a few of us hoped to do so again, really.

Lots of people from Swansea go to Small Nations. Somewhere in the last eighteen months or so (Shiko has a lot to do with this, for sure) I seem to have reached some kind of “Six Degrees” critical mass point, and whenever I meet new people in social/musical/party situations they always seem to already know people I know; similarly, I keep meeting people I’ve seen around, by similar mechanisms. I don’t know, I guess various networks are connected, and the circles I’m moving in are somewhat incestuous! As a result (and combined with the smaller numbers), this year’s Small Nations felt particularly friendly to me: everywhere I went, there was someone I knew, or someone I was about to meet. It felt like a big happy family at times — and that was definitely the aspect I enjoyed the most.

Of course, the music was also half the point. On Friday night I heard the Samba Galez in the distance as I pitched my tent, then the entertainment properly kicked off for me with Bassekou Kouyate & Ngoni Ba followed (in a rather different flavour) by Swansea psy-trance outfit Chaos Theory. Bernice described them uncharitably as “some kind of techno Spinal Tap” but I think that was a comment on their hair as much as anything. The music did what it was supposed to, that’s all I’ll say.

After the evening’s scheduled entertainment, I ended up at a big campfire in the corner of the campsite, where there was drumming, singing, etc., and met more good people. IIRC I got to bed around 2 or 3 or so…

… only to wake early on Saturday needing the loo, so off I popped to the facilities, then found myself mostly awake enjoying the early morning activity of the site coming to life. I sourced myself a cup of tea, and a little later a bacon/egg roll, and sat and watched the world wake up. Actually it was clear that some of the world hadn’t been to bed yet, including Naked Fireside Bloke (who, it later transpired, I’d met a few weeks earlier, but at that point he’d only been without shoes), and Scarily Aggressive Shouty Woman.

The plan had been to get some sleep in the morning, but I kept seeing people to talk to, and all of a sudden it was 10AM, and if I was going to go on the guided walk that was on offer, I’d have to go now — so I did! The festival site is here; we went on a circular walk a few miles away, around about here, starting outside the pub, heading down to the river, following it north for a while, then heading uphill under a few red kits, towards abandoned lead (?) workings, through some (sadly chopped – recently) forest, to a hilltop offering a magnificent view, the horizon stretching from the Black Mountain in the west (almost) to the Black Mountains in the east (the distinction between the two being the source of an intensely irritating discussion with a woman with a map who refused to listen and consequently took 90% of the conversation to realise I was talking about two different places). After that, back down to the pub, basically. We’d gone by minibus, and there were enough of us that two buses were needed. Gladly, I’d walked slow enough to be in the group destined for the second bus back, giving us — as our formidable guide Huw Garan put it — “time for a swift half” — time he put to good use by downing two pints of fine real ale. :-) Indeed, on that last half mile before we got to the pub, he whet his appetite by displaying his expertise on local watering holes: where does good beer, where food, where cider (“but their beer’s not so good, unless you get it on the first day or so: they don’t store the barrels properly”) – clearly a true local, in both senses.

The walk was great, and I met some good new people, but it lasted longer than I’d expected – the whole excursion took about five hours (including standing around time at each end, the bus journeys, etc.); bearing in mind I’d had about four hours’ sleep, I consequently spent a good part of the rest of Saturday thinking and saying that I should go and get some sleep. But I just couldn’t! Groovy things kept happening! There were people I had to talk to! Music I had to watch! Shops I had to check out! I think somewhere I managed to lie down for half an hour and inspect the insides of my eyelids, but you couldn’t call it sleep; at some point it became clear the night was beginning again. Somehow (I’ll leave it to you, but alcohol may have been one factor) I managed to stay up until 4 again, and oh, what a night.

The absolute highlight, the pinnacle, the best thing I saw at that festival, possibly at any festival ever, were The London Bulgarian Choir. Now, obviously this is a very personal thing: not everybody is going to feel the same way I (apparently) do about Bulgarian folk music, so please forgive me if this seems strange. Having said that, they got a fabulous reception, so I clearly wasn’t the only blown-away person in the tent. I don’t know, there’s just something incredible about the language, and the style of singing: so strong, so strange, such odd harmonies and beautiful dischords. But hey, don’t take my word for it: you can watch a goodly chunk of their Small Nations performance (minus some inter-song banter, sadly: Dessislava’s ++charming) on youtube here and here (note well: at least one of those handsome Bulgarian men is in fact a very cheeky cockney chappie). Then buy the album: I finally got it last week and haven’t been listening to much else since.

Actually, I lie. That wasn’t the pinnacle. The pinnacle was about 20 minutes after their performance, when I realised they were singing in a small tent in the middle of the main site (used in the day for face painting and the like), so I ran there just in time to become part of an impromptu spiralling circle dance as all around (and in the dance), a subset of the choir sang the wonderful Shto Mi e Milo (full version at 5:35 on the first youtube version). It was just incredible, and (looking back) an introductory taste of the joy to come at Dance Camp, a few weeks later. Seriously, at that moment I felt as happy as I have ever been. Bliss. I couldn’t tell you why.

Nothing could top that, but it did propel me into the rest of the night full of happy and feeling very open, so I had a great one. The main stage got rocked to pieces by N’Faly Kouyaté‘s crazy griot bouncing, and then torn to pieces by Sicknote, an extraordinarily rough, punky, danceable, visually exciting bunch of nutters from (I think) Newport. I think drinking with them would be scary, but man they rocked.

After that it was back to the fire circle into the wee hours, and around 3 I was saying goodnight to various people when I stumbled into a little spot where some Shiko types were hanging out; I had intended just to say goodnight, but somehow something I said caused a bloke called Phil to start on Monty Python impressions, and damn he was good. He started with Holy Grail, I think, but then moved onto the Four Yorkshiremen, and his delivery, his timing, not to mention his memory of the actual lines, was just perfect. I was bent double with laughter, begging him to stop because I couldn’t breathe.

(By the way, if you don’t know what I mean by the Four Yorkshireman, you really should check it out and then don’t miss the Amnesty International remake.)

Sunday was a much gentler day. I took it easy, mooched around, bought a t-shirt, ate good food, drank coffee, didn’t see much music, and just enjoyed chewing the fat and sitting in the sun. Oh, actually that’s something of a lie: there was a belly-dance workshop which I helped do some drumming for, but I think I did it badly, so I’ve mostly wiped it from the memory banks.

So, in summary, I had a great time, hung out with and/or met lots of sweet people, shook my stuff to lots of sweet music, laughed a lot, and discovered a love of singing and European traditional folk music which would bloom at the next festival, Dance Camp, along with much else besides.

One does not simply… walk into Mortor

One does not simply… walk into Mortor [bash].

Sings beautifully, too.

Frances Keenan, weaver. Mad skills.

RIP Randy Pausch

Rest in peace, Randy Pausch, l33t l1f3 haxx0r.

Mastery will soon be mine!

I had my MPhil viva last Wednesday, and I’m happy to report that I have been recommended for the degree, subject to performing some minor corrections to my thesis. That’s pretty much the best you can hope for — it’s unheard of to “just pass”; I now have four weeks (well, three now!) to complete and submit my corrections, most of which are minor things like typos. In fact, I did all the really minor corrections on the same day… I just have a couple more background paragraphs to write and then I’ll submit it for final rubber stamping, after which I have to get some copies hardback-bound, and when they’re submitted to the university I can write MPhil after my name.

It’s been a long, hard road — mainly because I was trying to do the work part time, on top of my teaching load which tended to grow a bit faster than I could keep up, but woo, it’s done. I am now, apparently, the official world expert on the syntax and static semantics of the specification language CSP-CASL. Lucky me.

The viva itself was no picnic… My examiners were David Aspinall (Edingburgh) and Gerald Luettgen (York) — two external examiners because I’m a member of staff. I started with a 20-minute-or-so presentation on my work, which I think answered some of their questions off the bat, and then we got into the dialogue part. Apparently my thesis was very well polished and as a result there weren’t too many questions on its contents, and I could (I think) deal with them quite well. The harder parts went along the lines of “so, how does such-and-such aspect of your work relate to THIS OTHER THING YOU KNOW NOTHING ABOUT?”. :-) This happened several times, and I think it belied a certain lack of breadth in my research: I’d focused on doing what I needed to do, in the way it had to be done given the external constraints on the project, but that meant I didn’t know enough as perhaps I should on how my work fitted into the rest of its milieu. Gladly, while an instructive lesson, that doesn’t prevent me getting the degree.

I’ll publish my thesis online, and say a bit more about its contents, when the corrections are complete and the final version is bound.

Sadly, I have to wait until next July to graduate (or rather, to celebrate my achievement, as they say – I get the degree before then), because last week also happened to be graduation week in Swansea. ‘Twas lovely to see all the students milling around in their batman gear, especially the ones I’d taught and/or been friends with. I even got to go to the Faculty of Arts ceremony on Monday, and see Alexa graduate, which was lovely.

Garfield Minus Garfield

Garfield minus Garfield [Thomas Bradley, but not that one].

Who would have guessed that when you remove Garfield from the Garfield comic strips, the result is an even better comic about schizophrenia, bipolar disorder, and the empty desperation of modern life?

Sparse, quiet, despair.

I am an exemplar of Andyness!

Surreal… This page, explaining why “Andy” is a better abbreviation of “Andrew” than “Drew” includes this picture (taken by by Markus) of me pulling one weird-ass face — apparently that’s some good Andy! If I recall correctly, I was listening to Yoshinao Isobe explain his encoding of one of the models of CSP in Isabelle/HOL. That kind of thing will tend to induce face pulling, mind.

Andys rule. Andys play bass and trombone and some of us even play bass trombone. Andys are good with their hands. Andys will make fun of people but no one will care because everyone knows an Andy is just being an Andy and not out to hurt anyone. An Andy will send you flowers just because.

Andys will date your sister and marry her.

I can’t really fault his logic. Partially because there isn’t any, but also because it’s all true.

Why functional programming?

Because it will warp your mind [raganwald].

So I’m here to say that mindwarp #3 is discovering the function as the basic unit of abstraction. Jaw-droppingly beautiful abstractions and generalizations can be created out of just functions. You can rediscover the usefulness of partial functions and currying, which were techniques created in the 1800s. You can be in the direct lineage of Alan Turing, who used higher order functions in the 1930s to define his theoretical Turing Machine in his paper “On Computable Numbers, with an Application to the Entscheidungsproblem.” And you can finally understand recursion in a deep and intuitive way, and you’ll feel like you’ve looked into the abyss and somehow come back to tell everyone else about it. And maybe, just maybe, you can explain to me what a freakin’ monad is.


Using for facebook & twitter updates by email and SMS

Bit of a brain-dump, this one, but maybe of interest to social networking butterflies.

I’ve been on Facebook for a while now, and the things I like best are a) the photos (other peoples’ – I use flickr), b) the event organisation, and c) the status updates. It’s nice to see what people are up to. Twitter is the distillation of that idea: it’s just status updates, and it’s great. Why am I telling you this? You probably already know. Anyway, that’s not what this post is about.

The problem with twitter is that it’s flakey as hell. This is largely attributable to “too much success too soon” syndrome, although it might also possibly have something to do with their implementation platform (Ruby on Rails). *shrug* I also have no idea what their business model is, because they don’t advertise, and must send more SMS messages (broadcasting tweets) than they receive (from people sending tweets for broadcast). Maybe they get a big cut on the received ones. Anyway, that’s not what this post is about.

It’s tedious to update your status in two places, so it was nice that Facebook had the TwitterSync application, for pulling all my tweets through to Facebook. Unfortunately, twitter really is flakey as hell, and in particular for the last two months or more they’ve had a note up saying “We’re working to restore IM services to all users. Thanks for your patience!”. This refers to the API whereby tweets may be sent/received using instant messaging clients such as MSN, Jabber, etc. It’s been broken for getting on for as long as I can remember now, and TwitterSync relies on it — net result, my Facebook status hasn’t changed much in living memory!

Bash to the rescue. She told me about, a sort of meta-status service which propogates updates to multiple social networking sites, including Facebook and Twitter. I’ve just signed up (let me know if you want to as well: I’ll give you the beta key) and yup, it works: I can update on the website and it magically appears on both my Twitter and Facebook statuses. Nice.

I’m mostly happy to use the web interface, but of course one also often wants to update via SMS from a mobile. Ping FM doesn’t support that just now (“we are only a couple guys in a garage”), but searching their (cannily outsourced) online help we find posts tagged “mobile”, including exactly the question I want to ask. That’s the source of the “two guys in a garage” quote above (which of course makes one wonder how long this will remain a good idea, but hey, Apple), but also a pointer to these instructions on sending updates to via SMS using what appears to be a public SMS->email gateway. I can report that at time of writing, this works. I presume I’ll still pay premium rate for messages to that number, but hey, I did with Twitter too and it didn’t seem to stop me.


While on the topic of updates via email (since that’s the basic mechanism used in the above), I noticed that ping fm will ignore signatures but only if they’re preceded by “—-”, ie four dashes. That’s stupid: everyone knows the standard is two dashes and a space. But it’s OK, because I am an early 1990s throwback and still use mutt for all my email, and it’s configurable to hell and back. I just add:

send-hook ( unset signature

to my .muttrc and any email updates I send to are automatically sig-less. Sweet.

On the subject of mutt configuration and send hooks: how to set up sender profiles.

Photos: Budapest with Alexa, March 2008

Here, finally, my photos of Budapest, from the week I spent there with Alexa at the end of March (as mentioned in an earlier post).

Yes, it’s really taken me three months to get back to tagging and naming them. You can’t really blame me: I did it once already then half the data was lost — such an experience is extremely disheartening. Stupid data.

Choice cuts:

The Alexa's tree St Steven's Basilica 300 stairs later Hammer On Alexa, slightly furrowed of brow Interesting graffiti First Alexa triptych More Alexa disdain Window arm, Margit Telescope eyepiece World Heritage Noncy! This way to the Labirintus Fisherman's Bastion, reflected (1) Happy Window Face... Peter Mansfeld Memorial (6) Kwak suds Andy drinking Kwak Budapest Fringe Festival, wobbly Alexa Approacheth, at the Fringe Magma Fire Theatre at Budapest Fringe Festival 2008 (2) Magma Fire Theatre at Budapest Fringe Festival 2008 (8) Magma Fire Theatre at Budapest Fringe Festival 2008 (14) Alexa on a Jetty Aggressive dog statue

First Alexa triptych

Andy drinking Kwak

Alexa Approacheth, at the Fringe

Portrait of a Kitteh

Portrait of a Kitteh

Swansea Bananaphone Flashmob Video

Swansea Bananaphone Flashmob

Nice vid, Dan. :-)

LoC is a measure of cost, not productivity

Yet people talk about programming as if it were a production process and measure “programmer productivity” in terms of “number of lines of code produced”. In so doing they book that number on the wrong side of the ledger: we should always refer to “the number of lines of code spent”.

Dijkstra, The Fruits of Misunderstanding, and also a similar sentiment (earlier) in “Why is Software so Expensive?” An Explanation to the Hardware Designer — quote spotted on reddit.

… and from the second (first, chronologically) of those essays, Dijkstra hitting the nail on the head with regard to aspects of some recent rumblings about higher education:

To the economic question “Why is software so expensive?” the equally economic answer could be “Because it is tried with cheap labour.” Why is it tried that way? Because its intrinsic difficulties are widely and grossly underestimated.

To any of my students reading this: don’t underestimate the difficulty of the tasks we’ve been educating you to tackle; thus, don’t underestimate your worth if you get good at attacking those tasks; thus, hopefully you’ll appreciate (if not now then one day) the value of a degree in (actual, not pretend) Computer Science.

Doors to hell

The Door to Hell [longnow].

Other entrances to Hell, originally noted by Gimboland in 2002.

A weekend of shenanigans

My my, I’ve had a busy (by which I mean fun and not working at all) and sociable (by which I mean much ale and good food, including bananas, was quaffed with silly people) weekend.

It started on Thursday evening, when a whole bunch of us went out to celebrate my birthday at Wasabi, my most beloved local eatery. I mean we celebrated at Wasabi, not it was my “Wasabi birthday” or something. Anyway. Through a combination of the magic of Facebook and the strong appeal of sushi, some forty people chose to celebrate Gimboday with me. I actually turned up a few minutes late, having gone for a quiet pre-meal beer at the Uplands Tavern, and was a) gobsmacked at this crowd of people waiting for me, and b) without somewhere to sit. Oh, it was great. The food was super, although Wasabi really doesn’t seem able to handle large groups: we were split across two tables, and it’s not a gross overstatement to say that everyone on table 2 (which I was on) had received all of their food before anyone on table 1 had received any. Given that by its nature Japanese food tends to come in many small portions (just like Arnold J Rimmer’s love), that really doesn’t make any sense, and must have been hugely frustrating for the denizens of table 1. Anyway, everyone was lovely and I really must log on to Facebook and thank them all for coming more coherently than I managed to in the speech I vaguely remember making. If I tell you I got everyone’s attention for the speech by clanging together my (empty) sake flask and (empty) sake cup, you’ll get the idea. A few of us topped the night off at Mozart’s for good measure. Apparently. Photos here.

Alien Bash Behold my awesome... er... Ladleface! Alexa and Ladleface Hannah and A Mysterious Mustachioed Stranger Emily Seran and Steve

Friday was, by comparison, very quiet. I tried not to make too much noise, or be anywhere too noisy, all day. I’d like to say I enjoyed two episodes of BSG with Bash on the sofa in the evening, but in truth only one could be enjoyed, the other being an insult to all intelligent beings. Tedious predictable cliched crud, alas.

Saturday was banana day. There’s a photo of me on the cover of Mondays’ Evening Post, next to the headline “WORST CHILD PORN EVER”, so that’s nice.

Saturday night was the annual SUCS beach party, and it was the biggest yet. Despite thunder and heavy showers (and even a spot of hail) earlier in the day, it was a fine fine evening, and a beautiful morning when the sun arose “sticking her rays all over the place” as Dave delightfully put it. I may possibly have had a few ales as the night progressed, it’s really impossible to say. I certainly laughed a lot.

The highlight of the night was noticing a bunch of third years playing a drinking game based on my name. Well, to be fair I think they’d adapted a “bingo” drinking game, but anyway. The object of the game was to spell the word “GIMBO” by shouting out its letters one at a time, but if two or more people shout the same letter simultaneously, they have to take a drink. I noticed them shouting “G! I! M!M! Fuck! G! I!I! Fuck! G! I! M!” at which point I jumped in (literally, splatto on the sand) and shouted “B! O!” to cheers and a rousing cry of “And Gimbo was his name-oh!”. Probably one of the happiest moments of my life.

If anyone can remind of the context which gave rise to the following 8AM tweet, I’d be grateful:

Wondering why no-one calls their firstborn “Gimbowang”. Why do you all continue to defy me?

Update: camp-fire singalong video, rofl, etc. [via welti]

The weekend was rounded off beautifully by spending Sunday with my new friend Sioned, a fellow drummer, ending with a visit to Arthur’s Stone and The Greyhound for dinner. Awesome X.

At King Arthur’s Stone, seeing for miles, hearing nothing but tweets and bleats – lush. Next stop: The Greyhound!

another tweet, 7:20pm

Big Ideas (don’t get any)

Big Ideas (don’t get any) — Radiohead on the old-tech; awesome and then some [brunns].

Sinclair ZX Spectrum – Guitars (rhythm & lead)
Epson LX-81 Dot Matrix Printer – Drums
HP Scanjet 3c – Bass Guitar
Hard Drive array – Act as a collection of bad speakers – Vocals & FX

On a personal note, I’d just like to say what a joy it was once again to not only hear, but also to watch, a ZX Spectrum loading some bytes attached to an 80s television. It’s been too long…

UK CCTV used to create a music video

UK CCTV used to create a music video [risks].

Unable to hire a production crew for a standard 1980′s era MTV music video, they performed their music in front of 80 of the 13 million CCTV “security” cameras available in England, including one on a bus.

Also good, from the same RISKS digest: How not to use SSL, viz SSL-encrypt the page data, but send the credit card details in cleartext in the URL — win!

Other good reasons: the existence of Python, Ruby, Haskell, Smalltalk, …

There are many, many reasons why you should never ever accept a job which involves programming in C++ [via TR].

Now, why does this not surprise me?

“People who wear suits to work in Manhattan are the biggest god-damned dicks you’ll find anywhere.”

Good Math, Bad Math

(Answer: because it plays into my prejudices. :-) )

Gimbo gets to vote twice ‘cos he’s fab.

Local elections take place in much of England and all of Wales today, so it’s time to vote.

Interestingly, I’ve just realised that I’ve been given two votes this time round, which shouldn’t really happen. In other words, I occur on the electoral register twice. Naturally I won’t exploit this, but I wonder how they’ll react when I show up at the polling station and point this out to them. Will it be a big thing, or just run of the mill? I’d prefer the former; I suspect the latter.

How’s this possible? 2-3 years ago I lived at address X in Mumbles; last year I moved to address Y, also in Mumbles (I was at address Z in between, but that doesn’t feature in our story). I’ve now received, through the post, two polling cards: one for “Andy Martin Gimblett” at address X, and one for “Andrew Gimbleh” at address Y. When I moved in to address Y, I will have filled a form at some point stating that I live here, and somebody in City Hall has obviously bungled the transcription, reading TT as H somehow. Meanwhile, address X presumably lies empty (the landlords were, not to put too fine a point on it, twats) so nobody’s filled in a form telling the world I no longer live there.

The best bit is that, despite X and Y being within 500m or so of each other, they have different polling stations, so I really could vote twice. Even if they ask for ID, I’m sure I could argue convincingly that “Andrew Gimbleh”‘s vote belongs to me, particularly to people who haven’t just seen me vote using a different card. :-)

Thoughtful students of protocol will now be asking the question: Why have I received the card addressed to X? Because I used to have a forward in place, and the postman has apparently learnt my new address. There’s no official forwarding sticker on the card (or on any of my forwarded mail, even the stuff to address Z, where the forward is still in place) – the postie is just being helpful. That’s great, but in this instance is probably not the right thing to do. It wouldn’t surprise me to learn that polling cards are, legally, not supposed to be forwarded — that would go some way to preventing this bug, I guess; however, there’s nothing on the card indicating this.

Security: it’s hard.

Where and how far away is the beer?

Two neato sites/apps spotted recently via fellow moderately-curmudgeonly-beer-drinkers’ blogs:

gmap pedometer [rhodri] — plot a course on a google map and find out how far you’ll walk. For example, on Thursday I was able to use this map to ensure that of the sixty-odd people I invited (via Facebook magic) to join me for a walk on Saturday, only one actually turned up, the rest presumably thinking “10 miles? Bugger that!”. As it was we skipped Mumbles Head and chopped it down to eight or so, but still, we look hardcore. Or foolish. My only complaint about gmap-pedometer is that there doesn’t seem to be a way to say “stop recording”, so you (yes, you, reader) could, presumably, go there now and add extra points to my walk, causing anyone coming after you to think I’d spent Saturday yomping enthusiastically from Mumbles to, say, Chicago. Untrue.

Secondly, and maybe more usefully: Beer In The Evening [smallcool] — search pubs by locality and various other (mainly binary) metrics. For example: pubs near my house that serve real ale. Hmmm, I’m sure there are really more than three, but at least it got The Park and would thus presumably help find something good, when in “a tight spot”. While in Llantrisant recently wondering if there were any nice pubs nearby serving food, a beautiful woman suggested to me that it’s a good idea to keep a copy of The Good Pub Guide or similar (eg this one on my wishlist) in your car. We were in her car so I didn’t feel inadequate or ashamed for my lack of pub-finding skills, but seeing this site makes me think that with an iPhone, such a book could be unnecessary. Plus, chicks dig iPhones. And so the ongoing quest to replace all printed media with collaboratively-generated content marches on, driven, as all human activity, by the desire to impress cute friends…

Hmmm, I think I might be overdoing it with the commas…


Ha ha ha, excellent: Type Racer [davea].

Won my first race with a measly 66 wpm; I had to type the following spookily apt quote:

Throughout my academic career, I’d given some pretty good talks. But being considered the best speaker in a computer-science department is like being known as the tallest of the Seven Dwarfs.

Randy Pausch‘s last lecture book.

Puzzle time

My Mum sent me this on a piece of paper ages ago; it’s been sitting in my office waiting for me to digitise it so I can recycle the increasingly frayed piece of paper…

Each of the following represents a short well-known (or maybe not so well-known) phrase. The puzzle is: what’s the phrase? To get your started, the first one is “5,4,3,2,1 Thunderbirds Are Go!”.

  1. 54321 TAG
  2. 200 P to PG in M
  3. 516 & NBK
  4. 6 W of H the E
  5. 3 S to H
  6. 18 VA
  7. 11 DS is the CH
  8. 5 GR
  9. 9 L of a C
  10. 24 C means PG
  11. 2 Q in a C
  12. 2 LDBs on a W
  13. 50 W to LYL (PS)
  14. 50 S of A
  15. 24 BB in a P
  16. 1001 AN
  17. LBA 40
  18. 10 D in D
  19. 8 is the SR of SF
  20. 3 M & a B
  21. 39S (JB)

Answers in the comments section? I hope I’ve read her handwriting correctly. :-)

Late April Keepalive Ping


Lots going on, but blogging sorely neglected. Partially I’ve been busy with work, partially I’ve been busy with going away.

Three Big News Items:

  1. I properly completed and submitted my MPhil thesis; more on this later (including a PDF for anyone masochistic enough to want to read it).
  2. I went to Budapest for a week; photos later. They’re on flickr now but awaiting tags and descriptions; I had done those things but lost them by not listening to the nagging voice telling me not to use crappy software that doesn’t save its state (yes I’m talking about you, kflickr). Executive summary: great city, well worth a visit.
  3. I have a new job! Starting in August, I’ll be a Research Assistant working for Harold Thimbleby on a three-year project on formal tools for analysis of and design for usability, particularly on small devices. Again, more on this later.

There’s a fourth Big News Item but I’m keeping it under my hat for now.

So, lots for me to follow up on, but for now I’d just like to draw your attention to the latest clutch of lovely photos from Bash, who’s sadly been laid low by a bad cold for the last little while.

And stuff Marigold ninja Blossom in the sun How things used to be The lone seagull flies alone

Adam, my nephew

The subprime primer

The joy of hindsight: the sub-prime catastrophe in a few nutshells [smallcool].

Oyster cracked

Oyster (and others) cracked [smallcool] — another lovely example of “don’t invent your own crypto algorithm”, it seems.

… We argue that this is a gross over-estimate and present an attack that recovers secret keys within minutes on a typical desktop PC or within seconds on an FPGA. Our attack exploits statistical weaknesses of the cipher.

Not actually funny

Not actually funny.

Food fight

Food fight [rhodri].

Food Fight is an abridged history of war, from World War II to present day, told through the foods of the countries in conflict. Watch as traditional comestibles slug it out for world domination in this chronologically re-enacted smorgasbord of aggression.

Awe. Some.

Depression FTW! But not in an emo sense…

Upsides of being down — the positive side of depression.

Having spent most of 2006 and 2007 going through this myself, I can, I think, agree. It was unutterably awful, the worst experience of my life bar none (happily, both my parents are still alive) and I would not choose to repeat it but on the other hand, on the other hand, I am, somehow, improved, I think. I don’t know if I’d go so far as to say more resilient but yeah, with a better perspective, less rose tints (but also no yawning chasms of nihilism), and a bit more serious. But don’t worry: not too much more.

To explain why depression has not been “bred out” through Darwinian natural selection, theories have suggested that rather than being a defect, depression could be a defence against the chronic stress that misguided people can put themselves under. It is possible that depression defends us against the tendency to deny our true needs by chasing unobtainable goals and helps to bring these needs into sharper focus. More specifically, the proposed benefits are as follows: removal from a stressful situation, introspection, problem solving, the development of a new perspective, and reintegrating this with the community upon recovery.

On a related but geeky note, it’s very annoying that the otherwise excellent Guardian Unlimited fails (yes, epic) when it comes to search. Go to the front page and search for “upsides of being down”, the title of this article. It’s a hit but you have scroll down a long way to see it; google, on the other hand have it right at the top, on the day it was published — damn, they good! So come on, Simon, sort it out. ;-)

One way not to conduct Internet voting

USA Democratic Party “global primary” for Democrats Abroad badly run, insecure, untrustworthy — just like almost all (all?) electronic voting systems in use today.

There are well-known risks at every stage of the episode, so I repeat: that whole process was neither secure nor well-run; moreover, its collection of personal information using unsecured Web pages exposed participants to the risk of information theft, and delivering notionally secure information by email is painfully bad judgment. The episode proves nothing except that well-intentioned people continue to make elementary but serious errors in designing and setting up processes that must be safe at every step if they are to be meaningful.

Don’t like getting to sleep at night? Read the RISKS digest avidly.

I love this woman

Bash in grurple

… and have done for five years.

Destroy the secondary planet evidence, reactance armet!

Destroy the evidence — wonderful.

A quickly-jotted and probably ill-conceived note on language

For quite a while now I’ve been thinking, and saying, that languages are the central and fundamental modality for computing, ie everything one might want to do in computer science can/should be approached from a linguistic standpoint. I think I’ve just realised that this slightly misses the point, or at least doesn’t say much — because language is central and fundamental to any intellectual (or at least scientific/non-explicitly-sublime) endeavour.

Forget computer science for a moment, step back, and take a look at language.

Language is a serialisation mechanism for ideas and meaning. It exists and is beneficial because serialisation allows those things to be persisted, exchanged, and manipulated.

In natural language, the persistence mechanisms take the form of writing and recordings; the exchange mechanisms are speech if persistence isn’t required as a side effect, but otherwise largely use the persistence mechanisms. Manipulation takes the form of editing and rewriting at the syntactic level, and argument and debate at the semantic level (and propoganda/sociocultural programming at the political level).

Formal languages are central to computer science not because languages per se have anything much to do with computer science, but because formalisation, which means automation and mechanisation, is the very essence of computer science. It is the science of the mechanistic manipulation of data — “the latest stage in mankind’s ongoing quest to automate everything”, as JVT once said. Languages per se are fundamental to computer science only insofar as they are fundamental to all intelligent human endeavour, in their role as a serialisation mechanism for thought. The point with regard to computer science is not that we use language – that is an unavoidable side effect of thinking; the point is that we have to use formal languages, because of the things we choose to think about. As such, computer science is where the species’ expertise on the formal and formalisable aspects of language reside, mainly (colleagues in linguistics may take issue at this, of course, but my personal opinion is that the distinction between natural and formal is here very very deep, or at best that the formalisms behind natural language are intangible). At its heart, computer science is the science of formalisation; the language of such a science must, necessarily, be largely formal.

I guess that’s it. Does this make sense to anyone else? Maybe I’m not saying anything non-obvious. shrug

(This started, by the way, with me thinking about why the textbook on my table, “Languages and Machines“, is subtitled “An Introduction to the Theory of Computer Science”).

Some handy tools: cstream, lsof, iftop, …

Unix tools, and how I use them at Andrew Birkett’s blog, the latest addition to my feedspace.

There’s some really nice stuff here I didn’t know about. cstream, iftop, and less -S are all new to me. watch is, of course, indispensible.

Interaction design and programming: “best to market beats first to market”

Here are some very interesting notes on a keynote by Alan Cooper (of “The Inmates Are Running The Asylum” fame) at the recent IxDA Interaction08 conference.

Quote dump:

I don’t think we ought to be emphasizing innovation; in our industry, it will happen. Innovation means invention, but in the minds of business people, I believe it has come to mean “success”. But innovation doesn’t mean success (holds up that original clunky MP3 player that failed–”this was innovative, but was never successful”).

Business people don’t often do best-to-market because they don’t know how–we need to show them. Many have industrial age skills. They view software as mass production. Best-to-market only happens through craftsmanship. It’s all about quality–it’s all about getting it right, not to get it fast. It’s measured by quality, not speed. It’s a pure measurement, and a delightful one. Craftsmen do it over and over again until they get it right. In their training, they building things over and over so they get the experience they need to get it right.

Programming is not an industrial activity. It is a unique activity that has a lot in common with pre-industrial craft, and yet has a lot of unique characteristics that I call “post-industrial craft”. Programs are made one at a time, and each piece is different. It’s not scalable and it’s not formulaic. There’s no magic bullet in pre-industrial craft. We can’t say we’re all going agile and everything will come up roses. It’s incredibly nuanced and takes years of study to get right.

Programmers are draftsmen. However, they are different than pre-industrial workers. They are self-directed and know better than managers what to do. They respect intelligence, not authority. You can’t tell them what to do, you can only coerce them. Their satisfaction comes from the quality of their work.

But there are no economies of scale is software production, all you can do is reduce the quality that emerges. There are simply no good management tools for software construction. There are no appropriate tools for accounting for the creation of software. There’s no way to track any given feature, functionality, or behavior to the amount of money coming.

… and it goes on from there to say (less clearly, alas) what interaction designers can bring to this conflicted situation. Food for thought.

“Who ya gonna vote for? None of the above!”

Here’s one of my favourite little logic problems, courtesy of Faron. It’s about time I got this off my noticeboard and onto my interwebs.

Which of the following is true?

  1. All of the below.
  2. None of the below.
  3. All of the above.
  4. One of the above.
  5. None of the above.
  6. None of the above.

Solutions involving exhaustive analysis of the 2^6 possibilities are forbidden, although elegant code doing so will at least be admired for its cleverness, especially if it’s in Haskell. ;-)

Don Norman has the seventh sense: he sees buffers everywhere

Waiting: A Necessary Part of Life — Don Norman on buffers. I think this has possibly the best first sentence of anything I’ve ever read, ever:

Just as dirt collects in crevices, buffers collect in the interfaces between systems.

I’m impressed by the breadth of this. I like the idea that “interface” is a general and fundamental enough concept that the problems we see, and the mental models/tools for thinking about/solving them are essentially similar whether we’re talking about device usability, protocol design, or soft squidgy stuff involving only meat entities.

Problems arise at interface, any interface, be it person and machine, person and person, or organizational unit and organizational unit. Any place where two different entities interact is an interface, and this is where confusions arise, where conflicting assumptions are born and nourished, where synchronization difficulties proliferate as queues form and mismatched entities struggle to engage.

To the analyst, such as me, interfaces are where the fun lies. Interfaces between people, people and machines, machines and machines, people and organizations. Anytime one system or set of activities abuts another, there must be an interface. Interfaces are where problems arise, where miscommunications and conflicting assumptions collide. Mismatched anything: schedules, commuinication protocols, cultures, conventions, impedances, coding schemes, nomenclature, procedures. it is a designer’s heaven and the practitioners hell. And it is where I prefer to be.

Also worth a read: A Fetish for Numbers: Hospital Care.

Slide40 – presentations with 8 bit style

Slide40 example slide

From the same good people who brought you the lambda calculcus in a can [ultimate].

Easily fixing stuck pixels

Fix stuck/dead pixels on your monitor with Killdeadpixel

Awesome — supposedly can often fix stuck pixels with minimal effort on the part of the human. Almost makes me wish I had one to try it out on… ;-)

Impending food crisis?

Reading and listening to Long Now stuff has given me an (at its most optimistic) more skeptical and (at its most pessimistic) more long term non-human-centric view of stories like this, but it’s nonetheless food for thought (excuse the pun): Financial Times: impending food crisis? [i-r-squared via jreighley, randomly via twitter].

Hard red wheat is limit up again (i think thats 9 days out of 11) and is at $19.80 a bushel. When it broke $6 a bushel last summer that was an all time high.

A WFP official, for example, recently showed me the red plastic cup that is used to dole out daily rations to starving Africans – and then explained, in graphically moving terms, that this vessel is typically now only being filled by two-thirds each day, because food prices are rising faster than the WFP budget.

But it’s this that really caught my eye:

World grain stock as Days of Consumption, 1960-2006

Armed police arrest man over MP3 player

Armed police arrested a man listening to his MP3 player and took a sample of his DNA after a fellow commuter mistook the music player for a gun. [smallcool]

Darren Nixon had been waiting at a bus stop in Stoke-on-Trent on his way home from work when a woman saw him reach into his pocket and take out a black Phillips MP3 player. The woman thought it was a pistol and called 999.

Police tracked 28-year-old Nixon using CCTV, sending three cars to follow him. When he got off the bus, armed officers surrounded him. He was driven to a police station, kept in a cell and had his fingerprints, photograph and DNA taken.

The Liberal Democrats, who are campaigning to have the DNA records of innocent people destroyed, said the national DNA database now held more than 3m records kept for life, an estimated 125,000 of which belong to people who were neither cautioned or charged.

Database version control strategy

Quite an interesting five-part series on database version control. I haven’t used this particular approach myself, but it looks well thought through and sensibly structured, at first blush at least.

“Errr, never mind. They’re movin’”

Slowing down — awesome video.

New York-based performance art collective Improv Everywhere showcases their latest project, “Frozen Grand Central”, which mischievously targeted victims of the Big Apple’s notoriously short now.

There’s no arguing with that

Pac man chart

On prototypes and real applications

Quite so: prototypes and real applications.

Your prototype needs to be written quickly and then it needs to change quickly. You’ll only be able to do that with a maintainable, flexible code base. In short, a well-written code base. You’re a proficient software engineer, you know how to do this. You probably do it without even thinking.

And at some level, everyone knows this. That’s why prototypes are created in languages like Python. A language that you can write quickly, but also write well, quickly.

“This bug is at once easy to fix and impossible.”

The most common Unicode processing bug [reddit].

“Nothing interesting has happened in the last 20 years”, apparently

I delivered my first lecture, for CS-228 Operating Systems, 5 years ago yesterday. Today, TR delivered his first lecture — for, er, CS-228 Operating Systems. I’m sure he’ll do it very well, and certainly better than I, as he is both more informed and opinionated on that topic than I am. Well, on all topics, really… ;-) Welcome to the club, TR!

Best when chunky and delivered by foxes

Hooray for bacon! [ffffound]

Shadow glassware

Wine glass tumbler


LMAO @ the Guiliani visualisation on Defective Yeti’s analysis of the current state of the US presidential contest. I must say, I’m glad to see him out.

Data files should contain data

Data files should contain data — on the dangers of using Excel, among other things. True words – a lot of my exam mark processing headaches are due to data files with madly formatted content (not, I must admit, produced by Excel).

Irrefutable proof

The moon landings really are fake!!!11 [smallcool]

(Spoken to the father, obviously)

“My goodness, she looks just like you.”


Foxy troopers

All of a sudden, stormtroopers are sexy. Evidence…

Foxy stormtrooper 1 Foxy stormtrooper 2 Foxy stormtrooper 3

(This last from this fantastic page of Darth Vader helmets — check out the Statue of Liberty one…)

And while we’re on Star Wars imagery, I’d like to remind you to stay on target.

On the relative positions of C and Haskell on the Mohs scale

C isn’t hard; programming in C is hard. On the other hand: Haskell is hard, but programming in Haskell is easy.

Seen on this thread.

In good company

Fire And Motion — Joel on Software.

Once you get into flow it’s not too hard to keep going. Many of my days go like this: (1) get into work (2) check email, read the web, etc. (3) decide that I might as well have lunch before getting to work (4) get back from lunch (5) check email, read the web, etc. (6) finally decide that I’ve got to get started (7) check email, read the web, etc. (8) decide again that I really have to get started (9) launch the damn editor and (10) write code nonstop until I don’t realize that it’s already 7:30 pm.

Glad it’s not just me, then.

More infinite list tomfoolery in Haskell

More infinite list tomfoolery in Haskell — the one for pi’s particularly “WTF?”.

The Great Escape

Today I wanted to search a large number of text files for a particular sequence of characters. Naturally the tool to use for such a job is grep, as any phule kno.

Unfortunately, the text I wanted to search for was \' — that’s a backslash followed by a single quote. This is mildly problematic because each of these characters has special meanings either for grep or the shell or both.

Long story short, this is what I need to type:

grep \\\\\' *

That’s five backslashes followed by a quote. :-)

WTF? Well: grep uses \\ (two backslashes) to match a single slash, but so does the shell (zsh in this case) so if I entergrep \\' *, the shell would interpret the \\ as meaning “one backslash please” and pass just that one to grep. Unfortunately grep would interpret the backslash as escaping the following character, rather than a literal backslash. Thus, in order to actually give grep the two backslashes it needs in order to match one, I have to type four. Then we also need \' to match the quote character, because a quote on its own is interpreted by the shell as, well, a quote (ie starting a string) — so this final backslash is eaten by the shell in order to pass that quote to grep directly. grep doesn’t treat the quote specially of itself, so finally we have what we want. Sweet.

You have got to love the command line.

Cold beauty

Thin worship — harsh but beautiful (decreasingly so to the right, I think). I wondered why the photographer used the Haskellish term foldr1, but the answer is prosaic and on the front page. Yowzer.

So: humans may be capable of cold startling beauty but so too the sea.

Both via [ffffound], spamming my RSS with notable pixels.

Random beauty/design samizdat

I have know idea where/how she came across this, but Bash sent me a link to some really beautiful images (including the cover of a Lisp book). There’s even some Richard Scarry in there, ftw.

Practical Common Lisp

Practical Common Lisp — free book online [reddit]. One to read along with SICP some time in the next 12 months.

Traffic flow simulation applet

Traffic flow simulation applet — traffic as in “cars and trucks” not “data” [reddit]. German, so the top speed limit is 140kph. :-)

“Just a Bit crazy”

Just a Bit crazy — short bonkers flash music thing. Awesome!

Core JavaScript 1.5 Guide

For my future reference: Mozilla Developer Centre Core JavaScript 1.5 GuideTR tells me this is the most sensible way to learn Javascript.

He particularly recommends the page on Class-Based vs. Prototype-Based Languages. JavaScript has a lot in common with Self, apparently.

Gimboland sidebar now shows Bash’s photos

I’ve modified the sidebar so it displays the last 5 photos from Bash’s flickr photostream rather than mine. I haven’t uploaded any photos to flickr for forever, and Bash’s are just better anyway. Tis an honour.

Randy Pausch: Really Achieving Your Childhood Dreams

I think this is probably the most valuable and worthwhile thing I’ve ever posted on Gimboland. Totally worth making it to the end.

Randy Pausch: Really Achieving Your Childhood Dreams.

Carnegie Mellon Professor Randy Pausch, who is dying from pancreatic cancer, gave his last lecture at the university Sept. 18, 2007, before a packed McConomy Auditorium. In his moving talk, “Really Achieving Your Childhood Dreams,” Pausch talked about his lessons learned and gave advice to students on how to achieve their own career and personal goals.

Notes: Tony Sale on WW2 codebreaking and Colossus rebuild

Earlier this evening I went to a great lecture by Tony Sale, on “Code Breaking in World War 2″.

He discussed Enigma, and how it was broken, then the Lorenz cipher/machine, and how that was broken, and then the Colossus, leading to the Colossus rebuild project. He should know about this stuff: he started the project.

I took some notes if anyone is interested [PDF, 76Kb] (naturally, these are rough notes, may contain errors, are my own, etc.). You might also want to check out which includes a virtual Colossus.

“Approximate location of your property”

Heathrow daily traffic routes circa heck knows when: easterly ops, westerly ops.

Monads and the meaning of imperative language – also, some musing

Monads and the meaning of imperative language — the delicious alpheccar does a lovely job of introducing denotational semantics without saying enough to scare you off, and shows how exceptions (or even assert) in imperative languages are, at bottom, the Maybe monad. This point generalises (apparently – I know enough to believe it could be true, but not enough to assert that it isn’t untrue) to “any formal description of control flow in an imperative language will be monadic in nature.” Gorgeous.

The stuff about defining domains (and that being the hard part) is resonating with me just now; I’ve spent the day nailing down definitions of sets describing a particular aspect of my pet specification language, CspCASL, and it’s not trivial. And this is the easy part: not proper “domains”, just sets without much internal structure. Markus does that, for the model semantics. Anyway, yay language design.

Formally describing languages is hard. That’s why it doesn’t happen much yet, which is one reason our current languages situation is so messy. My hand-waving prediction: it’s hard but not intractable, and we’re getting better and better at it; in time it’ll be a sufficiently managable problem, with sufficiently good tool support, that languages which aren’t formally described will stagnate in comparison to the new languages then appearing. Naturally, from where I’m standing I see the increasing convergance of computer languages (sounds like a dumbing-down term but I’m really just trying to cover both programming and specification) with full-blown mathematical logic in all its various and colourful forms. Mathematics is the language for describing things formally; a computer program is by necessity a formal description of something, therefore this convergance seems like it will be a good thing – again, from where I’m standing. Whether or not it appears that way because where I’m standing is a good place to get a view of what’s going on, or just because that’s all you can see from here, remains to be seen. ;-)

more retro »