How ngrok saved my talk at OdessaJS

• ~500 words • 2 minute read

I recently spoke at OdessaJS in Ukraine and gave two different talks — one on making non-musical projects with MIDI and JavaScript and another on my semi-infamous open-source project Konami-JS. It was a fun conference and being near the Black Sea in the midst of a heatwave was good timing on their part!

The setup for my first talk is asking for trouble — six MIDI controllers, three Node servers tunneled through ngrok to circumnavigate local network restrictions, an interactive WebRTC demo, an interactive WebSockets demo, audio, video, all running off my 2015 MacBook with only one USB-C port! I'm using a cheap Amazon Basics USB hub off a Satechi USB-C HDMI + USB hub dongle to keep everything connected.

The whole thing looks absurd:

My More Than MIDI Setup at HolyJS

The Satechi dongle is an especially necessary component as it's what gives me my HDMI out. With that I'd have a hard time connecting to the projector at these conferences. At my most recent talk in Odessa however, they only supported VGA, which I (Perhaps foolishly) had not anticipated.

In the end I was saved by someone that happened to have a USB-C to VGA adapter, but I couldn't track that person down for my second talk about the history of Konami-JS. Fortunately ngrok saved the day. It was about 10 minutes until I was scheduled to talk and I thought I was going to have to upload it to a server to access there. Had I thought ahead that would've probably been a good idea... But doing it right before I was about to talk seemed like a bad idea. I hadn't optimized or compressed a lot of my images thinking, since I'd be serving them locally, it wouldn't really matter.

Because of ngrok I was able to run the reveal.js presentation on my laptop as normal and tunnel port 4000 to a temporary URL. On a separate laptop with better support for VGA adapter — which I guess is a nicer way of saying an older laptop — was able to run pull up the URL and run through my presentation as normal.

Would I have been able to do this with my MIDI presentation, given that it had many more interactive components and the MIDI controllers interacted with the presentation itself? With a bit more planning, I think yes. I also could have theoretically plugged the MIDI controllers into the backup laptop and everything should have worked, save the Bluetooth MIDI setup for my Puck.js BLE MIDI clicker which would've required pairing.

All in all, if you're a speaker who feels compelled to run their presentation on their own laptop sort of like my setup, I'd highly encourage you to create an ngrok account. It's great for any sort of interactive demo where you want to run components locally on your machine, but it can also save the day in a situation like this!