Blog Archive — Page 10

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.

  • Lament for Web 0.1

    With every passing day, my Facebook feed is spending more and more time informing me that old school friends “like Amazon”. (No shit, really?) In the background, it’s fiddling our feeds, showing and hiding entries according to what it thinks is relevancy, and also what it thinks is profit for itself. Game spam is constant. On the other side of the fence, Twitter is trying to force out the third-party clients that made it great, so that it can monetise its users more easily.

    Facebook Pages You May Like

    Should we be surprised? Feel betrayed? Not at all. Facebook and Twitter are in it to make money, yet we use them for free. It’s pretty clear that if you aren’t paying for the product, you are the product. We should only expect free-to-use websites to change in favour of their profits, never in favour of us as users.

    But I’m growing tired of it. My use of these sites is intensely personal – they are my default, or only, way of contacting many of my friends – but yet this personal process is controlled by a company that is willing and able to affect the process to make money. If it’s more profitable to show me “Bob likes Product X” than to show me Bob’s deep and meaningful status update, you can bet I’ll be shown the “like”.

    I miss everyone being equal. I miss services that were honestly free. I miss being close to the infrastructure I use to communicate, rather than having it abstracted. I miss Web 1.0.

    Hell, I miss Web 0.1.


    There was a time, not so very long ago, when IRC was our Twitter. It was just as full of funny links and pithy comments, but it was communication between friends, not 140 character witticisms broadcast into the ether in the constant, vain hope of affirmation delivered by the retweets of strangers.

    There was a time when blogs were our Facebook, our innermost thoughts put out there for our friends and no-one else; when our friends would think of something to say and say it, rather than simply dishing out an iota of affirmation with the “like” button.

    There was a time when mailing lists were our forums, just simple e-mails back and forth without the need for moderators, or advertising, or CAPTCHAs.

    There was a time when USENET was our Reddit, a place to while away hours without karma whores and downvotes.

    Those times are never coming back. No friends of mine are willing to leave Facebook and talk to each other on a mailing list. The monetising services of Web 2.0 are simply much better, easier to use, nicer to look at, more functional. But they’re lagging behind the tools and services of the old internet in other ways. Honesty – what you put into IRC is what you got out, no server inserted “promoted tweets” into your channel. Thoughtfulness – we had to say things to each other, no likes, no retweets, no upvotes.

    At this point it would be appropriate for me to announce some kind of online “back to the land” movement, ending with a rhetorical “who’s with me?”. But rhetorical it would be, because nobody’s with me. I am, at the age of 27, simply old and curmudgeonly before my time; sitting typing in monospaced text to an audience that already sold themselves to play FarmVille.

  • The Case for Just Doing Shit

    Once upon a time, I firmly held the belief that established rules were there for a very good reason – that even if I didn’t understand that reason, there surely was one, and thus I should follow those rules.

    Then I discovered corporate bureaucracy. What that taught me was that there is nothing more true than this simple phrase:

    It’s easier to ask forgiveness than it is to get permission.
    RAdm. Grace Hopper

    Time after time, I have seen good ideas – my own and those of others – shot down with a cry of “you can’t possibly do that”, or “that’s not how we do things”, or “you have to follow the proper process”. And for every outright refusal, I have seen another idea dia a slow death at the hands of unanswered calls and archived emails.

    Nope. Bollocks to it. Progress isn’t made by asking permission. Progress is made by doing things, and later, if an apology is required, begrudgingly giving it.

    Case in point: years ago, when our company moved to a new intranet, someone pointed out that it would would be nice to have a page that matched names to photos to help new recruits figure out who everybody was. Everyone I spoke to agreed it was a good idea, so I asked if I could make this page.

    Big mistake.

    Months later, after weeks of chasing the appropriate people to agree to it, other people who could sort out the photos, chasing HR, I had achieved absolutely nothing. I gave up waiting and cajoling these people, coded it in my lunch hour and asked everyone to upload their own photos.

    It was a modest success. And today, three years later, we received an email from HR saying:

    In response to requests from employees and managers, most recently at [HR Director]’s [meeting] session on the 3rd October, an “album” of employee’s head shots and names will be set up on Sharepoint to help put names to faces.

    I laughed, and laughed, the chuckle of a man who can see a heady irony where others cannot.

    That intranet page is a pretty insignificant footnote in the grand scheme of things, but it is vindication nonetheless.

    Progress is not made by asking what can be done, but by doing things, and only afterwards finding out that they were impossible.

  • Political Manifesto for the "Adults Suck" Party

    There is serious ongoing consideration of whether young people aged 16 and 17 should be allowed to vote in the upcoming Scottish independence referendum, and politicians and news outlets alike are wondering if the same could happen for our General Elections too. I find it a little confusing and very inconsistent, for one simple reason: it seems logical to me that before we can trust someone to make good decisions for an entire country, we must first be able to trust them to make good decisions for themselves.

    If we trust young people enough from age 16 that we are happy to let them vote, we should surely trust them to make many other decisions that this country does not currently allow them.

    This is why, should 16 and 17 year olds be given the vote in a UK General Election, I intend to stand* as an independent candidate with the following policies:

    • Reduce the minimum age to buy alcohol to 16.
    • Reduce the minimum age to buy cigarettes to 16.
    • Reduce the minimum age to drive a car to 16.
    • Reduce the minimum age to view pornography to 16.
    • Reduce the minimum age to gamble to 16.
    • Reduce the minimum school leaving age to 16.
    • Legalise marijuana (just to lock in the rest of the under-18 vote).

    As I said before, it seems hypocritical to me to say to a young person “we trust you to be responsible and well-informed enough to shape the future of your nation, but you’re too young and naïve to be able to drink responsibly”.

    Now, let’s see if I can get to Westminster on a platform entirely based around trolling politicians on their inconsistencies.

    * May be a lie

    Bonus story round! I don’t think I’ve ever told anyone this, but since it’s about 10 years too late for my old school to give me a detention, here goes.

    Back in 2001 my secondary school and sixth form held mock General Elections to coincide with the real ones being held in the UK. My friends and I printed off a bunch of posters and mounted a ‘guerilla advertising’ campaign of sorts on behalf of the ‘Voter Apathy Party’. Turnout in the election amounted to around 25% of the school, so the Voter Apathy Party celebrated our landslide 75% victory (and the fact that we were never caught pasting our posters over those of the other parties).

    I was also in charge of one if the ‘polling stations’, at which some third-year oik gleefully showed me his ballot with a giant swastika drawn over it. I told him to fuck off. Conclusion: maybe 16-year-olds should vote, but dear gods, the day 14-year-olds get the vote, we’re screwed.

    Caveat for the hard of thinking: I’m aware that restrictions on young people drinking and smoking are as much to do with health as with responsibility, and I don’t really believe that gambling at 16 is a good idea either. The others are fair game though.

  • Rainy Evening Statistics: When to Harvest Sloes?

    This morning I half-heartedly posted on Facebook:

    Today’s Game Theory problem: pick an ideal date for picking sloes, bearing in mind current warm/wet weather predictions for October and a population density of 10000/sq.mi. of other potential sloe pickers. (10 marks)

    Well, I’m bored, so let’s get our geek on.  Again.

    The Weather

    I live in one of the warmest parts of Britain, on the south coast with temperatures continuously moderated by sea breezes from the south-west.  Frosts here are rare outside of December and January, and although the long-range forecast suggests “some chilly nights (are) possible” for the end of October and beginning of November, that’s unlikely to bring actual frost to us.

    (Case in point, 2010’s impressive snowfall. See that tiny bit of snow-less grey right on the south coast? That’s us.)

    So, although traditionally sloes are supposed to be picked after the first frost of Autumn, we cannot expect that to happen for a couple of months yet.  But will the sloes last that long?

    The good news is, mild wet weather is good for letting the sloes ripen.  The longer they are left on the plant, the juicier they are.  We don’t want to pick them too early as they will be bitter, but leaving them as long as possible has its own risks.  Namely:

    The People

    The longer the sloes stay on the bush, the greater the change that nasty thieving hobbitses other people will make off with them.  We can follow the example of the Drake Equation to estimate the likelihood of this.

    “My” sloe bush is in a relatively busy part of town.  Naturally, I shan’t say where!  But I would estimate that something like a thousand people a day walk past this bush.  Let’s call that the passer-by rate, R.  Our other important factors are fn, the fraction of passers-by that will notice and identify the sloe bush, fh, the fraction of passers-by that will want to harvest sloes, fr, the fraction of passers-by who will identify sloes as ripe, and N, the number of helpings of sloes on the bush.

    A reasonable set of estimates may be fn = 0.01 (the bush is quite well hidden), fh = 0.1 (a reasonable proportion of people will make sloe gin given the chance), and N = 1 (for there are only 200-300 accessible sloes).  fr is trickier as it depends on the ripeness of the sloes themselves and thus will increase with time, but we can go for a reasonable guess that 50% of people think they’re ripe, so fr = 0.5.

    This gives a total probability that the sloes will be harvested, per day, as:

    Ph = R × fn × fh × fr × N
         = 1000 × 0.01 × 0.1 × 0.5 × 1
         = 0.5

    A worrying 50% probability that the sloes will be taken on any given day!

    In Conclusion

    I think it’s pretty clear that I need to get out there and grab myself some sloes before anyone else does!

  • Looking Stupid -- For Charity!

    It’s nearly November again, and that means two things. Firstly, my glum acceptance for the tenth year in a row that I cannot write a novel given a whole lifetime to do it in, let alone a single month. It also means I have the wonderful opportunity to look silly for charity. (More silly than normal, anyway.) Yes indeed, I have been coerced into growing a ridiculous moustache for the duration of November, in order to raise money for the charities Prostate Cancer UK and the Institute of Cancer Research. Yep, it’s ‘Mo’vember.

    I will be starting clean-shaven on November 1st, and keeping my moustache intact until the 30th, whereupon I will probably take a photo for posterity before shaving it off and feeling the most relieved I have ever felt. But until then? Let the horror commence.

    Ian with Moustache

    Artist’s Impression

    You can donate to the cause of making me embarass myself in public here, and view my Movember profile here. Any tiny amount you can spare would be much appreciated, and if you’re a UK resident you can Gift Aid it too to donate tax free!

  • Anti-SEO Spam from iProspect (for British Gas)?

    Today, I received a rather unusual e-mail.  Or more precisely, nine rather unusual e-mails within about a second of each other.  They were of the following form, altering only the link in the middle to use another WordPress tag (always ending with /feed):


    I work for the digital marketing agency iProspect on behalf of British Gas. As part of our ongoing SEO campaign – we looking to edit or remove some of the backlinks pointing to the domain name. : We have identified the following link to British Gas on your site (

    We would like to work with you and request that one of the below actions are taken regarding this link. This is to ensure that our client avoids violating the Google Webmaster Guidelines in any form due to a historic decision they or a previous agency has made.

    • Please remove the link from your website

    Please note that we are not trying to imply that your website is of fault for violating any guidelines, but that we have advised British Gas should remove any historic links that they acquired which could be interpreted as paid or intended to manipulate PageRank.

    Please let me know if you are able to action this request or if you require any further information. Apologies if you have received multiple emails, this is due to their being multiple links on your website (please review each one).

    Kind regards

    Has anyone seen the like of this before? To me it just seems utterly bizarre that in order to help British Gas meet Google’s guidelines for search listing, a third party is asking bloggers to take down links to their site.

    (For reference, the blog post that features in each of the feed URLs I received e-mails for is this one. It is not defamatory towards British Gas, does not deep-link into their site or do anything to influence British Gas’s search results – it is simply a link to, with the text “British Gas”.)

    I’m considering the following as a response, and would be interested to know if you thought it was appropriate, if you would add/remove anything, or whether you think I should ignore these e-mails completely, etc.

    Dear Sir/Madam,

    I have read your many automated e-mails of August 7, 2012 and would like to let you know that I will not be removing a link to British Gas’ website from my blog. Although the link to British Gas adds little to the content of the blog post concerned, aside from as an aid to visitors not from the UK who may not be aware of the company, I would prefer not to bow to what seems like a very odd request. I perceive your request as odd for the following reasons:

    • It is no business of mine whether or not British Gas’ website meets Google’s requirements. I have no particular animosity towards British Gas or iProspect, but simply feel that the contents of my blog are no concern of theirs, and neither will they be a concern for any staff at Google who review adherence to the Webmaster Guidelines.
    • If your concern is “links that they acquired which could be interpreted as paid or intended to manipulate PageRank”, a few moments of investigation will assure you that neither is the case here. My web presence is fairly transparent and it should be plainly obvious that I am not in the pay of British Gas. Furthermore, the blog post of mine that your links point to ( simply contains a link to, with the text “British Gas”, which is obviously not an attempt to affect British Gas’s PageRank or associate certain keywords with the site.
    • The post you have picked on is over two years old and posted on a blog that averages only 150 visitors per day. Like everyone else, I have no access to the calculations that set my own blog’s PageRank – however, it is surely low enough as to have no impact whatsoever on that of the British Gas website.
    • I feel some desire to refuse your request simply because your process is automated and clearly wide-ranging. For it to have picked up the problematic post nine times in quick succession – all nine being RSS feed URLs rather than the URL of the blog post itself – implies an automated crawler is at work. A vast number of people may have been hit with similar requests to this.
    • The final proof, if any was required, that my blog post is not an attempt to affect your client’s PageRank is that all nine of the URLs your crawler has flagged are explicitly disallowed in the robots.txt for Although your crawler clearly disregards the requests made of it in this file, Google’s crawlers do not, and thus do not index any of the URLs you have identified.

    I hope these reasons satisfy you as to why I do not wish to remove the link you have identified. If you and your client concerned with removing “astroturf” links and links intended to manipulate their PageRank, perhaps the pages containing these links should be identified first by investigating any “historic decision(s) they or a previous agency has made”, rather than deploying a web crawler to notify everyone on the internet who has ever linked to British Gas’ homepage.


    Ian Renton

  • The Problem with Phone Upgrades

    I am due to upgrade my mobile phone in a couple of months, so yet again it’s time to pick the best of a generally bad bunch that I will be lumbered with for the next two years. Roughly speaking, my choice is:

    Phone Decent hardware Software updates Good battery life Rootable in perpetuity New and interesting No need to change desktop OS
    Galaxy S III Yes No No Yes No Yes
    HTC One X Yes No No Yes No Yes
    Galaxy Nexus No Yes No Yes No Yes
    Droid RAZR MAXX No No Yes Yes No Yes
    iPhone 4S Yes Yes Yes No No No
    Lumia 900 No No Yes No Yes No

    Please, phone manufacturers, make a phone that has more than three of the things in this table. Just for once.

  • On the NATO Protests

    So apparently, a lot of people are gathering in Chicago right now to protest at the NATO Summit taking place there this week.

    NATO Summit Protests

    NATO Summit Protests (photo from Time Out Chicago)

    I need to get myself a plane ticket to Chicago, because I have problems with NATO.  Big, big problems.  And I won’t stop until my voice is heard on this matter of vital importance to the future of the world:

    "We demand a complete PNG icon set of MIL-STD 2525C symbols!"

    Yeah. Listen up, America. No longer will we be enslaved by the yoke of oppression! No longer will I tolerate making PNG symbols in Photoshop using your PDF document as a reference!

    In related news, the temptation to include this as an Easter Egg in the next version of my software is pretty strong:

    MIL-STD 2525 Symbol: 99 Red Balloons

    Jokes requiring knowledge of NATO warfighting symbology and 1980s German pop music?  Oh yes, we’re an equal opportunities blog. Absolutely nobody has the opportunity to find it funny.

  • Nine Princes and Three Walls

    I think I recall reading Roger Zelazny’s book Nine Princes in Amber as a kid, and enjoying it. Now the rest of the series sit atop my metaphorical reading list – not a real pile of books, but a prioritised list of regrets at all the renowned works of fiction that I have not yet read. I am making my way through them, but with the critical eyes of an adult, I am sure that I am not enjoying them as much as I once would have.

    The writing style I can handle, just about, as it fluctuates between overly casual and more traditional fantasy fare. But what really grates is the continual demolition of the “fourth wall”; the series never lets the reader get absorbed in its world for more than ten pages before they are reminded abruptly of their own.

    "Sign of the Unicorn" cover

    I’ve gotten used to the constant Freud name-dropping – that he was a patient of Freud’s is important to the protagonist, if not especially so for the reader. It’s slightly more bizarre that a character of near-Godlike magical powers compares an obviously magical experience to Hilbert space, or that a mortal from a fantasy world takes to aircraft and modern military tactics without mention of it being weird.

    No, what completely threw it for me was a couple of chapters into the third book, Sign of the Unicorn, where the already oddly-named character Random casually drops into conversation the line:

    Childe Random to the dark tower came.

    Now I’ll charitably assume that he was making reference to Shakespeare or to Robert Browning, but my first association of that phrase is Stephen King’s The Dark Tower series – the result being that I’m forced to consider that the main characters of the Chronicles of Amber must have read many works of human fantasy fiction.

    Even if I charitably assume that the version of Earth that the Princes of Amber visit does not include Roger Zelazny or the Chronicles of Amber itself, they must surely be aware of the genre and its tropes – and now I am aware that the characters I am reading about themselves read books just like the book I am holding

    BOOM. There goes that fourth wall.

  • "Goddamnit, PHP", Episode 587

    If any of my readers are also SuccessWhale users, you may have noticed that for the last few days, clicking the “Conversation View” button for a tweet (this one: SuccessWhale Conversation View button) has resulted in a message declaring that you have tried to look at a “protected or deleted tweet” even though that is plainly not the case.

    First and foremost, you’ll be pleased to know that this bug is now fixed in both the stable and testing versions of the public SuccessWhale server, and in the master branch on GitHub as of today.

    So, why did this happen? A one-two punch of Twitter’s meteoric rise in popularity and some PHP developers’ dubious decisions.

    Tweets that are replies have a field named in_reply_to_status_id which can be used to query Twitter for the tweet that it was made in reply to. By iterating this process until a tweet does not return an in_reply_to_status_id field, SuccessWhale builds up a “Conversation View” page that allows users to see a chain of posts at once. The code looks like this, and until a few days ago it worked perfectly:

        $statusID = $_GET['status'];
        // Get tweet data and render
        while ($statusID > 0) {
            $data = $twitter->get('statuses/show/' . $statusID, $paramArray);
            $statusID = $data['in_reply_to_status_id'];
            // Blank array is for the blocklist. Blocklists aren't obeyed in convo
            // threads.
            $item = generateTweetItem($data, false, false, true, $_GET['thisUser'],
            $content .= $item['html'];

    The issue came about due to PHP’s bizarre implementation of weak typing. Twitter is now so huge that it has a very large number of tweets; the value returned by in_reply_to_status_id is an integer identifying a specific one. That number long since passed the maximum that could be stored in a 32-bit integer (232, or 4294967296), and since then the PHP code behind SuccessWhale has been silently converting the number from an integer to a floating point number. This was not immediately a problem, as PHP’s double-precision floats can still uniquely specify integers higher than 232. But as we have now found, it actually is a problem – it only manifests much later, because a floating point number is not always accurate to the nearest integer. Twitter’s post ID numbers are now larger than 253 (9007199254740992), the threshold beyond which a double-precision float can no longer distinguish one whole number from the one next to it.

    This is absolutely fine in a strongly-typed language, when the programmer has declared a variable to be floating point and can see this coming. But when the programmer was expecting the variable to be an integer type, this causes some very odd behaviour to arise in the software.

    When SuccessWhale sends that in_reply_to_status_id value back to Twitter, which tweet is it requesting? The right one, or a subtly different one? Actually, neither, because another type conversion issue comes into play. Beyond this 253 threshold, PHP rightly realises that it can’t hope to express the value as an integer – so rather than trying, it represents the number in its exponential form. Rather than requesting tweet number 12345678901234567 – which PHP cannot handle due to the aforementioned issue – it requests tweet number 1.234567890E16. Twitter takes one look at this, gives a “WTF this number has a letter and punctuation in it” and promptly falls over.

    Luckily, Twitter pre-empted this issue and provides a in_reply_to_status_id_str field: exactly the same number, but as a string rather than an integer. PHP is perfectly happy to handle very large numbers as strings – and, on line 4 of the example code above, perfectly happy to compare that string to zero.

    Why, PHP? Just why?