UX features of buzzer.mobi

I don’t have any UX qualifications, but I like to think that sometimes I have good ideas around what makes a good user experience. I’ve been to several talks about browser features and Web APIs, and I apply what I learn to my projects. In this post I describe some of the nice features I’ve added to buzzer.mobi.

  1. Game ID prompt
    1. Input type
    2. Placeholder text
    3. Maximum length
    4. Keyboard hints
  2. Remembering details
  3. OpenGraph tags
  4. Low latency button presses
  5. Keyboard-only buzzing
  6. Haptic feedback
  7. Conclusion

Game ID prompt

Let’s start with some plain HTML, and the text box that accepts the Game ID. What attributes can we add to this input element to make it more useful?

<input type="text" name="gameid" id="gameid-input">
Continue reading “UX features of buzzer.mobi”

A Fast, Searchable Freeview TV Guide

In the May 2022 Remote Hack I made some finishing touches to my latest side project: a lightweight web app that lets you browse and search the Freeview Electronic Programme Guide. It lives at https://tvguide.dpope.uk.

  1. Current solutions
    1. EPGs on TV
    2. Websites
  2. Initial hacks
  3. Collecting EPG data myself
    1. Equipment
    2. Software
    3. Architecture
    4. Server side
  4. Tada!

TV guides are rubbish. No matter what device you’re using, the programme guide will either be slow, buggy, useless, full of unnecessary data, not filled with enough data, plagued with advertising or a combination of all of the above. I can’t say I’ve solved all of those problems with my web app, but I’ve given it a good try.

Quite often I’ll hear about a new TV show from social media (and by “TV”, I mean the one that you need an aerial to watch – not an Internet connection). I might watch an old episode on whichever VOD app it’s on, but it’s sometimes a pain to work out when the next episode airs on TV. So when I go to a TV Guide app, the question I have is “When is the next episode of X?” — and it’s often surprisingly difficult to find the answer.

But now I’ve made it easier.

Continue reading “A Fast, Searchable Freeview TV Guide”

Controlling WS2812B LEDs with NodeMCU

Back in Christmas 2019 I put some individually addressable LEDs around our fireplace to make it look festive. I claimed back then that it was a temporary installation, but 18 months later it’s still there.

When I first installed these LEDs, I was controlling them with an Espruino microcontroller. It was by far the easiest device to program, but some poor decisions meant after a couple of days I’d fried it. If only I’d worked out how to power the LEDs independently…

After the Espruino came the Raspberry Pi. It worked fine, but it took a good minute-and-a-bit to boot up. I wanted something that sprang to life instantly.

During a remote hack day, I got talking to Max about microcontrollers and the Internet of Things, and he managed to talk me into buying a NodeMCU board. He used one of these boards to connect a light switch to the Internet, and I thought I could do with one of those to control my LEDs instead of the Pi.


  • NodeMCU board. I bought this one, but there are lots of different types out there.
  • WS2812B LED strip. This one has 30 LEDs per metre, which makes it good value for money, and it looks good around a fireplace!
  • Some Lego to make a nice box for the controller
Continue reading “Controlling WS2812B LEDs with NodeMCU”

Time lapse photography with Raspberry Pi and an SLR camera

Yesterday I posted this to Twitter:

It’s a time lapse video of some daffodils opening, shot over 48 hours, condensed into 10 seconds.

Due to the ongoing global pandemic, I’ve not been out and about much. In fact I’ve spent the last 6 months back with the parents. I brought my camera with me from London, but aside from recording a few videos for the virtual choir I haven’t been using it much. Time for a new indoor photography project!

There are all sorts of ways to take time lapse videos, and I’m sure other methods will be much simpler, but this is how I created it.

Continue reading “Time lapse photography with Raspberry Pi and an SLR camera”

Buzzer.mobi: Another Pandemic Project

On the 3rd July I announced my latest side project, https://buzzer.mobi, that would help people play socially distanced games remotely. The Coronavirus lockdown was eased in the UK the day after. I wish I’d started this project a bit earlier, but better late than never!

The tradition of the Monday night virtual pub quiz with my friends had continued throughout the lockdown, and a few weeks after the first quiz I hosted, it was my turn again.

Back by popular demand, I put together a longer Catchphrase round with a little help from the data collected by my previous side project, catchphrase.dpope.uk. It helped me identify the highly rated puzzles so that I could put together an enjoyable round more quickly.

I was going to use BuzzIn.live for the buzzers again, but some updates to the site changed the behaviour around how players can get frozen/unfrozen, so I thought I should just make my own version instead. How hard could it be?

Continue reading “Buzzer.mobi: Another Pandemic Project”

Say What You See: a Pandemic Project

I extracted a bunch of puzzles from old episodes of Catchphrase using Machine Learning. Find your favourite at https://catchphrase.dpope.uk

For many, the Coronavirus lockdown was an opportunity for people to get creative, and I was one of them. Since my choir had been cancelled and I could no longer go bouldering, I had a bit more free time in my evenings.

Early on into lockdown, a few of my friends wanted to carry on the local tradition of the Monday night pub quiz. We would take it in turns each week to host a quiz, coming up with our own questions that the other households would try to answer. I wanted to give my quiz a 90’s theme. I don’t know how I came to that decision, but it was probably because most pub quizzes I’ve been to have questions from before my time. Turns out my questions were much too difficult – I don’t think anyone got more than 1 point in the science round – but I managed to redeem myself with a round of puzzles from our favourite gameshow of the 90’s, Catchphrase!

Image shows a fish with caterpillar tracks and a turret. What do you think the catchphrase is?
Players would connect their phones to BuzzIn.live. Whoever buzzed in with the correct answer first won the point.

In order to put the round together, I had to find some good puzzles from old episodes of Catchphrase that I found on YouTube. I had to extract the frames from the puzzle and turn them into a GIF. I started off by downloading a video from YouTube and opening it in some video editing software. Extracting a short clip from the episode was tedious, and while I had the patience to extract 10 clips for my quiz, I wondered how many other great puzzles there were from other episodes, and if there was a way I could extract the puzzles using a computer program instead.

Continue reading “Say What You See: a Pandemic Project”

Get notified of your Raspberry Pi’s IP address

I often find that if I connect my Raspberry Pi to a new network, it can be difficult to connect to it via SSH. When it connects, it should register its name on the network, so you should be able to just run ssh pi@raspberrypi, assuming your username is ‘pi’ and your Pi’s hostname is ‘raspberrypi’. But for me, for whatever reason, that name registration rarely works on my network, so I need to work out the device’s IP address in order to login to it.

Wouldn’t it be great if, as soon as your Pi is connected to the network, it could send you an email with its local IP address, so that you can instead connect by running a command like ssh pi@ DNS doesn’t need to work, and this technique will send you an email whenever the Pi’s IP address changes.

This method requires knowledge of Amazon Web Services, and assumes you already have the AWS command line interface set up on the Pi. If you’re unfamiliar with AWS, you might still find this post somewhat useful, but you’ll need to substitute the part of my code that sends the notification.

Continue reading “Get notified of your Raspberry Pi’s IP address”

Getting Festive with some Addressable LEDs: the Fireplace

Not content with just one hardware hack this Christmas, I thought I should try to create something simpler, prettier and considerably less nerdy than the TfL Tree.

Back at the parents’ house we have a fireplace that I thought could do with a festive makeover. I found this 5m strip of LEDs on Amazon. It was surprisingly difficult to find LEDs that were well-separated: many of them were very close together, and therefore, very expensive. The set I bought had lights separated by about 3cm each, 150 LEDs in total.

The great thing with the WS2812B standard of LEDs (and similar) is that you can cut a strip to the exact length you want and solder them back together if you want. This particular strip had an adhesive back for more permanent applications, but since this was temporary I didn’t cut the strip, and I used Blu Tack to attach the strip around the fireplace. It worked well enough!

I hid the strip badly behind a table and didn’t think about it again.



Since this project didn’t need to talk to the Internet, I wrote a program using an Espruino Pico microcontroller that I bought after a JSOxford hardware hack day in 2015. The advantage of the Espruino over a Raspberry Pi is that it will start up and run the program instantly. It also runs JavaScript, which is probably more familiar to most people than whatever language you use to program an Arduino.

Continue reading “Getting Festive with some Addressable LEDs: the Fireplace”

Getting Festive with some Addressable LEDs: TfL Tree

This is a story of how a simple hardware hack got surprisingly out of hand.

Summer of Hacks 2019

It all started in the summer of 2019 during the Oxford Summer of Hacks. One of the events put on was a hardware hack day, where beginner tinkerers could learn about programming real things with the help of more knowledgeable people in the room. I was somewhere in the middle of the scale: I know how to program so I managed to teach a kid and his dad to write some code for a robot powered by a BBC micro:bit, but I needed help when it came to the most basic of hardware tasks.

I had a vague idea of what I wanted to work on during this hack day: after reading a blog post from the Raspberry Pi Foundation I ordered a small screen thinking I could get it to display the Tube status. However, that didn’t arrive in time, so I had to improvise with some LEDs instead.

Continue reading “Getting Festive with some Addressable LEDs: TfL Tree”

500 Voices at the Barbican

March was a very busy month for me. Aside from the usual Monday night choir rehearsals, I’d managed to book something almost every evening as a way to distract myself from the political shambles that is Brexit, which we all know was due to happen at the end of the month. It seems to have done the trick because it’s now April and nothing seems to have changed


Anyway, for me, March consisted of a choir performance with Kensington Singers where I had a solo 😱, going to a couple of recordings of QI (one of which was the Christmas special – I know, this is March), watching some films from the Banff film festival, dinners out, a comedy night, joining the Put It To The People March, working on 6 Music Festival as a video publisher, trying out the Pandemonium Drummers, and somehow I still managed to fit in 8 evenings for a pop-up volunteer choir to perform a piece called the public domain by David Lang.

Wow, that was a long sentence. I said I was busy!

I heard about the opportunity to sing at this special event from my conductor at Kensington Singers, who had posted a link to it on my choir’s Facebook page back in December. The sign-up page looked like this:

Be part of something big this spring, as 500 people from all walks of life come together for a once-in a lifetime performance at the Barbican Centre.

Whether you’re a first-time singer or regular choir member, the London Symphony Orchestra and Choral Director Simon Halsey are inviting you to join over 500 people from across London to perform the UK premiere of David Lang’s the public domain. As a vocalist you’ll sing, whisper and chant together under the guidance of a dedicated vocal leader, telling a story through sound and movement and drawing together shared experiences into an exhilarating and exciting performance.

The three groups will then come together for two final rehearsals, before the piece is performed live in the Barbican foyers on 24 March 2019 as part of a London Symphony Orchestra performance.

I couldn’t quite imagine what it would sound like, but it seemed like an exciting opportunity, so I signed up! There were different rehearsal groups that we could sign up for: I picked the group that rehearsed on Tuesdays and Thursdays because that fitted best with my schedule.

Continue reading “500 Voices at the Barbican”