Blog

They Say that Programmers Never Die

They just gosub without return. That is, of course, a joke (with all due apologies to those of you to whom it means nothing), but there’s a kernel of truth in the saying. In their own way, programmers are like authors or artists in that their work can easily outlive them, and their unique and distinct style can be found in their creations: and in that created by those that learn from or imitate them.

This morning I was working on some legacy Perl code that holds together a part of a client’s web site. In particular, I was refactoring the code that displays dates and times in an appropriate format, as part of an effort to simplify the code after fixing a bug that would, under some unusual conditions, use the “pm” suffix for morning times (e.g. 11pm, when it means 11am). Under normal circumstances this would have been a simpler job than it was, but this particular piece of software has been passed from developer to developer, and (until it came into my hands) I’m pretty sure that none of them took the time to understand what their predecessors had done. Several different stylistic and semantic styles are used in the code, and several different solutions are used for the same problem, depending on who was in charge at any given time. In short, the code’s a mess, but the client is on a tight budget and can generally only afford to pay for the minimum amount of work, and not for the sweeping overhaul that the system so badly needs.

I came across a particular line of code, today (evidence, perhaps, of a previous developer looking into a related issue to the one with which I was tasked):

$leu_something .= $hour . " - " . $amorpm;

Even without the developer’s name embedded within the variable name, I could have told you who wrote this code because of its distinct style. Even this single line has a defining appearance of its own, to the trained eye. To illustrate this, consider that the line could equally have been written in any of the following ways (among hundreds of others, without even looking at the optional space characters and interchangeable types of quotation marks used), and would have functioned identically:

  • $leu_something = $leu_something .= $hour . " - " . $amorpm;
  • $leu_something .= "${hour} - ${amorpm}";
  • $leu_something = join($leu_something, $hour, " - ", $amorpm);
  • $leu_something .= sprintf('%s - %s', $hour, $amorpm);

Some of these methods have specific advantages or disadvantages, but all have the exact same fundamental meaning meaning. However, even from a glance I could tell that this code belonged to the former developer named Leu (and not any of the other developers whose names I’ve seen in the project) because of the style in which he chose to write it.

Non-programmers often fail to understand why I describe programming as being as much an art as a science. The work of a programmer has been compared to the work of a poet, and I agree with this sentiment. Even merely on a superficial level, both computer code and poetry:

  • Can be good or bad (by consensus, or subjectively).
  • Attach significant importance to proper syntax and style (you need the right rhyming pattern in a limerick and the right number of brackets in a loop).
  • Express a concept through the artistic use of a language.
  • When used to express complex ideas, benefit from creative and sometimes out-of-the-box thinking.
  • Often lose value if they are literally translated to another language.

Not only that, program code can be beautiful. I’ve examined code before that’s made me smile, or laugh, or that has saddened me, or that has inspired me. I shan’t argue that it’s on a par with the standard of spoken-language poetry: but then, programming languages are not designed to appeal to the pathos, and are at a natural disadvantage. Sometimes the comments for a piece of code can in themselves carry a beauty, too: or they can serve simply to help the reader comprehend a piece of code, in the same way as one can sometimes find guidance in the interpretation of a poem from somebody else’s research.

However, it’s possible to say things with code that one simply can’t convey in the same way, using a spoken language. To prove this point, I’ve composed a short haiku in the medium of the Ruby programming language. For this purpose, I’m defining a haiku as a poem whose lines contain 5, 7, and 5 syllables, respectively. It’s an existentially nihilistic piece called Grind:

Grind

def grind(age = 0)
  die if age == 78
  grind(age + 1); end

Vocalised, it would be read as follows:

Def grind: age equals zero,
Die if age equals seventy-eight,
Grind (age plus one); end.

I enjoy the subtlety its use of recursion to reinforce the idea that every year of your life gives you a bigger burden to carry (and a larger amount of memory consumed). This subtlety does not adequately translate to a spoken language.

The line of code I showed you earlier, though, is neither interesting nor remarkable, in itself. What makes it interesting to me is that it persisted – until today, when I removed it – in this piece of software. The author, Leu, died several years ago. But there will exist software that he wrote, being read again and again by tireless machines on a daily basis, for years to come.

I wonder how long the code I write today will live.

As an Aquarius, I’m shocked…

This week, the Internet went mildly crazy for a few minutes when people suddenly started discovering that their astrological sign might not have been what they previously thought. My favourite line in the linked article is “…the Minneapolis Star Tribute published an article, stating that our horoscopes are wrong,” to which my first thought was, “Well, duh.” This all comes about because when Ptolemy accidentally invented contemporary astrology, almost two millenia ago, he never specified whether his system should be based on the calendar year, or on the actual relative positions of the stars. While the calendar year has pretty much remained the same since Ptolemy’s time, our solar system has rotationally drifted slightly relative to the rest of the galaxy, and so the constellations aren’t quite in line with the calendar any more.

In theory, at least, if we were to plot a sun sign by the stars (as is practiced in some Eastern astrology) rather than by the calendar (as is practiced in most Western astrology), that’d make me not a Capricorn, as you might expect, but a Sagittarius.

I had a friend, once, who attached a not-inconsiderable amount of importance to her horoscope. However, she had a strange approach to the subject. I remember one particular morning when she got up and read her horoscope in the newspaper. She didn’t like what she read, and decided that it must therefore be wrong, and instead looked up the one on Teletext instead. Still unsatisfied, she eventually looked up her horoscope on the web, and – finally finding a fortune that she was happy to accept as hers – accepted it.

Thankfully, there’s no cause for concern for me, because I’m an Aquarius. I was born a Capricorn, but I never really felt comfortable as one, so I had my star sign changed to one that I felt suited me better. I have a certificate and everything, printed on an old inkjet printer and folded up in a drawer ever since. Once or twice, people have tried to tell me that it doesn’t work; that you can’t just “change” your star sign simply because you want it to be different. When this happens, I simply point out that my bit of paper is just as official, as believable, and as scientific as astrology is in the first place. And despite the (disputed) idea that our star signs might all have changed, as has flooded Facebook, my scrap of paper still says “Aquarius” on it, as relevant today as it always has been!

The Worst Server Infection I’ve Ever Seen

With my day job at SmartData I’ve recently been doing some work for a client, transporting their data from the Microsoft SQL Server that back-ends their desktop application and converting it to a different schema on a different database for a new, web-based application. Because there’s quite a lot of data, the schema are quite different, and the data needs to be converted in a “smart” way: I’ve written a program to help with the task.

My program takes data from our client’s old server and moves it to their new server, making several alterations along the way.

Unfortunately, it’s  a slow process to move all of the data over. So, to test my program as I continue to develop it, I thought it might be useful if I could take a copy of the “live” database to somewhere more local (like my computer). This would remove the overhead of going through the Internet each time, and reduce the run time of the program significantly – an important consideration during its ongoing development.

Unfortunately, a quirk in the way that Microsoft SQL Server works is that the backup file I can make (ready to restore onto my computer) doesn’t appear on my computer, but appears on the old server. And I don’t have a means to get files off  the old server. Or do I? I have a username and password: I wonder if there are any other services running on the server to which I might have access. To find out, I use a program called Nmap to try to get a picture of what services are running on the server.

The results of running Nmap on the server. That’s a lot of open ports…

And that’s when I realised that something might be wrong. For those of you who aren’t inclined toward understanding the ins and outs of network security, the screenshot above should be considered to be more than a little alarming. There’s pretty obvious and clear signs that this computer is infected with Trinoo, NetBus, Back Orifice, and quite probably other malware. It’s almost certainly being used as part of denial of service attacks against other computers, and could well be stealing confidential information from our client’s server and the other computers on their network.

How have things gotten so out of control? I’m not sure. I’ve never seen such a rampant runaway set of infections on a server system before. Computers belonging to individuals, especially individuals inclined to installing BonziBuddy, Smiley Central/Cursor Mania, and so on, are often littered with malware, but one would hope that a server administrator might have a little more wisdom than to let unauthorised code run on a server for which they were responsible. At the very least, a Windows-based, Internet-accessible server ought to be running a strict firewall and antivirus software (virtually all antivirus software would have detected all three of the infections I’ve named above).

Just about  anybody can get onto the ‘net, these days, and I can just about forgive a regular Jo who says says, “I don’t know anything about computers; I just want to play FarmVille.” It’s disappointing when they end up inadvertently helping to send email advertising “$oft C1ALIS tabs” to the rest of us, and it’s upsetting when they get their credit card details stolen by a Nigerian, but it’s not so much their fault as the fault of the complexities they’re expected to understand in order to protect their new computer. But when somebody’s running a service (as our client is paying for, from a third-party company who’s “managing” their server for them), I’d really expect better.

The Bit for the “Regular Jo”

And if you are a “regular Jo” on a Windows PC and you care enough to want to check that you’re part of the solution and not part  of the problem, then you might be interested in a variety of free, trusted:

  • Anti-virus software (essential)
  • Adware/spyware removal tools (useful if you routinely install crap downloaded from the web), and
  • Firewall software (essential if you connect “directly” to the Internet, rather than via a “router”, or if you’re ever on networks on which you can’t trust the other network users – e.g. free wi-fi access points, shared Internet connections in student houses, etc.)

Edit: And don’t forget to regularly install your Windows Updates. Thanks to Gareth for the reminder that regular Jos should be encouraged to do this, too.

× ×

Thirty – Part Two

Last weekend, I turned thirty. As I described earlier, I had originally planned to write a retrospective summary of what I’d been doing for my life so far (y’know; what’ve I been up to these decades). I wasn’t terribly satisfied with what I’d written, so far, and by the time that the party was over I’d changed my mind completely. So I threw out everything I’d written so far and wrote this, instead.

Part II: The bit that’s different from what I expected to write.

As I said in Part I, I had originally planned to write a long and drawn-out retrospective, looking back on my life. I wanted to try to encapsulate it in some kind of bubble or capture it in some way that condensed it into something concise and manageable. But every time I tried to begin to put down words to express it, it always came out looking cynical and pessimistic. And that doesn’t reflect how my life has been this far: to the contrary, my original plan to write about the last time years has nestled within it most of the very best years of my life thus far. I took a moment to contemplate my situation: why was I unable to describe this period with the liveliness and joy with which it deserves. And then I realised: the reason that I was writing so pessimistically is because – unusually, those who know me will surely agree – I’ve had a somewhat pessimistic view of the world, recently… and this depressing outlook was infecting my words.

This last year and a bit have been hard, for me. Things like this, and this, and this, and this – among other events – have worn me down and made feel, quite often, that I’m fueled only by nostalgia and that I’ve been struggling to find motivation for the future. Even happy events, like Ruth & JTA’s wedding, have often been an intense emotional rollercoaster ride, full of ups and downs that would be an easy ride under normal conditions but which were each just “one thing to many” when combined with everything else. In short: it’s been a tough year.

The last ten weeks or so have been the worst. Struggling with a variety of different issues and, buried deep in the cold and the dark of a particularly bleak and challenging winter, I’ve periodically found myself a very long way out into the Not OK half of the room.

It’s been particularly unpleasant: not just for me but, I’m sure, for the folks who’ve had to put up with me while I’ve been so irritable and grumpy.

But it’s not all bad. The worst has passed, I think, and things are getting better. I’ve got all the support I could need, and it’s been getting better a little at a time – a little more each day. My birthday, though, was different. It wasn’t a step forward: it was a flying leap! Where I expected to be looking back over the past, I instead found myself looking forwards to the future. And being surrounded by the wonderful (infectious) bounciness and enthusiasm of so many great friends, piled into one place, was incredibly liberating. For the first time in weeks I felt a surge of optimism that persists even now.

I managed to find the time – but not the words – to try to tell some of you who were there how important it was for me that you’d been able to come and make the party a success. I hope that this blog post makes everything clearer.

Thanks to everybody involved for a fantastic party.

All comments on this post will be moderated before publication. If you don’t want your comment to be published, please state this in your comment or instead use the contact form.

 

Thirty – Part One

Last weekend, I turned thirty. I had originally planned to blog this weekend in a retrospective manner- looking back over the last decade or so of my life: a particularly common theme for the time of year, when we look back over our resolutions and count the years as they pass, and also a common activity suitable for a birthday so (arbitrarily, but apparently appropriately) significant as one’s thirtieth. However, I’ve had a change of heart, for two reasons.

Firstly, but least significantly, the numerical significance of a decade of life truly is arbitrary. This was expressed quite clearly, I think, when Finbar looked at my birthday cake, and, misinterpreting the writing on top of it, said, “You’re… 3D years old?” After a few seconds of mental arithmetic, I replied: “Not for another thirty-one years, I’m afraid.” Unfortunately my joke – based on the implication that my age was being expressed in hexadecimal base – was wasted on those within earshot (Angharad, Ele, and Lee, I think), but still gave me a moment to think: seriously: is the significance of my age really dependent upon the fact that it’s an exact multiple of the (modal – this isn’t quite true for all) number of digits on the uppermost two limbs of a human?

But more importantly, the reason behind my change of heart was primarily because of a shift in my attitude, brought about, I think, as a result of the birthday celebrations. I’ll talk about that in the next blog post. But first, I thought I’d tell you all about the party:

Part I: Surprise! Or: how to organise a surprise party that’s still surprising even though the person being honoured knows it’s happening.

Ruth tried ever so hard to keep my surprise party a surprise. It’s generally hard for her to keep secrets about which she is excited, and she’d become ever so proud of herself for managing to keep her plans under wraps for so long. Unfortunately, there was a miscommunication, and Finbar first heard about the party without being told that it was to be a surprise.

I received a text message from him towards the end of last year:

Hey Dan, I haven’t been watching my inbox and Angharad tells me you’re doing a thing on the 6th for your birth cycle. If we attended, could we pitch a tent behind earth? Happy birth cycle, by the way. Hard to believe you’re already 25.

This caused some confusion. Not only had he gotten the date wrong (a separate misunderstanding), but he was also talking about an event about which I know nothing. I began to compose a response, correcting him and explaining that no, nothing is planned – but perhaps if he and a few other people were free we could get together anyway. As I typed, I quizzed Ruth to see if she knew from where the confusion might have arisen. And so: the truth came out.

A 'Happy Birthday' banner in the hallway of Earth.
A ‘Happy Birthday’ banner in the hallway of Earth.

Nonetheless, the party was a success. Particular highlights (and surprises) included:

  • The attendance of so many people, and from such far-flung corners of the country! I was honestly overwhelmed by the attendance of so many friends at (what felt to me, at my late discovery) such short notice.
  • A beautiful cake produced by Ruth to show a group of Pikmin of various colours crowding around a large object that would require 30 of them to lift it: a wonderful interpretation of the (adorable) Pikmin characters for the medium of a birthday cake.
My birthday cake. With pikmin on it!
My birthday cake. With Pikmin on it!
  • Drinking cocktails out of the largest martini glass I’ve ever seen. Seriously: I could easily have drowned in this thing (sorry; no picture – others took some, though, and I’ll add one to this post if somebody can supply one).
  • A mixture of party games both silly (like the Christmas-themed pass-the-parcel which used up a lot of our spare Christmas supplies) and spectacular (like JTA‘s clever and complex treasure hunt, which has hampered only by the sheer number of guests involved even after Liz, Suz and I kindly offered to sit on the couch and take managerial roles). Even those games that didn’t get off the ground, like the short-lived game of charades, the on-again-off-again game of Apples To Apples which finally went ahead the following morning, and the ill-conceived fruit-passing game – not suitable for seated players, we now know – that ultimately lead to the spillage of lots of booze were fun in their own ways.
  • Discovering new things about old friends (the kinds of things that earn them even more Awesome Points™).
  • The thought and consideration that evidently took place in the minds of my fellow Earthicans, from the kids-party themed food and drink (plus alcohol, naturally) that I know that Ruth and JTA were up far too late preparing, to the blatantly catered-to-me playlist that first appeared on the music collection (thanks, Paul!). Even down to the detail of taking me outside again after everybody had arrived so that I could come in any everybody could shout “Surprise!”, as if I didn’t know (sorry, folks: I knew).
Leading candidates in the ad-hoc 'best boobies' competition. I still like Ele's.
Leading candidates in the ad-hoc ‘best boobies’ competition. I still like Ele’s.
  • Feeling like I was the core of a group of people that varied, over the course of the evening, between one and three parties (which shall be referred to as Party A, Party One, and The Upstairs Party).

Put simply, the party was fantastic. Everybody who came helped to make it awesome by bringing a bit of their own magical selves (or by contributing from afar by ordering the pizza, of course). Thank you all so very much.

The following morning, Matt eats a breakfast of muffins... and milk???
The following morning, Matt eats a breakfast of muffins… and milk???

Edit: Part 2 is now online. It’s significantly less jolly, but ultimately optimistic.

× × × ×

Dan Q found GL4ZB04Z WW1 With you in a jiffy lad!

This checkin to GL4ZB04Z WW1 With you in a jiffy lad! reflects a geocaching.com log entry. See more of Dan's cache logs.

Visited with pacifist_049 and first-timer Andrewsean85 on 2nd Jan, but only remembered to get around to logging it twenty days later! A nice little find made a little too-easy by bumping into another group of cachers who were there just before us (no log from them, though, whoever they were…) TFTC.

Dan Q found GL4WWE7T Splash

This checkin to GL4WWE7T Splash reflects a geocaching.com log entry. See more of Dan's cache logs.

Fantastic cache! pacifist049 and I took a look this morning as we happened to be in Preston. A match was due to start this afternoon so we wanted to make sure we were done before then! It took us quite a bit of puzzling to work out what we needed to do, and where, and a few failures in the co-ordinate calculation initially suggested that we were looking for a cache about 8 kilometres away!

Eventually though, we prevailed: once we knew where we were headed it was easy – and the clue makes perfect sense once you’re in the right area! Thanks again for an amazing cache; my first of 2011!

On This Day In 2004

A little bit tongue-in-cheek, this one.

Looking Back

On this day in 2004, I’d just finished my first marathon session of playing Half-Life 2, a spectacular new video game that quickly became one of the best-selling computer games ever. Despite New Year celebrations and other distractions, I managed to sit and play the game for a couple of days and finished it very soon after.

The launch of the game was delayed – I’d pre-ordered it 17 months before it eventually got released – after being plagued with development difficulties. One of the many delays to it’s launch was blamed on the theft of part of the source code: I remember joking, after the thief had been caught, that now that they’d got the code back they’d be able to release the game, right?

Meanwhile, Paul swore that he would have nothing to do with the digital distribution platform – Steam – that remains the only way to get a legitimate copy of Half-Life 2. On his blog – then on LiveJournal – he listed all of the many problems that he saw with Steam, and I countered a few of them in an argument in the comments. For years to come, he’d go on to refuse to play some of the most fantastic computer games to be released on principle.

Looking Forward

Things change. I can’t remember the last time I saw Paul playing a video game that he didn’t buy on Steam, for one (except for a handful that he bought from Good Old Games – which is well worth visiting, if you haven’t already).

Some things stay the same: Half-Life 2 remains one of the best first-person shooters ever made, and has been followed by two spectacular sequels (Episode 1 and Episode 2) and a number of spin-offs (including the mind-blowingly awesome Portal, which stole my life for a while, although not for long enough to make my 2007 list of life-stealing games). We’re still all waiting on the much-delayed Episode 3, though…

This blog post is part of the On This Day series, in which Dan periodically looks back on years gone by.

Dan Q found GL4WVX47 The Circus

This checkin to GL4WVX47 The Circus reflects a geocaching.com log entry. See more of Dan's cache logs.

Found it immediately by thinking “yeah, that’s where I’d put the cache” and the co-ordinates were spot on. But I still had to be quite sneaky while my co-cacher provided cover in order to get this one.

Log needs archiving. Somebody’s added an extra roll of paper stuffed into the tiny cannister but it’s challenging to get both rolls back in afterwards: the old one should be removed and filed away somewhere.

Great cache!

Dan Q found GL4WVWZM Going Underground (not anymore) #2

This checkin to GL4WVWZM Going Underground (not anymore) #2 reflects a geocaching.com log entry. See more of Dan's cache logs.

Paced up and down the street quite a few times before we found this beautifully-hidden cache. Then had to stand around looking like lost tourists while we waited for the area to clear so we could grab it without attracting suspicion!

TFTC: my first in a long while!

Dan Q couldn’t find GC1KKT8 Flonopoly Cache 12 – Piccadilly

This checkin to GC1KKT8 Flonopoly Cache 12 - Piccadilly reflects a geocaching.com log entry. See more of Dan's cache logs.

Co-ordinates seem to point to the wrong side of the street (based on the clue), but even armed with the clue and the logs of those people who eventually found it on their second or third attempt, we couldn’t get this one despite an extended search. Based on the frequency of DNFs, I’d suggest that 1.5 isn’t a high enough difficulty for this evidently-well-hidden cache!

The Wedding – Unanswered Questions

The photos from Ruth & JTA’s wedding are coming soon, I swear. In the meantime, here are a few questions that I’m still puzzling over:

What kind of chord do I think I’m playing?
What does my mother think smells so good; and why does Becky disagree?
Why is Fiona kissing me?
Why is Chris saluting in this picture?
On what subject is Bryn pondering? And did his mighty brain come to a conclusion on the subject?
Why is Owen carrying Robin around? And is this truly the happiest day of Robin’s life?
Who choreographed Matt P and I’s dance moves? And why do we look so awesome?
Who’s just hit Matt R in the back of the head with a snowball?
To whom is Liz threatening fisticuffs? And does anybody other than Finbar even use the word ‘fisticuffs’?
What does that look on JTA’s face mean? No, wait… I know this one…
If Robin is interviewing Tom, why is he using an invisible microphone?
What has startled JTA so badly?

Some or none of these questions will be answered in time (and, perhaps, when you see the whole picture). Keep an eye on the wedding blog for updates just as soon as Ruth and JTA find the time to update it! And I’ll look forward to hearing your caption ideas for some of the “sillier” pictures.

Meanwhile, if you’re among the people who took photos at the wedding and who hasn’t yet given me nice, hi-res copies, please get in touch!

× × × × × × × × × × × ×

The Wedding – Feedback

Ruth & JTA haven’t gotten around to blogging about their wedding since it happened, yet, and I’ve so far failed to make available copies of many of the photographs I’ve been sent (although you can find a link to a few photos on this page) – although, in my defence, I’ve only just gotten the chance myself, this weekend, to see the official photographs. All of this will happen in time, I promise. In the meantime; here’s some of the feedback that I collected from around the web in the aftermath of the wedding:

Alec tells Facebook that he had a great time.
Alec tells Facebook that he suffered afterwards.
Ele tells Facebook that it was “Wedding-tastic.”
Before the wedding, Harriet tells Facebook that she’s enjoying being one of only two Trevor-Allens, before Ruth becomes a third.
Harriet looks back on the weekend, on Facebook, and answers comments asking about her journey home.
Matt P tells Facebook simply “wow. that was amazing!” Andy K, who couldn’t make it to the wedding, replies to ask if Matt was talking about University Challenge!
Sian tweets simply, “Aww, I love weddings me!”
Selina gets back to the land of bacon, Lego and beer, and congratlates the happy couple via Facebook.
Sarah, who couldn’t make it to the wedding, thanks Becky for delivering her wedding cupcakes.
Ruth gets back from her and JTA’s mini-honeymoon and tells Facebook about how many sugared almonds she’s eaten (ultimately, she made herself quite unwell).

You might also be interested in the following things that people have been saying around the interwebs:

I’ll try to keep this list of links up-to-date, so if you’re aware of anything that I’ve missed, let me know and I’ll add it. And needless to say, you’ll hear a little more about this from me when I get the chance.

What’s that you say? You’re wondering about the strange parcel?It turns out it was an Amstrad CPC 464 that my mother found on eBay. More on that later, perhaps.

× × × × × × × × × ×

Productivity

When we woke up this morning Oxford was caked with a blanket of snow, about two inches thick and growing fast. Ruth, JTA and I thought that we’d make the most of it and go for a walk along the Cherwell, and by the time we were heading back the snow was ankle-deep. Reaching the corner of the street where we live we helped a few stranded motorists whose vehicles had taken one look at the hill near our house and said “fuck this for a lark.” Specifically, we helped them by pushing their cars off junctions and out of the way of other cars. It didn’t take long to realise that the chaos that was the series of junctions on the main road was only getting worse, and, caught out by our own sense of social conscience (and perhaps at least a little inspired by a recent story we’d read), we decided that we could be doing more.

We trekked back to Earth and collected hardy boots, hi-visibility jackets, shovels, and brushes, and made our way back to the junction. And, for the next hour or two, we worked at clearing the road and rescuing motorists. Before long there were others coming out of their houses and workplaces and helping: pushing cars up hills and clearing snow and ice from troublesome parts of the road. Highlights included:

  • Rescuing dozens of motorists who’d otherwise have been completely stuck.
  • Shoveling clear an escape road for vehicles that couldn’t make it up the hill.
  • Giving directions to motorists whose routes were blocked, to pedestrians whose buses had been cancelled, etc.
  • Stopping all traffic in order to prioritise ambulances, as we’re on a hospital approach road. You’d be amazed how many motorists will do what you tell them when you’re wearing a flourescent jacket.
  • Getting thanked by a great number of people.
  • Getting complaints from a minority of people who were angry that we were shovelling and not salting/gritting: presumably they thought that we were employed by the council.
  • Meeting like-minded helpful people who came out of their houses and workplaces to lend a hand.

We returned to Earth and drank mulled wine with Hanna, a woman who lives up the road from us who came out and helped. She’d been expecting her boyfriend (who’s visiting for the weekend) but he’s among the thousands of people stuck out in the snow, and even five hours after he was expected he hadn’t yet arrived. Then we made snow angels in the garden.

And because karma doesn’t believe in us, the universe repaid our kindness by having our boiler break down again (but in a different way) this evening. So now we’re sat in blankets in the living room.

A Very Confused Courier

I’ve just had a phone call from a very confused courier. My mother (who many years ago for reasons both too long and silly to go in to I nicknamed “Crusty Pasty”) texted me last night to say that I was to be delivered an early Christmas present that would arrive today, and that she’d given the courier my phone number so that he could ensure that I was in when he came around. My mobile rang:

Me: Hello.
Him:
Hi, is this Dan… Q?
Me: Speaking.
Him: Hi: I have a delivery for you from a… I just want to make sure I say this right: Crusty Pasty?
Me: That’s correct. I’m expecting it.
Him: I think there might be something wrong with your landline: I called and got a strange robot voice.
Me:
Oh, that was you? That phone is never answered. Best to call this number.
Him:
I just wanted to double-check the address: [number] Corpse Lane?
Me: Copse Lane.
Him: Oh yes, sorry. Just my bad handwriting. I’m on the M4 right now; I’ll be there in about an hour: is that okay?
Me: Yes, I’ll be at that address all morning.
Him: Okay. See you at about 11.

Codenames? Mysterious parcels? Phone numbers that always go unanswered? Yes, that’s right: I’m about to be treated as being part of some kind of terrorist cell. If my “early Christmas present” is something that can be used in the construction of an explosive, then the jigsaw will be completed and this will probably be my last ever blog post… until I’m released from Guantanamo Bay.