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.

Word.

Using ping.fm 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 ping.fm, 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 ping.fm 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 ping.fm 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.

Win.

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 (myuserid@ping.fm) unset signature

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

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