Weeknote 2020-38

Choirless

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.

https://dev.to/hammertoe/new-more-robust-sync-algorithm-for-choirless-1038

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:

https://dev.to/hammertoe/automatically-paying-code-contributors-with-xrp-dev-github-actions-hackathon-nn9

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:

https://www.crowdcast.io/ibmdevelopereurope

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! :)