I’m a tech director and engineer from England, currently focused on building back-end stuff for games.
I’ve been working with everything to do with games, web services and cloud for the last 25 years on a variety of projects, and I’m currently Technical Director of Live Services for Creative Assembly.
I also do a fair amount of freelance web work, building things like CMS, ERP, eCommerce whatsits and associated paraphernalia.
I live with my wonderful wife and kids in Seaford, and when I’m not technical directing, I’m probably near a piano.
Back in Olden Times, I was a craftsman, with my ever-versatile Java Hammer always by my side.
The Java Hammer (made by the Sun Quality Tool Company) was a magnificent specimen, wielded across the world in equal measure by the adept, and the inept – used to construct a mind boggling proportion of the digital world during that age. There were other tools available, falling in and out of favour as time went on, but none surpassed the popularity of the Java Hammer, leading to an awe-inspiring range of compatible Java Nails being produced to fulfill whatever construction need was on the bill.
A digital painting of a proud engineer craftsman wearing a t-shirt, holding a cup of coffee, wielding a big hammer. Thanks DALL-E
The things I regularly hit with my Java Hammer included:
Applets to run in the browser
Desktop applications with Swing and JWT/SWT
Games with JOGL
Web services (smaller construction projects) with Play and Spring
Web services (cross-country sprawling construction ventures, mired in bureaucracy and unnecessary complexity) with Java EE
Simulations with Akka
Controlling Lego robots with Lejos
Games for Feature Phones with MIDP and J2ME
Android apps and games
Data processing with Hadoop and Spark
Interfacing with hardware projects or lower-level libs with JNI
Making Java Cards (smart cards) do silly things
Nowadays, my Java Hammer is a bit worn around the edges, the handle has all but fallen off, and it gives me splinters. After decades of additions to the Java Hammer (with a combination of gaffa tape and Java Nails), there are so many bits dangling off, it’s difficult to know how to use it properly.
Worse still, some of the types of Java Nails I used to depend upon have stopped being manufactured, and the supposed replacements (Instant Grab Adhesive by the JavaScript and Canvas Corporation, or High Tack Grip Filler by Electron LLC) give me a headache from the fumes.
Over the last 30 or so years, I have amassed quite an arsenal of weaponry to tackle some of the things that Java Hammers were capable of (not necessarily “good at” but got the job done):
PHP (with Cake, Silex, Symphony, Laravel, and of course WordPress!)
Ruby (and Rails)
All the “Web Stuff” (html/js/css, Ajax (lol), Prototype, jQuery, script.aculo.us, MooTools, AngularJS, Angular, React)
JavaScript (node and everything alongside it)
Dart / Flutter
Erlang ❤️ (with Cowboy)
Go (with Gin)
Rust (with winit, warp)
Nim
Zig
…
and probably a few more along the way that I’ve built the odd cabinet here and there with. This doesn’t even touch on all the auxillary stuff (build tools, hosting providers, infrastructure management, containers, monitoring, …..)
So nowadays, when I want to build something new, what do I pick? I have a few standard gotos for “boring stuff”, but if it’s a new idea, I’ll pick up my absolutely enormous toolbag, rifle around inside until I find a tool roughly appropriate for the job, and immediately realise the ecosystem has changed so dramatically in the last 12 months that the tools I thought I knew have changed shape. There’s a parallel trend to make everything in the browser (or outside the browser, in a browser wrapper like Electron) – and that feels odd too. There’s a growing hype-movement towards Rust For Everything – maybe that’s the future?
I’ve been playing a bit of Terraria on Android; extremely addictive and good fun. I was using the cloud-save functionality that backs up your game saves to Google Drive, and thought I’d be able to use this to sync between devices – I had to send my Galaxy Note 4 back for repair, so reverted to my old (smashed!) HTC One X; fired up Terraria only to find no cloud saves were found.. here’s how to get them back!
I’ve just posted a simple PHP class to github (free under MIT license) that will let you fetch the latest Twitter and Facebook posts. All you need is a developer key for both, then to include the PHP file and you’re set!
$social = new SebSoSocial($twitterAcc, $facebookAcc, $numOfEach);
foreach ($social->posts as $post) {
echo $post->date . " - " . $post->content;
}
The Chromium team have an automated build bot that generates builds every night; this short guide will explain how to get one of these nightly builds running in QEMU so you can try it out!
Here’s a small selection of tips and tricks I’ve collected in Ubuntu linux – and probably might help in other Linuses (is that the plural of Linux?!) too.
I’ve written a simple metronome app for Pebble (SDK 2.0).
Press the select button (middle) to enter “sampling” mode – tap the pebble to set your tempo. Then press select again to get it to pulse at the tempo you’ve set. You can also increase/decrease the tempo with the up/down buttons.
Precompiled .pbw: Version 1.0.0 Updated 2013-11-11 10:21
Seeing as I just got a Pebble watch, I decided to write a quick app for it, and seeing as Pebble have just released the (brand) new SDK 2.0 beta, I’d use some new features from that.
And a precompiled .pbw: Version 1.0.2 Updated 2013-11-08 16:47
It displays 3 graphs, X/Y/Z of current accelerometer values vs time, which you can increase or decrease the polling frequency of the accelerometer chip.
In case you didn’t know, Total War: Rome II is out now on Steam! It’s the latest game we’ve been working on (at Creative Assembly in the UK). This is a quick guide on getting Rome II running under Steam on Linux, using PlayOnLinux (a wine wrapper). Note: this won’t be using the native Linux version of Steam, this is specifically about running Rome II under Steam, running in a Wine environment.
I use Evernote for storing basically everything. Reference, notes, bookmarks (with notes about the bookmark), a journal (although this is a recent addition… we’ll see how long it lasts!) and some parts of my GTD workflow. It’s a fantastic tool with clients for Windows, Linux (Everpad, NixNote), Android, Mac, iPhone and of course, the web (where I use it most).
<shameless_beg> Signup to Evernote here and reward me with some Evernote points. </shameless_beg>
Anyway, every now and again, I get a bit frustrated by the editor Evernote uses on their web interface – some little quirk of layout will start misbehaving (usually with nested lists) in the body of my notes. The editor they use is a customized version of TinyMCE, but there’s no button to switch to HTML view (as there normally is in TinyMCE) which I’d normally do to fix these things. However! (and finally to the point of this article) you can inject events into a running instance of TinyMCE so that’s what this bookmarklet does – it sends the mceCodeEditor to the main Evernote editor (which happens to be the second instance of TinyMCE on the page) to let you edit the HTML source directly.