BMW and the GPL


I accidentally caused a little brouhaha last week - for which I would like to apologise. In my blog post about BMW's unencrypted software updates, I said: Judging from the files, it would appear that the infotainment system is made by Magneti Marelli with components by Wind River, AutoSAR, and Nvidia Tegra. Looking at the […] Read More

iOS Only Kills - Open Data Saves Lives


A slightly tongue-in-cheek title for quite a serious subject. The South Central Ambulance Service NHS Foundation Trust have a list of emergency defibrillators available for public use. To help raise awareness, they've released an app... Our new app, which locates over 600 AEDs, could help you save the life of a person suffering sudden cardiac […] Read More

Introducing 莎士比亚.org - Readable Shakespeare Plays In Chinese


I'm very pleased to announce the launch of 莎士比亚.org - beautiful and readable copies of Shakespeare plays in Chinese. If you would like to help, the text is available on GitHub for people to correct. Why? I've long held a fascination with Shakespeare - hence the name of this website. At university I studied Mandarin […] Read More

Controlling Android Using A MakeyMakey


I recently got a MakeyMakey. It's a sort of ersatz USB keyboard that can be plugged into anything electrically conductive. I blogged about using it to control my Raspberry Pi using fruit and veg. I also blogged about controlling Android using a USB keyboard and mouse via a USB OTG cable. Hang on... the MakeyMakey […] Read More

Instagram Got You Down? Don't Be Fooled By Flickr.


Man! Instagram sucks! Let's all move to Flickr! The Internet - December 2012 The same flickr which capriciously deletes the photos of paying customers? The same flickr which has catastrophic accidents? The same flickr who bans paying customers for commenting on political issues? The same flickr which one day decided that paintings and drawings weren't […] Read More

A UTF-8 Aware substr_replace (for use in App.net)


So, I stayed up bashing my head against a brick wall all last night! PHP's string functions aren't (yet) UTF-8 aware. This is a replacement for subtr_replace which should work on UTF-8 Strings: function utf8_substr_replace($original, $replacement, $position, $length) { $startString = mb_substr($original, 0, $position, "UTF-8"); $endString = mb_substr($original, $position + $length, mb_strlen($original), "UTF-8"); $out = […] Read More

Visualising Conversation Threads In Hyperbolic Space


In 2009, Kosso and I petitioned Twitter to allow us to search for Tweets by their "in reply to" ID. The idea was that developers could created a properly threaded view of conversations. Of course, Twitter being ultra-responsive to developers, did absolutely nothing. Skip three years into the future, and App.net is providing all the […] Read More

Authentec Fingerprint Scanners - Full Specifications (AES2810 & AES2550)


Last year, I wrote about how Authentec wouldn't support their fingerprint readers on Linux. I've been chatting to the good folk at Authentec, and they've agreed to release the specification documents! So if you want to code up an interface for the AES2810 or AES2550 you can! A word of note, the best way to […] Read More

Introducing a NEW QR Generator


When people ask me which QR generator to use, I usually suggest Google Charts. However, recently I've become dissatisfied with its limitations, so I've decided to write and release my own QR encoder. I'm still looking for a catchy name for it (suggestions welcomed) - so for now it's called "QR Generator PHP". It's available […] Read More

Linux support for the AuthenTec AES2810


Every so often I find a device which - inexplicably - doesn't include Linux support. I've been very impressed with how well Ubuntu runs on the Lenovo ThinkPad X200. Everything worked out of the box - with the exception of the fingerprint reader (AuthenTec AES2810). Now, I know that fingerprint readers can easily be defeated […] Read More