Quantified Fatigue

I have had a post in draft since the beginning of the year, all about analysing my running streak as it stands. It picks out the miles I’ve done on it, average mile per run, distributions of milages, that sort of thing. Loads of self indulgent wank, that I felt at the time was “interesting”. Reading back on it now, it’s anything but.

In the middle of composing it (according to WordPress, I last touched it 11th February), I stopped measuring pretty much everything. I just got sick. Sick of weighing myself. Timing myself. Caring how far I had ran.

Measuring shit definitely works – I have no doubt of that. Anytime I’ve measured something, I have consistently optimised towards that metric – be it weight, speed, bacon eaten. In the case of weight, the opposite also holds true – I put on about 2kg in the month following my “sick of this shit” tantrum.

I was still exercising plenty – running at least 30 miles per week in that time, in addition to a couple of BJJ sessions. I just happen to have a better appetite.

All of this has made me think – is the value in the “quantified self” movement that people are explicitly going out of their way to measure and observe things that they would like to optimise? If we were able to get these metrics at any point without installing apps, or buying devices, or just plain writing them in spreadsheets, would this value disappear? Beyond being able to say “oh, I’m fat because I do little exercise and eat too many calories” (unlike all of those other fat people), why is a graph such a motivator?

I understand that the whole thing is more faceted than “MAKE THE GRAPH GO BIGGER” – there is accountability (to both the tech and other people), QS allows you to find patterns and correlations in the data that you might not have otherwise noticed, as well as a billion other reasons for its existence. It can’t be a coincidence that the latest Apple and Samsung products have a “health & fitness” spin on them.

I should note here that I’ve not touched this post since March. The above feelings remain true, but I am a flip-flopper. Picking it back up again in mid-June:

Since I started writing this post, I am once again measuring stuff. I want to lose weight (again) because the metaphorical yoyo has retouched the hand. I’m measuring my calorie intake on MyFitnessPal, and that hooks up passively with Endomondo to measure what I’m burning.

But my reservations about QS and “Quantified Fatigue” stand – measuring everything explicitly is too difficult, and I’m concerned about how useful implicit & ubiquitous measurement would be after the fact. There’s no real conclusion here – implicit & ubiquitous doesn’t exist, it remains to see how iOS8 & the S5 will perform in this area, and I’m likely to lose a bunch of weight, get bored and put it all back on again. I just figured it was about time I did some writing here, terrible or otherwise.

2013: So How Did Those Goals Go?

My last post was entitled ‘Goals for 2013‘. Reading back on it should be quite depressing because I’ve missed just about every objective I set myself:

I didn’t really take up BJJ again until about 3 weeks ago when I discovered a Caio Terra affiliate around the corner from where I work.

The obstacle race never happened, I flaked out due to a mixture of my stupid subconscious and other commitments.

I didn’t get started properly again on the ‘big’ fitness tool idea I had. It’s OK though, I’ve had an idea for a new tool that I can roll that into. I’m sure that I will definitely get round to making that.

MMA-Urls is still dead.

I still suck at guitar and uke. I’ve not practiced any of that. I did invest in LSDJ and a Gameboy though. I reckon spreading myself even thinner is definitely the solution.

I’ve barely progressed in German.

And I’ve not written a single blog post since that last one where I said I was going to write more blog posts.

So yeah – success all around.

Actually yeah, really – success all around. I genuinely intended to do all of that stuff. I just didn’t. I’m not going to beat myself up about it. There are a billion and one reasons why none of that happened, the main one was that it ultimately wasn’t important.

It’s not like I’ve sat on my arse all year – work has been busy (we have quite a sweet little product about to go live to the world, you might hear me blather on about it on Twitter in the new year), I’ve bought a house, and then took the massive step of moving in with my girlfriend and her kids. And that’s without all of the other tedious rubbish I got up to that would be better left undocumented. I guess ultimately, this was the stuff that was important, and so that was what got done.

If there’s one thing I’ve noticed in myself this year, and I thank running for this, it’s that I’ve become more reflective. In times past (like at the beginning of this year), I’ve very much got caught up in the 43 things, bucket list, if-I’ve-not-done-this-this-this-this-and-a-bungee-jump, experience-first mentality.

If I’ve seen something happening, I’ve thought, “shit, where’s my camera?” without really knowing why I’m taking photos (is it for my own recollection? to show how interesting my life is? all of the above?).

I mean, these snapshots are nice, but at the same time – what am I missing out on? And who really cares?

If I die tomorrow, will anyone (including myself) really care that I never learned to play piano?

This might go some way to explaining why I’m quite a bit more low key on social networks these days. Facebook basically gets Dailymile updates and the odd accidental Goodreads cross post. Twitter gets my witless tedium. There’s the odd photo here and there, where I remember to upload them.

To bring this terrible, terrible piece of writing back on track, those goals I set still matter to me. They’re not what people tell me are SMART objectives, and I’m not sure they should be. These are just things I enjoy doing, and that’s why I will either do them, or I won’t. They don’t make me an interesting person, they’re not going to make me millions, and no one’s going to mention any of them in my eulogy.

Running goals went alright though – I ran further than last year (1157 -> 1657, exactly 500 miles further in fact). And the streak continues. I actually have 3 new draft blog posts in progress on that (told you I’d been reflecting), as well as a small php library (you probably shouldn’t use it yet though, the API is shit and not final). I’ll get round to publishing them soon. Probably.

Goals for 2013

This was an addendum to the streak post last week, but it has kinda developed a mind of its own, so it is now its very own post. Yay.
So what of the next year? Are we going for 700+ day streak? Am I going to define some new goals? Well I am, yes – the streak is too useful to just let go like that. The next big milestone will be 512 days, which comes around at the end of May – so that will be nice to aim for. And I have several new goals:


I’m hoping to support my running with some level of core / muscular exercise – I need to start up Brazilian Jiu-Jitsu again, it’s kinda shocking that I founded what has turned into one of the best BJJ communities on the internet (no thanks to me, mind), and I’m still not training it consistently. I can’t set a solid goal like blue belt, due to the fact that I ultimately suck at anything competitive, but something simpler like weekly attendance isn’t out of reach.

I also have my first obstacle race booked in March (another reason to train some actual core). And I have a silly pie-in-the-sky plan to run 31 miles on my 31st in June. So that should give me something to build mileage towards.


I’ve had a fitness tool in mind for a while now – I’ve told a few people the idea and it seems to get a pretty decent reception (it’s not a top-secret thing, I just don’t want to tie it down in writing, because I’ve not exactly specced it out yet – I’d be hugely grateful to discuss it or have it naysayed in real life if anyone fancies to talk over a pint or coffee or a pint of coffee). So with a simple data-collection part coded over the past month or so, I look to dogfood and continue with building a prototype over the next 3 months – it might go the way of dogfood and end up as dogshit, but I’m alright with that, having something to work on in my spare time is a great motivator to keep me skill-building, regardless of the outcome.

mma-urls is a link aggregator I built a while ago. It’s broken beyond disbelief at the moment, and traffic’s non-existant – I need to fix it pretty soon. I also have some nice features in mind for it, and some semantic-web goodness I want to inject into it (coding with RDF and the semantic-web at work has given me plenty of ideas, it’s just a matter of making time).


There are three skills I’m looking to develop over the next year, both major and minor:

  1. Music – 2012 saw me actually playing music again. It’s been a longtime coming. I joined the ukulele club at work, and I purchased Rocksmith. Both have been excellent motivators – I plan to keep up both throughout the year.
  2. Language – my German skills have remained dormant since 2004, the year after I returned from living there. I’ve been refreshing myself recently using the awesome duolingo and memrise webapps, and hope to improve that into the year – at least to the point where I can start reading German literature and hold a conversation decently.
  3. Writing – I have been completely overwhelmed by the response to my streaking post last week. Where previously I felt a need to only write geeky techy posts here, the response to the running one has made me realise that there’s nothing wrong with turning this thing into more of a hodgepodge of subjects. WordPress makes it easy for people to filter out shite that they’re not interested in using tags, categories and their associated RSS feeds. And it also results in me starting to consolidate content in one place all owned by me – I’ve previously fell afoul to publishing on various other web services to get around the single subject matter of this blog, as a result, I’m at the mercy of google and tumblr rather than just a single transferable webhost.


To stay on top of all of this, I’m pretty much abusing Joe’s Goals to mark a tick against which ones I do daily (they should start paying me commission), and then getting a ‘score’ at the end of the day to let me know how I’m doing.

But aside from this rudimentary aggregation, I log workouts and running on dailymile, I track German progress at the aforementioned memrise and duolingo, and rocksmith does a good job of assessing progress on guitar – so I guess there’s micro-tracking elsewhere too.

I’ve actually trimmed out a few goals from here, because either they were ridiculously insignificant, completely unachievable (the 31 miles at 31 thing probably should accompany this cut, but a man can dream), or just made for too much to concentrate on. I’m probably spreading myself remarkably thinly here, but I may as well try to make hay as the sun shines and all.

Overly introspective post about my running streak.

For the past few years, I’ve found running to be a decent way of shifting some weight (slight aside, since the age of twenty, I’ve been the classic yo-yo when it comes to weight – between 11.5 and 17 stone, depending on what the dice spell out in any given week). The only problem is that it can sometimes be hard to motivate yourself to go for a run. Excuses are very easy to come by: the weather, needing a sandwich, hangovers, the sniffles, Emmerdale’s on, Christmas, not really feeling like it today, bone-idleness, needing a poo… Basically it’s much easier to not run than it is to run. Which is one of those really obvious things that someone who could write probably wouldn’t be writing.

He that is good for making excuses is seldom good for anything else.  – Benjamin Franklin

Pretentious quote – check.

“Don’t Break The Chain”

I’ve been interested in Seinfeld’s don’t break the chain ‘productivity secret’ for a while now, it makes sense to me and is simple enough to follow. And I’m now, a year in, convinced it can and does work. At the beginning of the year I decided to see how many days I could go running without breaking the chain. The only rule of the running streak was that every day I had to go at least 1 mile. The only tool I needed was the brilliant joesgoals – it’s not the slickest or best looking app, but it does one thing and it does it well. And reasonably consistently (I do see the odd Coldfusion error screen now and again).

The running streak itself started reasonably inconspicuously, a couple of days, a week, two weeks  – no bother. But then I got to a month – and this was now a ‘thing’, it was at a stage now where people were asking if I was still ‘streaking’, and there was a pressure to keep going. And it got bigger, and bigger – 90 days, 6 months. I started only recording binary milestones – 64 days, 128 days, 256 days – because monthly was now too often to brag about, and I can’t help but be a geeky attention-seeker. The pressure to not cock up was overwhelming – some of the hangovers I ran through were ridiculous, but by now, that I was going to run – come rain, shine or coma – was a given.

It is said that it takes 21 or 66 days to form a habit, dependant on who you ask – but I guess it was a fair bit longer than that before it was a really natural thing for me to do each day. Now however, I find it as weird a feeling to have not run as I do to have not brushed my teeth. Not that my feet grow fur or anything.

The Perils Of Running Streaks

Is streak running for everyone? Probably not – running alone is reasonably high impact and  not taking a break does increase the risk of injury. The US Streak Running Association have a very good post that explains the risks and everything that goes with the hobby far better than I ever could. In every exercise regime, rest is required in order to allow muscles to recover – so in a typical week, I have one or two one-milers, which I consider rest runs – they take less than 10 minutes and exist to keep the discipline enforced and my running streak going.

You also have to be realistic and listen to your body – I’ve had to cut runs down due to suspicious aches in my shins. And I’ve also always had to be prepared to break the streak, it’s better to let an injury heal before you start a new streak than try to run through an injury and be out for a year. Luckily, that hasn’t come up yet – because while this sort of thing is very easy to type, when an injury does occur, I’m not sure my ego will find resetting that magic number so simple a task.

Yay! Go Running Streaks!

Some of the spoils of my running streak - my shoes

That warning aside, running has been one of the few constants in my life this year (yeah, this is where the introspective, self indulgent bullshit stuff begins – bet you’re glad you read on now, eh?). Despite changing jobs and cities – among many other things – running has kept going alongside all of that stuff, regardless. It has been something to turn my attention to, something to set goals against, something that has given me a continual sense of achievement, and something to force myself out of the house in order to clear my head. It has been great, both physically and otherwise.

Speaking of achievements, at the beginning of the year I set a target of 500 miles, figuring most of my runs would be in the 1-2 mile mark. But due to training for the Great North Run, my mileage was upped considerably and I ended up hitting 1124 miles on my 365th day. Not too shabby.

So yes, with all this in mind, I would say that starting a streak of any type gives you an incredible impetus to get a task done, and I would recommend it to anyone with a goal to achieve of any sort. Running is a great way of staying active and keeping your head in check, I’d recommend that too.

I was going to post about my goals for 2013 here, but that seems to have developed a life of its own and should hit this website in the next week. Cheers for reading this far – and if you haven’t had enough of my self-indulgent running bollocks, I post updates on dailymile and I sometimes natter on about it on twitter.

Edit / Addendum

Allan Whatmough asked on Twitter:


Which raises a great oversight in this post – how do I not forget the odd run? Well I prioritise the run as the first thing I do everyday. I don’t eat, I have a glass of water if I’m dehydrated (always sure to hydrate if I was drinking the night before), and then I just run. I find it hard to run with food in my stomach anyway – I’m just conscious of it being there, so I guess this system works pretty naturally for me. Even long runs don’t justify food yet (15 miles is about the longest I’ve ever gone). I guess this is a similar solution to disciplining myself as saver’s use to make sure they ‘pay themselves first’ – which I’m sure works nicely.

jquery-mondrian : My Very First jQuery Plugin

I am a massive fan of jQuery. Earlier in my career, we made do with massive custom libraries full of nasty hacks to make everything work across all browsers (back to IE5.5, when I began, eurgh), and this left very little time to have fun with JavaScript. jQuery has corrected that for us – it takes care of nasty cross-browser stuff (especially ajax), makes traversing the DOM an absolute joy, and has a huge library of user-contributed code – in the form of plugins – to solve just about every common JS problem you can imagine, as well as quite a few not-so-common ones.

This post is about one of those not-so-common ones, namely the one used here on this site to print those shit-looking attempts at Piet Mondrian canvases on the background. It all came about because a) I saw a Mondrian piece and figured ‘those look kinda automatable’ and b) I’d been looking for an excuse to piss about with canvas.

You can download, fork, or just laugh at the code here on github, there’s nothing revolutionary in it – it randomly places lines and fills some of them with given colours. That’s it. Really. There are a couple of extras that I’d like to code into it further down the line, one of which is functionality similar to what can be seen on Composition With Javascript – an awesome site I discovered not long after starting to code this plugin, which executes a similar idea in a much better fashion. Another thing I’d like to possibly mess on with is the Piet programming language, how about feeding the output of such a plugin into a Piet interpreter? Or reading in piet-formatted programs? Obviously, there’s a long long way to go to get to any of that from what is essentially a toy, but they’re fun ideas – to me, at least.

But all of that really comes down to time available, there are a couple of other avenues that I’d still like to explore with regards to canvas, and they might get played with first – but the bottom line is that I’m writing in this blog more often in order to push myself to do more fun stuff to have more bollocks to write about.

The Highland Fling 2011

A little over a week ago, my awesome employers graciously allowed (and paid for) me to trek up to Edinburgh to enjoy the recently-resurrected standards-based web conference, The Highland Fling. The theme was “back to basics”, which covered a whole lot of ground, and brought with it some very talented speakers. The whole event was compered expertly by Christian Heillmann, with each talk lasting 40 minutes and allowing 20 at the end for an entertaining Q&A chat between him and each speaker.

It all started with Steve Marshall talking about “Why Simple Isn’t”. Steve spoke about a variety of phenomena, such as cognitive dissonance & confirmation bias – he even made explicit reference to one of my favourite blogs, youarenotsosmart.com (dare you to go there and escape pre-3am, it’s like wikipedia and tvtropes had a more-addictive child). Sometimes the links between these themes and the conference-matter felt somewhat tenuous, but I found it to be a very interesting talk nonetheless. The Q & A really brought it back on track though, with Christian & Steve actively linking the aforementioned phenomena with selling things such as best practice to colleagues and management.

Rachel Andrew was up next, with a talk entitled, “Choosing the right Content Management System”. I was initially worried about a conflict of interest – what with her being involved in her own CMS, Perch. However, she proved very even handed, defending WordPress at times and only referencing her own system when it felt necessary. She talked through the many relevant heuristics that need thinking about when choosing a CMS – linking such a choice to users, the project spec & (possibly most-importantly) content strategy. What was particularly fascinating for me, was her idea of eschewing WYSIWYG and replacing it with structured content and markdown / textile / whatever for formatting. This is something that I intend to look a lot further into in the future, and going to take a lot of selling business-side at work!

Then came Jack Osborne, who gave a very thorough technical primer on HTML 5 – he went through a lot of the new elements and features, and showed them in action within the context of the latest version of Opera. Jack also talked about how you can start implementing them day-to-day right now, while compromising on business decisions such as supporting IE without JS. I especially liked the idea of using <div class=”article”> wherever you would eventually use <article>, in order to get you in the right mindset for when the HTML5 change inevitably happens. One interesting question that Christian asked was about explaining the new form elements to designers and whether they would necessarily be embraced, Jack explained that a unified, consistent UI is good for everyone – a viewpoint that I’m also a fan of.

Remy Sharp talked next about “Interaction Implementation”. In this, he spoke about his process of breaking down a visual comp into individual components and giving estimates of what it was going to cost. This talk was right up my alley, and probably the one which I took the most away from for day-to-day working. He broke an actual design he did many years ago down into individual elements – identifying possible troublespots. He talked about potential risks (such as 3rd parties) and actual costs (including how he assesses IE6 as an added feature). I have pages of notes from this talk, and can’t begin to summarise them all here without downright plagiarising his entire talk, needless to say, I’ll be pawing over them for a good while yet.

Conversely, for Mike Rundle‘s talk, ‘From Websites To Apps: The “Apple Look”‘, I have very little in the way of notes. It’s not that it wasn’t a good talk, I was just flagging by this point (just before the last coffee break), and I’m not hugely enamoured by the “Apple Look” (and yes, I know that I’m possibly in the minority there). Some of the bits he did point out with regards to small interface details, were interesting, and no doubt I’ll fail at emulating them myself next time I shit out another design. But I don’t think I can talk about the talk too much here while doing it the justice it deserves.

Finally, James Edwards talked about accessibility. He showed live, technical demos of WAI-ARIA features and how they’re all assembled. He talked about roaming tabbing, a feature I’d not heard of before, but makes so much sense in simply modifying tab-orders when changing contexts, I need to remind myself to have a play when I get a moment. He also talked about how these new technologies, such as ARIA, built to help interact with AJAX & the like, were being taken up by the screen reader vendors – ultimately, very slowly – but, similarly to HTML5, it’s good to learn these things in order to prepare for the future. The one thing about James that’s difficult to convey in text, is how obviously passionate he is about accessibility, regardless of the context of that word. He didn’t just talk with regards to screenreaders and disabled users, but also about how IE6 support is necessary in reaching people in developing countries and from poorer social situations. He was, however, quite pragmatic in talking about how IE6 support means achieving the same functionality as newer browsers, but not necessarily through the same means. A great session, and an absolutely fantastic way to end the day.

So all in all, The Highland Fling was a brilliant and informative day. That’s all without even mentioning the humongous lanyards (great for storing notepads and pens) and whiskey in the welcome pack (with it being a Scottish conference, I’d have been deeply disappointed had that not been the case). Massive credit has to go to Alan White, who put this great conference together and made the 3 hour trip each way to rainy Edinburgh more than worth it.

Another new look / reimplementation of the blog

I’ve only gone and redesigned the shit-heap I call ‘my blog’. Well, I say ‘redesigned’, it was more a case of porting it to WordPress and butchering the twentyeleven theme into a Piet Mondrian-inspired mess (more on that in a future post).

The reasoning for this is pretty simple: the majority of my full-time job is spent working with WordPress. I love the WP-ecosystem, and would really like to contribute my own plugins / themes etc, but find that hard to do when I’m only 9-5ing it.

I still use Python and Django in my spare time a lot – I plan to write up a bit more about my Google App Engine Project pretty soon, and am actively porting another from GAE back to Django (the new pricing model has scared me shitless, I expect it’ll be more of a prototyping platform from here on in). So no need to fret there. Not that you were fretting. Obviously.

Keep those rows in line with this little jQuery snippet

I’ve recently needed this little snippet of code a few times over the last couple of months, I’ve never seen it documented so it’s probably obvious to anyone who isn’t me. But I’m going to stick it here just in case there are other people this has annoyed.

The situation: you have a series of elements (say divs or images) of equal width and floated left to give the visual impression of columns. However, this visual impression is broken when the elements start differing in height.

As you can see here, the 3rd and 4th elements are stacked, instead of breaking onto the next row.

While we could give the elements a fixed height, it’s not very nice for authors to have to tailor their content to a design.

So what we do is create a new clearing element at the end of the ‘row’.

We can actually do this with very little JavaScript: $('<div/>').css({ 'width': '100%', 'clear': 'both', 'height': '0', 'border': '0' }).insertAfter('div:nth-child(3n)');. This creates a new div element, applies a bit of CSS to stretch it and make it invisible, and then adds it after every third div (or image or whatever you want).

The full effect can be seen in the following jsFiddle:

Now purists will be screaming at me for using JS for the presentation layer, and they’d be dead on. Ideally we’d use CSS, and technically that can be done using something like div:nth-child(3n+1) {clear:left;} (I’ve only tested that in Chrome). Unfortunately, nth-child is only supported as of IE9 beta and so those chumps in MS-land won’t get the benefit of your genius design skills. Another way of attacking it is coding in those clearing divs in the source, but that’s pig ugly and I just plain don’t like it, but feel free to go that way if you wish (this would also get rid of the problem of people with JS turned off, but that’s a whole other discussion).

So yeah, no idea if that’s useful to anyone outside of me, but figured I’d put it out there if only to get some fresh content on this here blog.

Edit: Oh, and while I remember, this code is in use on my little Mixed Martial Arts news tracker that I knocked up while playing with Google App Engine. To see the effect of the code click some of the ‘+’s next to the news items and watch with glee as the entire row below slides up and down. Neat, eh?


Excuse the Smashing Magazine-like title. I couldn’t resist.

I increasingly seem to be subscribed to more and more tech-based advent calendars, it’s a nice gimmick which pretty much guarantees 24 days worth of solid content on varying topics. So here are (at time of publishing, I might add more as they appear) 5 to check out and throw scorn upon:

  • 24 Ways

    The original, and arguably the best – a veritable who’s who of the web development world provide tips and insights on a variety of topics – mostly design and front-end based.

  • PHP Advent

    The theme this time is, quite obviously, PHP. This year’s topics have already included Javascript (the link being AJAX), Deployment Automation, and URLs. It’s a great read, highly recommended.

  • WPEngineer

    Everybody and his mother seems to be making a living from wordpress, and why not – it’s way customisable, easily deployable, and easy for clients to work with. WPEngineer.com are running a tip every day in December, and they’re of great quality.

  • SysAdvent

    SysAdmin->SysAdvent – geddit?! Hahahaha, geeks are awesome. Anyway. I don’t know about you, but my day-to-day activities seem to involve quite a bit of cross over with everything else tech, especially SysAdmining. Over last year and this year, it’s addressed both Linux and Windows, as well as more highlevel stuff, such as time-management.

  • Phpied.com: Performance Advent Calendar

    A new one on my radar, this advent calendar has thus far looked at the anatomy of a web 2.0 web page, tools for analysing performance, and required reading. It’s looking promising.

Github: Lowering the barrier of entry for open source

Open source is great. But really, raising a bug and submitting a patch for a few documentation issues is more trouble than it’s worth. I’m stupid and lazy, so don’t contribute too much code to open source, but I am very anal. I hate stumbling across spelling mistakes and grammatical errors that anyone could fix, but to get this sorted without coming across as neurotic is nigh-on impossible. That was until Github came along.

I could wax-lyrical about Git and Distributed Version Control all day long, but a billion and one people have already done that a whole lot better than me. So I’ll just give you a quick step-by-step in how Github solved my problem.

First: Gareth posted code for a couple of nice CSS testing ideas he’d been mulling over.

I looked over his README, and recognised that Gareth had clearly wrote it as an afterthough and left some annoying spelling and grammar mistakes in it (I was particularly riled by the flagrant abuse of they’re/there/their). So I forked his code. That’s right, I forked it mercilessly and without remorse. It didn’t matter that the only thing I wanted to change was some spelling in the minimal documentation: OCD is my problem, nobody elses. And forking is ridiculously cheap in Git.

Once forked, I didn’t even need to clone the repository locally. Github lets you modify files from the web interface, so I fixed the grammar issues I could find.

Great, I’ve got some nice grammatically correct documentation – what next? Should I just say “screw Gareth, my version of CSS-test is clearly better, for I know my ‘theirs’ from my ‘theres'”? Of course not, that didn’t wouldn’t work, and what’s more, it’s not very nice. Rather, I sent a “pull request” to him (again, available from the web UI), just saying – “look, you can’t spell, I can, and I’ve even done the boring work for you”. Mr Rushgrove merged in my changes to his copy, and the world was better for it.

Yes, this is a fairly weird use-case, but I wasn’t the only person to consider it. It’s just a simple alternative to the traditional centralised commit-bit / bug report->patch scenario found in “normal” open source projects.