Computer generated Magic Poi patterns with P5.js

Computer generated patterns – let me count the ways.

  • C++ code on-device

    – a simple for-loop using FastLED’s “Palletes”
  • Processing code – on Android, streaming to poi.

    – created using Processing “Mask”, the coloured parts of the image change colour to create an ever-changing image sequence. I also implemented a sound activated version which shows a pattern according to volume on different frequencies (“Beats”) and a static “Cylon” effect (“Zap Game”)
  • Similarly C can be used to stream generated patterns to the poi (see here).
  • I have experimented with AI generators using different prompts – for example:

    – These are from “Midjourney”
  • Finally, my current mission, using P5.js within the magicpoi website to generate pics with code. Examples:


The above example creates an infinite succession of 72x72px images – perfect for display on my 72px poi. I adapted the code from this showcase example on the P5js website.

My plan is to add this – and many more – options to the magicpoi website. They will complement the user generated images and be downloadable directly to the internet connected Magic Poi.

PS: Currently, if you want to see what any of the images generated above will look like on the poi, you can right click on the changing image, select “open image in new tab”, download the image and then on the magicpoi profile page (you need to be signed in for this to work – sign up, it’s free!) select upload and drag the image onto the page, or choose it from the file menu. Then you can turn this: into this:

As you can see, the possibilities are endless. I plan on making the P5.js image generation into a plug-in system for Magic Poi.

Ubuntu Snap update SPOILED the World Cup

Goodbye Ubuntu, Goodbye Snaps

I missed two goals in the World Cup Finals because of this. It’s not the first time Snap has been a problem, but it’s most definitely the last straw.

What happened?

I was happily watching the second half of the Fifa World Cup Final, using “ShowMax” – a South African paid streaming platform, on Firefox. All of a sudden the screen freezes and the Firefox Snap decides to update. I couldn’t even close the window to open up Chromium.

In a panic I force shut down the laptop but somehow the boot-up wasn’t recognizing my hard drive anymore?? I don’t know what happened there, it works now, maybe I pressed the power button too many times – I was IN A HURRY.

I ended up watching the rest of the game on my phone.

Go Argentina! If my team hadn’t won I would have probably been even more pissed.

It’s the last straw Ubuntu – I have heard that Snaps have added an “Experimental” option to ignore updates but that’s not good enough. I’m moving to something that gives me full control. You can say what you like about me – It’s my fault for using the “Schedule updates for Sunday night” option and forgetting about it, or not using the new “Ignore updates” feature I only found out about on Reddit last week, but I’m done.

From now on, I love Arch

I am going back to Arch. My computer is my computer, and I don’t care anymore how much work it takes, I’m going to take charge so nothing like this ever happens again.

Look forward to a follow-up article where I rant about annoying Arch flaws and insane breaking changes in updates. \s

Update: Wow I actually made the front page of hacker news! Lots of discussion on the topic here:

Upgrading K8 Prophecy club with new battery and firmware

My K8 Prophecy clubs have reached the end of their tether. After 8 years of use! First of all, many thanks to K8Malabares for their excellent equipment. Most smartphones won’t last that long (except for my Samsung Galaxy S2, which still works). If you need juggling equipment you can’t go wrong with K8. I have some of their non-LED equipment as well and it’s just as good.


About six years ago I did an experiment – to see if I could emulate the K8 IR code on an Attiny85 chip. I knew they used that chip, or possibly the Attiny45, because one of my clubs was faulty and I opened it up to have a look – K8 sent a replacement, by the way, talk about great customer service!

Now that my balls and clubs are not working anymore, due to the battery reaching end of life, it’s the perfect time to test out my new code. Luckily K8 didn’t solder their chips, instead opting for a convenient chip socket for easy replacement! I made some updates to the code, adding new functionality and colours. (K8 have also done an update since I bought my equipment) The most important, for me, was adding a timeline record and playback. This means that I can record the timed colour changes for my entire show into the chip via IR remote, and play it back (in time with the music) by pressing a single button. This is similar to how Aerotech Ultimates used to work.

You can check out the code for Attiny85 here.


The batteries were the main thing. K8 use lithium batteries with 250mah power. I found some batteries online with a capacity of 600mah which I thought I could make fit (see below for details – not quite, but I made it work). I also bought a cool new charger for the new batteries.

The procedure

For anyone who wants to try and do this, I am posting some tips and photo’s.

1. Taking apart the club

Pull off the tape from the center, then pull out the staples:

Take off the knob and top bumper:

Pull off the plastic around the handle, then unscrew the plastic spacer (needs an allen key)

The next part is really sensitive – make holes in the top of the bulb cover to let the inside pipe come out. Get it out by pushing from the bottom – I also shoved a dowel inside and pushed upwards. If you use too much force this plastic pipe could bend, so be careful.

Now pull out some more screws holding the thicker top piece of the inside pipe on, and pull the spacer out to let the electronics out.