Relationship of applicant to intended passport holder – what if it’s me?

Leave a comment
fuckwittery / other
Screen Shot 2016-05-23 at 08.35.47

The new online service for renewing a UK passport is pretty simple – until you get to the form above. If you’re filling in the form for yourself, there’s no guidance on what to do with the “Relationship of applicant to intended passport holder” section – should you leave it blank, or write in “self”, or something else?

Apparently, the answer is that either works:

.. and I can confirm, as I did it myself: leaving this box blank works just fine.

What the Robot Reporter learned from 10,000 news tweets

Leave a comment
fuckwittery / geek / journalism / Uncategorized

In January 2015 I put together a simple twitterbot called Robot Reporter. The idea was to see if I could keep track of breaking news by monitoring Twitter for the journalists who use it as a way to find images of newsworthy events.

It works a little like this. Something happens, and a user photographs it:

A journalist spots that tweet, and requests permission to use the image:

The Robot Reporter picks it up, and retweets the original – on a good Twitter client, anyone following the robot can see the original tweet content and media:

It looks for new items every couple of minutes. And, despite a few hitches along the way (see below), it’s proved pretty effective – breaking news stories from the English-speaking world very often appear in my feed before I’ve spotted them elsewhere (even if, as has happened a few times, they’re taking place just down the street in London).

I’d always meant to do a bit of an analysis on what kind of news was picked up, as I thought it would be interesting to see in which cases media organisations source images and video this way. To that end, as well as republishing each tweet, I stored a copy of its text in a database for future reference. It took a while to get around to (I work for a small business, and have a small person to look after at home), but having passed 10,000 tweets I finally managed to run some reports.

Here’s what I learned.

What the Robot Reported

I wanted to perform a rough analysis of what events were most commonly published by the robot. To that end, each tweet was broken down into words. @-names and URLs were discarded, along with punctuation, words of two characters or less (which are unlikely to be lexical) and a few words (and, the, are, etc) that I knew would crop up frequently while providing no insight. The incidence of all the other words was tallied in a (big) database table.

With 10,220 tweets analysed, and after the filtering noted above, the script processed 66,030 words of which 17,953 were unique.

Fire and Emergency

The biggest result was no real surprise. Even a quick glance at the robot’s feed on any given day tends to show at least one thing burning, and “fire” was by far the most common word reported (1,123 instances).

Also common were “police” (254) and “car” (253), “street” (179), “people” (172),  “house” (156) and “accident” (120) – all items that probably related to the everyday crime and emergency incidents that make up most local news – but none of them came anywhere close to the interest in fires.

Crime and Mortality

When it comes to crime, there’s a depressingly high number of “shooting” (52) related words – far more than “stabbing” (12) – six “shooter” or “shooters” and seven instances of “lockdown”.

The last 16 months saw several bombings and “bomb”-related incidents (including the discovery of unexploded munitions, etc), resulting in 62 entries. There were also 70 “explosion”s – not all of which were acts of terrorism or crime.

Across the whole database, 20 entries listed people “killed”, and 28 “dead”. Either could be referring to one or multiple people. There were 3 instances of “murder”.

Peace and Love

There were 68 instances of “love”, 25 of “lovely”, 50 of “happy”, and 3 of “yay”. 69 people said “thanks”.

Weather Events

As you might have expected, the robot recorded a lot of interest in the weather. Snow leads the way at 159 (along with “snowing” (28) and a million variants – I like “snowzilla” and “snowmageddon”), followed by “storm” (119) and “hail” (97).  There were 31 rainbows, but only one “magicalrainbow” and one “doublerainbow” (and one “rainbowbagel”). Oh, and while we’re on uncontrollable natural events: 13 tweets including “earthquake”, but 109 for “flooding” and 36 for “flood”.

If you total up all the variants of the most common weather event words you get:

Apparently rain isn’t really worth tweeting about (33 instances).

Waiting in Line

And people like to tweet while they wait: 129 entries were American-English speakers (presumably complaining) about a “line” or “lines”, while here on rainy-misery-island we recorded 15 instances of “queue” and one “verybritishqueue”.


For my fellow SE-Londoners: 5 mentions of Lewisham, 2 of Eltham, 1 of Hither Green – and 13 of Catford (for comparison: Brooklyn got 16).


Lurking in the low-incidence words: balhamgiantfoot (see below), “mctrainface” (first name “trainy”) and probably many more. Oh, and 3 instances of “wtf” itself.

View the Data

Obviously this is just a very brief overview of the data – there’s probably much more to be found. If you want to have a look, I’ve put a snapshot of the word incidence data, as it stood on 15 May 2015, here – if you find anything interesting in there, please let me know.

What Went Wrong?

For a project that started life on a whim, I’m pretty happy with how The Robot Reporter turned out – it’s proved interesting to watch. But that’s not to say that it hasn’t been without its problems. In particular:

Linking to Sources

The original bot posted the content of the source tweet (credited), rather than a link to it. This meant that the media showed more reliably in all clients, but also – after a couple of months – got my API key blocked by Twitter for a ToS violation. A dumb mistake, but easily fixed, and the current version is in compliance.

A Reporter with no Ethics

More importantly, I learned the hard way that the bot was only as good as the journalists it followed. When really horrible events occurred, some journalists would request publication rights for images that were, frankly, horrific – the kind of thing that, as a journalist, I’d assumed nobody would think of publishing. And, because the bot has no ability to make an editorial judgement of its own, it would republish them too.

The first time this happened, I just stopped the whole thing while I worked out what to do. The current software has a kind of safety switch built in – in the event of something terrible happening, I can suspend publication from a web interface. While this switch is active all news-y tweets are logged, but not published.

What Next?

As of today, the Robot Reporter has been keeping busy for 16 months, and has reported around 10,200 tweets. I’ve recently moved the database over to Heroku Postgres (boring tech section below, if you’re interested), allowing me to tweak it more easily, and updated the code for the first time in ages, so it should be good to keep running into 2017 at least.

Over the next 12 months, I think it’d be interesting to monitor the journalists working on Twitter as well as their sources. The bot will keep tweeting as it is, but I plan to capture the tweets requesting publication rights as well as their sources – in six months or so we’ll see if this has turned up anything interesting.

In the meantime, you can follow the robot here.

Postscript: Boring Tech Stuff

For anyone interested in how TRR works, here’s an overview. It’s one script, of about 100 lines of PHP, running on a Heroku web dyno (hobby class). It uses the TwitterOAuth library to search and publish to Twitter.

The main “report” script is called every few minutes via a CRON job on one of my servers. It looks for tweets with a certain pattern – asking for permission to reproduce a photo or video – and then filters them to include only tweets that are replies. If the tweet to which a particular request is replying contains media, it’s a candidate for publication.

Similarly, a new “index” script is triggered regularly, processing a maximum of ten tweets at a time into words – so the word indexing may lag behind a little in really busy periods, but soon catches up. I should really rewrite this as a worker dyno task.

A database table holds a history of tweets it has published (tweet id and text), and there’s also a record of the last tweet ID its search turned up, to avoid duplication. This was originally a MySQL database on Appfog v1, but it’s now in Heroku Postgres. The “killswitch”, which can stop publication if necessary, is a Heroku config variable.

Running the whole thing costs about £10 each month. I’m still not entirely sure why I’m doing it, other than that it’s kindof interesting.

The NewZealand Arcade Machine Story

Leave a comment
fuckwittery / geek / how to / Uncategorized

When I was a kid, I used to go for swimming lessons in the local leisure centre. In the lobby there were three machines: one that vended miscellaneous swimming items (cheap goggles, earplugs, etc), one that sold various less-than-healthy snacks, and one arcade game machine playing a game called The NewZealand Story.

I never played it (pocket money was precious), but I must have spent ages watching the game play itself in demo mode. If you’ve never come across it, The NewZealand Story is an odd, cute platform/maze game in which you, as a small, yellow, fluffy “kiwi”, set out to rescue all the other kiwis from a kidnapping walrus. It’s very cute, and very hard.

Jump forward 27 years or so, and while digging through eBay I spotted something unusual: a PCB for the game, tested and working, for not too much money. Nobody else put a bid on it, and I was soon the proud owner of the game. My plan was to build it into a proper, freestanding arcade machine – but about half the proper size, as we don’t have that much spare room. And here it is, in all its MDF-y glory:


And below, for anyone considering a similar project, is what I learned along the way.


My copy of TNZS, like most other games from the late 1980s and 1990s, is what’s called a JAMMA PCB. This means that it has a standard connector that provides power, sound and video outputs, and inputs for all the controls. You can see the long, gold connector – it’s double-sided – on the left in the photo below. If the game you want to make is JAMMA, you should be able to use lots of standard parts, including a “harness” of all the required cables (but see below for a note on power). If you’re working with a non-JAMMA game, you’ll be in for much more soldering.


Bootleg Boards are Cranky

When I bought my TNZS PCB (above), I didn’t know it was a bootleg. On unwrapping it, though, I noticed that there were no Taito labels or markings, which seemed odd. More unusually still, on hooking it up for the first time I found that the picture on the display was upside down, with the dipswitches that control inversion seemingly ignored. A bit of googling later and I learned that upside-down video output is a “feature” common to bootleg copies of TNZS – nothing to do but flip the display itself upside down to match. So far, so odd.



And speaking of displays: my plan had been to use an old 17in LCD screen that I had going spare. It had DVI and VGA inputs, so I bought a Gonbes GBS-8220 converter (manual link here). This converts all manner of video formats, including arcade-style R-G-B-CSync to VGA, and worked really well with a more modern JAMMA board I tested it on. With the TNZS board, though, it failed completely – the video would roll vertically, no matter what settings were used. I suspect, but can’t confirm, that it struggles with PAL 50Hz video via R-G-B-CS.


In the end, the only solution to this was to use an old-fashioned CRT screen instead. I picked up the 17in JVC broadcast monitor display pictured above, complete with R-G-B-CS input card, from eBay, and the result looks fantastic: no rolling, and bright, vivid colours with scanlines, just like a proper 1980s arcade machine. The only downsides are weight (the display alone is 20kg) and that I had to create a custom video connector to feed its four BNC inputs, but that proved simple enough – a four phono connector panel, with the grounds all shared, works great.


Voltage Drops in JAMMA Wiring

My PCB may not have had any Taito markings, but it did have a label – in German – noting that it required exactly 5v to run, no more and no less. Arcade power supplies have a voltage trim, so this should be easy, but I noticed that with the PSU putting out exactly 5v, the voltage at the PCB edge was about 4.7v, with the voltage across an IC on the board slightly lower still. Solution, courtesy of the internet: I removed the 5v and ground wires from the JAMMA wiring, and replaced those (puny) cables with some mains-quality cable. This fixed it immediately – 5v at the PCB became 5v at the edge. If I were to build another JAMMA project, I’d do this before anything else.

Arcade PSUs are Scary

On a related note: rather than adapt an old ATX computer power supply, I bought a proper arcade one. I’d never seen one before, so was slightly surprised to see that the 240v input isn’t a socket, but rather exposed screw terminals. This is fine, as long as you’re happy to work around mains voltage with the appropriate precautions, but if you’re not then a PC PSU might be a better bet.

Snap, Crackle and Pop

The biggest problem I had was sound. The JAMMA system should make audio easy: it’s all done on the PCB, which has edge connectors that go straight to a speaker or speakers (8ohm total impedence). However, my PCB sounded awful. As soon as it powered up, a loud BUZZZZSSSSSTTTTMMMZZZZ noise would erupt from the speaker, and continue through the game. No good at all.

IMG_4861 (1)

In the end, after a whole lot of testing, I found that the noise appeared in the power amplifier section of the board, and that clean audio could be lifted off before that stage. I desoldered the volume pot, soldered in some pins, and fitted the cabinet with a cheap (£7) mono amplifier that can run from the 12v line of the PSU, as shown above. It’s clumsy, and means that the cabinet is no longer fully JAMMA, but works well – I also fitted a new volume control, as it’s surprisingly powerful.

Coins and Controls

My JAMMA cabling had two lines for a coin mech: one with a 3 pin socket on the end and a 12v power line, which I stole to power the audio amplifier, and one simple cable. Most coin mechanisms seem to require 12v power; I decided not to bother with one and simply rigged up a button to add credits. Lazy, simple, works.


And speaking of buttons: you can pay a lot of money for quality arcade controls, but I didn’t. I used a cheap, own-brand joystick and buttons from Arcade World, and although serious arcade fans might notice the difference they feel great to me – positive and clicky and just what I’d expected. Mounting the buttons into the control panel for the first time, above, is one of those jobs that’s insanely satisfying.

Kitten Block: Now for iOS

Leave a comment
cats / fuckwittery / geek / kitten block

Since I published the Chrome version, the most common request I’ve received from Kitten Block users is a version for iOS. But given that Safari on iPhone and iPad devices doesn’t support desktop-style add-ons, this has never been possible – until now.

With iOS 9, and subject to some limitations, noted below, Apple has made it possible to install content blockers into iOS for the first time. And so I’m pleased to announce that Kitten Block for iOS is available now.

Just a few things to note, though:

1) iOS supports content blockers on 64-bit devices running iOS9 only. That means anything from an iPhone 5S up can run them, but 5, 5C and 4S devices can’t. Apple imposes this limitation, not me – sorry.

2) iOS content blockers can only block, or add CSS – so it’s not possible to redirect users to kitten photos as we do on other platforms.

3) All previous versions of Kitten Block have been free, but this one costs 79p/99c. This isn’t because I’m hoping to make money from it, but to cover the cost of publishing – Apple charges £80/year for a developer license. In the possibly unlikely event that I make back that cost, all profits will go to CalAid, with the financials posted online for transparency.

With all that said, I hope you find the new blocker useful, and that your iOS device is now Daily Mail free. Because, well, I think we’re all going to need it in the coming days.


The best iOS game you’re not playing: 太鼓の達人

Leave a comment
fuckwittery / Japanese


If you’ve ever been in a Japanese video game arcade, there’s one machine you can’t miss: Taiko no Tatsujin (太鼓の達人), AKA the one with the two huge drums (photo above by Amy Jane Gustafson). It’s a hugely fun game, not least because it’s so simple: there are only really four things you need to learn:

1) Red blob (ドン) means “hit the drum”
2) Blue blob (カッ) means “hit the rim of the drum”
3) Big red blob: whomp the drum with both sticks
4) Big blue blob: do the same, but on the rim.

That’s it. Have a few drinks, put a few 100 yen coins in, and you and a friend can merrily pummel your way ineptly through a variety of Japanese pop songs that you don’t even know. Yay. If there were one in a London pub, I’d spend a fortune on it.

The only problem is that, I assume primarily for music licensing reasons, the game is really quite rare outside Japan. But if you’ve got an iOS device, it’s now easy to play – albeit with your fingers.


Taiko no Tatsujin for iOS is free to download, including about five songs to play – all you need is a Japanese iOS account, which can be registered without a credit card. If you need a bit of store credit for in app purchases, eBay is your friend.

And, because it’s a game designed to play on a giant plastic drum, the game translates really well to the touchscreen. A semicircular area is marked at the bottom: tap that to drum, or tap outside to tap the rim. For a double-whomp, tap with two fingers. As you tap away, a variety of colourful and slightly crazed animations appear around the screen, themed according to the track you’re playing.

Additional song packs can be purchased, but at 600 yen (£3.25) for five songs you could end up spending a fortune quite easily. More conveniently, a one-month subscription costs 500 yen (£2.75) – this is all-access, so you can download every track in the game and play them to death for a few weeks. Just remember to cancel the subscription auto-renew if you’re finished playing.

If your Japanese isn’t great, here’s how to subscribe:


Here’s the main menu. The red button on the left is to play the tracks you have downloaded – go here if you want to try the free songs. The blue button with おすすめ above it is for subscriptions.


The four options on the right here are the subscriptions. From the right: one week, one month, three months, six months. I suggest 1ケ月 or one month for (at the moment) 500 yen.

After subscribing, you’ll be taken to the download menu. If you need to return there again, open the Subscriptions option from the main menu (blue button), then use the right hand option whose name ends with ドウンロード (literally, “download”).

Each track has several difficulty levels. Try かんたん (easy) or ふつう (normal) at first – おに (literally, “demon”) is something else entirely. Oh, and one other handy bit of Japanese: もどる means “go back”. Happy drumming!