Review of 2018

BBC Click live show with Spencer Kelly and Lara Lewington

This year has been overwhelming and exciting and it’s probably been the most varied one so far. The stand-out experience was at The Albert Hall for Space Shambles where I shared the stage with an actual Apollo astronaut who played a massive version of Lunar Lander, laser projected onto a 25m wide screen. 

But there have been many other highlights too – I performed a short run of my solo geek comedy show Hacked on Classicswent on tour with interactive dance show Choreocracy, and took Mindfulness Machine to TIFF in Toronto. 

But let’s start with what seems to be defining my career lately – lasers!


My own open source laser control code base has been growing in capability and reliability. The underlying controller code has been optimised, and it can now easily handle multiple lasers (an upcoming project in January 2019 uses 8!).

Other capabilities added this year; complex warping functionality (for architectural mapping) and a graphic object that allows for vector occlusion.

I invested heavily in laser hardware this year, buying 3 x 11W RGB lasers. This should really make it easier to produce and develop my own shows, without the dependence on third party suppliers. (If you want to hire my lasers, let me know!)

In February, Lightning Strikes had its second outing at Spectra Aberdeen, and in November, that project won the ILDA award for Art and Innovation. (I also placed second for its sister project, Lightning Catchers)

A couple of interesting collaborations this year, in March, I teamed up with artist Joanie Lemercier to produce a laser projection project at The House of European History in Brussels.

Flux by Joanie Lemercier, lasers by me!

We had to figure out how to get Joanie’s vector graphics from VVVV (a visual programming environment) into my laser system. I built an app that could receive and parse SVGs over a socket in real time, and then send it to two lasers, that each had zones mapped onto various planes on the building. It was a really beautiful project, and lasers look especially good in the snow ๐Ÿ™‚

And in August, I teamed up with comedian Bec Hill on her new show I’ll Be Bec at the Soho Theatre in London. It’s a fantastic time-travelling sci-fi comedy show that she’s hoping to take to Edinburgh in 2019. Unfortunately my contribution to the show is somewhat of a spoiler, but suffice it to say it was such a pleasure to work with Bec and the team, and it’s worth checking out her show if you can.

Space Shambles at the Royal Albert Hall

Lasering up the Royal Albert Hall with real life actual spacemen

Such an incredible experience deserves its own sub-heading!

In June, Robin Ince and Commander Chris Hadfield put on a spectacular space-themed cabaret show, Space Shambles, at the Albert Hall. The amazing line-up included my friends from Festival of the Spoken Nerd and musicians Grace Petrie and Laura from She Makes War, as well as the best and brightest science communicators in the industry.

In my section, I introduced the arcade game Lunar Lander, and replicated it with lasers. “Some people say the original game was so difficult that it was as hard as flying an actual Lunar Module… but there’s only one way to find out…”, at which point (and I still can’t quite believe this) I introduce Rusty Schweickart, the Apollo astronaut who was the first to test drive the real Lunar Module.

Apollo astronaut Rusty Schweickart effortlessly lands a laser lunar lander

He of course was cool as anything as he gently touched down the laser generated Lunar Lander, and of course, the crowd of 6000 erupted into applause! As a confirmed space enthusiast, it was probably the highlight of my career so far.

I’m really hoping that I can take Laser Lunar Lander out next year to celebrate the 50th anniversary of the Apollo moon landing (and the 40th anniversary of the Lunar Lander arcade game!) If you can think of any opportunities or big buildings that could do with a massive laser version of a 70s arcade game, let me know.

Stage performances

The Albert Hall show was just one of many stage appearances for me, and it’s something I’m really enjoying these days.

Hacked on Classics at the Lowry, where I put a real laser into a Nintendo Zapper

A booking from The Lowry for their Week53 festival was the incentive I needed to update my solo geek comedy show Hacked on Classics. I worked with a producer and comedy director Chris Head to help give the show a semblance of narrative structure and bring out the humour.

But as well as that, I also made several appearances at An Evening of Unnecessary Detail, my favourite nerd comedy night in Bethnal Green. Early in the year I was a guest at several MathsFests, a show for young maths students. And the end of the year was finished of with Nine Lessons and Carols (where I played a Christmas song on a keytar made of floppy disk drives) and the wifi wars Christmas special at the Royal Institution.

Also in December I was part of the BBC Click live show, where I showed off one of my new lasers. It was great fun, a really nice team, and I hope to do more with them next year.


The inimitable Choreocracy dancers’ laser portrait

It seems that much of my work this year has been in theatres and Choreocracy is no exception. Working with choreographer Tim Casson, we have put together an interactive dance show that you control with your mobile phone.

It’s a lot of fun, and we toured with it in November and December. We’re touring again next year more details at

Mindfulness Machine

A couple of years old now, but Mindfulness Machine made it to the DigiPlay exhibition at TIFF in Toronto, and then straight to the O’Reilly AI conference in New York.


As well as the aforementioned floppy disk drive keytar, there were several other making projects this year. I made some radio controlled light-up shoes for Choreocracy (using bespoke PCBs, Adafruit feathers, 3D printed enclosures).

I also have continued work on a home light installation based on something from the movie Ex Machina – I started it a few years ago but got busy on other projects. I got myself a Glowforge laser cutter in the summer, and this was just the excuse I needed to finish laser cutting all the parts.

I also have the PCBs for this project and I’ve wired a third of it up… the rest is going to take a while, maybe before the end of 2019? ๐Ÿ™‚

Other stuff

I spoke at a few conferences, including Smashing in Toronto and Freiburg, I ran a glow-stick band performance for my friends at Westvisions in Germany, I did a last minute TEDx talk in Surrey.

I spent the summer experimenting with 3D printing finishes (including coating resin) and I also took photos for Belongcon and FFConf.

What’s next?

This year, I feel like I reached the limit on the number of large installations I can organise, so next year I’m hiring Cat Hunter to help me promote and produce those events.

So if you have any good leads for events that need massive spectacular interactive light shows (PixelPyros, Laser Light Synths, Lightning Catchers, Laser games etc) please let me know!

But it’s already off to a good start – I have a booking for Laser Light Synths in January at Middlesbrough Town Hall that will have the most lasers I’ve ever used!

And to help with the promotion of those events, I’m going to be breaking off my professional identity into a new brand and website (eventually at and keep this as my personal site, for random thoughts, project updates, and personal appearances / speaking engagements.

I realise that I have hardly blogged at all this year. I’ve got out of the habit, but it’s something I’d like to restart again. There are so many guides I want to write about using lasers, openFrameworks etc.

I’m struggling at the moment with social media and the state of the world. Brexit is a huge depressing thing that’s hanging over 2019, and will likely be very damaging for myself and this country.

But I feel truly blessed to have such a great and varied career. As long as people need joyful experiences, I’ll be here to provide them.

Timeline of 2018

Jan / Feb
UCL MechEng Engineering gig (laser show)
Maths fest Birmingham
Maths fest London
Spectra Aberdeen -Lightning Strikes
Toronto TIFF digiplay – Mindfulness Machine
Brussels, Flux – Collaboration with Joanie Lemercier

Trip to Toulouse (personal)
An Evening of Unnecessary Detail – Updated version of live Casio Vl1 demo
Belongcon photos

Implemented IDN protocol in ofxLaser
UK Laserist meet up
An Evening of Unnecessary Detail – Laser Duck Hunt
New York – Mindfulness Machine install at O’Reilly AI conference

Purchased 3 x 11W RGB lasers
Choreocracy previews, London and Ipswich
Westvisions, Germany glow stick band
UX London – Performance of Hacked on Classics
The Lowry Theatre, Hacked on Classics at Week 53 festival
Choreocracy Preview in Bournemouth

Space Shambles at the Royal Albert hall
Toronto – Smashing Conference

3D printing R&D
Prep for Bec’s show

Bec Hill – I’ll Be Bec run at the Soho Theatre, London
Laser cutter purchase

Smashing Conference Freiburg
Distributed Cyborg Ring kits
Ex Machina Light installation
TEDx frensham

Light installation wiring
Finished remote controlled LED shoes for Choreocracy
An Evening of Unnecessary Detail – Spoken Nerd DVD launch – Floppy drive keytar

FFconf photos
Choreocracy tour kicks off
BBC Click live recording

Choreocracy tour
Nine Lessons and Carols
WiFi wars Christmas Special

Lightning projects take home TWO awards!

After 5 years of working with lasers, it seems that I have now been accepted by the wider laserist community! The International Laser Display Association (ILDA) have honoured me in their awards ceremony in Montreal, as part of their annual conference.

My awards are in their Innovative and Art category, second prize for Lightning Catchers and first prize for Lightning Strikes!

It’s obviously a huge honour and I’m looking forward to working with lasers some more in 2019 ๐Ÿ™‚

Installing LaserShow Xpress on Windows 10

I thought I’d give LSX a try – it’s pretty cheap and seems like fun laser software. I had some trouble installing it on Windows 10 – kept getting the message “Code execution cannot proceed because msvcp100.dll was not found”.

It seems to be a problem with Visual C++ apps, and I found the solution on this post – you have to install the Visual C++ redistributable package, download here.

I’m not sure if this is a Windows 10 specific thing but hopefully posting this here might help.

Review of 2017

I can hardly believe it but this is now the tenth anniversary of my annual review, and therefore I’ve been blogging for over ten years – how the internet has changed since 2007! Back then it was all about open APIs, personal websites and blogging. Facebook was a tidy and uncluttered alternative to MySpace, the first iPhone had just been released, Twitter was a year old, YouTube was only two, and I had a successful career as a Flash programmer, making Flash games and embarking on my speaking career.

Boy firing laser gun

From a personal point of view, it’s been a remarkable ten years. I’m in an incredible position now, making a living from creating massive interactive light and laser art installations, a variety of electronics projects, a fun side-line in geek comedy, and regular conference speaking appearances. I could not be any happier.

But this isn’t a review of the last ten years, it’s a review of this year – 2017! So let’s get started.

Light Installations

2017 has been my biggest year yet for light and laser installations, kicking off with Laser Light Synths at Spectra Aberdeen in February. It was the project’s second outing, which was developed considerably adding a host of extra synth sounds, including a very 80s-tastic slap bass.

Laser Light Synths projection

A brief installation at GEEK in Margate for Laser Arcade (including Laser Duck Hunt) and then immediately afterwards, PixelPyros was shipped off to Abu Dhabi with my crew for a two week run at Mother of the Nation Festival. In June, I was invited to project laser visuals on the side of a building for the Glasgow School of Art graduation show party.

Over the summer I worked on a new prototype project, Lightning Catchers, which debuted at Enlighten Festival Bury. I built 2m long “lightning rods” full of super-bright LEDs and projected laser-generated lightning on the church tower. If you catch the lightning with your rod, it lights up and buzzes. I applied for an Arts Council grant to scale this up to 12 lightning rods but sadly this was rejected – my first failed application!

As so often happens, this turned out to be a good thing. It meant that I didn’t have the budget to produce the full-scale interactive installation for my commission at Enchanted Parks in Gateshead and had to rethink the project. I ended up designing projections that recreated various electrical effects and projected them on to the iconic Saltwell Towers.

I completely re-wrote my laser control code and hired two of the biggest lasers I’ve ever used and created a 6 minute looping show that was all algorithmically generated in real time. I very rarely produce things that are non-interactive so it was an interesting challenge. Not to mention way easier to set up and run!

Mindfulness Machine

In February I packaged up a new project and sent it to Dublin for their Humans Need Not Apply exhibition. The Mindfulness Machine is a robot that likes to colour in. Based around an 80s plotter, it just quietly doodled away for the four month installation.

It’s going to be travelling in 2018, but I can’t tell you where to yet…


R&D with Tim Casson on the interactive dance project Choreocracy continued in December and we have got full funding to finish it up and take it on tour! It’ll be visiting several venues in Spring 2018.

Public Appearances

I didn’t have as much time for speaking this year but still presented at a few good events. I brought my laser to Render Conference Oxford in March, and Generate London in September. And spoke at a handful of other events throughout Europe.

Although I didn’t get the chance to perform Hacked On Classics this year, I did appear at a couple of Evenings of Unnecessary Detail and closed the year with Cosmic Shambles’ Nine Lessons and Carols event with Robin Ince. It seemed to go down really well and I expect it to lead to bigger and better things in 2018.


Fun side projects this year included making a hardware single key keyboard and fully restoring an 80s keytar. Sadly the podcast was somewhat neglected; we only managed two episodes! Not sure what’s going to happen to that in future to be honest. But it’d be nice to getting it going again if I can.


I’m not entirely sure how best to document and publicise my work these days. The last few years I’ve been relying on Twitter more than my blog, but I feel like that is less effective now (not to mention the nazi problem). I should probably redesign this site and update it – the projects page is woefully out of date. And I think I will re-instate my mailing list. It seems the way to go.

But it’s been a great year for me, a fantastic mix of projects, all very exciting. And it seems like the art installations are taking off to a point where I rarely have time for conferences.

And it doesn’t stop here ; the first half of 2018 is already very booked up. I’m back in Aberdeen for Spectra with more lasers, I’ve been commissioned for the brand new Science Gallery in London, and I’m performing Hacked on Classics at the Lowry in Salford in May. And there are a few other things that I can’t talk about yet…

As the year closes, I’m thankful for the success and the support I’ve had. Here’s to another ten years!

Timeline of 2017

Mindfulness Machine install at Science Gallery Dublin
Laser Light Synths at Spectra Aberdeen
Laser Arcade at GEEK

Appearance at Raspberry Pi birthday celebrations
Keynote at Render Conference, Oxford
PixelPyros in Abu Dhabi

Visited Dublin to document Mindfulness Machine
Appearance at An Evening of Unnecessary Detail – Nintendo Laser Gun

Appearance at Hafentalks in Dรผsseldorf

Laser show at Glasgow School of Art
Appearance at An Evening of Unnecessary Detail – Lunar Lander

Sent out first Mystery Makers’ Box
Restored vintage Keytar
Made Keyboard simulator

Bought a new 3D printer

Appearances at Berlin and Zaandaam
Appearance at Hackaday, London
Keynote at Generate Conference, London

Lightning Catchers debut at Enlighten Bury
Laser show at WestVisions, Duisburg, Germany

Official photographer at FFConf

Lightning Strikes at Enchanted Parks, Gateshead
Week of R&D for Choreocracy, with Tim Casson
Appearance at Nine Lessons and Carols with Robin Ince.

Calling all speakers! A hardware button to toggle display mirroring

I’ve been really frustrated that my favourite keyboard shortcut to toggle display mirroring doesn’t work on TouchBar MacBooksso I’ve made a button that can emulate it!

Of course since I’ve got this working I’ve discovered there’s a weird work-around to get it working on the TouchBar, but it’s still quite a fun device, and you could use it to emulate any key (missing that Escape key, anyone?)

What you need :

That’s it! It should be way less than $20. You’ll also need a soldering iron.

Solder the switch to the Trinket as in the pictures – you’ll need to break one of the legs off.

Then you’ll need to install the Arduino IDE, and add the Adafruit boards. Checkout Adafruit’s brilliant guide to installing the Arduino IDE for their boards.

Download the code from the Cmd-f1-emulator repository on GitHub.

In the Arduino IDE, open the preferences and change the sketchbook folder to be the ‘Arduino’ folder inside the repository that you just downloaded. Restart the IDE, and then open the file CmdF1Emulator from the sketchbook. Make sure that the correct board and programmer are selected (Adafruit Trinket 8Mhz and USBTinyISP, respectively – check the instructions on working with the Trinket on Adafruit if you’re new to this).

Press the reset button on the Trinket and upload the code to it.

It should now work! It uses the Keyboard Trinket code provided by Adafruit, although I had to adapt it – apparently the Mac doesn’t act on the keyboard shortcut unless it thinks it’s made by Apple. That was a day wasted trying to figure that out! I adapted the Keyboard Trinket library to provide an Apple USB device ID to fool your computer into thinking it’s an Apple keyboard.

Ideally you should really put it in some kind of case – maybe just wrap it in Sugru? Or else there are some Trinket cases on Thingiverse you could check out.

Let me know if you decide to make this simple project and how you get along!

Keyboard shortcut for “Mirror Displays” on Touchbar MacBook

It’s kind of a niche requirement but very important for someone like me who runs presentations with keynote split on two screens to running demos that need to be mirrored.

It was always Cmd-F1 on any non-touchbar equipped Mac, but sadly that stopped working on the new Macs, even if you hit the fn key to make the function keys appear.

I went as far as creating a hardware keyboard emulator, before I discovered this software solution (thanks Anders Anker!).

Step one :
In Keyboard Preferences, select Press Fn key to Expand Control Strip

Step two :
Hit Fn-Cmd and the decrease brightness button on the touchbar.

That’s it!

If you’re interested, here’s the post with full instructions on how to make the hardware version.

Review of 2016

It’s been quite a year, that’s for sure. Politics in both the UK and the US have been increasingly chaotic, and I can’t help leaving this year in a high state of anxiety. It’s certainly had an effect on my productivity and in many ways has left me questioning myself; am I really doing the best thing for society with my work?

But perhaps a bit of fun and entertainment is a necessary and desirable distraction from the turmoil in the news pages? And thankfully I have had another successful year; my work has been steadily progressing and I’ve been enjoying it. There has been a good variety of different projects and events.
Continue reading “Review of 2016”

Fading LEDs with PWM on all pins with Pi Zero & Node.js

I’ve been converting my ST4i workshop from Arduino to Node.js/Raspberry Pi and one of limitations is a lack of built-in PWM pins. PWM or Pulse Width Modulation can be used to fade LEDs up and down rather than just turn them on and off. If you’re new to PWM, here’s a full explanation at Sparkfun.

On the Pi Zero, you can only enable 2 hardware PWM pins at one time, and the library I’m using to control the GPIO pins doesn’t support PWM at all! (The ubiquitous onoff node module).

After a bit of searching, I found the pigpio Node.js module, and this, in turn is a wrapper for the Pigpio C library.

As far as I can tell, it manages the PWM duty cycle in software, so it’s not as performant as the built-in hardware PWM pins, but as it’s written in C I’m sure it’s fast and certainly my experience so far suggests it’s super smooth.

If you want to try it for yourself, follow the instructions on the github page. I had a slight amount of weirdness, it didn’t seem to install straight away, but I deleted everything and started again and it seemed better.

I also had another problem – somehow I had started the pigpiod daemon and this clashed with the Node.js module code. Either the installer for pigpio did it or else I ran in manually while trying to get things running. sudo killall pigpiod should sort it out.

And a final thing to look out for – if you have node 0.10.29 on your Raspberry Pi (the version that comes with Raspbian Jesse) you’ll have a problem running any Node.js module that uses Nan, the native addon library. I first encountered this when I updated the LED matrix library to work with newer versions of Node.js, but it’s simple enough to fix. See this thread on github for solutions.

Once you have it installed you can do PWM output on any GPIO pin, here’s a set up for 9 LEDs like in the image above.

9 Leds on a Raspberry Pi

You can then use this code to get the nice pulsing effect in the animation.

var Gpio = require('pigpio').Gpio; 
// change these to match your LED GPIO pins : 
var ledPins = [21,20,16,12,26,19,13,6,5]; 
var leds = [];
// initialise all the pins
for (var i = 0; i<ledPins.length; i++) { 
	var led = new Gpio(ledPins[i], {mode: Gpio.OUTPUT});    
// get a loop running 60 times a second (1000/60 = 16.6)
setInterval(loop, 16); 
function loop() { 
	for(var i = 0; i<leds.length; i++) { 
		var led = leds[i]; 
		// calculate a sin wave for brightness dependent on time and 
		// position in the row of LEDs
		var brightness = Math.sin(((*5))*0.2)*0.5 + 0.5; 
		// a quick way to do a cubic ease in - it means the LEDs get brighter
		// slower. It compensates for the fact that LEDs get bright quick. 
		// the pigpio library complains if you send it a floating point number
		// so we have to round it down.
		brightness = Math.floor(brightness*255);

Note the issue with sending floating point numbers – I’m surprised that this isn’t handled at the other end but it’s easy enough to fix with a Math.floor.

And also notice how I’m using cubic easing to smooth out the brightness curve on the LEDs.

You can also use the pigpio library to control hobby servo motors. That’s what I’ll be doing next!

More about my ST4i workshops.

Controlling 7 segment LED displays on Raspberry Pi with Node.js

As part of the preparation for my upcoming workshops (last two tickets left!) , I’ve been working on writing Node.js code to drive various bits of hardware that are included in the free kit that comes with the course. So I’ve made my first ever npm package! And it drives cute LED displays running on the MAX7219 chip.

In particular, there are two little LED displays that I really love. One is an 8 x 8 LED matrix, and the other is an 8 character 7 segment display. (The ‘7 segment’ refers to the arrangement of LEDs that makes up the number shape – think of the displays on the Delorean time-machine dashboard).

They’re both driven by the same chip, the MAX7219, which can drive 64 LEDs, so perfect for both of these displays, and you can actually daisy chain up to 8 of them together and run them from the same pins. There is already a Node.js library that can run these, and it works fine (MAX7219) – it’s geared towards the 7 segment display and it works with the native SPI device on the Raspberry Pi.

But it is possible to run a MAX7219 chip without using the SPI device. You can ‘bit-bang’ the GPIOs – this is a way of sending digital data out of pins manually by setting them to high or low for each bit. It’s probably more performant to use the native SPI device but this method is perfectly fast enough for most applications, can be connected to any pins, can have multiple outputs, and is simpler to set up (as you don’t have to enable the SPI device on the Raspberry Pi).

[UPDATE – I just found this post with more about how bit-banging the MAX7219 works]

I’ve also implemented a few other fun features :

  • Display a number on the 7 segment display, with a fixed number of decimal places and leading zeros
  • A full alphabet – send it any alpha-numeric character and the library will do its best to represent it (obviously m’s and w’s are a bit crap ๐Ÿ™‚ )
  • Set a specific led at x and y coordinate of the 8 x 8 matrix – for fun graphics output

It’s based on the Arduino LedControl library so much of the API is similar, but it’s currently in a very early state so expect the API to change.

See the github page for more details.