I’m a software developer. I ask computers to do things for me. Occasionally, if I ask nicely, cross my fingers, and make the correct incantations, they comply.
I run my own software development company Elegant Chaos.
These days we’re mostly working on our own products, but previously we’ve contracted for other people (and still do a little, occasionally).
My last really big contract was Sketch, which I did a lot of work on from 2012 to the end of 2017. During that time I worked on all sorts of things: the architecture, the back-end, importers, rendering, scripting to name a few. I also helped to put in place a great coding team, and a decent workflow, with feature branches, unit testing, code reviews and continuous integration. Latterly my main focus was “tools and technology”, particularly internal tools and processes to make our own team more productive, and external scripting and tools to allow other people to write plugins for Sketch and to incorporate it into their workflow.
Before Sketch, I worked at many interesting places, including games studios (Sony London and Sports Interactive), music studios (Real World and Abbey Road), and some pioneers in the early years of multimedia (Multimedia Corporation, ULTRALAB and the Centre for Educational Studies). If you want to know more, check out my Past Lives page, or read my CV.
I tend to describe myself as a Mac programmer, since that’s what I’ve been doing for most of my professional life. Since the advent of the iPhone (way back in 2007!), it has become more accurate to describe me as an iOS/macOS developer. I’ve also worked with any number of other platforms, and am not averse to doing so again.
I like good human-centred design and more often than not I find myself drawn to Apple’s products as a user, and as a developer.
These days I feel that Apple have lost their way a bit. “It just works” quite often doesn’t, for me, which is a shame. I also feel that they are straying into dangerous territory by controlling so much of the content on their own platform.
I’d really like to find a new system to work on and to use - but right now I’m not sure what it would be. I’ve tried the obvious alternatives (a number of times), and whilst Apple now frustrate me, the alternatives frustrate me way more.
Currently I’m programming almost exclusively in Swift, which I really like.
Back in the day, I wrote Carbon applications (they were just called Mac applications then), using Codewarrior (or Think C or MPW) to write C and C++ code. Or even Pascal, back in the day before the day.
Between about 1999 and 2009 I was working on a number of games which ran across a number of platforms. For about seven of those years I worked on the core libraries, and created a cross-platform user interface toolkit, for a game called Football Manager (formlerly known as Championship Manager). FM is made for both Windows and Mac, and has other incarnations or related products and tools on Linux, PSP, XBox360 and other things. I also had a spell working on tools for Sony, which had to run on Windows, and have ported other games to the Mac from Windows.
All of which means that I’ve got a lot of cross-platform experience, as for quite a long period I was not a Mac programmer in my “day job” in the strict sense of the word, despite having a Mac on my desk and writing most of my code on it with Xcode.
Such things as music, books, food, beer, games, football, politics, and of course computers.
My musical tastes are catholic, and it’s hard to know where to start. Probably in the late sixties, I guess.
My taste in literature tends towards science fiction, but there’s plenty of room for other stuff, such as contemporary fiction and crime.
My taste in football tends towards Queens Park Rangers, largely because I grew up in Kilburn & Cricklewood at a time when QPR were a half-decent team. They haven’t been for most of my adult lifetime, but once the die is cast…
I lived nearer to Crystal Palace for a while, which was my granddad’s team. They weren’t really any good either. Now I live on the Isle of Lewis, in the Outer Hebrides, and the nearest professional football team (Ross County) is a ferry ride away!
My taste in food tends towards spicy. I’ve been a vegetarian since 1992, which steers me in certain directions too, and my favourite cuisine is probably what you might loosely term “South Indian”. I love cooking, but eat too much junk food.
My taste in beer is Belgian and trappist. I’m not sure about the whole god thing, but those monks certainly know what they’re doing on the beer front. My favourite beer is currently St Bernadus Abt 12.
My taste in politics tends towards social justice, secularism, and collective responsibility.
Margaret Thatcher famously said that there was no such thing as society. I beg to differ - and I believe that we must all take responsibility for the mess that it is in.
I tend away from authoritarianism and dogma, and don’t have a lot of time for people who see the world in stark black and white terms. Context and nuance matter.
If you want to quietly believe in one or more gods/higher-beings/aliens, that’s your business, but I don’t. It bothers me that so many people still do, but I believe in secularism, and that means the freedom to worship as well as the freedom not to. I try to be tolerant, but if you think that you can impose your beliefs on me - then we have a problem.
I do believe that most organised religions are about power. Many noble people have done good things in the name of organised religion, but that doesn’t make it healthy. Nor does it excuse the many terrible things also done in its name.
I’m not particularly fond of moral relativism, and I do believe that there are certain values that are worth defending, regardless of who might be offended. Cultural sensitivity only goes so far: if you’re a racist, homophobe, or religious zealot, for example, then we probably won’t get on too well.
I’m into most things related to software engineering, but particularly authoring tools, cool languages, and finding good ways to do the whole programming thing better. I also love computer games, particularly the world-building / simulation types.
My parents met at art school, and many members of my extended family have pursued careers in creative fields.
I’d like to think of myself as creative, though I don’t seem to have directly inherited the painting/drawing/making skills that the rest of my family have. I tend to think of programming as a happy blend of science, engineering and art, which is just where I want to be. If pushed, I’d rather be described as a craftsperson than a scientist.
I enjoy the process as well as the outcome, but ultimately I want to make elegant stuff that works well - not just stuff that works.
I’ve got programming experience in all sorts of weird languages, but for many years the one I liked best was Dylan. It may well still be, although Swift is pretty decent, and I haven’t used Dylan for a long time.
I used to say that my ideal authoring tool would by a strange hybrid of The Alternative Reality Kit, Hypercard, SK8, Dylan, Python, Smalltalk and Prograph. My ideal job might well be to develop it. Maybe I will…