Year: 2013

    Two Lessons in Running Web Servers

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    First of all, a big shout out to les hommes et femmes at, who today have taught me an important lesson.

    At about 9:30 today, they posted a list of 50 things to do with your Raspberry Pi, which included the Raspberry Tank. At about 9:40, my web server melted. This is the disk I/O graph:

    Sparrowhawk Disk I/O Graph

    Somewhere around five Apache instances per second were being spawned, all of which seemed to be waiting for each others’ I/O operations, and combined together managed to slow everything else to a crawl. It took twenty minutes to successfully ssh into the server and stop Apache. In that whole time, I think about five visitors might have actually have seen a properly-formed web page.

    From that point, it was a dainty command-line dance to get enough of WordPress up and running that I could set up a page caching plugin, but not so much of it that visitors could actually request pages themselves.

    At around 1pm, I finally managed to get back up and running again – and the floodgates opened.

    Sparrowhawk IPv4 I/O Graph

    So, today I learned two important lessons about running your own web server:

    1. If you are going to do something cool with a Raspberry Pi and post about it on your blog, CACHE THE PAGES.

    2. It’s a great idea for your web server to send out e-mail alerts when it is dying. It’s a less great idea to host your e-mail system on the same machine.

    Thanks, crazy French blog.

    Supermassive Car Planet

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    I love the way the BBC tries to make everything so relateable to everyday human experience. Case in point: this article about a new technique for measuring the mass of supermassive black holes. In order to convey just how heavy these things are, the caption on their first picture relates it to something we all understand – the mass of a family car.

    Unfortunately, in making the unit relateable, they make the actual number involved un-relateable to a ridiculous extent. Can anyone reading the article visualise what “six billion trillion trillion family cars” would look like?

    No? Me neither. But by the power of mathematics, we will in a couple of minutes.

    Q1. What if we covered the entire surface of the Earth with cars?

    The surface area of the Earth, according to Wolfram Alpha, is:

    Aearth = 5.1×1014 m2

    Assume that a family car is approximately five metres long and two metres wide. So the area taken up by one car is:

    Acar = 5 × 2 = 10 m2

    Our six billion trillion trillion cars would take up:

    Aallcars = 6×1035 × Acar
            = 6×1036 m2

    Clearly this is much larger than the available surface area of the Earth. So in order to fit the cars onto the Earth’s surface, how many do we need to stack on top of each other?

    nstack = Aallcars / Aearth
           = (6×1036 m2) / (5.1×1014 m2)
           = 1.18×1022

    That’s still not a number we can really relate to. In fact we’ve created a very odd structure here, because we are imagining cars stacked up squarely one on top of another – so as they get further from the surface, the stacks get further and further apart until there ends up being a lot of empty space between them. Earth ends up as a tiny dot at the centre of a bizarre spiny sea-urchin effect of family cars.

    A better question might be:

    Q2. What if we crammed as many cars onto the planet as possible?

    Now we’re no longer talking about neat stacks of cars, just about cramming them in wherever possible. Rather than area, then, we must consider the volume of the family car:

    Vcar = 5 × 2 × 1.5 = 15 m3

    Now if we were to have six billion trillion trillion of those, they would take up:

    Vallcars = 6×1035 × Vcar
            = 9×1036 m3

    If we were to pack those around the Earth, how far out would they reach? We need to add Vallcars to the volume of the Earth, then find the radius of that spherical volume:

    rsphere = 3/(4π) × 3(Vallcars + Vearth)
            = 3/(4π) × 3(9×1036 + 1.083×1021) m
            = 4.966×1011 m

    Still a pretty big number, but we can relate that to a few other measurements that people may be a little more aware of:

    rsphere = 4.966×1011 m
            = 77857 times the radius of the Earth
            = 714 times the radius of the Sun
            = 3.3 times the distance from Earth to the Sun

    So with this many cars piled onto the Earth, the resulting car-planet would fill the entire solar system from the Sun out to the asteroid belt between Mars and Jupiter.

    Unfortunately for the people of Earth, this is somewhat of a moot point. The mass of these cars is significantly greater than any approximation of the Jeans mass, an important quantity in the physics of star formation. This means that placing all these family cars together in space would cause them to collapse in on themselves, growing hotter and denser until fusion reactions ignite – we would have created our own star.

    But the average family car is composed of heavy elements such as iron, not the hydrogen and helium that a star needs to shine. It would rapidly reach the end of its life, exploding in a gigantic supernova and collapsing back in again to form – rather obviously when you think about it – a black hole.

    Another black hole of this mass in the Milky Way galaxy would tear it apart, throwing billions and billions of stars out into the endless night of the cosmos.


    It’s a lot of cars.

    Bonus questions:

    Q3. Roughly how many cars are available to be rolled up in a Katamari level?

    Significantly fewer than 6×1035. This is a safety limit imposed by the developers to ensure the safety of mankind.

    Q4. Could Brian Cox save us from this terrible fate?

    Yes. He would gaze wistfully into the black hole, resulting in it feeling vaguely embarrassed and going off to bother another part of the universe instead.

    Alas, Poor TweetDeck

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    It should have been obvious when TweetDeck was acquired by Twitter back in 2011 that it wasn’t long for this world. Even more so when the only significant update in the intervening period was to remove a feature (handling tweets over 140 characters).

    Although Twitter started out by enthusiastically embracing 3rd-party app developers, its quest to find a way to monetise its service has led the company to grab more and more control over how its users interact with the platform. Users who use Twitter’s website and mobile apps can be served ads, or “promoted tweets”, much more easily than those using 3rd-party clients. The transition was an obvious one, but not a pleasant one – many developers turned on Twitter, accusing it of being actively hostile to developers.

    I would be hard pushed to disagree. Westminster Hubble relied on Twitter’s RSS feeds to let people follow their MPs more easily – a feature broken by Twitter’s API changes. SuccessWhale survives, but hardly with Twitter’s blessing – if it were to ever have 100,000 users, it would be banned.

    TweetDeck's Merged "Mentions" and "Notifications" Column

    TweetDeck’s Merged “Mentions” and “Notifications” Column

    And today we lose the TweetDeck app on desktop and mobile platforms.

    I am an avid user of TweetDeck for Android (actually, its fork “TweakDeck”, though they are very similar). This is for the simple reason that it is the only Android app that can combine “mentions” from multiple Twitter accounts and “notifications” from a Facebook account in a single column view. Surely this is a feature that plenty of people would like in an app. But check out the competition. This is a list of all the Android apps that are both Twitter and Facebook clients:

    • TweetDeck is dying – service outages are forecast before it is killed off completely in May.
    • TweakDeck is an old fork of TweakDeck, not under Twitter’s control – but the API changes that kill TweetDeck will take TweakDeck with them.
    • Seesmic offers combined Twitter and Facebook feeds in its paid version – I don’t object to paying £1.89 for an app, but Seesmic has been acquired by HootSuite and will be phased out.
    • HootSuite itself does support multiple Twitter and Facebook accounts, but its user interface offers no way to merge feeds together or even swipe between columns from different accounts.
    • Scope offers a merged mentions/notifications feed, but only supports one Twitter account, has performance issues (on my devices at least) and has odd defaults (all retweets are also posted to Facebook, Tumblr etc unless manually turned off every time).
    • UberSocial (formerly Twidroid) supports only one Twitter account, and adds Facebook as an afterthought with no merging of feeds.
    • Plume (formerly Touiteur) supports multiple Twitter and Facebook accounts, but only supports Facebook’s posts feed, not notifications.
    • StreamLife is intentionally low on functionality, and only shows “home” timelines, not mentions/notifications.

    The functionality that Twitter is removing by retiring TweetDeck is simply not found anywhere else in the Android ecosystem. Until some other application steps in to fill the gap, a function that I and many other users love is simply and infuriatingly impossible to achieve on Android.

    Just like with Facebook, it is the network effect that keeps me – and countless other developers – using Twitter despite its increasingly developer-hostile control over the ways in which we interact with it.

    One day, perhaps the “next big thing” in social networking will be a platform that starts open and stays open.

    Fuck it, Let’s Remake TweetDeck. Only Better.

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    It’s no secret that, since the launch of version 2.0 back in July of 2011, my SuccessWhale social network client has stagnated somewhat. It had reached that point at which it did everything that I needed it to do, and so my enthusiasm for updating it kind of disappeared.

    SuccessWhale 2.0

    Well, no longer. Twitter discontinued TweetDeck, the only Android client that merged Twitter notifications and Facebook feeds without sucking. At the same time it discontinued TweetDeck’s desktop client, and removed Facebook support from the web-based client.

    That really sucks.

    And that’s where SuccessWhale comes in.

    I’m no longer content with the ways in which I interact with Twitter and Facebook, particularly on mobile devices, so we’re going to fix it.

    SuccessWhale began as a “my first PHP application” kind of affair, and right now it still is. The code behind it is an ugly mash of model, view and controller without a decent structure. SuccessWhale version 3 will be rebuilt from the ground up with proper design principles behind it.

    It begins with a proper API, which I’m coding up right now using the Sinatra framework in Ruby. Once complete, the web-based front end will be rewritten too, as a strict user of the API using client-side templating in JavaScript. It will be a responsive design, displaying the user’s preferred number of feed columns in landscape mode and reverting to a single swipe-able column in portrait mode for mobile phones.

    Even better, haku is making an Android client called OnoSendai which will feature the combined feed columns that are SuccessWhale’s major feature. We will bring TweetDeck’s feature set back to Android with a lot more besides, offering the users the ability to mix together the feeds in their social network client like never before.

    And to prevent our software going the way of TweetDeck – being bought up and eventually scrapped – SuccessWhale and OnoSendai are open source software. A version of SuccessWhale’s API, operating on the main database at, will be open for anyone to use and build clients for. SuccessWhale is released under the BSD 2-clause licence and OnoSendai under the Apache 2.0 licence, meaning that even if we were to be bought out, anyone on the web could simply grab our source code and run their own SuccessWhale.

    We’re bringing TweetDeck’s features back to Android and to the web. We’re making SuccessWhale an application to be proud of. We’re free, we’re open, and we’re Twitter-proof.

    From Hell’s Heart I Stab at Thee, Thou Facebook Privacy Model

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    This morning I tweeted my annoyance with Facebook’s privacy model, and since that provoked some (albeit minor) reaction, I thought I’d follow it up with a better explanation of what I’m on about.

    Have you ever used a third-party app to access Facebook – such as TweetDeck, FriendCaster or my very own SuccessWhale? If you have, did you notice that some of your friends’ posts and notifications just don’t appear in the app, whereas on the Facebook website they are perfectly visible? Have you seen some odd comment threads where certain friends’ comments are missing when you view the thread from an app?

    If you have, the problem isn’t with your app. It’s a problem with the settings that the users you can’t see have set – and that problem is that they have their privacy settings set correctly.

    This is a pain in the arse for me and many others who access Facebook primarily through third-party apps, because not only do we miss out on important updates from these people, but the only way to ‘fix’ the situation is to ask them to degrade their privacy settings. As a big fan of online privacy, that’s not something I’m willing to do.

    So how does this problem come about?

    Well, let’s say we have two characters who want to communicate on Facebook. I’d suggest Alice and Bob, but after 20 years learning about cryptography, neither of them are willing to trust their paranoid conspiracy theories to Facebook’s messaging system. No, I started this post with an oddly-placed reference, and I’m going to persevere with it.

    We have two characters, Ahab and Ishmael, who are friends aboard the good ship Facebook. Ahab fires up his favourite whale-themed client, SuccessWhale, and links it to his Facebook account. He gets a dialog like this:

    Extended Permissions Dialog

    Ahab clicks “Allow”, and as he granted the “Access posts in your News Feed” permission, he starts seeing posts from his friends. But not Ishmael.

    Why not? Because Ishmael is a privacy-conscious sailor, and has previously found the “Apps” section of Facebook’s “Privacy Settings” dashboard. That section not only contains settings for what personal data apps you use can see, but also settings for the apps that your friends use. By default, it looks like this:

    Apps Others Use Settings

    Ishmael saw that section and, quite rightly, thought “So if a friend of mine uses Farmville, this means Zynga can see everything I do on Facebook without asking my permission? Fuck that!”, and promptly unticked all the boxes. His data is now safe from unscrupulous apps used by his friends – but his data is also hidden from ‘nice’ apps too, like SuccessWhale and TweetDeck.

    Arguably, this privacy model is also “right” – Facebook can’t control what apps do with the data they can see, so it has no way to distinguish between SuccessWhale (which needs to see friends’ posts in order to be useful) from FarmVille (which has no business looking at friends’ posts at all).

    Not only are two sets of privacy settings making apps like mine annoying to use, but the annoyance is doubled by the fact that both of those privacy settings are arguably the right decision on the part of both our Ishmael and Facebook.


    Fig. 3. A Successful Whale (artist unknown)

    Announcing: "Can I Call It…?"

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    There are a whole host of decisions involved with starting a new software project. What’s my target audience? What language shall I write it in? Which libraries shall I use? And of course, “What shall I call it?”

    For anyone looking to give their new project a unique name, there’s an annoying process to go through of searching for each idea to see if something already exists by that name. Linux packages need to have unique names, as do SourceForge projects, Ruby Gems and projects on many other distribution systems.

    As of 4pm yesterday, there was no simple way of querying all these repositories and package management systems together, to see if your chosen name was already taken by someone else.

    So at 8pm I sat down to code. And by 11pm, there was a way to do exactly that.

    Meet CICI, or “Can I Call it…?”

    CICI is a simple website. You give it a name you would like to use for your project, it checks against a bunch of services, and tells you if your name is unique – i.e., you can call it that – or not.

    CICI Results Page

    Currently, CICI looks up information on packages and projects using Github, SourceForge, Ruby Gems, PyPI, Maven, Debian and Fedora, but it’s easy to add more. CICI itself is a simple Ruby script (full of ugly hacks, as is befitting for a program that I knocked together in a few hours), which you can download and contribute to on GitHub. It’s all BSD-licenced.

    Of course, you can play with CICI on the web right here:

    Can I Call It…?

    As we have also discovered, typing random words into the search box to see what it finds is surprisingly addictive… See what odd (or even useful) things you can find on CICI, and good luck with your new projects – whatever name you end up giving them!

    The Last of Seven Years in Pretty Graphs

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    I started using back in 2006, in the final months of my time at University, and have carried on using it up until a few months ago, despite coming to the conclusion that I should stop back in 2011. Although the social media narcissism of “everyone must know what I’m listening to!” is no longer appealing in these days of over-sharing, I kept my account around for its free “recommendations” streaming services until deciding earlier this year that a Spotify subscription was a worthwhile investment.

    I was reluctant to delete my account, though, as seven years of listening to over 30,000 songs is a lot of data — so much that it feels wrong to click a single button and pretend it never happened.

    Luckily, I’m far from the first person to want to turn their years of recorded listening habits into some kind of accessible permanent record. The most famous such service, LastGraph shut down earlier this month — annoyingly on the very day that I intended to use it — but there are many other ways to get interesting data from a history. Playground offers their own visualisation tools in their “Playground” site. Many are for subscribers only, but even free users get access to some interesting graphs.

    For example, the Gender Plot uses your history to guess your gender and age. As you can see below, pegs me as 24 (I’ll take that as a compliment) and it’s pretty indecisive on my gender — a largely manly playlist conflicts with my fondness for Tokio Hotel, apparently only listened to by 18-year-old girls. Gender Plot Graph Graph is a third-party Java app that takes your favourite artists and displays them as a network graph, showing the interlinking between them. The result is interactive and designed to be played with, which unfortunately makes for a pretty poor screenshot.

    According to my output, my main genres of metal and EBM don’t intersect anywhere — perhaps they would have if more industrial acts had made the “top 50 artists” cut-off that I used for the data set. My 2006-2007 J-Pop phase is sitting on its own separate from everything else (and deservedly so). Graph Extra Stats Extra Stats (Windows only, .NET 2.0) generates much the same graphs that LastGraph did, more configurably but perhaps a little less pretty. Everyone’s favourite is the “Wave chart” view, showing trends in listening to your most popular bands over time.

    Here, the amount of music I listened to — or at least, the number of tracks I scrobbled to — dominates the chart causing a very bumpy output, but it’s all there. The sheer volume of Kotoko and Scooter tracks I’ve listened to are now laid bare for the world to see and silently judge me on. Graph


    My favourite of the bunch has to be LastHistory (OSX only). It’s not the prettiest visualisation, but what it does do is not just plot your listening over time on a day-by-day basis, but minute-by-minute. The resulting visualisation displays information about your life, while others simply display your music.

    In this history I can see my varying sleep patterns as I changed from student to office worker to father. I can see the all-nighters I pulled and what music I chose to accompany me. The days when I listened to music only on my commute, and the rarer interludes where I managed a whole day of listening. Graph

    Reminiscence rears its head in strange places, few stranger than a 30,000 point data set began one day with a 20-year-old thinking people on the internet would be interested in his music.

    Today I delete my account, thankful for the opportunity to look back over seven years of my life summarised in scrobbles. I hope this page proves useful for anyone else in a similar situation, looking to extract pretty graphs — or even memories — from their history.

    The End of Westminster Hubble

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    Three years ago, after a two-month secret development period working with my old school friend Chris, we announced Westminster Hubble.

    The name was a pun on the “Westminster Bubble” in which MPs are sometimes unkindly said to live — implying a lack of awareness of the rest of the country — and “Hubble” alluding to the Hubble Space Telescope, which has allowed us to see distant objects in more detail than ever before.

    Westminster Hubble was a website that aimed to bring MPs and their constituents closer online by providing a single location to find contact details for an MP, in real life and on social networks. It also provided customised feeds of MPs’ activity from a variety of sources, from YouTube videos to speeches made in the House of Commons. At its core was a RSS-parsing engine powered by SimplePie that pulled in content from all the sources it knew about as quickly as it could, stashing the results in one giant database table. The contents of this would then be served to users as HTML, or as an RSS “meta” feed to users who preferred to get the data that way.

    Westminster Hubble MP Feed

    Westminster Hubble’s main “feed” page for an MP, in this case tech-savvy MP Tom Watson.

    Amongst my favourite features were the Google Maps / They Work For You mashup that allowed users to find their local MP in an intuitive way, and the “badges” awarded to MPs for particular dedication (or just a lot of tweeting).

    Find Your MP map

    Westminster Hubble’s “find your MP” map

    We launched just after similar service Tweetminster really took off, and although we never achieved their relevance or their Wired UK features I still feel that we were offering separate complimentary services — Tweetminster curated tweets around particular subjects for use by those in and around Westminster, while we pulled together tweets and other items from particular people inside Westminster and provided them to those on the outside.

    In many ways, Tweetminster provided a destination, somewhere people would go to get information, whilst Westminster Hubble was designed to fade into the background and become part of the plumbing of the internet — RSS feeds went in, RSS feeds came out in a more structured form as chosen by the users. In many ways, then, it shouldn’t be surprising that this week I am closing Westminster Hubble due to a lack of use. Without the user appeal of being a “destination”, the users didn’t come — didn’t spread the word.

    Westminster Hubble "badges"

    Westminster Hubble “badges”

    In recent months, the web itself seems to have turned a corner from the heady days of the early 2000s; the Web we lost. Twitter’s discontinued API v1 takes with it the availability of RSS feeds for a user — parsing Twitter feeds now requires a “proper” Twitter client that must authenticate and use the JSON API. Facebook pages no longer advertise their RSS feeds; third-party tools must often be relied upon instead.

    It seems the days of mashups, of open services that exposed their data in freely-usable machine-readable formats, are fading. Facebook, and to a lesser extent Twitter, are realising that to maximise their profits, they need to keep users on their sites rather than accessing their data from elsewhere. They are becoming walled gardens in the tradition of AOL, a transition that is fundamentally bad for the free and open web that most of us enjoy today.

    If I were more of an activist, I would keep Westminster Hubble alive and fix its links to Twitter and Facebook precisely for the reason that this trend needs to be fought — that the British public should have the right to see what MPs post on “walled garden” websites without the members of the public themselves needing to enter that garden. But the fact of the matter is that Westminster Hubble has failed to become a popular service. In the past month there have been exactly six unique visitors, and that includes consumers of the RSS feeds.

    It is tempting to leave the service running somewhere in some capacity — its database currently contains nearly a million items posted by MPs over the course of 16 years. (Westminster Hubble has only been running for three years; it retrieves old posts from feeds when it can.) However, there seems little point in maintaining the domain name, the Twitter account and the Facebook page for a service that now sees so few users.

    For anyone wanting one last play with the site, on the understanding that many social network integration features no longer work, can do so on the Westminster Hubble temporary server. On request I am also happy to host the complete (~420MB) database dump, in case anyone wants a large data set of MP activity on which to run some analysis.

    To everyone else who has used Westminster Hubble over the years, thank you. I hope it proved useful, and I like to hope that maybe even one of you was inspired by it to support an open government, to campaign for it, or to follow in the footsteps of Chris and I and build your own tools to make it happen.

    After many MPs have held Hubble’s “badges” over the years, I’d like to award one special, final badge of honour. The Westminster Hubble award for Social Network Mastery could go to nobody else: ladies and gentlemen, Ed Balls.

    So long, and thanks for all the fish.

    Sharing Isn’t Caring

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    Like many angsty young adults, I spent the last few months of my time at University wondering what would become of the friendships I’d made there — which friends I’d keep in touch with; how often I’d see them. Having lived and worked with many of them, and shared each other’s lives in such minute detail, how could I deal with not having that constant interaction any more?

    Then, something magical happened.

    Facebook app running on an iPod Touch

    Suddenly, it was like the old times were back again. We could stay in touch forever, and share the minutiae of our lives just like always.

    But since then, it’s kind of taken over. I’ve caught myself checking Twitter and Facebook on my phone while crossing the street, as if that iota of interaction couldn’t wait thirty seconds for me to ensure my own safety. My son has started talking to me while I was using my phone, and in my mind it was the phone that had priority and Joseph that was the inconvenience.

    I saw this comic the other day, and although its charicature of the social networking-obsessed user is a long way from the way I act most of the time, the intention behind it still rings true.

    Art (c) Gavin Aung Than of

    How did we get to a point where I would rather share some witticism I think of with the internet at large than with my own wife, who matters far more to me than the rest of the web ever could? Why do I regularly spend my evenings idly refreshing Facebook, then complain that the flat is a mess because I never have time to do chores?

    This culture we created of over-sharing our own experiences and being glued to a screen awaiting what our friends share seems to be cheapening our interactions with the real world. It’s escapism from something I no longer want to escape.

    If I am allowed to make “mid-year’s resolutions”, I resolve to share less of my life online, and to spend less time refreshing a page waiting for others to share their lives. It’s no bad thing to wait a few days to see what friends are up to, if it means spending more time caring about my family, my home; the things that I’m sad to say are more important than friends and certainly more important than the retweets and “likes” of strangers.

    The Last Straw for LinkedIn

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    LinkedIn Intro in action (picture from LinkedIn blog)

    If you’ve been paying attention to technology-related news recently, you may have noticed that social network LinkedIn has released a new app for iOS devices called “Intro”. It’s a handy tool for people who do a lot of work-related email on their iDevice, as it embeds information from LinkedIn into your emails so you can get a summary of who you’re talking to.

    Unfortunately it does this not by making Intro a mail client with the extra feature of retrieving this information, but by rewriting your mail settings to send and receive mail exclusively through LinkedIn’s servers.

    In these times where online privacy and security are the subject of worldwide headlines, it shouldn’t come as a suprise that the app has been widely condemned for the complete loss of privacy it entails for its users.

    But this is just the latest in a long line of dubious methods used by LinkedIn to find connections between its users. It has been accused of sending email on users’ behalf without permission — indeed, handing over the password to your GMail and Hotmail accounts (ostensibly to harvest your address book) is one of the steps it recommends when you sign up. LinkedIn also uses names and photos in advertising by default, and comments on Reddit even say that LinkedIn is recommending people connect with former residents of their apartment based on their common IP address.

    LinkedIn requesting to connect to GMail

    Added to that list of privacy failings, the 2012 breach of LinkedIn’s database revealed a major security failing, in that user accounts were stored as unsalted SHA-1 hashes, many of which were easily compromised.

    Although the Intro app does not affect me in any way — I don’t use it, and don’t have an Apple device to use it on anyway — it makes it abundantly clear that LinkedIn still do not care about their users’ privacy or security. No privacy-conscious Internet users, myself included, should support a company like that.

    Make no mistake, by having accounts on LinkedIn we are supporting them. We are not paying; we are the product.

    Given that the only thing I have received through being a LinkedIn member has been regular nuisance calls from recruitment agencies, I think it is high time I deleted my account. I would encourage all of you to weigh up what you gain from the service against what you lose by handing over your personal information to a company that is highly likely to abuse it.

    Fun with Quadcopters

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    Over the weekend, my friend Alex visited us and brought his quadcopter in tow. I’ve bee trying my best to dump ideas on the internet and avoid buying my own extremely expensive remote control toys, but I can see the day I give in getting closer.

    Here’s my flight over Bournemouth beach, flown as cautiously as you might expect given that I had £500 of someone else’s money in the air!

    Whatever Happened to the Generic PC?

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    It doesn’t seem that long ago, perhaps only five or ten years, that you could buy or build your own computer and do whatever you liked with it. If you bought it, it would probably come with an operating system, but if you didn’t like it you could download another one and use that instead.

    Nowadays… not so much.

    My main computer is a Late 2007, 13-inch Macbook. You can install another operating system on it—so long as you keep the original OS to apply firmware updates. And you repartition the hard disk using Apple’s tools. And you install a custom boot loader. Oh, and even the custom boot loader can’t boot from USB.

    My other computer is a Samsung Series 3 Chromebook. You can install another operating system on it—in a chroot, because you have to use Google’s kernel to get proper hardware support. You can try your luck with a proper dedicated install of another OS, but your hardware will be badly supported. Your choice of other OS is a two-year-old version of Ubuntu, or a current version of Arch Linux for which no-one knows how to build Firefox. It boots from USB when it feels like it. The rest of the time, it beeps and restarts with no error messages.

    Linux on a Chromebook (image from

    And these days our phones are computers too. The more capable they become, the more like a real computer, the more we resent their limitations.

    I have a Droid Razr Maxx. You can install another operating system on it—so long as it’s pretty similar to the one it started with. And it’s compatible with the built-in kernel, which you can’t replace because it has to be signed. So you have to kexec your own kernel on top.

    All I really want from a computer is a bunch of POSIX utilities, a tiling window manager, a copy of Firefox and a package manager, preferably APT-based. Ten years ago that didn’t seem too tall an order. But with the computers we have today, I can and have struggled for days to achieve that—before giving up.

    Whatever happened to the generic PCs of years gone by? Computers were always supposed to get smaller and cheaper, but why did they also get less useful; less free?

    NaNoGenMo: A 50,000 Word Target I can Meet

    This is a post from my blog, which is (mostly) no longer available online. This page has been preserved because it was linked to from somewhere, or got regular search hits, and therefore may be useful to somebody.

    One of the ways in which a number of my friends spend November is participating in National Novel Writing Month, or “NaNoWriMo”. This is its 15th year, in which some 300,000 amateur novelists signed up to write their hearts out over the course of 30 days.

    It’s ten years since I first came across the idea, and in all ten of those years I have professed myself too busy to dedicate that much time to churning out my sub-standard fiction.

    This year, though, I discovered a similar project I couldn’t help but have a go at—NaNoGenMo, National Novel Generation Month. The idea is simple—instead of spending November writing a novel, spend November writing a script that can write novels for you.

    A lot of NaNoWriMo novels are fanfiction of highly variable quality, so in homage to that, my NaNoGenMo script uses exactly that as its source material: specifically, a user-selected category or search on It will scrape the stories it finds for sentences, store them all locally, then set to work mashing them together in various gramatically-reasonable ways until the 50,000-word goal has been reached.

    Thumbnail of example NaNoGenMo output

    During the course of writing the script I tested it mostly with Doctor Who fanfiction, some of which is not particularly bad. But then I discovered that has categories for cross-overs, where authors borrow characters from two of their favourite ‘universes’. These are generally, shall we say, less well written.

    So, if you’d like a glimpse into a world where Bayesian poisoning spammers hawk not Viagra but My Little Pony / Sonic the Hedgehog fanfiction written by 12-year-olds, look no further than the example output that my NaNoGenMo script generates.

    If you’re up for some more bizarre fiction written by haiku-spouting drunken Markov chains, check out the list of NaNoGenMo competitors, quite a few of whom seem to have taken my code to new and stranger heights!