Streaming with Twitch - initial impressions

Sometimes you stumble onto things in the oddest ways. Some of my relatives were discussing how a few of my nephews and nieces spend their time “Watching other people play games” in a predictable tone you’d never experience when discussing large sporting events. I am an acceptably mediocre gamer and so I thought I’d watch a few and see how the platform worked and how good the production quality, and the players were. And then lock down happened.

I started to mix a few Age of Empires 2 games into my lunchtime viewing and was impressed at the effort people were investing into their streams. I only have time to watch a couple of streamers a month so I was quite slow to branch out into other areas but I eventually decided to dip into the Science & Technology category.

Scattered around the surprisingly large number of Animal Streams, were a small number of interesting people working on their side projects and sharing their thinking. I watched people writing Typescript in Visual Studio, Python in Idle and even (and it wasn’t rated Mature!) coding in nano. The community, mostly visible in chat, seemed nice and at different skill levels and some people had really interesting side projects. So the follow button was pressed a few times.

A handful of interesting streamers:

After watching a couple of sessions I became curious about the technology from the streamers side. Shouldn’t be that hard to display a vim session, right? A little tangent - I don’t enjoy public speaking, so I don’t do it. I wondered if I would have the same visceral aversion to streaming as I do presenting to a group. After some mulling and putting it off a few times there was only one way to find out, try it. So I installed Open Broadcaster Software (OBS) and had a go.

I started very simply:

  • no camera on me
  • a basic microphone
  • vim terminal I could typo in.

And then I pressed “Stream”.

I didn’t have the same experience when streaming to Twitch as I do when presenting to a group. I think this is because I’m sharing something I was already going to do and the audience can join or drop out whenever they want. The pressure of 200 people being trapped in a small space and being forced to listen to what you consider interesting has never sat well with me but this felt much freer. On the downside in my first stream a few people had to listen to me misread an error message for five minutes but they knew where the “close tab” X is.

I did all the things you shouldn’t do if you want to build a twitch following. I didn’t link my twitch stream to any of my other accounts. I didn’t tweet an announcement when I was streaming. I wasn’t predictable in my time slot and I didn’t stick at it. My “I’ve got 15 minutes” approach, “what do I have in todo.txt?”, is probably the worst way to build a community. But it was fun.

I streamed a few sessions, long ago enough that the streams have now vanished. Something I didn’t realise would happen when I started - by default you get 14 days before they are deleted. The ability to export streams to YouTube for longer term storage is a good work around for this. It also taught me the average time between a new video being exported to YouTube and the first spam comment appearing is about 3 minutes.

Along the way I learned a few lessons. OBS is basic but it works well and it’s pretty much all you’ll need to get started. A lot of good streamers have blog posts describing their setup and you can learn a lot about their workflows and avoid making some preventable errors by reading a few. I did not do this. A good example is How to Run a Live Coding Stream on Twitch using OBS.

Despite the small number of times I streamed I think I discovered something new each and every time. In my very first stream OBS didn’t map the window size perfectly and so the bottom line of the terminal, where I did all my typing, was never visible. The audience loved that one.

My mechanical keyboard was very noticeably present and if I continued I’d have to find a better mic setup or use something else during streams. I also managed to leak a credential at the end of an hour long stream. I immediately deleted the recording and then spent an hour revoking everything and setting up alerts on account activity. If you stream from your main development machine i discovered it’s very easy to do a Ctrl-P for shell history and see a token flash past, in my case an API call using call with a header set to the incriminating value. I fixed this for myself when streaming by starting a new shell that has no history.

bash --rcfile <(echo '. ~/.bashrc; unset HISTFILE')

I have no idea what URLs I’d shown while the browser merrily auto-completed away. I assume it revealed my entire home network IP address space and a few local services. If I started again I’d seriously consider using firefox container tabs / private sessions / a separate profile to avoid leaking too much in the way of visited URLs.

It was remarkably easy to get started and explaining both what I was doing, and intending to do, at each command was a good way to practise my pair programming while working alone. The technology is approachable and startup costs are non-existent if you have a microphone and enough upload bandwidth to carry audio and updates to a single window. I don’t know if it’ll do it again but I did enjoy the way it made me approach the sections of code and I’d recommend it to anyone who doesn’t like public speaking but who would still like to engage with a small community.

If you’re interested in how viewer numbers, subscriptions and such Twitch Tracker is a great site to click around for a while.