Ian's Blog

Coffee goes in, words come out.

A Case of Stolen Identity

London is a strange place.

Not the places the tourists see — the shopping streets, the palaces, the museums. Those I understand. What’s strange to me is the rest of it; the places where people live and work. The estates of a thousand homes, red-brick and identical and unaffordable, each one hiding its own stories and secrets behind its unremarkable façade. The big houses split into dozens of tiny apartments, crammed in between the gas works and the scrap metal yards. The million-dollar cookie-cutter canal-side apartments, and the dirty bedsits under the railway bridges.

What gets me is the sheer scale of it all. You can drive for hours and never leave the city. Everything is there, you could live your whole life there — walking in St James’s Park and thinking it’s the country; sitting on the sand at Southwark and thinking it’s the seaside; gazing out at the Thames estuary as if it were the sea.

My own town is only a couple of miles wide, with a population just under 200,000. It’s too big for me — one day, perhaps, I’ll get that slate-roofed cottage in a little village by the sea — but it’s a place I feel comfortable, a place where I have an identity. Perhaps it’s the upper bound on the size of place that I can consider without feeling crushed by it all.

I’m pretty sure I wouldn’t survive living in London. It astounds me that others manage it; to get through each day in the knowledge that you’re one of 20 million people living in one of a million homes; catching the rickety tube train home at night to a suburb and a street indistinguishable from the rest.

And London I’m sure is not the worst offender. Take this famous photo of Barcelona from the air, block after block of apartments and shops and offices and millions on millions of people stretching all the way to the horizon.

Or worse still, this diagram superimposing the extent of the Tokyo metropolitan area over a significant portion of my entire country. It’s population is nearing 40 million.

I have nothing but respect for the people who can survive living in such a place. I hope that I never have to, for I’m sure that a year and a day in the city would be the end of me. I’d be swallowed up by the enormity of it all, the drudgery pervading my soul, my name and my identity lost in the choking air that spirals up and out over the city.

The End of the Road for SuccessWhale’s Facebook Support?

My SuccessWhale application has long supported both Twitter and Facebook social networks, despite both networks’ relatively developer-hostile stances. The worst offender by far was Twitter, with it’s 100,000 user limit that has deliberately crippled many third-party clients in order to drive users to the official website and app, which make money for Twitter through adverts. While I was never under any delusion that SuccessWhale would be popular enough to reach 100,000 users, it’s not a nice thing to have hanging over your head as a developer.

Facebook’s permissions policy, as I have ranted about before, also makes it difficult for third-party clients to deliver a useful service for their users. With the new requirement that apps migrate to API v2, they are adding the extra hassle of requiring all apps be reviewed by Facebook staff. This isn’t a problem itself — SuccessWhale has been through the somewhat scary process of manual review before when it was added to the Firefox Marketplace.

But Facebook has now snuck something extra into the notes for some of its permissions, each of which must now be manually approved as part of the review process. Into pretty much all the permissions that are fundamental for SuccessWhale, such as read_stream:

Yep, this permission will be denied, as a matter of policy, to apps running on Android, iOS, web, desktop, and more.

So predictably, SuccessWhale failed its manual review and has been denied approval to use Facebook API v2.0 or above. As far as I can tell at this point, that means on May 1st all Facebook features of SuccessWhale will cease to function. Facebook, ever the proponent of the walled garden path down which Twitter has ventured as well, has struck another blow for increasing their profits and user lock-in at the expense of the open web that SuccessWhale depends on.

It’s a sad time for the web; the “web 2.0” of mashups and free access to data is slipping away with it. And though Facebook’s change does not kill off SuccessWhale and its kin outright, the future does not look rosy for us developers that believe users should be free to access a service in a way they prefer.

Fun With Playbulb

Playbulbs are colour LED lights sold by a company called Mipow. They come with an iOS and Android app that can set their colour and various patterns via Bluetooth. There’s no security on them whatsoever, so any nearby device can connect and change their colour. That seems pretty bad — especially when you consider that as well as the small “candle” style lights we have, they also sell room lighting versions that play music and can probably flash fast enough to trigger photosensitive epilepsy. Controlled by your neighbours!

Despite the security problem, this does have one advantage: it’s easy to get any other device controlling the Playbulb, not just a phone with their official app. Anything with a Bluetooth 4.0 Low Energy transceiver can easily control the Playbulb using tools like those provided by BlueZ under Linux, and the protocol is somewhat understood. This means it’s pretty easy to control a Playbulb programatically using the language of your choice.

Here’s a demonstration I knocked up this morning: mailcheck. This python script checks an IMAP mailbox at a defined interval, and will set the Playbulb colour to red if there are no unread messages, or green (with a brief flash) when you have unread mail. It was inspired by similar “ambient electronic devices” such as Nabaztag. Here it is in action:

It’s BSD-licenced open source, so if you have a Playbulb you want to have some fun with, please take my code and use it for your own ends!

IKEA Navigational Cheats

It was suggested on IRC last night that the sad, cautionary tale of Sultan Hamnvik may have its roots in my simple lack of knowledge — particularly of the “cheats” that allow for easier navigation around IKEA’s torturous, non-Euclidean shop floors.

I’d like to take this opportunity to refute that claim by presenting a set of simple IKEA navigational cheats that I feel will help newcomers avoid the Sultan’s fate.

1. Set off the Fire Alarm

Amid thousands of fleeing people, not only does the fire escape become an exit route that can be used without arousing suspicion, but the Dread Guardians of the Store will be forced to flee also. This gives you the perfect opportunity to make your escape and flee into the night, never to return.

Break glass with IKEA for Mice™ sledgehammer.

2. Disassemble Partition Walls

IKEA is known for forcing its victims on a torturous journey around what, once upon a time, would have been an open space. Luckily, this can be rectified. A number of tools are available for purchase in IKEA, such as screwdrivers, hammers and drills. Use these to disassemble partition walls to open up a more direct route to the exit.

If you have one, wear a high-vis jacket for this cheat. No-one questions why you’re removing a wall if you’re wearing a high-vis jacket.

Beyond the wall lies freedom from tyranny.

3. Man the Barricades

Flat-pack products can, with some difficulty, be turned into functioning beds and tables. With a little more effort they can also be built into functioning barricades, which you can deploy at key points in the store and refuse to leave until the CEO of IKEA is sent to the guillotine. Without its head, the Beast Known as IKEA will slowly disintegrate into dust.

This method will earn you 1240 exp and 300 gold.

And a role in a prominent West End musical.

4. A Class at Miskatonic University

For those who have knowledge of such dark and insidious things as the workings of IKEA, the subtle geometry of their stores can be exploited. Seek refuge in shadow, blend in and slip through darkened corners into worlds of eternal night, emerging at will in other places and other times. Hopefully ones well away from IKEA. Beware the Yellow Sign.


5. Flat is Easy

Navigating the store becomes easy when it is reduced to rubble by a period of sustained naval bombardment. Shelter in the basement until the explosions stop, then emerge to discover a brighter, IKEA-free world.

Croydon IKEA (before bombardment)

6. Through the Wardrobe

Head to the bedroom section and seek out a pine-effect wardrobe called “NÄRNIJÄ”. Enter it to find yourself in a snow-bound fantasy land. You will be harassed by the minions of the White Witch, but I think we can all agree that this is safer and more enjoyable than the average visit to IKEA.

Defeat the witch to emerge in your grandparents’ attic in the year 1942, conveniently giving you the opportunity to stop IKEA from being created in the first place.

The IKEA board of directors meets for the Monday morning leadership briefing.

7. The Only Way to be Sure

Nuke it from orbit. It is, as they say, the only way to be sure.

Some collateral damage to local populations is to be expected, but I think you’ll agree this is a small price to pay to rid the land of the monstrous beast that is IKEA.

All those poor meatballs. Rest in peace, mixed with delicious iodine-131 sauce.

8. An Alternative Approach

Don’t go to IKEA.

All-Terrain Raspberry Pi!

Another year, another childrens’ toy with a Raspberry Pi needlessly attached to it.

Over the past few weeks, I’ve been taking one of my son’s old broken RC toys and turning it into something a bit more fun — by strapping a computer to it, naturally.

The result is the “All-Terrain Pi”, a robot which can be controlled by smartphone as if it were a racing game, or by using the kid-friendly Scratch programming language.

Here’s a video of the smartphone interface. It all runs in the web browser, with no need to install an app on the phone. Full-screen (ish) video streams from the robot’s on-board camera, while speed and turning are controlled using touch and tilt controls implemented in Javascript.

Programming in Scratch is possible too, recreating the 80s/90s Logo “Turtle” experience for a new generation. As with the smartphone interface there’s a Python program behind the scenes controlling the motor driver board, but this time it receives commands via Scratch’s “Remote Sensors Protocol”.

It didn’t take long for my son to get into controlling the robot, both with the game-like smartphone interface and using Scratch, which he has some experience with from school. (They start programming young now!) We took it to last weekend’s Constructorium hackerspace event at the library, where it was a big hit — by the end of the afternoon, he was teaching the grown-ups!

“Proud” is an understatement.

I’ve finished all the things I set out to achieve with this robot, in a total of only 20 hours or so. Thanks to a pre-made motor driver board and a Raspberry Pi camera fork of mjpg-streamer, some of the hardest bits of the project turned out to be very easy, so I’m very grateful to everyone whose work I’ve built upon to create this robot.

I’m hoping we might be allowed to take the robot into school and maybe hold a competition for the kids to write a program to steer it around an obstacle course; or something similar — to make programming more exciting by taking it off the computer screen and into the real world. If the teachers don’t let us do that, we might hook it up to the internet and have it controlled using redstone circuits on my son’s Minecraft server.

You can find a step-by-step guide to how I built the robot on the All-Terrain Pi page and all the code is open source!

Fun With Parental Controls

Now that our son is getting older, it’s inevitable that his computer use is no longer closely scrutinised — we no longer need to be hanging over his shoulder, showing him what to click on.

Although his web browsing habits run only as far as Planet Minecraft and whatever flash game they’re currently peddling on the Disney Channel, the convenience of App Stores means that he has thousands of poorly-made and wholly inappropriate games available at the click of a mouse. It’s time for something I hoped we wouldn’t have to use — parental controls.

I think we have a five-year window at most between enabling them and him discovering proxies, live CD operating systems or that the administrator password is an easily brute-forceable dictionary word.

But even now, they’re a long way from being useful. We initially decided that “12+” was a reasonable setting for the level of control, since Microsoft already considers most of the games he plays to be rated 12. But the user-supplied ratings of games in the App Store make it all kind of pointless. Here’s MSN Sport, rated 16+ in case it contains some truly horrible material, like American Football.

And the much more wholesome Zombie Sniper 3D (“Beautiful 3D visuals!”), rated 12+.

I suppose that no matter how hard the providers try, parental controls never will be a substitute for being there, checking things out; actual parenting.

Another Year Gone By

Lights flicker and fade, drawing the year to a close. Outside, the weather is warming and slowly burning the frost away; a tiny ripple before the wave of heat to come, before it is summer again.

2014 has been a year of travel, with three trips abroad setting a new record for the furthest south and east I’ve travelled across the world — records I hope to beat before too many more years pass.

Madha wadi, UAE-Oman border

This year also contained what felt like at least 24 months stuck in the office writing documentation and trying to get sales people to stop changing the system design every five minutes.

But for all that, the year has really been about friends and family. August was spent between Galicia and Yorkshire, with those branches of the family we don’t often see.

Family in Galicia

It was the year of RABIES 10, an annual party we started at university that, against all logic and reason, is still going after so many years. It still grows steadily year on year, from the 20-person sit-down dinner of 2005 to what’s now a barbecue with a head count of over 50. This was Joseph’s first year in attendance — he brought along a card game and out-geeked the geeks.

Playing Fluxx at RABIES 10

It was the year of my twenty-ninth birthday, the last before the looming milestone of thirty. I still can’t drive a car, but I am married, I have a child, a good job and plenty of friends, and when I think of all that, thirty doesn’t seem so scary.

And it was Joseph’s seventh birthday too.

As December dawned and winter descended, we were surrounded by our family and friends once again — just as always, and I wouldn’t have it any other way.

Christmas with Friends

Christmas with Family

So tonight, I raise a glass — to family and friends, near and far. To all of you.

Happy new year.

Faded Dreams in Winter

Like many, I came of age with a head full of dreams about what my adult life would be like. I thought maybe I’d live in a big old cottage, raise my children in a little village by the sea, have a wood fire burning through the winter and I’d decorate the house for every season. We’d have a garden to grow vegetables and keep hens, we’d have plenty of money and the house would always be tidy, and we’d be together at home each Christmas morning.

This is now my thirieth winter on this Earth. If my early twenties were “about” anything, they were about going with the flow — accepting what life threw my way and learning to be happy with it regardless.

If my late twenties were “about” something, they may have been about letting old dreams die quietly, replaced with newer and more realistic things. It’s inevitable that those dreams needed to fade and die some time; too many are dependent on things outside my control — responsibilities to family and friends, jobs, even the state of the economy that will forever keep that old cottage by the sea out of my grasp.

I have a flat in town and a son in school there; I couldn’t move to the country even if we had the money. I have in-laws to placate and one day will have parents to look after. My house will always be messy and our savings account always empty.

But I have a family now, and friends, and a home here. I am older. Time to let the dreams of a child fade and die like the passing year, and replace them with new ones.

All I Want for Christmas

As December gets into full swing, one of the joyous seasonal activities that must be undertaken is the ritual filling of my Amazon wishlist with a bunch of crap I don’t need. This is all to help those stubborn relatives who can’t bring themselves to believe I’m telling the truth when I say “I don’t want anything”.

What I really want for Christmas is a tree covered in lights, a table to sit my friends and family around, a dinner to cook for as many as possible, a bottle of wine to drink and stories to tell.

But these days, it rarely seems like that’s an option. Every year we are deluged by adverts exhorting us to buy more and more needless stuff in the vague hope that it will make our families happy and our lives complete.

Spoilers: it doesn’t.

Consumerism has given us little but a yearly orgy of spending, credit card bills and vague disappointment; it’s given us nothing but the idea that happiness is inextricably linked to wealth. It’s benefitted not the middle classes and certainly not the poor — it’s benefitted bankers, politicians, advertising executives; the very people we love to hate but keep shovelling money at year after year.

So please, buy less stuff. Stop stressing about finding the perfect gift. Stop binge-buying in sales, stop watching 24-hour telesales channels, stop racking up debt buying things nobody really needs.

Sit down and eat Christmas dinner with your family.

If you must throw money at something, buy dinner for someone who can’t afford it. Give someone less fortunate a place to spend Christmas with their friends.

“Consumer culture” is bullshit, your friends and family deserve better.

Touchdown, Half a Billion Miles Away

On March 2nd 2004, without great fanfare, an Ariane 5 rocket blasted off into orbit carrying a payload designed by the European Space Agency to investigate a nearby comet. Its name was Rosetta, and it set off on one of the most complex gravitational trick-shots we have ever attempted.

Ten years later, Rosetta finally arrived at comet 67P/Churyumov-Gerasimenko earlier this year. An impressive enough feat by itself, the orbiter is already sending back useful scientific data on the structure and composition of the comet. The world was duly impressed, in a reserved sort of way.

But today; today Rosetta set free a payload of its own — a lander named Philae. We watched with bated breath as it slowly fell in the comet’s barelt felt gravity.

Its descent was live-streamed. It was live-tweeted. It was live-comiced.

The comet’s surface approached.

At 16:03 GMT, Philae successfully touched down on the surface of 67P/Churyumov-Gerasimenko. And our nerdy corner of the internet went wild.

Today, after ten years and half a million miles from home, the scientists and engineers of the European Space Agency landed a robot no bigger than a washing machine, on a comet with gravity one ten-thousandth of Earth’s… exactly where they aimed it.

For the first time in our history — for all we know, the first time it has ever been done in the 14 billion year history of the universe — our species has landed something on a comet.

Today, humanity stands proud of its place in the cosmos.