hammertoe

A coffee-loving software developer.

Another two-weeker. But I hope you forgive me, as there has just been so much going on in the past couple of weeks.

Choirless

So first up, some big news from Choirless this week. We have split off the rendering engine technology we developed for Choirless and called it Rend-o-matic. It is now joining the Linux Foundation as a project hosted by them. This is a great move as it gives us a better structure to encourage 3rd party participation in the development of Rend-o-matic and Choirless. Also, it better enables Call for Code to support us going forward. A big thanks, as always, to my fellow partners-in-crime, Glynn Bird and Sean Tracey, who at the moment have been doing most of this work whilst I've been settling down at Ripple. Also a big thanks to Daniel Krook, Shari Chiara and Upkar Lidder from Call for Code at IBM who have supported us on this journey.

You might remember last year, I was doing some filming for the IBM Originals creative agency about Choirless. Well the final result is out! It is part of a series of pieces called Developer Diaries. This video was such fun to make and record! And check out the pretend bass playing at the start! (the bass is my eldest daughter's, I can't play!). That is her pink music stand too. And her music.

We have lots of plans for further development of Choirless and Rend-o-matic in the near future.

Barefoot Walking

I read an article on a local news site, Bristol247 about a man who has been walking barefoot through the park near my house for the past year. He says that he finds walking barefoot has given him a connection that he feels he lost when lockdowns meant he could no longer go out dancing in clubs.

One of the parts of the article above that hit me was this paragraph:

It is uncomfortable sometimes, and what it requires is a deeper sort of concentration on how you walk,” Mike says. “It brought me more into the present and out of my head. The discomfort and occasionally pain – because I wasn’t caught up in my thoughts – brought me a kind of joy.

I have tried “mindfulness” a few times, but I've not been particularly successful with it. Pre-lockdown I used to go relax in a spa/sauna in Bristol and that was a good time to just float in the pool and practice. This struck me as a potentially good way to practice mindfulness. The surface you are walking on changes, from grass, to tarmac, to mud, to gravel. You have to be aware of where you are walking, to really be present in the moment.

We were dog-sitting my son's guide dog, Ajay, whilst my son was moving house. The dog gets a bit anxious with all the chaos, and so he came to stay with us for a few days. He loves it, as he is “off duty” and gets to play with his best friend, our dog, Violet.

It happened to be a couple of beautiful warm sunny days, and so I decided to try going barefoot when taking Ajay and Violet out for a walk. I started off with my shoes on, then took them off when I first got to the grass. It was slightly chilly at first, but soon you didn't notice. I felt the different types of grass, and the feeling of the cool squelch of mud between my toes. It was freeing. It was surprisingly not-painful. I originally planned just walking along the grass. But my route takes me up through some woodland with a lot of twigs and stones on the ground. I decided to keep going barefoot. Taking my time, watching where I was stepping, but strangely enjoying the feeling of the changes of surface under my feet.

The strange thing is I went out the following day with shoes on for the same walk and it felt strange. Like I was missing something. So I think this is something I'm going to keep working on. Summer is coming up so should be “easy” to get into the habit, then will see how far I can continue as the temperature drops again.

RippleX Developer Twitch Channel

OK, so Ripple-wise, this has been an amazing week. We launched the RippleX Developer channel on Twitch. Twitch is a live video streaming platform. It is often used for gaming, but also more and more now for things like live-coding software development.

Over the past year, I have been developing my skills on running live coding sessions on Twitch, and studying the benefits to the coders and also the audience. A few months ago I gave a talk to the IBM Technical Consulting Group on the process and benefits of live streaming software development:

In short, it allows a very good connection between the developer and the audience. It is a chance for people to learn not just how software is developed but, more importantly, why it is developed in a particular way. It is a chance to look over the shoulder of another developer and learn with them. And help them too.

When I joined Ripple five weeks ago as Director of Developer Relations, this was one of the things I wanted to get off the ground as soon as I could. It is going to form the central thread the runs throughout our DelRel strategy for 2021.

This launch show was a slightly different format. I wanted to create a buzz with the launch of the channel, and get as many people on to discover it. So I went for having four separate guests, and keeping things slightly higher level than what we would normally cover. There was no live-coding, but we did do a number of demos and show some behind the scenes of how things work.

I tried to pick a selection of speakers representing a diverse group across the XRP developer ecosystem. We had two developers from within Ripple, Shae Wang and David Schwartz. And two from the wider community, Adam the Aussie Ninja from gFam and Wietse Wind from XRPL Labs.

This launch show was put together in record time, and I'm very grateful to all the people who helped get it together in time. This was extra stressful, as not only was it the first show, but I had four live guests to marshal on and off the show. I was not only presenting but also producing it live.

Previously I have used OBS for broadcasting my Twitch streams. OBS allows you to composite together webcam feeds, screen recordings, audio, graphics etc. However one thing I needed to do was bring in live guests remotely. There are a number of hosted platforms, such as Streamyard which make this a lot easier. The main problem with them is that you sacrifice control of the look at feel for ease of use. So whilst they make it easier to bring remote guests in, they give you less control over the format and layout of the graphics on the screen. As we will be doing a lot of live coding, I wanted full control over this. I also wanted to give it a RippleX branding.

[behind the scenes shot, showing the OBS view (top monitor), the screen I was sharing (laptop), and the “green room” (left monitor)]

So to give us full control, I used a tool called OBS.Ninja that allows you to bring live video from remote computers into OBS. It works very well and has a lot of tweaks you can do to pre-set everything and just give your guest a URL to go to and their video then can appear in OBS.

I configured a number of scenes in OBS, two for each of my guests with their specific video source and screen sharing source pre-configured. So when I wanted to bring a guest from the “green room” onto live, all I had to do was switch to that scene in OBS.

[The view from OBS, with the scenes for each guest on the left, then sources, and audio controls. Adam and I demonstrating tipping a user in gFam using the XUMM wallet]

I had also configured my own screen as a screensharing source for each guest scene, but generally disabled. That way if needed, I could simply make that source visible and it would come on over their screen. So if they had any problems, or I wanted to show something I could.

And, amazingly... IT ALL WORKED! Not a single technical hitch for the entire hour-and-change long show. I was expecting that by the law of probabilities at least one guest would have audio problems (“Can you hear me?! I can't hear you”) or their connection would drop. Or the dog would knock out a cable. Or something. But it all went smoothly.

You can view the full stream below:

And the reception was AMAZING. We had 885 concurrent views at one point, and over 3,200 viewers of the live show in total!

I'm aware that this was the “launch” show and I'm expecting fewer viewers when we start to dive down into more technical realms, but this was such a fantastic start.

Audiotarky Launch

Another thing going on this week is MozFest. This is an annual festival run by Mozilla and is is confluence of art, tech and advocacy. Fitting right into that nexus is the concept of Web Monetization. As you are reading this on Coil, you probably are already aware of it. The concept of moving from the current advertising-led model to direct streaming micro-payments.

A great run-down on Web Monetization is this talk from Coil creator Stefan Thomas:

But in even more concrete terms, I'm excited to see the launch this week of a project I've been involved from the periphery in, Audiotarky, funded by Grant for the Web.

Grant for the Web is a collaboration between Coil, Mozilla (hence the Mozfest connection) and Creative Commons. It is a $100M fund to boost open, fair, and inclusive standards and innovation in Web Monetization.

Audiotarky helps musicians to maximize their potential income by making it easy to monetize recordings and smaller content like sounds, patches, and loops.

It will provide musicians with a streaming music platform, and use it to compare revenue from Web Monetization to traditional methods, publishing this information and providing guidance to musicians on how to use the technology to supplement other sources of income.

The team behind it is Simon Metson, Ben Wellby, Ian Popperwell, Matt Hamilton, and Ali Chant.

You might recognise Simon from some previous Twitch streams I've done with him in which we developed a Github Action to pay code contributors in XRP for their commits. I'm hoping to get Simon on the RippleX Twitch stream in a few weeks time to talk about the development of Audiotarky.

Take care all!

-Matt

So, it seems spring may be here. Today and yesterday was a glorious sunny day here in the UK. It is amazing how nice it feels to just sit out in the sunshine. I am actually typing this now sat in the local park whilst my daughter plays on the swings and chats to a friend of hers in Texas on her phone.

During lockdown she has ended up making a bunch of friends from around the world, Scotland, Texas, Indonesia, Canada. The great thing being, due to the timezones, there is always one of them around when she wants a chat. She is 10 now and whilst we talked about millennials being “digital natives” I think that Gen Z takes this a step further to being “remote native”. Physical location just seems to be a side attribute as most of her friends are now online.

Ripple

I can’t believe I’ve now been at Ripple a month. I’ve missed a weeknote from last week, as time has just flown past in the last couple of weeks. I’m starting to get a better handle on who does what. My role as Director of Developer Relations is a completely new role there, and so the various developer efforts have been shared out amongst the marketing and comms teams. So I’m starting to gather them up to try and get a more coherent and developer-led approach.

Friday was my first pay day, and was glad to see wages all went through fine. I mean, Ripple is a company that deals with payments so you think they would be good at this kind of thing, but still I am always slightly nervous when new banking instructions and payroll are setup. This has been slightly heightened due to my previous company IBM paying in advance at the start of the month. Ripple, like every other company, pay at the end of the month. So in switching over I've had nearly two months between pay. Luckily I've got an amount of cryptocurrency saved up and was actually able to use that as a collateral for a loan from Nexo to tide me over.

I've been working on a new project at Ripple, you will be no doubt hearing about it soon. But make sure you are near a computer on the 9th March at 11am PT ;)

Black History Month

February was “Black History Month” in the US (we actually have a similar thing in the UK in October). It is an annual celebration of achievements by African Americans and a time for recognising their central role in U.S. history.

One of the things I was really proud of working for IBM was the Business Resource Groups they had there, and especially the work they did supporting, normalising and amplifying the voices of some of the marginalised communities in our field.

One of the “deal breakers” for me leaving was I wanted to work for another company that also did the same. Hence why I was so happy to join Ripple, as I'd already heard so much about their diverse workforce and sincere approach to inclusion.

[Black at Ripple co-lead Safiya Walker introducing ERGs and Black at Ripple]

One of the Employee Resource Groups at Ripple is “Black at Ripple”, and they ran a number of open talks for Black History Month, one of which was a fireside chat with Dr. Maisha Gray-Diggs from Twitter. Another was the kick-off event for the Black at Ripple ERG, in which we had some great small-group discussions talking about various topics from ally-ship to black culture.

One video I shared with the group was one that I was introduced to a while back and helped me to understand the concept of systemic racism:

Dulcie September

One of the early memories I have around music and computing was as a kid, probably about 11 years old, was sat on the living room floor listening to some of my parents music. My dad had a great big reel to reel tape player that he had some stuff on, and also some new things called Compact Discs. One of the albums I always remember was Revolutions by Jean-Michel Jarre. I remember my dad telling me that it was entirely generated by computers. I was in awe of it.

One of the tracks on that album is called September, and has a choir of women (or kids, I couldn't tell back then) singing what sounds like “nyah nyah... nyah nyaaaaaah”. I remember reading in the sleeve notes that it was dedicated to a woman called Dulcie September, an anti-apartheid activist who was assassinated in Paris in 1988.

In a completely random Twitter conversation one night recently, someone mentioned Jean-Michel Jarre, and my memories of “September” came back. Having read a post encouraging people to learn beyond the “usual names” of black history, I went to read up what I could on Dulcie September, the name I encountered back then, sat on the living room floor, 32 years ago.

And in further synchronicity, there is actually a documentary called “Murder in Paris” debuting in March about her life and the events surrounding her murder:

The first part is on the 21st March 2021, Human Rights Day and being broadcast on SABC3, a South African channel. I'm hoping it will also be available online somewhere.

The documentary was started over two years ago, and a trailer existed from when they started:

AirPod Pros

When I joined Ripple, as part of an onboarding gift, I was given a pair of Apple AirPod Pro ear buds. I will admit, I've never been a big fan of earbuds generally for music, but the original Apple (wired) earbuds have always been great for conference calls. I have a really nice pair of Sony over-the-ear noise cancelling bluetooth headphones that I wear when I want to isolate away from surroundings, or on a train etc. But they are useless on conference calls, as due to the noise cancelling, I end up being unable to hear my own voice and just shouting.

So I was keen to try out the AirPods and was thinking the would be great for conference calls when travelling (at my desk as home I have speakers and a decent AKG mic). I have been testing the AirPods since I've got them, and have to say I'm still not a big fan of them for music, and they feel a bit weird in my ear. But...

As I said at the start, today was a beautiful sunny day, and earlier today the dog and I went for a walk in the park (header image) near where I live. As it was so warm, I decided to just lie on a grass bank and enjoy the feeling of the sun on my face. I remembered I had the AirPods in my pocket still... so I put them in, and listened again to “September”. And then the four parts of “Révolution industrielle”. Just lying there. Listening to the music. It was fantastic.

Take care!

-Matt

So a week since my last weeknote, let's see if I can keep this up this year!

Ripple

Now finished my second week at Ripple. This again has been a week mainly of 1-to-1 meetings with various people to get to know some more people in the company. I'm now up to 37 people cards in my notes (see below). I've also been working my way through the usual corporate mandatory training more companies have – ethics, IT security, etc. But also with Ripple there are a lot of courses on how things like international payments systems work.

Still most of my day has been skewed towards evening working, and I'm moving my family time to the morning. It seems to be working out pretty well so far.

One slightly surreal episode, was an EMEA social lunch session. Ripple sent out a food delivery voucher to everyone and we all ordered something for lunch one day and “met” on Zoom for a lunch. My wife had a medical appointment just before that overran and so I joined the social a bit late... and as I joined I was dropped into a Zoom room with a bunch of Icelandic employees all holding their hands up in the air, and a palm/tarrot reading entertainer reading people's palms!

Three specific 1-to-1's I wanted to call out were with Reinhard Cate, the face of the Ripple Drop videos; David Schwartz one of the original creators of the XRP Ledger; and Lauren Weymouth who leads Ripple Impact.

As well as Ripple Drop, Reinhard also shows up in a lot of the internal training, playing a prospective employee in a number of the videos. He's interviewed many people in the company and was great to get his feeling of the lay of the land.

David, I met a few years ago in Amsterdam and was great to have a longer session to discuss the history of the XRP Ledger, and some of his views on upcoming ideas.

Lauren leads Ripple Impact, Ripple's philanthropic division. She also leads UBRI, the University Blockchain Research Initiative. This is a collaboration with a number of leading universities around the world. Universities and students will be a key part of my Developer Relations efforts.

I'm starting to get a feeling for how we can pull together a lot of the great efforts by various people both in Ripple and outside in the wider community to really form a more coherent developer community this year. There is so much going on, and I really want to showcase it.

Zettlekasten

I started using the [Zettlekasten](https://en.wikipedia.org/wiki/Zettelkasten#:~:text=The%20zettelkasten%20(German%3A%20%22slip,used%20in%20research%20and%20study.) idea of note-taking recently. My notes are growing, and I've been working out how to best physically store them. I was originally going to get a box to put them in, but couldn't find a box the right size. I then stumbled on an idea of punching holes in the cards and using rings to bind them. The idea is to grow a bunch of cards and then split them when it gets too much. As I've got so many notes for people in Ripple I've decided to already split just after that topic.

This should also help with the unexpected failure mode I experienced a few times... the dog jumping on my desk and sending the cards flying!

I did have a discussion with a former colleague, Sean, about possible ways to create a hybrid mechanism to scan the cards for electronic use. I could create an app or something I used on my phone to take photos, or we talked about using a Raspberry Pi with a camera module to have a small scanning station that I could just hold a card underneath and it would automatically photograph it and store it electronically. Having a search around, I found a great project of a similar ilk that someone built a Magic: The Gathering card scanner out of lego and a Raspberry Pi:

You can load a deck of cards in there and a small wheel spins to push the cards one by one from a deck to be photographed.

https://www.raspberrypi.org/blog/mtg-trading-card-scanner/

Random acts of kindness

A couple of random acts of kindness by friends this week. My wife has been having a very hard time battling mental health issues, and there have been a series of very stressful incidents this week. One friend sent a lovely bunch of flowers. What was really nice about these flowers, is you actually had to arrange them yourself. It came with an instruction book telling you some simple tips for arranging them, and the function of each flower in the ensemble.

The other nice thing was a good friend wanted to send a food hamper our way... due to Brexit and not knowing what we eat etc, they sent a food deliver gift card instead. And this weekend we ordered a massive feast from a local Indian takeaway. Was delicious! And enough to feed a small army!

Thank you both! ❤️

I am very fortunate to have met and interacted with some amazing people over the years. Both in person and virtually, and I'm looking forward to when we get the pandemic under control enough to travel freely again, as I'd love share a beer and a meal with some of them.

Take care all!

Weeknotes are back! Happy (belated) New Year all.

So, I originally started writing weeknotes about this time last year when I started my new role with the London Developer Advocacy team at IBM. The plan was to use the weekly train trip to London to write down my thoughts of the week. What went well, what didn't, how I felt, etc. Of course Covid put pay to the train journeys but still I managed to write, even if it was on average every other week.

Ripple

Of course the big news is that I am now Director of Developer Relations at Ripple. I've just finished my first week, and so far it has been amazing. I had built the company up quite a bit in my mind, then just before starting had a sudden panic that it might not live up to my expectations. I'd even started to question if Ripple even had a London office. I was looking around on LinkedIn and couldn't find anyone! But rest assured they do, they have about 60 staff in London. Their office is currently closed due to Covid, but is an entire two floors of a tower just behind the Bank of England. It has 360 degree views of the city... so will be pretty amazing when we get this virus under control and start to re-open offices.

[My calendar, showing meetings mainly in the evening]

It has been a very busy first week, my calendar is above. I've redacted most of the meetings for obvious reasons, but over half of them were 1-to-1 introduction meetings with other people at Ripple. This has been a great opportunity for me to get to know what everyone is up to, and what their role is at Ripple. Also a chance for me to talk about some of my ideas about Developer Relations.

One thing you will notice is that most of my meetings were in the evening my time. Most of RippleX is San Francisco based, or at least US-based. So, I've skewed my working day to later in the day for now. This has worked out pretty well, as it is still pretty gloomy weather here in the UK and getting dark pretty early still. I can go out and take the dogs for a nice long walk in the morning and get errands and jobs done around the house and spend time with my family, then work in the evening.

The IT onboarding experience has been amazingly smooth. Given all the onboarding is now remote. Full credit to the Ripple IT team, they have it organised well. A Macbook Pro turned up for me, and a day later I was sent temporary login details. I logged in, and pretty much everything was setup ready to go. All the onboarding events (HR run through, security, IT, etc) all in my calendar already.

I've had lots of discussions this week about developer relations, and it has been great to see already a lot of work has been started on looking at the developer experience and surveying the existing developers out there. I've started to articulate some of the ideas I have, which have been very well received. So stay tuned as I'm hoping we can get some of them started very soon.

Two particular areas this week I've had some discussions around are UBRI, the University Blockchain Research Initiative that Ripple hosts and the relationship with the XRP Ledger Foundation.

UBRI is a set of over 30 academic partners that Ripple have around the world. Ripple has committed $50 million to UBRI, as well as expertise and technical resources. I'm really hoping to join up my developer relations efforts with UBRI.

The other area is the relationship between Ripple and the XRP Ledger Foundation. I have known Bharath and Wietse, who are the main drivers behind it, for a while now and glad to be able to act as a conduit between Ripple and the XRPLF. There are a number of resources that have been managed by Ripple historically that we are hoping to move over to the XRP Ledger Foundation as it makes more sense them being held by an independent foundation.

Zettelkasten

Zettelkasten is a centuries-old method of note taking and organising information. It generally uses index cards, or small slips of paper to store notes on. Notes are then numbered in a hierarchical fashion and linked to each other.

Think of it like a manual form of hypertext.

Why am I doing this manually? Well last year I bought myself a fountain pen as a gift to myself with some reward points I got for work on Choirless. I have been using index cards for my daily todo list. For whatever reason, I've found this to be more motivating than doing it digitally. I think the act of actually writing out the items on my todo list, and checking them off with a pen makes me focus more. Such a nice satisfaction actually ticking things off with a nice fountain pen.

[a view of some of the cards after my first day]

So I thought I'd try extending this approach to note taking. And what better way to start, than with a new job. I am meeting so many new people and trying to keep track of what everyone does, and how it all relates. This week so far, I've started 46 cards, including 25 “people” cards, for each of the people I've “met” so far this week.

Will I miss the convenience of digital representation? The portability? The searchability? Perhaps. But let's see how this goes.

Monitor

I finally got myself a new monitor. A lovely nice big 27” Lenovo Thinkvision T27-P10.

[My desk setup with my new monitor, streaming lights, macbook and coffee]

This monitor has USB-C and USB-PD so can charge my Macbook Pro and carry the display, audio out, and USB for webcam signals all down a single cable. It is also 4k UHD (3840 x 2160) resolution and so nice and sharp. Before I was using an old HDMI 1080p monitor and text was so blocky in comparison to the retina display on my Macbook.

Next up I need to get a decent keyboard. I've got my eye on a Ergodox EZ if I can find one in this country.

Silver

So the stock market all went kinda crazy over the last couple of weeks with the Gamestop short squeeze that was going on. As a follow on to that, there was rumour of a similar thing that might happen with silver. It has long been said that the price of silver has been suppressed by various shady means, and that a large buy-up of retail silver might cause a big enough shock to the market to break out. So I decided to jump in for a bit of fun.

I actually ordered three 1oz 2021 Britannia Silver coins. These were about £25 each at the time I bought them. And I bought them as a gift for each of my three kids as a commemoration of the year just passed, and perhaps the year in which the global financial system gets a bit of a poke. I then decided to buy an extra 10 coins for myself just to see what it was like. I've never bought metals before, especially not physical metals.

[A stack of ten silver 1oz Britannia coins]

These coins have a face value of £2 and are actually legal tender. Not that you'd want to go and pay for £2 worth of good in a shop with a £25 silver coin. But being legal tender, they are not subject to capital gains tax when sold. And they are quite fun just to have on my desk as a memento. But don't worry folks, my main investment is still XRP ;)

Take care, stay safe!

Today is my last day at IBM. On Monday I start my new role as Director of Developer Relations at Ripple.

I can't believe I just wrote that.

To be honest, I can't believe I wrote it for several reasons:

  1. I never thought I'd be leaving IBM
  2. I never thought I'd work for IBM
  3. Working for Ripple really is a dream opportunity

What? Well, let's start with the second point first. I have generally always worked for myself. Literally, as I was walking out the door of University I was setting up a business. Netsight was my life for about 15 years. Together with a friend, we grew it from just a couple of people in a bedroom to a proper award-winning web design and development agency employing 15 people and punching well above our weight in our sector. We built intranets and portals for companies, all based on an Open Source Content Management system called Plone.

[l-r: hosting Plone Conference 2010, Bristol; Netsight at Europython; Netsight in Rio de Janeiro for Plone Conference 2013]

With Netsight, I travelled the world going to conferences and events. Brazil, Sweden, USA, Italy, Netherlands, Austria, Germany, Hungary, Romania... it was awesome.

Then due to a combination of burn-out and my son being very ill I had to step back. I no longer had the mental capacity to be running a company.

I had been offered a role to join a startup healthtech company based in Los Angeles called enquos. It was a fantastic opportunity. Well paid, exciting work, working with a geographically remote team from across the globe. Unlike the previous 15 years I was answering to just one client, not a dozen at a time. It was the change I needed.

It was a fantastic job, and I recruited and built a great team of developers to build enquos' mobile apps on iOS and Android. I got to learn a whole lot about mobile development. I spoke at conferences and meetups about building continuous deployment pipelines for mobile development. Developers could commit a change to the code, and testers could have a fully built, signed, working app delivered to their phones in minutes.

[l-r: enquos team dinner, 2016; mobile team development sprint, 2015]

I visited Los Angeles twice a year to go meet up with the executive team. The CEO was a very driven woman with a nice big house opposite UCLA, a garage of Porsches and her own sport plane she would pilot. She was the first female member of Bel Air Country Club. I used to enjoy my time walking along Venice beach and hiking in the Santa Monica mountains as we discussed plans to take over the world.

[l-r: hiking in the LA hills, 2017; Anisa and her SR-22 plane, 2016]

What goes up, must come down. And whilst that startup was great, one Thanksgiving weekend they pulled the plug. They had been unable to find a buyer for the company and had run out of money to fund it.

I was scrambling around looking for new work and happened on a tweet by someone I'd met once at a Python conference and followed on Twitter, Si Metson. He had joined a database startup called Cloudant that had recently been bought by IBM, and were expanding. IBM had since bought another database startup called Compose and they needed someone to come build and run the European infrastructure team. I interviewed at IBM and was offered the job.

I had never seen myself as wanting to work for a large corporate like IBM. I had a brief stint at HP as a placement student, and really disliked it there. When I handed in my notice my boss said “Well, that is only the 2nd resignation I've had today”. I later found out that 5 of the 6 in our team had quit that week.

But I needed a job, and after the whirlwind of working for a startup, I felt that possibly the stability and slower pace of a large corporate might be what I needed.

And it was. IBM have been an amazing employer. Way beyond my expectations. Yes, they are one of the worlds largest companies, but still had a very personal touch. I got stuck in to a lot of their internal support and advocacy groups. I became an LGBTQ+ Ally, which is a topic close to my heart as two of my kids are transgender.

[IBM Labs Bristol]

I worked with a great team of people, spread across the globe. Many of them worked remote in the US, as that was the origins of the Compose (née MongoHQ) company. The company was going through big changes in many directions – both in terms of processes (as they became absorbed into IBM), and in terms of technology. Compose had built their own, pretty amazing, system for orchestrating the deployment of databases in the cloud... but now were rewriting their offering to run on top of Kubernetes, a more widely used system to do the same.

During that time was when I discovered how great IBM were at supporting their staff. My wife had been going through a lot of mental health problems, partly to do with historial events, but also dealing with the death of her mother. It was a tough time at home, there were conflicts as I tried to support her, but also process very seemingly irrational behaviours. I approached my manager at IBM (Keerthi, you are a star) and explained to her I needed to take some time off. No problem. I took 2 months off from work to try and get to grips with things at home. IBM sorted out some counselling for me too to help process things. Full pay. Take the time I needed. Come back when I was ready. Any support I needed was there.

[IBM Labs Bristol, the back of my head]

I came back and got stuck back in. We moved office to a brand new, custom designed office for IBM Labs Bristol, which was also great. Our old office was not really fit for us, and the layout promoted isolation. The new office was far more social, far more enjoyable place to work.

Early 2020, I heard about a role going in the London City developer advocacy team at IBM. Developer Advocacy is a role in which you help other developers to get the best out of technology. you get to go to conferences and do talks, etc. This was the first time I'd worked at a corporation... a company in which you can completely change jobs but still be in the same company. I had always enjoyed doing developer advocacy – that was what I did at Netsight, and as a part of the Plone community, only it didn't really have a name then.

I interviewed for the role and got it. I was sad to be leaving the Compose team, but excited to be joining the developer advocacy team. I'd attended a few of their events (as a developer) before and met a few of them, and they seemed like a great bunch of people.

[l-r: Margriet, Yamini, Sean presenting at an IBM Developer workshop in Bristol in 2018. I am actually in the background attending the workshop... little did they know what lay ahead!]

In one of my first meetings with my new boss, Mo, he said “Make a list of all the conferences you want to go to, and we'll get it sorted out”. Then literally the next week, Covid-19 hit and we started to go into lockdown. By this time I'd only been to visit the London office twice.

[Our first virtual IBM Developer UK Conference – Understanding AI]

So we started to move everything online. As did everyone else in the world. I got involved with the Twitch streaming team at IBM and started streaming a weekly show on machine learning. This was a great chance for me to level up up on my knowledge of machine learning and AI, and of IBMs various technologies and services they offer. I also got to learn how to do live streaming, and worked on several techniques to make things more engaging when explaining and teaching code.

[On the IBM Developer Twitch stream – I developed a technique to appear 'behind' the code and give a more immersive feel of interacting with the code when teaching]

I was involved in running the “hallway track” on Twitch for several IBM developer conferences. This turned out to be an amazing way to harness community involvement in an event, and a model that I think will be adopted by Developer Relations teams across the globe going forward.

[The “hallway track” at the IBM Developer Digital Developers Conference – chatting to Margriet about fairness in AI]

The London City Dev Advocacy team: Margriet, Yamini, Angela, Sean, Simon, Liam, Ross, Ed, Mo – you have been amazing. I have learned some much from each and every one of you. You have been such an inspirational and fun team to work with. I will miss working with you!

[Farewell “drinks” with the IBM Developer UK team. l-r: Simon Baker, Me, Ed Shee, Mo Haghighi, Sean Tracey, Ross Cruickshank, Angela Bates, Liam Hampton, Yamini Rao (missing: Margriet Groenendijk)]

One completely unforeseen event, was Choirless. Choirless started as a project I dreamt up to enter Call for Code as something to allow my daughter to be able to sing with her school choir during lockdown.

[Choirless in use by my daughter and her singing teacher]

Little did I know that it would become such a core thread over the next year. I worked with Sean Tracey and Glynn Bird who answered my call for team mates. It was a complete fluke to get together three people with such complimentary skills, but it worked.

[Choirless alpha performance, Yellow Submarine]

Choirless has grown from being just an idea sketched out on a single of paper, to coming 2nd place in the global IBMer Call for Code challenge. As I write this, there have been 2740 parts recorded forming 745 distinct performances.

[ Myself, Sean Tracey and Glynn Bird – celebrating our 2nd place finish in the global Call for Code IBMer Challenge]

Choirless featured on the 2020 Call for Code awards gala, and was introduced by Van Jones. It has been featured as an article on the main IBM.com homepage in the US. I've been interviewed on IBM Community Radio, and BBC Radio Bristol about it. It has provided material for countless blog posts I've written and Twitch streams I've recorded.

Don't worry, Choirless will be continuing! I'll still be involved in it in my spare time even after I leave IBM today.

So why am I leaving?

On to the first point at the top: given I have enjoyed working at IBM all this time, and working with such a great team, why am I leaving?

I have been offered my dream role. As of Monday I will be Director of Developer Relations at Ripple. I actually contacted Ripple after enquos shut down to ask if they had any roles available for developer or community relations. I didn't hear anything back at the time. I subsequently did have a chat with them about a role a couple of years later, but I was not looking to move or change job as I was so happy at IBM. At the time Ripple would be looking for me to likely move to the US, which is not something my family are in a position to do at the moment. But with the pandemic and lockdowns, the world has changed. More and more companies are hiring remotely. Remote is now the “normal”. And for me, working again remotely for a team 8 hours behind me in the day will be just like working with enquos again.

I will be honest, things in my household are tough again. My wife's health has taken a significant downturn. But the support IBM gave me last time has given me much better skills to be able to help support her. Also we are lucky to have access to some amazing local and national mental health services. The Bristol Mental Health Crisis team have literally been life savers. Mind and the Samaritans have been a fantastic resource to support my wife and by extension, me. Just like many parents, we are also dealing with homeschooling kids and supporting them and their mental health during lockdown. But we will get there.

And this new challenge has fired me up even more. I get to combine my interest in cryptocurrencies and blockchain along with my passion for teaching and connecting people. I believe that we are well overdue a major seismic shift in the way in which we move value around online. And I hope to be a part of helping bring that change around.

And hopefully I'll get a chance in the not-too-distant future to dip my toes in the Pacific again.

See you all next week!

4 weeks since my last weeknote. I will be honest, I've had a hard time motivating myself to write this. Not because there is nothing to write, but just trying to work out where to begin. So much happening right now.

Work has been extremely busy, which has been great. But on the flip side, my wife has not been too well and I've spent quite a lot of the past few weeks looking after her. Also all the general excitement around Christmas coming, and my daughter's end of school term.

Christmas is due to be a low-key affair at our house this year. And I'm actually pretty glad about that. With everything going on, trying to keep things as simple as possible is actually a positive. We've bought just a small (live) Christmas tree and decorated that, and put up a few decorations around the house. But the living room is still a bomb-site, and needs tidying up. I feel I get one part of the house tidy and the rest goes to chaos (“Damn that rising entropy!”). I've got next week off, so hopefully with tackle it then.

Choirless

Lots has been going on with Choirless. There have been countless Christmas carols being sung, and people organising concerts etc. Some key things to call out:

My daughter's school produced their Nativity play using Choirless. they used Choirless for the singing of all the various songs, and I then cut them together with some acting parts and slides of drawings in iMovie to create a full video. Alas I can't show it here, due to permissions but it was excellent.

Choirless was also showcased in the Q4 UKI IBM “Town Hall” meeting. I got to do a 2 minute talk to 1,100 colleagues and then we had a short performance of “We wish you a Merry Christmas” by some IBMers.

An interesting statistic, the Choirless rendering engine has used 1170 cpu-hours of compute time. That means that if it ran on a single processor, end-to-end non-stop, it would take 7 weeks to process what it has processed so far.

Two other fantastic public performances using Choirless are the City Church Bristol “Christmas Stories” event that premiered this morning

And the upcoming London Youth Choir Festive Concert 2020 tomorrow (Monday 21st Dec):

https://www.londonyouthchoirs.com/festive-concert-2020/

We've had performances coming in non-stop and hence not had time to actually do too much work on the Choirless itself. That said, Glynn has created an awesome Choirless Shell that enables us to move around the songs like a directory structure to make any manual adjustments to the sync offsets of volume:

https://github.com/Choirless/choirlessshell

And Sean has been working away on some additional UI enhancements.

Workshops & Events

We also did a talk and workshop for the Dutch group 'Tweakers'. This was a really great fun, live session with Sean, Glynn and I being interviewed and chatting with Frank from Tweakers, and then a hands-on workshop for 1.5 hours on deploying your own serverless functions in IBM Cloud. The workshop is available to follow along at your own pace here:

https://github.com/IBMDeveloperUK/Hands-on-IBM-Cloud-Functions

That same day, I also did an hour long workshop on Generative Adversarial Networks for an IBM Client... I think I worked out I was streaming for 5.5 hours that day. My throat was pretty raw the next day!

I also gave a lightning talk at Plone Conference 2020. Plone is an open source content management system that I was heavily involved with from about 2000-2015. It was great to go “back” and attend a conference. Made easier by COVID actually as the conference was entirely online.

Live Streaming Setup

I have been asked a few times about the setup I have for live streaming the Twitch sessions I do. I did a write up on DEV of the setup:

https://dev.to/ibmdeveloper/my-setup-for-streaming-livecoding-4k37

And recorded a video about the setup, along with a bit of behind the scenes video of how I have things setup and how I do the streaming.

This is a more practical video on the setup, and covers both what I am trying to achieve, and how I do it both in terms of physical setup and also the filters used in OBS.

This is a follow-on to a talk I did at the IBM Technical Consulting Group on why I do live coding on Twitch:

Home Networking

I've been wrestling with my house networking recently. I upgraded our internet connection to 300Mbps fibre to the home, which is great.... but... the rest of my home network is showing its age now. The main issue I have is I live in a 3-storey townhouse — the supplied wifi router is on the ground floor and my office is on the top floor. The wifi just about reaches up here, but slows down and not able to take full advantage of the new fibre speed.

I dug out an old pair of TP-Link AV500 powerline adapters to try them again. I bought them years ago, but stopped using them as they interfered with the VDSL connection to the house. Now that we are on fibre, I thought I'd give them a try. And they are actually working pretty well. Nice stable connection, and fairly low latency. But they are pretty old. So I've got my eye on some newer Devolo ones, that have a theoretical speed of 2400Mbps:

https://www.devolo.co.uk/magic-2-lan

I might get them after Christmas, if these ones continue to do well.

XRP

I also wrote a random blog post based on a discussion I had with a friend who is an Ethereum developer about some of the features of the XRP Ledger. A lot of people are just not aware that you can issue you own currencies on the XRP Ledger and it has a built-in decentralised exchange:

https://dev.to/hammertoe/issuing-assets-on-the-xrp-ledger-for-ethereum-developers-25e0

I'm sure I've missed a whole bunch of things, but that is all I can think of.

Take care all, and Merry Christmas! :)

Header photo by Rodion Kutsaev on Unsplash

My Setup for Streaming Live-Coding

Issuing Assets on the XRP Ledger for Ethereum Developers

Cryptocurrencies are an exciting and volatile market to invest in. There are some phenomenal returns to be had, and also some phenomenal losses.

But one approach that has shown over time to be a much lower risk to investing is Dollar Cost Averaging. With DCA you pick a specific fixed amount of cash to invest each day/week/month and invest regularly. No matter the price. The idea is that if the price is high, then you end up buying less of the asset, but when low you buy more. By buying a smaller amount regularly, you spread the risk, and it can become something that you can 'forget about'.

I set about actually calculating how well DCA can work, with just investing a small amount regularly.

Let's take an example. I (used to) buy a coffee every morning on my way to the office, pre-covid. Let's say that coffee cost me $2. Some would say that is a low price, but I'm going to pretend I do this 7 days a week, not 5. The point is not the exact figure, but more that it is what I would consider “a small amount”. Everyone is different, and I'm aware that spending $2 a day on a coffee is a luxuary to many people. Adjust accordingly. I could live without that coffee each morning and make my own, or just have one less coffee per day etc. Maybe you are a smoker and you give up smoking. Or a drinker and you have one less beer.

What would happen if I invested $2 in buying XRP, ETH or BTC every day for the past 4 years?

This is a chart of the cumulative value of that investment. It is plotted on a logarithmic y-axis so as easier to see the lines when they peak. But the main point here is that in that 4 years, I would have invested a total of $2,922 and yet, if invested in XRP, would be worth just over $23K.

That is the price of my campervan. That I bought 2 years ago. I could have drunk one less coffee and in 4 years had enough to buy my campervan.

The interesting thing to note, is apart from a few days right near the start, the investment was always worth more than what you put in.

But why 4 years? Well, the Bitcoin halvening time is 4 years, and so much of the cryptocurrency market moves in cycles of around that duration. The idea was to capture both a bull and a bear market.

But what I you started at the all time high in Jan 2018? Well, let's see:

Clearly, the result is not as good as before, but it is still positive at the end! OK, so XRP only just made it in the last week. But, still, this is only half a market cycle. Whilst your investment would have been underwater for much of that time, in the end you would have still done well.

But, investing daily might seem a chore. Unless you can automate it, no-one is going to do that. But what about weekly or monthly?

So investing roughly the same actual amount $14 a week, or $60 a month over the same time period and you'd have still done pretty well. Not quite as well as daily, and I think that is because that captures some of the flash drops, and also doesn't capture the rise XRP has had in the past few days.

But still good!

How about a combination to spread the risk? How about if you invest $7 a week in each of XRP, BTC an ETH. So an equivalent of $1 a day in each of the top 3 cryptocurrencies:

I switched this chart to a linear scale, as viewing stacked areas on a log scale made it hard to see the contribution each currency made. But again, you can see our total investment is always well above the amount we have put in. By the end (not including this week's surge in price) our investment is over 5x what we put in.

How else can you DCA? Well... I think of the micropayments I receive from Coil and Cinnamon as my own small DCA. Every day I receive a small amount of XRP that is just slowly accumulating in a wallet. Maybe it will be buying me a new campervan in 4 years time? ;)

As always, no-one can predict the future, prices may go up as well as down. Only invest what you can afford to lose. But hopefully this shows one particular way you can slowly invest over a period of time and spread the risk.

Take care!

-Matt

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.

Choirless

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.

https://www.twitch.tv/videos/790715412

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.

Desk

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:

https://www.twitch.tv/videos/798105012

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.

-Matt