A coffee-loving software developer.

Monetizing Code Test Coverage – PayID BlockSprint Hackathon Submission

Another gap of two weeks since my last weeknote. This is getting all too common an occurrence. I think it comes down to time being slightly strange at the moment. Weeks seem to be passing by in a blur right now.

It has been a pretty cold and rainy week this week. Summer is very much over. But today the sun came out a bit in the morning (header pic) for my morning dog walk.


More work has been progressing on Choirless. The new sync algorithm I wrote about seems to be doing very well. I also discovered a bug in the volume normalisation that we do. Sometimes we get stereo recordings uploaded, sometimes mono. It entirely depends on the computer, the browser and the recording equipment used. The bug was that we were calculating the volume first before mixing the part down to mono. So when it came to calculating the gain needed to be added to bring the volume to a 'normal' level, we were boosting stereo and mono tracks by different amounts. I had wondered why some parts seemed louder than others, but never worked out why. Luckily the stereo/mono issue was pointed out by one of our users (and IBM colleague) Steve.

I also had a chance to chat to one of our users Cara, who gave a fantastic detailed list of feedback, improvements and suggestions from her use of Choirless. Some of it is already on our todo list and things we will get to in due course. Some of it was some minor wording changes that should help. Cara has used Choirless to record an amazing song she wrote about lockdown.

We have a few more improvements we want to get in before letting in the rest of the current backlog of beta testers (about 150 choirs/bands!) in. But should be Real Soon Now™.

We also had Darryl, who created the Coast to Coast song with IBM Canada colleagues back with a new song:

you may have noticed, I have started another choir, 'GlobaLukes': 10-years back in the 80s, I did a rescue mission as principal of a school in the Himalayan foothills, St Luke's Solan and served as choir guy there. The kids – now all in their 40s and scattered around the globe – have been pestering one to resuscitate the songs they sang back then, hence Choirless to the rescue!!

How awesome is that!?!

Choirless is also being used in an internal IBM team building event this week:

This week I'll also be talking about Choirless at a conference we are running called Code @ Think (see below).

As well as that, I've been asked to do a talk about Choirless at the IBM Technical Consulting Group (TCG), affectionately known as the #TotallyCoolGeeks, meeting next month.

Call for Code Awards Ceremony

Next week is the Call for Code Awards Ceremony which will be presented by Van Jones, CNN political commentator and host, and CEO of REFORM Alliance. With a bunch of featured speakers:

And keep your eyes peeled you might spot a devilishly handsome guy talking about some project called Choirless. ;) Along with a performance recorded on Choirless by a local church band.

[behind the scenes, presenting at an awards ceremony – 2020 edition]

And yes, my house is generally quite chaotic at the moment, but even more so in this photo as I actually had to move everything from one side of the living room to the other in order to create space to fit the lights in and have a clear backdrop.


I wrote last time about a crazy thing I created called Lord of the Pythons for the Github Actions hackathon. Alas it didn't win in it's 'Crazy wildcards' category. But there is another hackathon running at the moment, another PayID one that I am entering. The work has to be new, or substantial addition to an existing project. Well I really like this idea of paying developers automatically on Github commits, so I'm continuing with that. I've just rewritten the entire thing from scratch in Javascript so as to use the Xpring (today renamed RippleX) SDK. That has built in PayID resolution and automatic support for checking payments actually succeeded. This has resulted in me releasing version 2.0 of the payid_xrp_action on Github Marketplace. I plan to implement a number of additional policies as part of the hackathon submission.

Code @ Think

As I mentioned above on Wednesday this week is the IBM Think Digital Summit UK & Ireland. This is a half-day conference on leading digital transformation. Running that afternoon, directly after, is the Code @ Think UK & Ireland conference. This is aimed at developers and is being organised and hosted by my team (the London City team) at IBM. There will be a whole number of great tech talks and hands-on workshops on everything from z/OS to App Modernisation to Data Analytics. Along with the other two developers Sean and Glynn, I'll be giving one of the keynote talks on Choirless. So come along and hear how we built it!

We will also be encouraging participants of the conference to get interactive and actually have a go singing or playing along to a song in Choirless that we'll be premiering at the end of the day.

DIY Light Panels

In my current setup at home at the moment, I do a lot of livestreaming on Twich and a number of live video presentations and workshops. To that end, I have some big studio lighting softboxes on light stands that I use to give decent lighting when broadcasting. The downside is that they take up a fair bit of room. I'd seen some nice Elgato keylight light panels, but they were pretty expensive. So I thought I'd try building my own! I've come up with a design and bought some acrylic, some wood, a reel of LED strip, and various switches, and sockets etc.

I'm going to do a more detailed post on the build once I'm done and list the materials and process in case anyone wants to build their own. But this week, I got the soldering iron out and started sticking the LED strip to the backing acrylic sheet and soldering the wiring up. I gave them a bench test using a 12v car battery I had in the garage. And they work!

By my rough reading with a freebie light meter app on my phone, they appear to be about twice as bright as the current softboxes I have. And they are about quarter of the size. Hopefully that still gives a soft enough, even lighting. I am waiting on a new router bit to turn up to cut the slots in the wood for the frame around them and hopefully will get them finished up in the next week or so.

Anyway, take care all!


This post is part of my coffee series of posts, a full list of which is available here.

A few years ago my wife bought me a small hand-held coffee roaster. I love coffee. I'm a coffee geek. I love the taste, of coffee, I love the story of coffee, I love finding out about how it is made, and the people behind it.

I think it was my birthday, or an anniversary, I can't remember now. But there is form here, as the very first present my wife bought me – long before we were married – was a manual coffee grinder. A Zassenhaus manual coffee grinder. It was something I'd had my eye on and mentioned once before. Zassenhaus have been making grinders since 1867. It was not a cheap grinder.

My wife at the time was a single mother, with no money, looking after two kids. We had not long started dating, and lived in different cities. It shames me to say it wasn't until a while later I realised quite the sacrifices she'd made to buy it for me – scrimping a little money each week to buy it for me. Needless to say, this coffee grinder is very sentimental. It comes with me whenever I go camping, and allows me to freshly grind coffee wherever I may be.

So when, about a decade later, she bought me this coffee roaster, and gave it to me whilst we were camping it was just another step down the road of my obsession with coffee.

Fast forward to the present day.

Yesterday morning, I realised I was out of coffee beans at home. I was waiting on a delivery of some more beans from the excellent Extract Coffee Roasters in Bristol, but had timed it wrong and run out. I remembered the coffee roaster out in my van, and the green beans I kept there and went to go grab them to roast some coffee. I thought I'd record a video about it whilst I was doing it.


Roasting coffee at home is pretty easy, and I've put a link to the roaster I have in the subscriber section below. I will be honest, you will not be able to produce the same results as a professional roaster, as they have much larger machines able to keep a more uniform temperature. But it is fun. And it makes you a part of the process. Your house smells amazing. And you get to taste the unique taste of the coffee you just roasted. You can even brag that it is small-batch artisanal coffee if you want ;)




Recently the project I've been working on, Choirless, came 2nd place in the Call for Code IBMer Challenge. As a prize I got a number of “Bluepoints”, IBM's internal reward points.

With these points I ordered my wife an Apple Watch SE, mainly for the fall-detection. She has a bad knee that gives way often and I wanted something for emergencies. I also bought my daughter a sewing machine, as she really wants to start making her own costumes for cosplay. And I bought us a new microwave oven as our current one died recently and we use it a lot for heating up leftovers.

But what should I get myself? I wanted something that would be a tangible reminder of the project. Something that would last. Something that I would use daily. I have all the electronic gadgets I need. I don't need a new phone, or headphones, etc. I did contemplate getting myself an Apple or Garmin Watch, but ultimately I'm not sure how much I really need them. I'm surrounded by enough electronic devices. I like cufflinks, but am not wearing shirts at the moment, as working from home (and going to be for next 6 months at least). I could get myself a nice traditional watch, but I have a couple of those already, needing straps adjusting.

I was scrolling through the catalog of things I could spend my points on, and came across pens. Now, I hardly use a pen. I spend most of my time typing. But I really quite liked the idea. I've recently started a system of using index cards to write a todo list each day, and made a wooden block to hold my todo list in on my desk.

The last time I used a fountain pen was in school several decades ago. I just remember them being awkward, and leaking. Of course those pens were £5 Parker pens.

I know nothing of fountain pens.

I have abysmal hand writing.

But there was something that tickled me about writing my todo list each morning with a fountain pen with a flourish. I guess it would be more of a conscious act. Maybe it will make me more productive. Of course it will make me more productive. Keep telling myself that. And this is the sort of thing I would never buy myself ordinarily, which I think makes it the perfect gift to myself.

So I picked a pen. Kind of randomly. I did look up the brands and checked a few reviews. I Googled “how to choose a fountain pen” and “how to use a fountain pen”. Seems, as with most things, there are personal preferences, and tribes etc. Pens, like watches, have loyal customers going back generations. They have folk lore, they have “celebrities” that have used them etc.

I wasn't going to be spending huge amounts on this pen. I guess about £50, but it would be the most I'd spent on a pen before. But a small enough amount that I could take a gamble on whether I'd like it or not. Ideally I'd have gone and tried out various pens to see which felt most comfortable etc. As I am only writing my todo list and not a novel, I wasn't too worried about this.

I picked a rose gold coloured, Cross Classic Century pen.

The Cross Classic Century pen is an icon of American design and innovation. The choice of movers, shakers and ground breakers since 1946.

Well that's good, right? I mean who doesn't want to be a mover or shaker? I had a choice between a matte black pen or rose gold. The matte black, I have to say looked lovely and I liked the 'modern' look of it. But I decided to go for rose gold. Something that might stand out. I mean, when we ever do start having meetings in person, and I get out my pen to take some notes, how is anyone going to notice I'm a mover and shaker with a subtle black pen?

So I ordered the rose gold.

And it arrived today!

I'd even remembered to buy some ink cartridges for it as well. At some point I'll look at refillable ink, but for now to get started just bought some cartridges to get me going.

First impressions? It is a lot lighter than I was expecting. I'm not sure why, but I was expecting something with heft to it. Something that would tire my hand after a few minutes, but this was surprisingly light. It was also shorter that I expected. Look at the middle photo above of it next to the cheap crappy freebie ballpoint I have to hand.

I actually went and bought some new index cards to write on. I know ballpoint pens are sometimes particular of the paper they write on and can bleed out quite badly. So I Googled about and found recommendations for these ones:

As an aside, I learned that there is something called “Bristol board”, which is a particular type of paper created originally in my home city of Bristol! It is known worldwide for its use in illustration, drawing, and wedding cards. The same company do some cards ruled with squares, which I also bought.

The paper is very smooth. Very very smooth. And actually I think too smooth for the pen, as it sometimes takes a while for the ink to flow. I tried the pen on my old random, cheap, cards and it seemed to actually work better as they have a slightly rougher surface.

Anyway... let's see how I get on!



Well the big news this week was that Choirless, my Call for Code project to help people sing/play music together remotely came 2nd place in the finals! I wrote about it in a separate post here.

I'll repeat that I'm amazed how far we got. And full credit to my teammates Sean and Glynn, without whom Choirless would be nothing. There were 6,500 participants from 28 countries in total. I'm a bit sore we didn't get first place, as biased as I am, I think our project was more interesting and useful than the winner (an email spam detector tuned for COVID-19 related scam emails). Not to mention the prize fund for 1st place is 5x that of 2nd place! But hey, ho. We are still developing it further regardless, just might not get quite as much support as we would have done in 1st place.

In an exciting event we had the Soweto Gospel Choir trying out Choirless to record a performance! It didn't go quite as smoothly as we hoped as they were trying to use Choirless very much in a way it was not designed for. They were trying to record small groups, via an Android phone, without an external microphone or earphones. A screenshot of one of their tests:

The main problem was that the sounds from the 'lead' part (the drums and keyboard) was bleeding through from the speaker on the phone to the microphone. So ended up overly loud. Usually we suggest people use earphones, but you can't do that with a group of singers. An external microphone would probably have helped mitigate this, but was too late in the day to try it out. Hopefully they will have another go this week.

However, this uncovered a bug in the Choirless sync algorithm which was highlighted very strongly by that drum. With the parts being slightly out of sync instead of a single drum beat, you heard 4 beats almost like a snare drum roll. This lead me to some work to track it down, and implement a more robust sync algorithm.


Which also had the benefit of creating some really pretty plots of it's progress:

I'm thinking I should get these printed up and framed on the wall, as I think they are quite beautiful.

Github Actions Hackathon

I also did another live stream with friend and colleague, Si Metson, on an entry for a hackathon. We picked up an idea we started a while back for the PayId hackathon, but never completed. It was the last day of the Github Actions Hackathon and I thought I could get a submission in just before the deadline. We rewrote it on a pair-programming live-stream and then I finished it off that night to submit it.

Si wrote a bit about it on his blog. I also wrote up what we did as well as uploading the video of the live coding session:


Not content with just submitting this as an entry to the hackathon. I ended up staying up way later than I should have (deadline was midnight in a time zone 8 hours ahead of me) creating probably the silliest thing I have ever developed... LORD OF THE PYTHONS.

This is absolutely silly. And useless. But, one of the hackathon categories was “Wacky Wildcards” and they did say “note, truly wacky submissions are encouraged”. What does it do? It scans any python source code you upload to Github and looks for variable names named after Lord of the Rings characters. And you get paid in XRP for any new ones you add. So if you change a = 1 to gandalf = 1 then you will automatically get paid 1 XRP when you commit your code. Because... well... why not?

Using Machine Learning to Detect and Identify Modular Synthesizer Modules

Speaking of Si, another great idea he came to me with was could we train an AI to recognise the modules on a modular synth. He is a big synth nerd and spends quite some time building modules for synths.

What do they look like? Like this...

The idea would be that ultimately you'd be able to point a camera at the front panel of a synth. And it would recognise each module in the rack and list them all, as well as specs for each module.

We started live coding this, and got as far as creating the training data for the machine learning model. In an upcoming show we are going to live code the actual training of the model and testing how well it can identify and detect modules.

IBM Developer Europe Crowdcast Channel

I mentioned before that we are setting up an IBM Developer Europe Crowdcast channel. We have license for 40 hours a month of content, which works out about 2 hours a day for each working day. My colleague, Angela, has done an amazing job of shepherding this and getting other Developer Advocacy teams across Europe to sign up and schedule talks. We now already almost have a full month for the coming month.

As well as talks, there will be workshops, AMAs, etc. Today we had a “lunch and learn” session about exploring COVID-19 data with Pandas, the python data library. You can see the line up of talks already published at:


And to note, this week I'll be doing an AMA (Ask Me Anything) talk on AI and Machine Learning, and also about Choirless. So come along on Thursday for a chat!

Developer Digital Conference

Tomorrow is the IBM Digital Developer Conference – Hybrid Cloud. This is a free conference with 3 tracks, loads of speakers and a chance to start on the certification path for Red Hat OpenShift. I'm going to be a co-hosting a “hallway track” / “watch party” being run on the IBM Developer Twitch channel. I'll be doing a two-hour slot at the start of the conference and chatting to the speakers as they come off the “stage” after their talk.

This is going to be quite a challenge, getting all the production working and everyone on screen live from various locations as well as screen sharing etc. But I think we have it all in hand. The production itself being run by some of my very capable colleagues. I've just got to think of interesting things to chat to the speakers about. Which is where I hope you will come in! Come join me!

Anyway, I think that is everything for the week. I always thing I have nothing to write about, then end up writing loads.

Have a good week! :)

New, More Robust Sync Algorithm for Choirless

Automatically Paying Code Contributors with XRP – DEV: Github Actions Hackathon

Using Machine Learning to Catalog Modular Synthesizers – Part I

Using Machine Learning to Catalog Modular Synthesizers

Today was the grand reveal of the Call for Code 2020 IBM (internal) Challenge award winners. I've written a few times about Choirless, the project myself and some colleagues have been building recently.

This has been an epic journey, starting with a zygote of an idea and a hastily scribbled note of what it could be, through to winning the IBM UK Labs Call for Code competition, and then through to the final three projects in the global competition.

I'll spare you the anguish and let you know that Choirless came 2nd place. We are amazed at how far we have come, and that we have developed the idea into a fully operational public system.

We currently have over 100 choirs signed up for our private beta test at the moment and letting them through steadily as we test the system. We've have church choirs, we've got a 250-piece marching band interested, we've had a choir for blind children in Scotland contact us. It really has been amazing. And I've had the pleasure of working with two fantastic colleagues, Sean Tracey and Glynn Bird.

Thanks to everyone who has been involved, and congratulations to the other finalists Team Carmen (1st place) and Team W.A.V.E (3rd)

Below is the recording of the winner reveal and the presentation. Choirless was the very last to be interviewed, at around the 52 minute mark. Alas time was running short so we didn't get to say much. And I didn't get to make the quip I've had running around in my head all day about Choirless and IBM scaring Oracle into making a move on TikTok. ;–)

From here we go onwards and upwards. Coming up next month will be the big gala reveal of the parallel external competition for Call for Code, on October 13th.

The ceremony is filled with special speakers ranging from but not limited to the host Van Jones, host of CNN's “The Van Jones Show” and “The Redemption Project,” to Chelsea Clinton and IBM CEO Arvind Krishna. Mark your calendars to come and celebrate the awards and you might even see a surprise appearance from Choirless if all goes to plan ;–)