Tomorrow’s Web, Today

Maybe it’s because I was at Render Conf at the end of last month or perhaps it’s because Three Rings DevCamp – which always gets me inspired – was earlier this month, but I’ve been particularly excited lately to get the chance to play with some of the more “cutting edge” (or at least, relatively-new) web technologies that are appearing on the horizon. It feels like the Web is having a bit of a renaissance of development, spearheaded by the fact that it’s no longer Microsoft that are holding development back (but increasingly Apple) and, perhaps for the first time, the fact that the W3C are churning out standards “ahead” of where the browser vendors are managing to implement technical features, rather than simply reflecting what’s already happening in the world.

Ben Foxall at Render Conf 2017 discusses the accompanying JSOxford Hackathon.
Ben Foxall at Render Conf 2017 discusses the accompanying JSOxford Hackathon. Hey, who’s that near the top-right?

It seems to me that HTML5 may well be the final version of HTML. Rather than making grand new releases to the core technology, we’re now – at last! – in a position where it’s possible to iteratively add new techniques in a resilient, progressive manner. We don’t need “HTML6” to deliver us any particular new feature, because the modern web is more-modular and is capable of having additional features bolted on. We’re in a world where browser detection has been replaced with feature detection, to the extent that you can even do non-hacky feature detection in pure CSS, now, and this (thanks to the nature of the Web as a loosely-coupled, resilient platform) means that it’s genuinely possible to progressively-enhance content and get on board with each hot new technology that comes along, if you want, while still delivering content to users on older browsers.

And that’s the dream! A web of progressive-enhancement stays true to Sir Tim’s dream of universal interoperability while still moving forward technologically. I’ve no doubt that there’ll always be people who want to break the Web – even Google do it, sometimes – with single-page Javascript-only web apps, “app shell” websites, mobile-only or desktop-only experiences and “apps” that really ought to have been websites (and perhaps PWAs) to begin with… but the fact that the tools to make a genuinely “progressively-enhanced” web, and those tools are mainstream, is a big deal. If you don’t think we’re at that point yet, I invite you to watch Rachel Andrews‘ fantastic presentation, “Start Using CSS Grid Layout Today”.

Three Rings DevCamp 2017
Three Rings’ developers hard at work at this year’s DevCamp.

Some of the things I’ve been playing with recently include:

Intersection Observers

Only really supported in Chrome, but there’s a great polyfill, the Intersection Observer API is one of those technologies that make you say “why didn’t we have that already?” It’s very simple: all an Intersection Observer does is to provide event hooks for target objects entering or leaving the viewport, without resorting to polling or hacky code on scroll event captures.

Intersection Observer example (animated GIF)

What’s it for? Well the single most-obvious use case is lazy-loading images, a-la Medium or Google Image Search: delivering users a placeholder image or a low-resolution copy until they scroll far enough for the image to come into view (or almost into view) and then downloading the full-resolution version and dynamically replacing it. My first foray into Intersection Observers was to take Medium’s approach and then improve it with a Service Worker in order to make it behave nicely even if the user’s Internet connection was unreliable, but I’ve since applied it to my Reddit browser plugin MegaMegaMonitor: rather than hammering the browser with Javascript the plugin now waits until relevant content enters the viewport before performing resource-intensive tasks.

Web Workers

I’d briefly played with Service Workers before and indeed we’re adding a Service Worker to the next version of Three Rings, which, in conjunction with a manifest.json and the service’s (ongoing) delivery over HTTPS (over H2, where available, since last year), technically makes it a Progressive Web App… and I’ve been looking for opportunities to make use of Service Workers elsewhere in my work, too… but my first dive in to Web Workers was in introducing one to the next upcoming version of MegaMegaMonitor.

MegaMegaMonitor v155a Lists feature
MegaMegaMonitor’s processor-intensive “Lists” feature sees the most benefit from Web Workers

Web Workers add true multithreading to Javascript, and in the case of MegaMegaMonitor this means the possibility of pushing the more-intensive work that the plugin has to do out of the main thread and into the background, allowing the user to enjoy an uninterrupted browsing experience while the heavy-lifting goes on in the background. Because I don’t control the domain on which this Web Worker runs (it’s reddit.com, of course!), I’ve also had the opportunity to play with Blobs, which provided a convenient way for me to inject Worker code onto somebody else’s website from within a userscript. This has also lead me to the discovery that it ought to be possible to implement userscripts that inject Service Workers onto websites, which could be used to mashup additional functionality into websites far in advance of that which is typically possible with a userscript… more on that if I get around to implementing such a thing.

Fetch

The final of the new technologies I’ve been playing with this month is the Fetch API. I’m not pulling any punches when I say that the Fetch API is exactly what XMLHttpRequests should have been from the very beginning. Understanding them properly has finally given me the confidence to stop using jQuery for the one thing for which I always seemed to have had to depend on it for – that is, simplifying Ajax requests! I mean, look at this elegant code:

fetch('posts.json')
.then(function(response) {
  return response.json();
})
.then(function(json) {
  console.log(json.something.otherThing);
});

Whether or not you’re a fan of Javascript, you’ve got to admit that that’s infinitely more readable than XMLHttpRequest hackery (at least, without the help of a heavyweight library like jQuery).

Laser Duck Hunt at Render Conf 2017
Other things I’ve been up to include Laser Duck Hunt, but that’s another story.

So that’s some of the stuff I’ve been playing with lately: Intersection Observers, Web Workers, Blobs, and the Fetch API. And I feel all full of optimism on behalf of the Web.

Underground and Overground in the City of London

Despite being only a short journey away (made even shorter by the new railway station that appeared near by house last year), I rarely find myself in London. But once in a while a week comes along when I feel like I’m there all the time.

British Rail branded poster from an abandoned tunnel under Euston Station, circa 1960s.
Bargain travel to London from the station around the corner! Don’t think this poster is up-to-date, though.

On Friday of last week, Ruth, JTA and I took one of the London Transport Museum‘s Hidden London tours. Back in 2011 we took a tour of Aldwych Tube Station, probably the most well-known of the London Underground’s disused stations, and it was fantastic, so we were very excited to be returning for another of their events. This time around, we were visiting Euston Station.

Our tour group gathers around the corner from Euston Station.
Stylish hi-vis jackets for everybody!

But wait, you might-well say: Euston station isn’t hidden nor disused! And you’d be right. But Euston’s got a long and convoluted history, and it used to consist of not one but three stations: the mainline station and two independent underground stations run by competing operators. The stations all gradually got connected with tunnels, and then with a whole different set of tunnels as part of the redevelopment in advance of the station’s reopening in 1968. But to this day, there’s still a whole network of tunnels underneath Euston station, inaccessible to the public, that are either disused or else used only as storage, air vents, or cable runs.

Disused lift shaft under Euston Station.
This lift shaft used to transport passengers between what are now the Northern and Victoria lines. Now it’s just a big hole.

A particular highlight was getting to walk through the ventilation shaft that draws all of the hot air out of the Victoria Line platforms. When you stand and wait for your train you don’t tend to think about the network of tunnels that snake around the one you’re in, hidden just beyond the grills in the ceiling or through the doors at the end of the platforms. I shot a video (below) from the shaft, periodically looking down on the trains pulling in and out below us.

No sooner were we back than I was away again. Last Saturday, I made my way back to London to visit Twitter’s UK headquarters in Soho to help the fantastic Code First: Girls team to make some improvements to the way they organise and deliver their Javascript, Python and Ruby curricula. I first came across Code First: Girls through Beverley, one of Three Rings‘ volunteers who happens to work for them, and I’ve become a fan of their work. Unfortunatley my calendar’s too packed to be able to volunteer as one of their instructors (which I totally would if it weren’t for work, and study, and existing volunteering, and things), but I thought this would be a good opportunity to be helpful while I had a nominally-“spare” day.

The coffee lounge on the administration/marketing floor of Twitter's offices in Soho.
Twitter’s offices, by the way, are exactly as beautiful as you’d hope that they might be.

Our host tried to win me over on the merits of working for Twitter (they’re recruiting heavily in the UK, right now), and you know what – if I were inclined towards a commute as far as London (and I didn’t love the work I do so much) – I’d totally give that a go. And not just because I enjoyed telling an iPad what I wanted to drink and then having it dispensed minutes later by a magical automated hot-and-cold-running-drinks tap nearby.

Twitter's reception with its "tweet wall" sculpture.
I’m not sure I ‘get’ the idea of a sculpture of tweets, though. Wouldn’t a “live display” have been more-thematic?

And that’s not even all of it. This coming Thursday, I’m back in London again, this time to meet representatives from a couple of charities who’re looking at rolling out Three Rings. In short: having a direct line to London on my doorstep turns out to be pretty useful.

DevCamp – have we really been doing this for 7 years?

An annual tradition at Three Rings is DevCamp, an event that borrows from the “hackathon” concept and expands it to a week-long code-producing factory for the volunteers of the Three Rings development team. Motivating volunteers is a very different game to motivating paid employees: you can’t offer to pay them more for working harder nor threaten to stop paying them if they don’t work hard enough, so it’s necessary to tap in to whatever it is that drives them to be a volunteer, and help them get more of that out of their volunteering.

Table full of computers at DevCamp 2011.
This photo, from DevCamp 2011, is probably the only instance where I’ve had fewer monitors out than another developer.

At least part of what appeals to all of our developers is a sense of achievement – of producing something that has practical value – as well as of learning new things, applying what they’ve learned, and having a degree of control over the parts of the project they contribute most-directly to. Incidentally, these are the same things that motivate paid developers, too, if a Google search for studies on the subject is to believed. It’s just that employers are rarely able to willing to offer all of those things (and even if they can, you can’t use them to pay your mortgage), so they have to put money on the table too. With my team at Three Rings, I don’t have money to give them, so I have to make up for it with a surplus of those things that developers actually want.

A developer hides inside a handmade camera obscura to watch the solar eclipse at DevCamp 2015.
At the 2015 DevCamp, developers used the solar eclipse as an excuse for an impromptu teambuilding activity: making a camera obscura out of stuff we had lying about.

It seems strange to me in hindsight that for the last seven years I’ve spent a week of my year taking leave from my day job in order to work longer, harder, and unpaid for a voluntary project… but that I haven’t yet blogged about it. Over the same timescale I’ve spent about twice as long at DevCamp than I have, for example, skiing, yet I’ve managed to knock out several blog posts on that subject. Part of that might be borne out of the secretive nature of Three Rings, especially in its early days (when involvement with Three Rings pretty-much fingered you as being a Nightline volunteer, which was frowned upon), but nowadays we’ve got a couple of dozen volunteers with backgrounds in a variety of organisations: and many of those of us that ever were Nightliner volunteers have long since graduated and moved-on to other volunteering work besides.

DevCamp and DocsCamp 2016 volunteers play Betrayal at the House on the Hill
Semi-cooperative horror-themed board games by candlelight are a motivator for everybody, right?

Part of the motivation – one of the perks of being a Three Rings developer – for me at least, is DevCamp itself. Because it’s an opportunity to drop all of my “day job” stuff for a week, go to some beatiful far-flung corner of the country, and (between early-morning geocaching/hiking expeditions and late night drinking tomfoolery) get to spend long days contributing to something awesome. And hanging out with like-minded people while I do so. I like I good hackathon of any variety, but I love me some Three Rings DevCamp!

Geocache GC4EE6C, with accompanying caterpillar and mushroom
The geocaches near DevCamp 2016 were particularly fabulous, though. Like this one – GC4EE6C – part of an Alice In Wonderland-themed series.

So yeah: DevCamp is awesome. It’s more than a little different than those days back in 2003 when I wrote all the code and Kit worked hard at distracting me with facts about the laws of Hawaii – for the majority of DevCamp 2016 we had half a dozen developers plus two documentation writers in attendance! – but it’s still fundamentally about the same thing: producing a piece of software that helps about 25,000 volunteers do amazing things and make the world a better place. We’ve collectively given tens, maybe hundreds of thousands of hours of time in developing and supporting it, but that in turn has helped to streamline the organisation of about 16 million person-hours of other volunteering.

So that’s nice.

Developers marvel at one another's code, etc.
An end-of-day “Show & Tell” session at DevCamp 2016.

Oh, and I was delighted that one of my contributions this DevCamp was that I’ve finally gotten around to expanding the functionality of the “gender” property so that there are now more than three options. That’s almost more-exciting than the geocaches. Almost.

Edit: added a missing word in the sentence about how much time our volunteers had given, making it both more-believable and more-impressive.

Why we don’t do business with big business (part 1)

Note: this is the first of a two-part blog post. Part 2 can be read here. In this blog post, we look at some of our philosophy and values here at Three Rings CIC, and what it means for us to focus our efforts on selling Three Rings to community enterprises, charities, and voluntary organisations, rather…

Three Rings routinely gets contacted by commercial organisations who feel that the rota/volunteer management system would benefit them, but we don’t sell it to them. JTA wrote a pair of blog posts to explain why.

“Uncle Dan”

A week ago, Ruth pushed a baby out of her body, completely upstaging my birthday and, incidentally, throwing all of our lives pretty much into chaos. Having gotten to the point at which she’d resigned herself to “being pregnant forever“, Ruth would have certainly been glad to have that stage over and done with, were it not for a long and painful labour followed by a torturous and exhausting birth.

JTA, Ruth, Dan and 'Tiny' in the delivery suite.
If Ruth looks like she’s about to die of exhaustion in this photo, that’s because that’s how she’s feeling.

There’s a lot that can be said about the labour: a 38-hour crescendo of Ruth gradually and repeatedly finding levels of pain and tiredness that each seemed impossible, until she reached them. But Ruth has suggested that she might like to write a little about it herself, so I shan’t steal her limelight. What I can say is that I didn’t – and I don’t think that JTA, either – appreciate quite how emotionally draining the experience would be for the two of us, as well. There was a strange sensation for me about twelve hours in: a sensation perhaps most-comprehensible by our friends who’ve done emotional support work. That was: after watching somebody I love so much suffer so greatly for so long, I felt as if I’d somehow begun to exhaust whatever part of my brain feels empathy. As if the experience of supporting Ruth had served to drain me in a way I’d never fully experienced before, like when you discover a muscle you didn’t know you had when it aches after an unusual new exercise.

Forcep-marks still visible, the newborn takes an extended nap in a crib alongside Ruth's recovery-bed.
Forcep-marks still visible, the newborn takes an extended nap in a crib alongside Ruth’s recovery-bed.

Of course, after the ordeal we got to take home a little bundle of joy, who continues – despite now having a perfectly fabulous name of her own – to be referred to as “tiny”, even though her birth weight of 8lbs 12oz (that’s about 4kg, for those who – like me – prefer to think in metric) doesn’t really make that a very fitting nickname! Nor the amount of damage she did to Ruth on the way out, which also might be ill-described as “tiny”! She’s also often referred to as “the poopmachine”, for reasons that ought not need spelling out.

Dan rocking the baby, in the sunlight.
I’m smiling, because I don’t yet know that, within seconds of this photo being taken, she’s about to fill her nappy.

My employer was kind enough to give me paternity leave, even though I’m not the biological father (JTA is; and he’s very-much still in the picture!). I’d looked at my contract and discovered that the wording seemed to imply that I was eligible, stating that I’d be permitted to take paternity leave if I was about to become a father, or if my partner was about to give birth, the latter of which seemed perfectly clear. To be certain, I’d wandered along to Personnel and explained our living arrangement, and they just had looks on their faces that said “we’re not touching that with a barge pole; let’s just err on the side of giving him leave!” As a result, we’ve had all hands on deck to help out with the multitudinous tasks that have suddenly been added to our lives, which has been incredibly useful, especially given that Ruth has been spending several days mostly lying-down, as she’s been recovering from injuries sustained during the delivery.

Tiny in front of the new beta version of Three Rings.
If only we had some kind of way to set up a web-based rota of feeding, changing and comforting the little one…

Despite everything, we and the rest of the Three Rings team still managed to push the latest version into testing on schedule, though fitting in time for bug-fixing is even harder than it would be were we at our “day jobs” during the daytimes! It’s not that our little poopmachine takes up all of our time, though she does seem to take a lot of it, it’s simply that we’re all so tired! For the last few nights she’s been fussy about sleeping, and we’ve all lost a lot of rest time over keeping her fed, clean, and feeling loved.

Ruth snuggles with her baby.
Who loves boob? Baby does! Also, everybody else in the house.

For all my complaining, though, what we’ve got here is an adorable and mostly well-behaved little bundle of joy. And when she’s not covered in poop, shouting for attention, or spitting milk all over you, she’s a little angel. And I’m sure you’ll all be sick of hearing about her very soon.

New Volunteers for Three Rings

Hot on the heels of our long weekend in Jersey, and right after the live deployment of Three RingsMilestone: Krypton, came another trip away: I’ve spent very little time in Oxford, lately! This time around, though, it was an experimental new activity that we’ve inserted into the Three Rings calendar: Dev Training.

Wayfarer's Cottage, Malvern
We rented a secluded cottage to which we could whisk away our prospective new developers. By removing day-to-day distractions at work and home, our thinking was that we could fully immerse them in coding.

The format wasn’t unfamiliar: something that we’ve done before, to great success, is to take our dedicated volunteer programmers away on a “Code Week”: getting everybody together in one place, on one network, and working 10-14 hour days, hammering out code to help streamline charity rota management. Sort-of like a LAN party, except instead of games, we do work. The principle of Code Week is to turn volunteer developers, for a short and intense burst, in to machines that turn sugar into software. If you get enough talented people around enough computers, with enough snacks, you can make miracles happen.

Volunteers arriving at Wayfarers
I’m not certain that the driveway was really equipped for the number of cars we brought. But I don’t get on terribly well with laptops, so clearly I was going to bring a desktop computer. And a second desktop computer, just in case. And that takes up a lot of seat space.

In recent years, Three Rings has expanded significantly. The test team has exploded; the support team now has to have a rota of their own in order to keep track of who’s working when; and – at long last – the development team was growing, too. New developers, we decided, needed an intensive session of hands-on training before they’d be set loose on real, production code… so we took the principles of Code Week, and turned it into a boot camp for our new volunteers!

New developers Rich, Chris, and Mike set up their development environments.
New developers Rich, Chris, and Mike set up their development environments. Owing to the complexity of the system, this can be a long part of the course (or, at least, it feels that way!).

Recruiting new developers has always been hard for us, for a couple of reasons. The first reason is that we’ve always exclusively recruited from people who use the system. The thinking is that if you’re already a volunteer at, say, a helpline or a community library or a fireboat-turned-floating-museum or any of the other organisations that use Three Rings, then you already understand why what we do is important and valuable, and why volunteer work is the key to making it all happen. That’s the bit of volunteering that’s hardest to ‘teach’, so the thinking is that by making it a prerequisite, we’re always moving in the right direction – putting volunteering first in our minds. But unfortunately, the pool of people who can program computers to a satisfactory standard is already pretty slim (and the crossover between geeks and volunteers is, perhaps, not so large as you might like)… this makes recruitment for the development team pretty hard.

Turfed out of the Ops Centre and into the living room, JTA works on important tasks like publicity, future posts on the Three Rings blog, and ensuring that we all remember to eat at some point.
Turfed out of the Ops Centre and into the living room, JTA works on important tasks like publicity, future posts on the Three Rings blog, and ensuring that we all remember to eat at some point.

A second difficulty is that Three Rings is a hard project to get involved with, as a newbie. Changing decisions in development convention, a mess of inter-related (though thankfully not inter-depedent) components, and a sprawling codebase make getting started as a developer more than a little intimidating. Couple that with all of the things our developers need to know and understand before they get started (MVC, RoR, TDD, HTML, CSS, SQL, DiD… and that’s just the acronyms!), and you’ve got a learning curve that’s close to vertical. Our efforts to integrate new developers without a formal training program had met with limited success, because almost nobody already has the exact set of skills we’re looking for: that’s how we knew it was time to make Dev Training Weekend a reality.

Ah! That's a convenient place for a pub!
Conveniently, there was a pub literally just out the gate from the back garden of the cottage, which proved incredibly useful when we (finally) downed tools and went out for a drink.

We’d recruited three new potential developers: Mike, Rich, and Chris. As fits our pattern, all are current or former volunteers from organisations that use Three Rings. One of them had been part of our hard-working support team for a long time, and the other two were more-new to Three Rings in general. Ruth and I ran a series of workshops covering Ruby, Rails, Test-Driven Development, Security, and so on, alternated between stretches of supervised “hands-on” programming, tackling genuine Three Rings bugs and feature requests. We felt that it was important that the new developers got the experience of making a real difference, right from the second or the third day, they’d all made commits against the trunk (under the careful review of a senior developer, of course).

Test-driven development, bar-style
Mike demonstrates test-driven development, down at the local pub: 1. touch cat 2. assert cat.purring? When the test fails, of course, the debugging challenge begins: is the problem with the test, the touch, or the cat?

We were quite pleased to discover that all three of them took a particular interest early on in different parts of the system. Of course, we made sure that each got a full and well-rounded education, but we found that they were all most-interested in different areas of the system (Comms, Stats, Rota, etc.), and different layers of development (database, business logic, user interface, etc.). It’s nice to see people enthused about the system, and it’s infectious: talking with some of these new developers about what they’d like to contribute has really helped to inspire me to take a fresh look at some of the bits that I’m responsible for, too.

Chris explains with his hands, in the bar.
Chris drip-feeds us fragments of his life in computing and in volunteering; and praises Ruby for being easier, at least, than programming using punchcards.

It was great to be able to do this in person. The Three Rings team – now about a dozen of us in the core team, with several dozen more among our testers – is increasingly geographically disparate, and rather than face-to-face communication we spend a lot of our time talking to each other via instant messengers, email, and through the comments and commit-messages of our ticketing and source control systems! But there’s nothing quite like being able to spend a (long, hard) day sat side-by-side with a fellow coder, cracking through some infernal bug or another and talking about what you’re doing (and what you expect to achieve with it) as you go.

Three new developers at dev. training.
Chris, Mike and Rich discuss some aspect or another of Three Rings development.

I didn’t personally get as much code written as I’d have liked. But I was pleased to have been able to support three new developers, who’ll go on to collectively achieve more than I ever will. It’s strange to look back at the early 2000s, when it was just me writing Three Rings (and Kit testing/documenting most of it: or, at least, distracting me with facts about Hawaii while I was trying to write the original Wiki feature!). Nowadays Three Rings is a bigger (and more-important) system than ever before, supporting tens of thousands of volunteers at hundreds of voluntary organisations spanning five time zones.

I’ve said before how much it blows my mind that what began in my bedroom over a decade ago has become so critical, and has done so much good for so many people. And it’s still true today: every time I think about it, it sends my head spinning. If that’s what it’s done in the last ten years, what’ll it do in the next ten?

Hello 2013: Goodbye 2012

This post has been censored at the request of Sundeep. See: all censored posts, all posts censored by request of Sundeep.

This is the first in a series of four blog posts which ought to have been published during January 2013, but ran late because I didn’t want to publish any of them before the first one.

2012 was one of the hardest years of my life.

RT @misterjta Dear 2012, Fuck off. Sincerely, JTA.
My retweet of JTA’s sentiments, shortly after midnight on New Year’s Eve, pretty much covers my feeling of the year, too.

It was a year of unceasing disasters and difficulties: every time some tragedy had befallen me, my friends, or family, some additional calamity was lined-up to follow in its wake. In an environment like this, even the not-quite-so-sad things – like the death of Puddles, our family dog, in May – were magnified, and the ongoing challenges of the year – like the neverending difficulties with my dad’s estate – became overwhelming.

My sister Becky with Puddles, on a train.
My sister Becky with Puddles, both younger and more-foolish than they eventually became. I don’t know why Puddles is wearing a t-shirt.

The sudden and unexpected death of my dad while training for his Arctic trek, was clearly the event which had the most-significant impact on me. I’ve written about the experience at length, both here on my blog and elsewhere (for example, I made a self-post to Reddit on the day after the accident, urging readers to “call somebody you love today”).

My dad, climbing Aladdin's Mirror in the Cairngorms.
My dad, climbing Aladdin’s Mirror in the Cairngorms.

In the week of his death, my sister Becky was suffering from an awful toothache which was stopping her from eating, sleeping, or generally functioning at all (I tried to help her out by offering some oil of cloves (which functions as a dental contact anesthetic), but she must have misunderstood my instruction about applying it to the tooth without swallowing it, because she spent most of that evening throwing up (seriously: don’t ever swallow clove oil).

Sandals (with socks), shorts, checked shirt.
My dad’s clothes for his funeral. My sisters and I decided that he ought to be dressed as he would be for a one of his summer hikes, right down to the combination of sandals and socks (the funeral director needed reassurance that yes, he really did routinely wear both at the same time).

Little did she know, worse was yet to come: when she finally went to the dentist, he botched her operation, leaving her with a jaw infection. The infection spread, causing septicæmia of her face and neck and requiring that she was hospitalised. On the day of our dad’s funeral, she needed to insist that the “stop gap” surgery that she was given was done under local, rather than general, anasthetic, so that she could make it – albeit in a wheelchair and unable to talk – to the funeral.

Five weeks later, my dad finally reached the North Pole, his ashes carried by another member of his team. At about the same time, Ruth‘s grandmother passed away, swamping the already-emotional Earthlings with yet another sad period. That same month, my friend S****** suffered a serious injury, a traumatic and distressing experience in the middle of a long and difficult period of her life, and an event which caused significant ripples in the lives of her circle of friends.

VARLEY Margret Of Doddington Lodge, Hopton Wafers, formerly of Newcastle-on-Clun, on April 28, 2012. Funeral Service, at Telford Crematorium, on Tuesday, May 22, at 2pm. Inquiries to LINDA DAWSON Funeral Director Corvedale Road Craven Arms Telephone 01588 673250. Originally printed on May 17, 2012.
The notice of Ruth’s grandmother’s death, as it appeared in the online version of her local newspaper.

Shortly afterwards, Paul moved out from Earth, in a situation that was anticipated (we’d said when we first moved in together that it would be only for a couple of years, while we all found our feet in Oxford and decided on what we’d be doing next, as far as our living situations were concerned), but still felt occasionally hostile: when Paul left town six months later, his last blog post stated that Oxford could “get lost”, and that he’d “hated hated 90% of the time” he’d lived here. Despite reassurances to the contrary, it was sometimes hard – especially in such a difficult year – to think that this message wasn’t directed at Oxford so much as at his friends there.

As the summer came to an end, my workload on my various courses increased dramatically, stretching into my so-called “free time”: this, coupled with delays resulting from all of the illness, injury, and death that had happened already, threw back the release date of Milestone: Jethrik, the latest update to Three Rings. Coupled with the stress of the 10th Birthday Party Conference – which thankfully JTA handled most of – even the rare periods during which nobody was ill or dying were filled with sleepless nights and anxiety. And of course as soon as all of the preparation was out of the way and the conference was done, there were still plenty of long days ahead, catching up on everything that had been temporarily put on the back burner.

My sister Sarah and I at the christening of a bus named after my dad. Click the picture for the full story.
My sister Sarah and I at the christening of a bus named after my dad. Click the picture for the full story.

When I was first appointed executor of my dad’s estate, I said to myself that I could have the whole thing wrapped-up and resolved within six months… eight on the outside. But as things dragged on – it took almost six months until the investigation was finished and the coroner’s report filed, so we could get a death certificate, for example – they just got more and more bogged-down. Problems with my dad’s will made it harder than expected to get started (for example, I’m the executor and a beneficiary of the will, yet nowhere on it am I directly mentioned by name, address, or relationship… which means that I’ve had to prove that I am the person mentioned in the will every single time I present it, and that’s not always easy!), and further administrative hiccups have slowed down the process every step of the way.

A hillside. A sunset. A fast, hard cycle ride. A beer and a Mars bar, just like old times. Wish you were here. Still miss you, Dad.
On the first anniversary of my dad’s death, I cycled up a hill to watch the sunset with a bottle of Guinness and a Mars bar. And sent this Tweet.

You know what would have made the whole thing easier? A bacon sandwich. And black pudding for breakfast. And a nice big bit of freshly-battered cod. And some roast chicken. I found that 2012 was a harder year than 2011 in which to be a vegetarian. I guess that a nice steak would have taken the edge off: a little bit of a luxury, and some escapism. Instead, I probably drank a lot more than I ought to have. Perhaps we should encourage recovering alcoholic, when things are tough, to hit the sausage instead of the bottle.

A delicious-looking BLT.
It’s been a while, old friend. A while since I used this delicious-looking photograph in my blog, I mean! This is the sixth time… can you find them all?

Becky’s health problems weren’t done for the year, after she started getting incredibly intense and painful headaches. At first, I was worried that she was lined-up for a similar diagnosis to mine, of the other year (luckily, I’ve been symptom-free for a year and a quarter now, although medical science is at a loss to explain why), but as I heard more about her symptoms, I became convinced that this wasn’t the case. In any case, she found herself back in the operating room, for the second serious bit of surgery of the year (the operation was a success, thankfully).

The "F" is for "Fuck me you're going to put a scalpel WHERE?"
The “F” is for “Fuck me you’re going to put a scalpel WHERE?”

I had my own surgery, of course, when I had a vasectomy; something I’d been planning for some time. That actually went quite well, at least as far as can be ascertained at this point (part three of that series of posts will be coming soon), but it allows me to segue into the topic of reproduction…

Because while I’d been waiting to get snipped, Ruth and JTA had managed to conceive. We found this out right as we were running around sorting out the Three Rings Conference, and Ruth took to calling the fœtus “Jethrik”, after the Three Rings milestone. I was even more delighted still when I heard that the expected birth date would be 24th July: Samaritans‘ Annual Awareness Day (“24/7”).

Ruth's pregnancy test, showing "pregnant".
One of the many pregnancy tests Ruth took, “just to be sure” (in case the last few were false positives). Photo from Ruth’s blog.

As potential prospective parents, they did everything right. Ruth stuck strictly to a perfectly balanced diet for her stage of pregnancy; they told only a minimum of people, because – as everybody knows – the first trimester’s the riskiest period. I remember when Ruth told her grandfather (who had become very unwell towards the end of 2012 and died early this year: another sad family tragedy) about the pregnancy, that it was only after careful consideration – balancing how nice it would be for him to know that the next generation of his family was on the way before his death – that she went ahead and did so. And as the end of the first trimester, and the end of the year, approached, I genuinely believed that the string of bad luck that had been 2012 was over.

A kitten.
In Ruth’s blog post, she’s used kittens to make a sad story a little softer, and so I have too.

But it wasn’t to be. Just as soon as we were looking forward to New Year, and planning to not so much “see in 2013” as to “kick out 2012”, Ruth had a little bleeding. Swiftly followed by abdominal cramps. She spent most of New Year’s Eve at the hospital, where they’d determined that she’d suffered a miscarriage, probably a few weeks earlier.

Ruth’s written about it. JTA’s written about it, too. And I’d recommend they read their account rather than mine: they’ve both written more, and better, about the subject than I could. But I shan’t pretend that it wasn’t hard: in truth, it was heartbreaking. At the times that I could persuade myself that my grief was “acceptable” (and that I shouldn’t be, say, looking after Ruth), I cried a lot. For me, “Jethrik” represented a happy ending to a miserable year: some good news at last for the people I was closest to. Perhaps, then, I attached too much importance to it, but it seemed inconceivable to me – no pun intended – that for all of the effort they’d put in, that things wouldn’t just go perfectly. For me, it was all connected: Ruth wasn’t pregnant by me, but I still found myself wishing that my dad could have lived to have seen it, and when the pregnancy went wrong, it made me realise how much I’d been pinning on it.

I don’t have a positive pick-me-up line to put here. But it feels like I should.

Ruth and her father at High Green.
A few days before the miscarriage became apparent, Ruth and her dad survey the back garden of the house he’s rebuilding.

And so there we were, at the tail of 2012: the year that began awfully, ended awfully, and was pretty awful in the middle. I can’t say there weren’t good bits, but they were somewhat drowned out by all of the shit that happened. Fuck off, 2012.

Here’s to 2013.

Edit, 16th March 2013: By Becky’s request, removed an unflattering photo of her and some of the ickier details of her health problems this year.

Edit, 11th July 2016: At her request, my friend S******‘s personal details have been obfuscated in this post so that they are no longer readily available to search engines.

Edit, 26th September 2016: At her request, my friend S******‘s photo was removed from this post, too.

Days Like Weeks

You know how when your life is busy time seems to creep by so slowly… you look back and say “do you remember the time… oh, that was just last week!” Well that’s what my life’s been like, of late.

Enjoying a beer at the launch of Milestone: Jethrik, the latest release of Three Rings.
Enjoying a beer at the launch of Milestone: Jethrik, the latest release of Three Rings.

There was Milestone: Jethrik and the Three Rings Conference, of course, which ate up a lot of my time but then paid off wonderfully –  the conference was a wonderful success, and our announcements about formalising our non-profit nature and our plans for the future were well-received by the delegates. A slightly lower-than-anticipated turnout (not least because of this winter ‘flu that’s going around) didn’t prevent the delegates (who’d come from far and wide: Samaritans branches, Nightlines, and even a representative from a Community Library that uses the software) from saying wonderful things about the event. We’re hoping for some great feedback to the satisfaction surveys we’ve just sent out, too.

The Three Rings Birthday Cake. It boggles my mind how they've managed to make the icing look so much like plastic, on the phone part.
The Three Rings Birthday Cake. It boggles my mind how they’ve managed to make the icing look so much like plastic, on the phone part.

Hot on the heels of those volunteering activities came my latest taped assessment for my counselling course at Aylesbury College. Given the brief that I was “a volunteer counseller at a school, when the parent of a bullied child comes in, in tears”, I took part in an observed, recorded role-play scenario, which now I’m tasked with dissecting and writing an essay about. Which isn’t so bad, except that the whole thing went really well, so I can’t take my usual approach of picking holes in it and saying what I learned from it. Instead I’ll have to have a go at talking about what I did right and trying to apply elements of counselling theory to justify the way I worked. That’ll be fun, too, but it does of course mean that the busy lifestyle isn’t quite over yet.

My sister Sarah, with TAS managing director Adrian Grant, at the UK Bus Awards.
My sister Sarah, with TAS managing director Adrian Grant, prepare to announce the winner of the Peter Huntley Memorial Award for Making Buses A Better Choice.

And then on Tuesday I was a guest at the UK Bus Awards, an annual event which my dad co-pioneered back in the mid-1990s. I’d been invited along by Transaid, the charity that my dad was supporting with his planned expedition to the North Pole before he was killed during an accident while training. I was there first and foremost to receive (posthumously, on his behalf) the first Peter Huntley Fundraising Award, which will be given each year to the person who – through a physical activity – raises the most money for Transaid. The award was first announced at my father’s funeral, by Gary Forster, the charity’s chief executive. Before he worked for the charity he volunteered with them for some time, including a significant amount of work in sub-Saharan Africa, so he and I spent a little while at the event discussing the quirks of the local cuisine, which I’d experienced some years earlier during my sponsored cycle around the country (with my dad).

So it’s all been “go, go, go,” again, and I apologise to those whose emails and texts I’ve neglected. Or maybe I haven’t neglected them so much as I think: after all – if you emailed me last week, right now that feels like months ago.

Conference Preparations

Right now, Three Rings seems to be eating up virtually all of my time. It’s hardly the first time – I complained about being incredibly busy with Three Rings stuff just a couple of years ago, but somehow right now it’s busier than ever. There’s been the Milestone: Jethrik release, some complications with our uptime when our DNS servers were hit by a DDoS attack, and – the big one – planning for this weekend’s conference.

Checking the timetable while I wait for inspiration to strike me about what to say about the "engagement" responsibilities of a Three Rings Administrator.
Checking the timetable while I wait for inspiration to strike me about what to say about the “engagement” responsibilities of a Three Rings Administrator.

The Three Rings 10th Birthday Conference is this weekend, and I’ve somehow volunteered myself to not only run the opening plenary but to run two presentations (one on the history of Three Rings, which I suppose I’m the best person to talk about, and one on being an awesome Three Rings Administrator) and a problem-solving workshop. My mind’s been on overdrive for weeks, and I’m pretty sure I’m not even the one working the hardest (that honour would have to go to poor JTA).

Still: all this work will pay off, I’m sure, and Saturday will be an event to remember. I’m looking forward to it… although right now I’d equally happily spend a week or two curled up in bed under a blanket with a nice book and a mug of herbal tea, thanks.

In other news: Matt P‘s hanging out on Earth at the moment, (on his best behaviour I think) while Ruth, JTA and I decide if we’d like to live with him for a while. So far, I think he’s making a convincing argument. He’s proven himself to be house trained (he hasn’t pooped on the carpet even once) and everything.

Lucy’s Birthday

The other Three Ringers and I are working hard to wrap up Milestone: Jethrik, the latest version of the software. I was optimising some of the older volunteer availability-management code when, by coincidence, I noticed this new bug:

Lucy 173's birthday is in 13/1 days.
Well, at least she’s being rational about it.

I suppose it’s true: Lucy (who’s an imaginary piece of test data) will celebrate her birthday in 13/1 days. Or 13.0 days, if you prefer. But most humans seem to be happier with their periods of time not expressed as top-heavy fractions, for some reason, so I suppose we’d better fix that one.

They’re busy days for Three Rings, right now, as we’re also making arrangements for our 10th Birthday Conference, next month. Between my Three Rings work, a busy stretch at my day job, voluntary work at Oxford Friend, yet-more-executor-stuff, and three different courses, I don’t have much time for anything else!

But I’m still alive, and I’m sure I’ll have more to say about all of the things I’ve been getting up to sometime. Maybe at half term. Or Christmas!

Update: Squee! We’ve got folders!

 

Three Rings – Then And Now

Those of you who’ve been following Three Rings over the last decade (either because you’ve volunteered somewhere that used it, or because you’ve listened to me rave about it over the years) might be interested in this new post on the Three Rings blog. It’s about how Three Rings has evolved over the last 10+ years of its life from a tiny system designed specifically for the needs of Aberystwyth Nightline into the super-powerful charity management tool that it is today, and how it’ll continue to evolve to meet the needs of the helplines and other charities that use it for the next ten years.

Three Rings as it appeared about seven years ago.
Three Rings as it appeared about seven years ago. Do you remember this?

It still blows my mind that something that began as a bedroom project has come to support over 13,000 volunteers around the UK, Ireland, and further afield (we’ve recently been getting started with supporting Samaritans branches in New Zealand and Australia). Now, of course, Three Rings is a volunteer-driven company with a “core” team of half a dozen or so… as well as tens of others who help with testing. It’s eaten tens of thousands of development hours and it’s become bigger and more-important than I’d ever dreamed. Of all of the volunteer work I’ve been involved with, it’s easily the one that’s helped the most people and had the biggest impact upon the world, and it still excites me to be part of something so huge.

So here’s to another ten years. Do go and read the post on the Three Rings blog if you’d like to see more retro screenshots.

On This Day In 2004

Looking Back

On this day in 2004 I handed in my dissertation, contributing towards my BEng in Software Engineering. The topic of my dissertation was the Three Rings project, then in its first incarnation, a web application originally designed to help university Nightlines to run their services.

An early Three Rings Directory page. If you remember when Three Rings used to look like this, then you're very old.

I’d originally started developing the project early in the previous academic year, before I’d re-arranged how I was going to finish my course: Three Rings celebrates its tenth birthday this year. This might be considered to have given me a head start over my peers, but in actual fact it just meant that I had even more to write-up at the end. Alongside my work at SmartData a few days a week (and sometimes at weekends), that meant that I’d been pretty damn busy.

A page from my dissertation, covering browser detection and HTTPS support (then, amazingly, still not-quite-universal in contemporary browsers).

I’d celebrated hitting 10,000 words – half of the amount that I estimated that I’d need – but little did I know that my work would eventually weigh in at over 30,000 words, and well over the word limit! In the final days, I scrambled to cut back on text and shunt entire chapters into the appendices (A through J), where they’d be exempt, while a team of volunteers helped to proofread everything I’d done so far.

Go on then; have another screenshot of an ancient web application to gawk at.

Finally, I was done, and I could relax. Well: right up until I discovered that I was supposed to have printed and bound two copies, and I had to run around a busy and crowded campus to get another copy run off at short notice.

Looking Forward

Three Rings went from strength to strength, as I discussed in an earlier “on this day”. When Bryn came on board and offered to write programs to convert Three Rings 1 data into Three Rings 2 data, in 2006, he borrowed my dissertation as a reference. After he forgot that he still had it, he finally returned it last month.

The inside front cover of my dissertation, along with a note from Bryn.

Later still in 2009, Ruth expanded Three Rings as part of her Masters dissertation, in a monumental effort to add much-needed features at the same time as getting herself a degree. After handing it in and undergoing her defense (which went better than she expected), she got a first.

My dissertation (left) back on my bookshelf, where it belongs.

Today, Three Rings continues to eat a lot of my time, and now supports tens of thousands of volunteers at hundreds of different helplines and other charities, including virtually every Nightline and the majority of all Samaritans branches.

It’s grown even larger than I ever imagined, back in those early days. I often tell people that it started as a dissertation project, because it’s simpler than the truth: that it started a year or two before that, and provided a lot of benefit to a few Nightlines, and it was just convenient that I was able to use it as a part of my degree because otherwise I probably wouldn’t have had time to make it into what it became. Just like I’m fortunate now to have the input of such talented people as I have, over the last few years, because I couldn’t alone make it into the world-class service that it’s becoming.

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

Making Time

The last few months, and especially the last few weeks, have been incredibly hectic. The giveaway, I suppose, should have been how little I’ve blogged recently: it’s a dead giveaway that I’m really busy when I’m able to neglect writing about how busy I am. I’m not complaining, of course, just apologising to the Internet at large.

Mostly, my time’s been eaten up by Three Rings. We launched Milestone: Iridium, the latest new version of the helpline management software, at the weekend, after an extended testing period and a long-extended development cycle. There’s a metric fuckton of new features in this release, including the massive Rota Autopopulation feature, which uses some incredibly complicated mathematics and fine-tuneable weighting preferences to find the best people for each shift, with minimal human interaction. Oh, and we got a new server. And launched a documentation website. I’ve no doubt that this is our biggest release to-date.

Some of you might be old enough to remember when Three Rings looked like this. Not many of you, but some.

It’s amazing to see how far we’ve come. It still boggles my mind every time I look at the statistics, and see that we’re now helping over ten thousand volunteers. When I started, we were supporting about ten. Sometimes it scares me. Mostly it thrills me. It’s a great project to be involved with, even when it does consume all of my free time for weeks on end.

This evening, I found myself momentarily at a loose end. I felt like there were things I ought be be doing, urgently, but there weren’t. There’s a backlog of personal email to catch up on, and a stack of little jobs to be doing, but there’s nothing critical.

It took a few minutes to reassure myself that I really had nothing that needed doing immediately. Then I poured myself a glass of wine, popped my feet up, and played some video games. My Steam catalogue has gotten bloated, full of games that I’ve bought over the last few months to play “when I get the time”. Time to cut that list down.

Instead Of Blogging…

Things I’ve been doing instead of blogging, this last month, include:

  • Code Week: hacking Three Rings code in a converted hay loft of a Derbyshire farm, as mentioned on the Three Rings blog.
  • Hoghton Tower: as is traditional at this time of year (see blog posts from 2010, 2009, 2005, 2003, for example), went to Preston for the Hoghton Tower concert and fireworks display, accompanied by Ruth, and my sister’s 22nd birthday. My other sister has more to say about it.
  • Family Picnic: Joining Ruth and JTA at Ruth’s annual family picnic, among her billions of second-cousins and third-aunts.
  • New Earthwarming: Having a mini housewarming on New Earth, where I live with Ruth, JTA, and Paul. A surprising number of people came from surprisingly far away, and it was fascinating to see some really interesting networking being done by a mixture of local people (from our various different “circles” down here) and distant guests.
  • Bodleian Staff Summer Party: Yet another reason to love my new employer! The drinks and the hog roast (well, roast vegetable sandwiches and falafel wraps for me, but still delicious) would have won me over by themselves. The band was just a bonus. The ice cream van that turned up and started dispensing free 99s: that was all just icing on the already-fabulous cake.
  • TeachMeet: Giving a 2-minute nanopresentation at the first Oxford Libraries TeachMeet, entitled Your Password Sucks. A copy of my presentation (now with annotations to make up for the fact that you can’t hear me talking over it) has been uploaded to the website.
  • New Earth Games Night: Like Geek Night, but with folks local to us, here, some of whom might have been put off by being called “Geeks”, in that strange way that people sometimes do. Also, hanging out with the Oxford On Board folks, who do similar things on Monday nights in the pub nearest my office.
  • Meeting Oxford Nightline: Oxford University’s Nightline is just about the only Nightline in the British Isles to not be using Three Rings, and they’re right on my doorstep, so I’ve been meeting up with some of their folks in order to try to work out why. Maybe, some day, I’ll actually understand the answer to that question.
  • Alton Towers & Camping: Ruth and I decided to celebrate the 4th anniversary of us getting together with a trip to Alton Towers, where their new ride, Thirteen, is really quite good (but don’t read up on it: it’s best enjoyed spoiler-free!), and a camping trip in the Lake District, with an exhausting but fulfilling trek to the summit of Glaramara.
Setting up camp at Stonethwaite.

That’s quite a lot of stuff, even aside from the usual work/volunteering/etc. stuff that goes on in my life, so it’s little wonder that I’ve neglected to blog about it all. Of course, there’s a guilt-inspired downside to this approach, and that’s that one feels compelled to not blog about anything else until finishing writing about the first neglected thing, and so the problem snowballs.

So this quick summary, above? That’s sort-of a declaration of blogger-bankruptcy on these topics, so I can finally stop thinking “Hmm, can’t blog about X until I’ve written about Code Week!”