Weeknote 2020-46

Three weeks since last one! I was fully expecting it to have been two weeks since my last “weeknote” but I guess been too busy to notice.

The UK has gone back into lockdown again for COVID-19. Although this time seems not many people are taking much notice. Schools are still open. Any restaurant or cafe that does takeaway is still able to stay open. So all the chain coffee shops and fast food places are still open, just with seating areas cordoned off. Unlike last time, car traffic is still at a normal level. It hasn't really made any noticable difference to my day-to-day life at the moment, as we've been pretty much staying at home anyway.


I've been busily working away on the next version of the sync algorithm. This has been quite frustrating as I've had a number of good ideas that didn't quite work out.

How do I know they didn't work out? Because I've actually created a test harness to test them now. I have taken a sample of about 50 pieces created with Choirless and written a test suite that will run each of them through the synchronisation algorithm to test how well it does. It produces a tile image of all of the tracks synced using 30, 60, 120 and 180 seconds of the audio file.

The reason for doing this is that we want to have Choirless send up just a small section of the song to test sync whilst the user is using it so that it can align the audio locally whilst they are listening. In the output above (which is just a small fraction of the total output) one of them (3rd row) has failed, and highlighted in red.

This not only allows me to test how well changes I make to the sync algorithm work, but enables me to check we don't have any regressions in it. ie, that I don't make things worse.

More importantly though it allows me to tune the algorithm with something like Optuna, which I describe in the Twitch steam I did a few weeks ago. In short, Optuna allows me to automatically run the test suite over and over testing different parameters to it to find the ones that work best. And by “work best” I mean, successfully synchronise the most songs in the test suite.


I also wrote a post here on Coil about how Choirless is using an algorithm that was developed 50 years ago and first used on the Apollo 11 moon lander. So Choirless is literally rocket science now.

I have been busy today setting up to record a video for a series called “Developer Diaries” at IBM all about Choirless. It has been a very interesting experience due to COVID-19. The IBM Originals production team in the US have sent me all the equipment, a large pelican case filled with iPhones, iPad, lights, microphones, etc and several boxes with tripods and light stands in.

I've spent the day setting the equipment up in my office, under the direction of the team in the US. They are then able to connect to the iPhones used for recording remotely and control the actual shoot itself using a platform called Openreel. They can remotely control the cameras and set the exposure, focus, audio levels etc. It really is pretty neat.

Tomorrow we do the actual shoot for the video, and hopefully it should be released in January.


My desk, lighting, streaming setup is now complete. It has been working really well. Since the photo below, I've cable tied all the cables up nearly to the poles and glued down the sheets of paper I'd taped over the lights to test additional diffusion.

I've actually been asked to do a write up of the setup for the IBM Developer blog. I want to get some of the making-of posts about the lights and the frame written first though so I can then reference them from the post about my setup.

It has been really nice to be able to simply hit the switch on my sit/stand desk to raise it to standing and have the lights come with me.

IBM Data & AI Digital Developer Conference

Last week I organised the “hallway track” on the IBM Data & AI Digital Developer Conference. It was a total of 6 hours, and I hosted it along with two colleagues, Sean and Upkar. We each had a two-hour long slot and had a mix of 30-min and 15-min sessions with each speaker.

This is a format that we've tried before, and found works really nicely. The main talks of the conference itself are pre-recorded and released on-demand on the day of the conference. But being pre-recorded means you can't chat to the speaker or ask them questions. So the “hallway track” or “watch party” was run on Twitch on the IBM Developer Twitch channel in parallel.

This time it worked even better than last time. We ironed out some of the technical issues we had, and used Streamyard (a hosted service) instead of OBS, which made it much easier to pull in remote speakers.

We had a fantastic crowd of people, and most amazingly the viewer level stayed pretty much constant right the way to the end.

The feedback from within the business has been fantastic, and I think this has proved itself to be a really effective approach.

You can watch the full hallway track on Twitch:


Why I stream live coding on Twitch

Speaking of Twitch. I was invited by a group in IBM called the Technical Consulting Group (aka the Totally Cool Geeks) to give a talk about why I do live coding on Twitch.


The full video is above, and you can read a write-up about my process and reasoning here. But in short, the whole point it to build a better connection and empathy with developers. With the live coding sessions you don't just see a polished demonstration, but you get to see the actual process. You get to see all the bits that go wrong as well as right. You get to hear my thought process and why not just what I do. You can read more thoughts in the link above.

Oven Hack

Oh, forgot about this one, so just adding it in as I'm quite pleased with how this turned out. In our kitchen we have an electric double-oven:

All of a sudden the display and central control panel stopped working. The over is annoyingly 2 months past it's 2 year warranty. So old enough to to be fixed under warranty but new enough that I really don't want to replace it. Especially as we are hoping to completely refurbish the kitchen next year and will get all new appliances then. We could limp by on just the smaller top oven, but we do quite a lot of cooking in this house and use it a lot. Also with Christmas coming up (even in its reduced form with less family, due to COVID distancing) we will need both.

The display stopped working, as did the bottom (main) oven. The lights still go on, and the fans whirr, so it still has power. It could have been an element blown, but that wouldn't explain the display going. I'd expect the display to come on, but indicate a fault. Strangely the top oven did still work.

So I pulled it out and had a look, thinking maybe the circuit board had gone. Sure enough there was an ominous looking burned resistor.

And taking a reading with the voltmeter and there was nothing going over this resistor. But the voltage on one side was 54vdc. Way too high for a circuit that should be 12vdc according to the big relay on the centre of the board.

The resistor is so charred I can't work out the value of it, so couldn't replace the resistor. And besides, I still don't know what caused the voltage to be 54vdc, something else has obviously gone wrong.

As with many things these days a new circuit board would cost about 50% of the cost of the entire oven, which just annoys me.

Then the realisation... There is only one set of wires to the circuit board. They are 230vac wires in and out. And looking at the board, they are connected to the relay. It dawned on me that all the circuit board does is engage/disengage the relay based on the clock on the display. So you can set a timer for the over to go on or off at a certain time. A feature we have never even used. This explains why the smaller oven still works, as it does not have timer control. It is just a fancy inline switch.

So my hack...

Yup. I just cut the plug off the end of the wires to the controller board and just connected them together, bypassing the board completely.

And we now have both ovens working again!

Well I think that's all folks. Take care and hopefully won't be so long until the next weeknote.