Blog Archive — Page 9

This is part of my blog, which I have long since stopped maintaining. The page has been preserved in case its content is of any interest. Please go back to the homepage to see the current contents of this site.

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

    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)

  • Fuck it, Let's Remake TweetDeck. Only Better.

    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.

  • Google Reader vs "Do No Evil"

    Today, Google announced that its popular RSS reader, Google Reader, would be retired. This has provoked an outcry from certain corners of the internet, as GReader was a well-loved product. In many ways it was – and still is – the gold standard of RSS readers. It was massively more popular than the alternatives, so much so that many other RSS reader applications added a “sync with Google Reader” option so that the offline application could stay in sync with what the user read on the web in GReader.

    A year and a half ago, a similar public outcry met Google’s decision to remove Reader’s sharing feature and instead integrate the “+1” button from its Google+ social network.  The sharing feature was almost a little social network in its own right, just between Reader users who were already “friends” on Google Talk. But Google’s flagging “proper” social network needed those “shares” to drive traffic there, and so sharing within Reader was removed.

    We should have seen the writing on the wall then, because the reason the service is being withdrawn is just the same – Google+ offers the ability to read RSS feeds, so by removing Reader they can drive more users to Google+. Why? Because Google+ creates advertising revenue, making Google money. Reader does not.

    Never mind the fact that many Reader users explicitly preferred not to use Google+. Never mind that the feed reading UI on Google+ is cluttered with social things, and the management interface significantly worse. The decision to close down Google Reader is justifiable on financial grounds alone.

    Does this fall afoul of Google’s “Do No Evil” policy? Possibly not – discontinuing a product that doesn’t make a company enough money is hardly evil – but it certainly serves as a reminder that the Google of today is not Larry Page and Sergey Brin getting together to make cool websites that make people’s lives easier. Google is a massive multinational company and is beholden only to regulators and to its shareholders.

    If, one day, they decide it is financially advantageous to roll GMail into its Google+ service, they will do it in a heartbeat.

    We all trust a lot of data to companies like Google. There is nothing wrong with this per se, but we must remember that they do not offer us services such as GMail and Google Reader for free out of the goodness of their hearts. They offer them to us because the economics of online advertising mean that they make more profit if the service is free than if it costs money. When those services no longer make a profit, they will very quickly cease to be available.

    Centralised “cloud” services have their advantages: they are easy, simple, and social. But they have one big disadvantage: the users will always be completely at the mercy of the service provider.

  • Alas, Poor TweetDeck

    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.

  • Ban these Evil Robots!

    Today’s tech news is awash with Human Rights Watch’s latest campaign, the sensationally-titled “Ban ‘Killer Robots’ Before It’s Too Late”. I’m not sure which I find most irritating about it:

    • The fact that they’ve chosen to lead with a photo of a Taranis UAV, even though in the photo caption they acknowledge that it isn’t autonomous in any way they are concerned about
    • The fact that in the Guardian’s article about the campaign, the newspaper has instead opted to lead with a photo of the Terminator
    • The fact that the whole thing – Terminator image and all – is distinctly reminiscent of the year 2009.

    The Human Rights Watch campaign centres upon the idea that military robots with an autonomous killing capability (i.e. those that can conduct a lethal attack without human oversight) are not only in development but, when ready, will be used naïvely and with no consideration for the law.

    Yes, military robots with increasing levels of autonomy are being developed. The Guardian article rightly cites the X-47B, which is capable of autonomous landing on the deck of an aircraft carrier and is soon to undergo autonomous in-air refuelling trials. But at no point do Noel Sharkey, the Guardian or Human Rights Watch offer any examples of systems capable of lethal autonomous behaviours. Nor do they offer any evidence that the developers of these vehicles intend them to be put into service despite the fact that they “could not meet the requirements of international humanitarian law” and “would also undermine non-legal checks on the killing of civilians” (quotes: HRW).

    Technology is advancing at a relentless rate, and they – we – are right to be concerned about the possibility that one day a robot may be programmed to take a human life. But the US Military at whom the campaign is targetted has been publishing studies such as “Governing Lethal Behaviour in Autonomous Robots” (part 2) since long before this HRW campaign and before 2009’s Terminator-themed article too.

    Campaigns titled “Stop the Killer Robots” do little but persuade the public that the people and companies who develop these technologies are incompetent, or worse, actively opposed to the idea that human rights and legal conventions should govern robotic warfare.

    Also, they make the robots sad.

    Please, think of the robots.

  • Supermassive Car Planet

    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.

  • Game Review: Beat Hazard Ultra

    My quest for an Android game to match the joyous beat-synched twitch reflexes of Audiosurf have very nearly come to an end. My newest drug is named Beat Hazard Ultra. (Android, iOS)

    It’s angling towards being a bullet hell music game, and it almost – but not quite – succeeds at those two goals.

    It can’t quite be a bullet hell shooter, because bullet hell in all its pixel-perfect weaving glory isn’t completely practical on a tiny device where half the screen is taken up by your own thumbs. Nevertheless, plenty of weaving around patterns of enemies and enemy attacks is involved, your ship’s hitbox is pretty tiny and there are a good set of oversize bullet-spraying bosses.

    It can’t quite be beat-synched either, as the game seems to prioritise interesting enemy patterns rather than attempting to spawn enemies on every beat. There are little effects here and there, however, that do give a feeling that something is synched to the music.

    The game also features a setting labelled “visual intensity”. By setting it to 150%, you can take those little, subtle beat-synched effects and make them more impressive.

    And by setting it to 200%, you can turn it up to OH MY GO MY BRAIN IS MELTING I CAN’T SEE MY SHIP BUT I DON’T CARE BECAUSE BRAIN FIRE

    When the main difficulty factor in a game comes around because there are too many lasers, that makes it a good game in my book.

  • Ingress and the ELI5 Test

    Ingress, a new Alternate Reality game from Niantic Labs at Google, has been working through its backlog of applications to its open Beta and has just made it as far as my e-mail address in its no-doubt huge list. For anyone still waiting, here’s what it looks like.

    It’s a game played by two teams, both fighting over a number of “nodes” placed at real-world locations. Managing and linking nodes is the core of the game, as each captured node linked to at least two others claims an area of the global map for your faction. Not design can be upgraded, protected and so on.

    The range at which you can interact with objects in Ingress’s world is 50 metres, so playing the game involves a lot of moving from place to place, and if your nodes are often under attack by nearby players from the opposing faction, you’ll have to do this quite regularly. That’s why, as cool as the game looks, it fails the “ELI5” test.

    “ELI5” is Reddit-speak for “Explain Like I’m 5”, and handily enough, I have a real-life five-year-old to whom I have to explain just about everything I do in his presence.

    The unfortunate problem with Ingress is that I’m not sure I could convince him – or my wife for that matter – that spending the time on it makes any sense whatsoever. I foresee the conversation going roughly like this:

    Me: “Come on, let’s go out!”
    Joseph: “Where are we going?”
    M: “To that tower thing in the gardens.”
    J: “Why?”
    M: “Because it’s under attack by the forces of the Resistance! I need to deploy more resonators!”
    J: “…Nope, let’s stay in and play on the Xbox like normal people.”

    My apologies to the Enlightenment faction, but walking across town on a regular basis in search of dots on a screen is a game for people with lots of that most elusive quality, “free time”.

  • Two Lessons in Running Web Servers

    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.

  • The Ego, the Social Graph, and the Great Unfriending

    Long ago, in the early years of Facebook’s rise to power, it became apparent that it had another key feature alongside feeds and wall posts – the friends list. Not only was it a good way to keep in touch with friends after University, it also became a good way of declaring who those friends were. This aspect was emphasized more and more as the site’s user base increased; you could now keep a quite exhaustive catalogue of who you knew. There were even apps on Facebook’s fledgling platform that allowed to to map those friends, and see interesting groups and connections form.

    Facebook Friends Graph

    My Facebook Friends Graph

    For a shameless nerd such as myself, this is great stuff – I love having a neatly curated index of almost everyone I know, particularly one with which I generate pretty visualisations. This one here shows a nice distinction between people I went to school with (orange), university (blue), people I work with (green), DDRFUKers (purple), and a great interconnected yellow mass of Soton Kiddies, LARPers, neighbours and post-University friends.

    But however nice it might be to see this in pictorial form, I know this information. All of it is in my head; each different group and the few people that make the links between them. There’s no need to record this data to help me.

    Of course, I need to record this data in order to talk to these people and share status updates on Facebook. But I barely interact with anyone I went to school with. At work, a mention of something I posted on Facebook tends to be embarrassing. Most of the dots marked yellow or purple are people who are on Twitter, and who I would prefer to talk to there.

    So for whom am I updating, and publishing, what has become known as my “Social Graph”? I have already established that although I curated my Social Graph out of an egotistic and nerdy desire to catalogue everything, it serves no purpose for me. Presumably, then, I am doing it for the benefit of Facebook and its advertisers who can use it to add cruel hooks into friends’ feeds. “Hey, 24 of your friends play this!” “Ian R likes some guy’s band!”

    At best, “unfriending” on Facebook seems like something that is done by spurned teenage girls complaining about how much of a bitch their ex-“BFF” turned out to be. At worst, it seems like an outright denial that you have ever known a person. But what benefit does a user get from declaring themselves “friends” with someone they’ve said not a single word to in ten years?

    If, as I have previously bemoaned, I still don’t want to quit Facebook entirely, then I fear a Great Unfriending may be nigh.