How ngrok saved my talk at OdessaJS =================================== By George Mandis https://george.mand.is/2017/07/how-ngrok-saved-my-talk-at-odessajs Thursday, July 6th 2017 I recently spoke at [OdessaJS](http://odessajs.org/) in Ukraine and gave two different talks — one on making non-musical projects with [MIDI and JavaScript](https://midi.mand.is) and another on my semi-infamous open-source project [Konami-JS](/2017/03/that-time-i-broke-marvel-com/). 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](https://twitter.com/georgeMandis/status/870976166819180544) — six MIDI controllers, three Node servers tunneled through [ngrok](https://ngrok.com/) 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](http://amzn.to/2tXwdPM) off a [Satechi USB-C HDMI + USB hub dongle](http://amzn.to/2sSlD7G) to keep everything connected. The whole thing looks absurd: ![My More Than MIDI Setup at HolyJS](https://georgemandis.s3.amazonaws.com/holyjs-midi-setup.jpg) 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](/talks). 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](https://ngrok.com/) 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](http://lab.hakim.se/reveal-js/) 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](https://github.com/georgemandis/puck-js-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!