Hacker News new | past | comments | ask | show | jobs | submit login
Lessons from my first year of live coding on Twitch (medium.com)
449 points by ingve on July 7, 2017 | hide | past | web | favorite | 101 comments

I've streamed myself programming on Twitch, and can echo some additional knowledge in addition to what's shared in the article:

Don't expect anyone from Twitch to randomly discover your stream and have any idea what you're doing. Programming anything that isn't a video game on Twitch will be totally unfamiliar to their primary demographics. That said, use Twitter or something else to BRING YOUR OWN AUDIENCE. Be prepared to stream for a few hours or else you will likely never build up traction in your chat.

As this post says, vocalizing your stream of consciousness is vital; think of it like pair programming with the chat. I try to engage the chat without getting totally nerd sniped and ending up off topic.

I think the best way to really kick the tires on Twitch programming content would be to stream podcasts and/or have a joint channel of shared programming content and have many different programmers participating either via a shared account or Twitch Teams[0].

[0]: https://twitchtips.com/twitch-teams/

Vocalizing your stream of consciousness is very handy any time you are programming in front of others. I have found it to be especially useful during interviews, or while working with mentors/mentees.

> a joint channel of shared programming content and have many different programmers participating

I like that idea a lot -- have been wanting to team up with other devs on live twitch projects. If anyone is interested in getting this set up be sure to PM me -- I have 14 years of dev experience in a plethora of languages:

- Python - C# - Ruby - PHP - Javascript (front and backend) - HTML / CSS

I would be interested in joining! I'm working on (among some other things) a compiler right now that could be fun to live stream.

So my kids watch people streaming non-stop. At first I had no opinion. Then it seemed like they did it way too much and I fought it. Then I started paying attention and found it interesting as well. For them it's gaming, game discovery, and seeing personalities they enjoy regularly.

Something like this... I would really enjoy. Bookmarking this page so I can have a look at all your streams. I would like to do this myself. It would be interesting to be able to share exactly what it is that I try to get done on a daily basis. It would be useful to show my colleagues and management interests. I don't know how much they would pay attention, but even being able to point back to a video at a specific time to share something would be useful.

Unfortunately, I don't have a solo office, so figuring out a regular location to stream from will be a challenge, but that's neither here nor there. I can do it from home a few times without bothering anyone to figure out all the logistics before I actually try to do anything real.

I wanted to see what imaqtpie's hype was all about and he ended up being my morning coffee routine. That man is wholesome.

I'm curious. Please, what's so "wholesome" about him?

I like him, he's fine. But I'm curious what converted you to stream-watching in him.

Few reasons off the top of my head:

He works incredibly hard, is one of the best LoL players on the planet, he loves his cat (SMOL CAT WHAT YOU WANT!?) & gf, I enjoy his wit, love when he reads his new subscribers list, and so forth.

I like his personality, plain and simple. Couldn't care less about league of legends.

wow, author here. I didn't post this to Hacker News (I didn't even have an account on here until 30 seconds ago), but thanks for the thoughtful comments everyone! Is it weird if I address some of the questions in here or is that odd etiquette? :)

Yes, feel free to reply to individual comments, or just make one overall one. It's just another internet forum.

Thanks for writing the article! It was really helpful for me.

One technical question: How do you make OBS switch to showing your browser when you open it up to look at docs? Do you manually toggle it in OBS or is there a tool available for this?

I was doing JS development using OBS and couldn't find a good way to make the IDE show when it had focus and make the Browser automatically show when it has focus. So I was frequently showing the wrong window to my viewers.

> How do you make OBS switch to showing your browser when you open it up to look at docs? Do you manually toggle it in OBS or is there a tool available for this?

I keep things as lazy as possible, and just stream my entire desktop (with slight crop) instead of a specific window. I have my browser window lined up and positioned on the left so the webcam doesn't cover up anything. I then can just CMD-tab to it quickly.

The benefit of this is that folks also see your development flow in a more realistic way, as switching scenes can look slick but departs from how you normally work.

Forgive my focusing on the unimportant things, but: what’s the slight crop for?

Sorry that probably sounded confusing - I was being pedantic in my description. In the article I explain that I want private areas on my desktop for watching chat and alert activity hence the crop of my desktop :)

Oh yeah I see that now. I was thinking that was all done in the scene devoted to privacy but that makes sense. Thanks!

> How do you make OBS switch to showing your browser when you open it up to look at docs

I do this by setting up multiple scenes in advance and then using the automatic scene switcher (under the Tools menu).

You can either use hotkeys for scene switching, or use screen capture instead of window capture. If you regularly forget to switch scenes screen capture is probably the way to go, just keep in mind that viewers will be able to see anything that shows up in the capture area.

hot keys for switching scenes are rad!

I wonder if you could include all keystrokes like Ctrl-x in the screencast, maybe even a timeline of the keystrokes; I imagined it to be "running" along the screen like in Guitar hero. Nevertheless this is a great effort in distributing latent/implicit knowledge, which I think coding to be heavy on; for example, how would a terminal user know that Ctrl-R is reverse-search? (don't get me started on finding out about going back to a previous match...) I remember how I found out about Tab by accident... While being ignorant of these epistemes are not barriers, they do slow down/kills joy.

Most people who create Blender (a 3D graphics app) video tutorials use an addon that includes the keys they are typing on the screen. It is very useful, and would be interesting especially for emacs or Vim users who use a lot of bindings.

I made a Twitter account called @emacs_gifs a while back and used a modified version of KeyCastr (on Osx.) to display keystrokes...

Results were quite acceptable.

I can't stand video howtos. You can't skim a video, or search the text of a video. They seem especially irrelevant in the world of text editors. I'd rather read the keystrokes on a doc/webpage. You could even open it right in the editor.

Intellij has such a plug-in as well

I imagine one has to be extra careful to avoid spilling passwords and other secrets then. Probably best when it can be avoided by some technical means like ssh keys for git, etc.

No doubt. In the article she mentions having a “scene” in the broadcasting software she uses that just shows a “standby” screen (which reminded me of “We’re experiencing technical difficulties” cards that TV stations use). Still, I’d be paranoid!

This worked for me in the past: https://github.com/wavexx/screenkey

It is basic but works.

personally I would avoid this unless I could tie it to a specific program (like Unity) -- if it just indiscriminately logs and shows keys you will probably end up revealing a password or some other sensitive info.

The keystroke tracker would be really nice. I know some IDEs store preferences in easy to parse formats like Json so I feel like exporting keyboard shortcuts to a tracker should be pretty painless

I've seen keyboard cameras.

Game streamers often do this or have some kind of overlay with highlights of the keys pressed.

I started streaming a few months back and I absolutely love it.

Some solid tips on here and OBS is a surprisingly good piece of software but it can be a resource hog at times.

The hardest thing about it is to keep the schedule and be emotionally available when the stream comes on. I wrote about it here [1].

What I like the most is working through a project in stages on the stream. People can connect with the project and also contribute to it. Working on one-offs tutorial style did not really work for me.

I stream full stack content. From Node.js to Golang and even Devops. [2]

The screen to not show the desktop when doing secret things is good, however, as mentioned here I would definitely recommend a second screen. It changes the way you work a lot.

[1] https://fullstack.network/announcing-my-most-ambitious-strea...

[2] https://www.twitch.tv/kensodev

> Some solid tips on here and OBS is a surprisingly good piece of software but it can be a resource hog at times.

"Hog" implies bloat to me? Video's hard work, though, and OBS will chew a CPU but it really needs to (unless you use a GPU encoding solution like NVENC, but there are quality concerns there). I have a second PC--actually a pretty nice 4U rackmount in a 6U wheelie with my audio interface--dedicated to video crunching and audio mixing for when I do livestreaming events for folks.

I use a 2017 iMac 5K with 32G memory and quad core and OBS is absolutely a lightweight for this one.

Before, I was using a 2015 MBP and it was having a VERY hard time handling the streaming at 1080P (mind you I was running 2 screens off of it).

I am not sure it's a hog because of bloat, it's just that you need a more than average computer to stream with good quality.

Funny story is that once I clicked stop on the stream and it kept streaming. Showing me having a phone call, going on Facebook and just continuing with my day. I had to just shut down my computer because OBS would just not stop.

On the new iMac I had absolutely zero issues with it and I am running it with 2 screens and 5K on the main screen.

Fair enough. I also run an NDI sync, a browser overlay, and a bunch of cameras, which probably adds to the load.

I think the implication with Hog is just that it's greedy and will consume as much resources as you give it.

It doesn't do that, though--OBS uses pretty well-understood levels of memory, compute, etc. that scale directly to what you're doing.

I didn't say otherwise, I was just commenting on my understanding of the connotation of the phrase.

How did people find you to start following your streams? I've wanted to start doing something like this for a while but not sure how discovery works and I feel like I'd be wasting my time. I'm interested in doing programming and some other things.

I post a stream reminder to twitter the day before, and just before my stream starts. This has been pretty effective for me. It also helps if you use the #twitch hashtag.

use the communities. i stream game dev myself and have 31 followers after starting around 5 months ago. Not the fastest growth, but I've been very sporadic these last few months. i'm hoping to hit 50 followers in the next few months.

Also use twitter etc. to promote yourself.

There is a game developer on twitch that uses his VODs (video replays) as a versioning system as he doesn't use anything. "Wait, what and why did I do this? Lemme look at yesterday's vod".

It suprisingly works quite well and is more entertaining for the viewers to see what and how bugs get introduced.

Sorry are there actually developers who don't use VCSs in 2017?

Yup. And it horrifies me every time.

This is a nice circus trick. I wonder if it helps productivity, compared to a VCS.

And help it definitely can. For some people, pictures and motions are easier to remember and reason about, even in such a text-heavy area as writing code.

If he's verbalizing his thought process it might actually be better than the average comments you get on code. Might actually have to play around with dictating what I'm thinking at key points in the process.

Push-to-talk helps a LOT. When I first started streaming I would just have a running stream of consciousness filled with lots of "uhhhhhh" and swears. Using push to talk helped me become more conscious of when I wanted to speak and since then I've gotten better at self editing and don't have to use push to talk as much.

I sounds like a useful super-blame, but I would still use a VCS. It's so easy!

I wonder if the VOD URIs are consistent enough that you could automate adding a link to the VOD+timestamp to your git commit descriptions...

I have live streamed some stuff before when coding, and I must say most of the people who come into a channel doing coding are really nice people who ask really insightful question, or offer good solutions. It's like Mob Programming with the internet (or as the author here says an "MMOPP"), and it also makes me a better programmer because before I even think about writing any code I'm thinking about how it will be perceived by someone else peering over my shoulder (akin to the pro arguments for TDD).

Nice writeup. I think the people who are good at twitch streaming are charismatic and/or funny. Being entertaining is awesome, but isn't necessarily the same as being good at reasoning through problems or engineering good software.

As a watcher of such streams, be they game session I wonder how people don't see something and go crazy because they can't actively participate - the author does mention that some people will have contributed pull requests by the end of the session. :)

I suppose that makes the twitch stream an important learning experience for both parties. You can participate in the chat and make suggestions, ask questions. If you are driven mad by someone doing something differently or making a mistake well then it might be healthy to try and overcome that.

this is a great answer. I have had viewers come in and become very upset that I'm writing javascript in ES5 (usually this is because I'm maintaining a library I wrote many years ago). I have a chat macro to explain why I'm not upgrading the library to ES2015/2017 and hope folks can stay pragmatic and respectful. Besides, I welcome pull requests ;)

Hey! I do this too on twitch.

I mostly stream myself doing algorithms though. Basically I do the Google Style interview questions, and almost run my stream like I am doing an actual interview.


The reality of the livecoding scene is that most "real life" coding is actually pretty boring to watch.

In order to be actually interesting, you have to be talking and explaining what you are doing the entire time. I am glad that other people out there are having success!

Ah cool! You're using Repl.it! Would be curious to hear your feedback on how we can make the site more suitable for this use-case.

Watched your most recent algorithm video. Good quality stream!

P.S.: Sieve rhymes with live, as in "I live in California." :)

But sieve also doesn't rhyme with live, as in "Live from California".

I want to do this but I'm afraid of two things:

1. Show how horrible my code is.

2. Accidentally leaking sensitive stuff.

1. Stop 2. Just use a part of your screen that is off the recording. Never open `.` files on the stream. Never login on the screen, always off of the screen. If you are showing AWS cli console stuff, make sure you hide the public IPs and public DNS of things.

2 is related to 1 - there are credentials hard coded all over the place.

Clean up your code before you start.

Maybe this exercise will make you a better programmer.

I do this sometimes -- however I also think that cleaning code on stream is even more beneficial. Teaches you to code under pressure and scrutinize your code more-so than when you're alone sometimes. Also its fun for people to see how to reduce 30 lines to 5 etc.

so stream another project.

As a habit, I don't stream code related to my workplace, it has too many risks. Even if you see parts and pieces and will not be able to make sense of it.

We don't have a single secret embedded in code and all of our secret files are encrypted using vault, even that is too risky for the clients we have.

I stream my personal projects and things like QnA etc...

Concerning 1: My code is regularly horrible. I start any project in pure prototype mode. How quickly can I get what I want on-screen and working, so I can figure out if I actually like it enough to keep going in that direction? Once I'm out of proof of concept mode, I start working on things properly, and inevitably some horrible prototype implementation of something will survive for several months. It's always entertaining to anyone else in the room when I stumble on this, and loudly exclaim "Dear god, what was I thinking," usually followed by inquiries, explanations, and humility. Bonus points if my old code is the source of some mysterious problem that is now solved. :)

Concerning 2: I would never code something actually sensitive on twitch. Fortunately I enjoy programming video games, so I can stream that with relative safety, but I wouldn't ever stream something from my real job for example.

> My code is regularly horrible. I start any project in pure prototype mode

This is my preferred method of programming as well -- start with a pile of working crap and refine. order out of chaos!

1: your code will improve. don't be afraid of your bad code, other people are probably at your level or worse. You can use this as a learning experience. take the good advice given in chat and ignore the trolls.

2: dual boot / set up an account on your system that doesn't contain sensitive stuff.

This is an interesting topic to me, as I'm giving a talk with some coding in two weeks and a major concern of mine has been making sure that what I'm doing is interesting and more importantly followable. Normal coding for me just is a flurry of vim activity.

Questions for anyone who does this or views these sorts of streams:

Do you find that people can follow what's happening in vim well enough? I've considered just using plain VSCode because I'm concerned jumping around too much as I do normally might be hard to follow.

Do you feel that this might be good interview practice as well, since the process of explaining code as we write it doesn't come naturally to some of us?

Any additional tips to make sure what I'm doing is comprehensible would be appreciated.


Just talk your mouth off, seriously. It's the best tip I can give you to make it interactive.

You gonna open a file and do something, say it, don't just do it. When you are thinking of a problem, ask for suggestions from the crowd/viewers...

Also, ProTip. Vim is a problem if you navigate really quickly along splits (like you should), people lose focus and will just stop following.

I switched to Atom for my last stream (I hate every minute of it) but it slows me down enough so people can follow better.

Hope this helps

Huh, that's very good advice. I would never have thought about slowing myself down, but now that you mentioned it, it makes perfect sense.

Just act like you're sitting next to a new coworker, teaching them what you're doing.

Act like you're voice controlling your fingers

yeah this is completely true -- you have to talk and sometimes just drop coding completely in order to explain concepts etc. to your audience. I think this is a great skill that can be applied at your IRL job as well -- have gained a lot of confidence since i've started streaming.

Correct... A major part of streams is the community you build, not the content. Some people get away with just pure content on twitch but usually they're either really great artists and the process is just beautiful to watch or they're pro gamers who people watch to pick up top strats even if they're not engaging otherwise.

My views are not that of my employer.

If you are programming, especially in a live studio environment, you should really invest into multiple monitors.

The author mentioned several times that they tried a second monitor, and it just wasn't their thing. And that's ok.

Everyone has different preferences and something that works great for you (and me - I have a 4-monitor setup right now and loving it) isn't necessarily what works great for everyone.

The author tried a laptop monitor, that's much less ideal than a second monitor bordering perfectly of the first.

Either way it will definitely challenge your multitasking though.

I've never watched this particular stream, but I've watched a few others. I expect many (most?) people are like me: they watch the stream on their TV while doing something else, or they stick it in a corner of their desktop, or on a spare monitor, ditto. Either way, if you go much past 1080p - at least for the region that's being streamed - it stands a fair chance of being hard to read.

(If you use a single monitor for coding in the privacy of your own home... well... what can I say? It takes all sorts.)

if you're trying to present to viewers, two monitors will make keeping them focused into a ridiculous chore.

That is like telling a speaker to prepare two slide decks and switch between them during the talk.

Using a second monitor for live streaming is more useful for things useful to the streamer but which do not need to be shown on screen to readers (e.g. frantic Stack Overflow research when the code breaks, or analytics as the article mentions).

While it may not work for everyone, Casey Muratori (of the Handmade Hero referenced in the article) shows pretty much his whole desktop, including the times he is looking up documentation. Granted, he's not searching SO, but actual API documentation for Windows OpenGL or CPU instructions, he goes through his whole thought process including the time and effort it takes to understand and interpret documentation.

Then again, he also doesn't interact with chat at all while programming and only looks back at the end and answers questions afterward. So he breaks a few pieces of advice others might say are essential for a stream.

I think showing your process is really important and helpful to those watching your stream. I always show what I'm looking up in my browser. Folks at home are really great at helping me read it, as I'm often talking while trying to skim the docs quickly - not a good combination!

I don't know much about streaming, but having watched lots of twitch channels, I think some streamers use one screen for stream display, and the other for everything they want to see but don't want the viewers to see e.g. chat, sensitive stuff, etc.

That's exactly what I do when streaming Overwatch, especially when my friend talks to me via IRC and I reply with voice. That said my monitor is big enough to have both the game and IRC visible, and I could set OBS just to record the game.

I'm really inarticulate, so my biggest fear would be people not able to understand what I'm saying...

Then live coding might be a way to improve that skill and get over your fear! Nothing feels quite like facing a fear head on.

Very interesting, however as comfortable as I am after 20+ years with some degree of coding in front of others (pair programming, fixing something with the boss breathing down my neck) I couldn't imagine doing this as strangers watch on; it's, at least for me, sharing a too intimate or personal experience. I also have a long-standing habit of using four-letter comments as attention-grabbing and transitory 'to-do' markers, which would likely be in breach of any kind of streaming service's TOS.

There's lots of bad language on twitch. Racial slurs are not acceptable though.

Been learning the serverless framework and found a couple of videos on YouTube from people live coding on Twitch.tv.

I'm not a gamer and would have never thought to look on there for tutorials. Their search isn't very good and I've found YouTube is the best place to find out who is using Twitch. There are guys with a thousand followers who don't show up on search! Still a very valuable outlet that I bet most coders don't know about.

i do this a lot at twitch.tv/mdmnk (less so recently due to losing a job and moving to a new state, then getting a new job and once again moving to a new state).

It was stressful at first... had to deal with trolls (and also about 80% sure hackers that were trying to get me to root my system live). After I got the hang of it all though it became a lot of fun.

I stream game development which is a hobby of mine (software engineer for the interwebs by day). Being that it is a hobby I am still learning. I've been able to make some internet friends, pick up techniques and learn more about C# thanks to twitch streaming. One day I would absolutely love to transition to full-time independent game development and do it all live on Twitch.

Another thing to note - although I have 14 years of professional experience, I used to get nervous coding in front of people, thanks to streaming on Twitch that went away -- I'm no longer afraid to fail or mistype. My overall confidence has improved. I strongly recommend live coding.

edit: I've also gotten MUCH better at talking through my code because to maintain an audience on twitch you have to talk and explain what you're doing almost the entire time.

I haven't tried but it seems like a good way to linearize my thought process at times and give myself some form of accountability to prevent getting distracted as often.

However, I'd be worried about accidentally revealing a system password or credentials by accident.

Suggestion: include a link to your twitch channel, in the first paragraph of this blog post.

It's good advertisement, and it lets people have a look at the results of your streaming. For all we know, your stream could be great, good, bad or not at all. We don't know.

Without that information, it is hard to know what to make of the rest of the blog post.

Thanks for the advice! I went ahead and did just that.

It would appear that the author is trying to post as noopkat and has been declared dead (new account?)

New accounts that post a lot right away sometimes get their comments killed automatically, yeah.

You can vouch for a comment to resurrect it by clicking on the "2 hours ago" or whatever (to get to the comment's page), then clicking "vouch". (Vouching requires 30 karma, according to https://news.ycombinator.com/item?id=14326108 .)

thanks to those for resurrecting me! I'm new around here :D

I started the twitch.tv/aws stream and we've seen some success. I like these tips!

One issue I have is the balance between high quality broadcasts that don't have the opportunity for frequent audience input - or lower quality broadcasts that are more interactive.

Thanks for this — I've been thinking about doing the same thing and this is super helpful.

liveedu.tv (formerly LiveCoding) has a coding audience orders of magnitude larger than that on Twitch at this moment.

Looks like no one remembers https://news.ycombinator.com/item?id=10486476

I don't think this is really true.

Right now there are 300 live viewers watching people in twitch Game Dev.

And going to the website of liveedu.... well it is aweful hard to find a list of live streams ordered by number of currently active viewers. It almost seems like they are trying to hide the number of active viewers, perhaps because they are so low.

The closest thing that I found to a list of active live streamers shows me that there are 2 streams running right now, with a total of 15 users watch.

It could have changed within the hour, especially if - as others said - it's a morning routine thing. In that case almost all users/streams could stop across a one hour period.

seems like you can just use twitch?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact