Blog Archive — Page 6

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.

  • 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.

    Rosetta's gravitational slingshots

    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.

    Rosetta as seen from Philae during descent

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

    The comet’s surface approached.

    Comet 67P C-G as seen from Philae during descent

    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.

    Artist's impression of the Philae lander after touchdown

  • Gathering Dusk

    Dusk falls across Dorset, darkening the fields from Christchurch in the east, past me, way past me out to Lyme Regis in the west.

    My week is done, and with it October, and with it the harvest and the last of the warmth that summer left behind. The night will grow dark now, and the year cold, until Christmas comes and winter has us in its grip once more.

    And so I raise a glass to those departed — men, women and years all the same. My thirtieth summer has come and gone, and many more remain.

    To Lugh and to Loki, to trickster gods and the hosts unseelie, I salute you and drink in your name. A happy Hallowe’en and a blessed Samhain to all of you.

  • On GamerGate

    Dear GamerGate supporters, trolls, flamers and everyone associated:

    Here is a pale blue dot.

    Really, it’s the pale blue dot.

    To abuse the words of Carl Sagan: That’s here. That’s home. That’s us. That’s you, everyone you have ever loved, and everyone you’ve ever hated. It’s every videogame player, creator and journalist. It’s Zoe Quinn and everyone she may or may not have slept with. It’s Anita Sarkeesian and everyone who’s ever sent her death threats. It’s all of 4chan and 8chan and Reddit and everyone who’s ever posted there.

    We are alone in space, the only inhabited planet we know of in a universe unimaginably wide.

    We are the pinnacle of four billion years of evolutionary history. There has never been a species as intelligent and as capable of wonder as our own. Maybe there never will be again.

    We have more than any previous generation. We have built great modern wonders that have brought us closer together, allowed us to understand each other better than ever before. Languages and cultures are no longer a barrier to us.

    We alone have come together as a species, shared our skills and our technologies, and sent our representatives to other worlds.

    So please, can we stop threatening each other on the internet? It’s beneath us, and we should know better.

  • Ooh arr, Oi be Resolvin' ee's Grammatical Failin's

    Part 1. US Edition

    vosotros. vous. ihr.

    The more languages I learn, the more it stands out that English has no second-person plural, no way of saying “you” and explicitly meaning more than one person.

    That is, of course, except for “y’all”, a term that I’ve found myself using more and more often recently. I feel like I can justify it from a linguistic point of view, though for using it I should probably renounce my British nationality and take up eating barbecue and firing assault rifles.

    …Actually, that sounds pretty good.

    Part 2. UK Edition

    I know quite a few transgender or non-gender-binary people, and so another grammatical lack that seems to crop up from time to time in conversation is the lack of a gender-neutral pronoun in English. But again, this lack can easily be resolved by resorting to a prejudiced-against rural accent.

    Despite being from Dorset, my parents thankfully brought me up to speak with an accent that is “middle class Southern” rather than Westcountry. But for all the stereotypes associated with that accent, it does neatly solve the problem of inventing pronouns like “zie”, “hir” and “ey” by simply using “ee” for everything — “he”, “she”, “him”, “her”, and even “you” in a pinch.

    There ee go. Grammatical inadequacies in the English language, solved by talkin’ loike ee’s a farmer.

  • Adventures in Emoji

    Yesterday, a friend of mine started me on a quest that was to be filled with despair. It started innocently enough.

    I gleefully replied with my 140 character attempt at making that come to life (each Emoji counting, as I would later discover, as two normal characters).

    Well, that didn’t look like a bad start. There were some alignment issues there, probably because Twitter uses a proportional font. Nothing that a couple of <pre> tags couldn’t solve!

    Oh, how wrong I was.

    Twenty-four hours later, this is what I have to show for my efforts:

    Well, it’s a whole screen of Rogue-like, which is not bad. But despite wrapping the whole thing up in <pre> tags, there are still alignment issues.

    Lesson 1. Not all Emoji are a fixed width.

    Lesson 2. No Emoji are the same width as a half-width or full-width Unicode space.

    This will become important.

    You may also notice that the picture above isn’t a nice <pre> block full of text that you can copy and paste. That’s because, after hours of tweaking to get something looking vaguely presentable, I decided to see what it looked like in a different browser.

    And even in the same browser, with a different monospace font:

    Lesson 3. The width of an Emoji — and even one of the Unicode spaces — varies from font to font.

    Before I even got to that point, though, I was nearly thwarted by an even more frustrating issue — actually laying out the Emoji in a text editor.

    I assumed that in the world of monospace text that editors inhabit, these problems of layout would be avoidable. Any modern text editor should allow me to edit a bunch of Unicode characters in a regular grid, right?

    Of course not.

    My first attempt was using gedit, my GUI editor of choice. It happily allowed me to mix standard ASCII and Unicode characters. When I inserted a space between ASCII characters, it was about 20px wide — so far, so good. But when I inserted a space, even a Unicode full-width space, between two Emoji, the result was only 10px wide. The browser renders the spaces correctly, so to look right in the browser, all spaces had to be half as wide in gedit — useless for drawing a dungeon layout.

    I resorted to vi, my console editor of choice. My console font happily supports Unicode, so this should be no problem!

    Of course not. For a start, keypresses in vi insert one byte at a time, meaning that every other keypress misaligns every subsequent two-byte Unicode character on that line. And then there’s the quite bizarre way in which it decides to write characters on top of each other.

    My third and almost bearable choice was an odd one. I figured that if I wanted the same look in my editor as in the browser, I should use an editor that runs in the browser. I chose the Chrome extension Caret.

    At last I had something almost usable, although the misalignment of characters rears its ugly head here too. There’s the infuriating bug that this only applies to characters on the screen, not the cursor position. 70 characters into a line of Emoji, the cursor position can show up almost two characters away from the text it actually sits at.

    Lesson 4. There’s not a single program in the world that renders Emoji the same as any other.

    Last but not least, there’s the matter of Emoji fonts.

    On my Linux machine, my browser and my text editor at least use the same set of monochrome Emoji symbols. But view the same page on an iOS, Android or Windows Phone device, and you’ll discover they have their own platform-specific Emoji fonts which are specifically designed to look great while ruining your attempt at cross-platform compatability. Here’s what our Rogue-like looks like on Android, showing off the inevitable inconsistent widths:

    If you’d like to post your hard work to social media sites, you may also discover that Twitter has its own set of unpredictably-sized Emoji. Facebook will at least use your system font when you post Emoji, although trying to edit a post with Emoji quickly results in a field of “your encoding is broken” rectangles.

    Lesson 5. Despite Emoji having existed for over a decade, and having been incorporated into Unicode for half that time, Unicode fonts and particularly Emoji in them are a complete mess of incompatible typesetting and platform-specific weirdness. They are not yet suitable for use in layouts — and thus, sadly, for making Roguelike games.

    For the curious, here’s how my Emoji Rogue-like would render in your browser. If you use the Cousine font in Chrome on Linux, this might look alright! If you’re using anything else, this is probably a horrible mess.

        🔳🐍             🔳                        🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳      
        🔳      🐂       🔳                        🔳        🍖                  🔳      
        🔳               🔳                        🔳          🍖                🔳      
        🔳🔳🔳🔳🔳🔳🔳🚪🔳                        🔳                            🔳      
                     🔳  🔳                        🔳🔳🔳🔳🔳🔳🔳🔳🚪🔳🔳🔳🔳🚪🔳     
                     🔳  🔳                                       🔳  🔳    🔳  🔳      
      🔳🔳🔳🔳🔳🔳🔳🔳🚪🔳🔳🔳                                  🔳  🔳     🔳  🔳     
      🔳        🐀           🔳                                  🔳  🔳   🔳🔳🚪🔳🔳🔳  
      🔳  🔳                 🔳                   🔳🔳🔳🔳🔳🔳🔳🔳  🔳   🔳     🐉  🔳  
      🔳  🔳          🐀     🔳🔳🔳🔳🔳           🔳                 🔳  🔳  💍     🔳  
      🔳  🔳                 🚪      🔳           🔳  🔳🔳🔳🔳🔳🔳   🔳  🔳🔳🔳🔳🔳🔳    
      🔳  🔳  🎫             🔳🔳🔳  🔳           🔳  🔳         🔳  🔳                  
      🔳🔪🔳                 🔳  🔳  🔳           🔳  🔳         🔳  🔳                  
      🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳  🔳  🔳           🔳  🔳         🔳  🔳                  
              🔳         🔳      🔳  🔳       🔳🔳🔳🚪🔳🔳🔳🔳🔳🔳🚪🔳🔳🔳              
              🔳  🐍     🔳🔳🔳🔳🔳  🔳🔳🔳🔳🔳          🐍              🔳              
              🔳    🐍   🚪                   🚪      🐍  🐍🐍💥🚹        🔳              
              🔳         🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳        🐍        🍖      🔳              
              🔳🍗       🔳                   🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳🔳              
    Level:1     Hits:14(14)   Str:15(15)   Gold:34    Armor:1   Exp:20/23

    The limited set of Emoji currently available also causes a number of other issues with creating a Rogue-like using the characters. For example, the character set currently does not contain glyphs for:

    • Stairs
    • Treasure chests
    • Corridors
    • Kobolds
    • The Amulet of Yendor

    I’m sure the Unicode committee will be working on these soon.

  • SuccessWhale 3.0 Released

    It turns out that my previous post about SuccessWhale, bemoaning how it had stagnated and become more trouble than it was worth, was just enough venting to kick me up the arse and get me going again. And so, not long later, I am proud to announce the release of SuccessWhale version 3.

    SuccessWhale 3.0 Screenshot

    As promised, it is a complete rewrite from the ground up, transforming a ugly mash of PHP, HTML and JavaScript into a neatly separated JavaScript client and Ruby API. In terms of the user experience, not a lot has changed — a lot of work has been done just to keep things the way they are. But the best bits about SuccessWhale v3 are where it goes from here.

    The API now builds on modern tools and libraries, meaning that Twitter and Facebook’s “breaking changes” will result in fewer problems and quicker fixes for SuccessWhale. The separation between GUI and API also means that bugs can be found and fixed more easily, without the risk of GUI tweaks breaking the back-end or vice versa.

    Plus, it means that SuccessWhale’s abilities are open to other clients. Our API is freely usable by anyone, meaning that you can create your own desktop, mobile or web app using SuccessWhale without having to delve into and run your own back-end code. Already we have a native Android app supporting SuccessWhale — OnoSendai.

    SuccessWhale remains free and open source (Web app source API source and BSD-licenced, so you can take it, modify it, use it in your own projects, and generally do whatever you like with it. If you do write another SuccessWhale API client or remix it for your own needs, please let me know — I’d love to see!

    As always, SuccessWhale is available for free on the web at

    If you’re new to SuccessWhale, you can find out more about it on the About page, and experienced users should check out the What’s New page.

    I’d like to take this opportunity to thank my wife for putting up with many long nights in front of my laptop, and my good friend, alpha tester and OnoSendai author haku for filing more bugs than I could possibly imagine.

    I hope you all enjoy using SuccessWhale as much as I enjoyed writing it!

  • To Those who Fear Immigration

    Last week’s European parliament elections saw big gains for right-wing parties across the continent, many trading on policies opposing immigration and the European Union itself.

    I worry for those of you that cast your vote against immigration regardless of the other policies of the party you voted for. I worry that fear is used to sway your vote, that media sensationalism destroys proper discourse, that the truth is the first casualty of an election campaign, and that our country is steered by narrow-mindedness.

    And because I worry, I wrote you a letter.

    To all those who vote out of fear of immigration,

    You vote for a system that is outdated and artificial.

    Ten thousand years ago, humanity lived in tribes, extended family groups perhaps a hundred strong. They were the ideal size for hunter-gatherer groups, because that was the means by which we survived. Those groups had limited understanding of others, and fought often.

    Somewhere around then, we discovered how to grow and harvest crops. It changed our species forever. Farms meant we could stop wandering; we could settle down in larger and larger groups. We built towns, cities, empires. These days we call them countries, and if you’re reading this, chances are you live in a pretty good one.

    But just like in our tribal days, we squabble and fight with neighbours we don’t understand. We don’t want people from the tribe next door coming and stealing our berries. We go to war with other tribes to claim the best watering holes.

    This is what you vote for. Humanity’s past. The artifical constructs we built ourselves under the pretence that our tribe was more important than the others.

    But that will end soon.

    Maybe not tomorrow. Maybe not in our lifetime. But on the timescale of civilisations, it will be soon.

    Just as the technological advancements of farming and construction united tribes into countries, transportation and communication will unite countries.

    Advances in farming will allow us to feed the world, and global economics will give us the reason to do so.

    Technology will allow us to understand every language; empathy will allow us to understand every culture.

    A hundred or a thousand years from now we will not fear immigration, because fear comes from misunderstanding. And we will understand it completely.

    We can solve poverty and famine, because we will care for our species on a global scale. We can solve war, because countries will be a relic of our past just as tribes are today.

    We can leave our tribal days behind for good, unite our species and reach for the stars as one.

    Doesn’t that sound like a pretty good idea?

    Don’t vote for the past. Vote for the future.

  • Like Father, Like Son

    I knew the day was coming soon, when my son would decide that he wanted to make his computer do something new, something a computer had never done before. I thought that like me when I was a little more than his age, he’d sit down in front of his computer and type his first “hello world” in some child-friendly language.

    Unfortunately for that plan, Joseph seems interested in very little besides writing his own Civilization clone from scratch.

    Faced with this daunting prospect, and knowing that it would be me writing most of this, I abandoned the idea of teaching him, line by line in something like Python or even Scratch. I had to default to the path of least resistance, which for me is Java and Swing. With all its verbosity and hassle, it’s not an ideal first programming language for kids, but it’s what we’ve ended up with for this project.

    So far, after an hour or so of work — me in NetBeans and him in MS Paint — we have this. It’s not so much a game as a psychedelic grid, but it’s something that can be flashed up on the screen to demonstrate that we are making progress.

    It’s called “Sudden Death Supervisors”, because apparently all six-year-old boys attend the “Axe Cop” school of naming things, and you can follow our progress here on Github.