A live streaming platform dedicated to code
devv.tv
devv.tv
I'm seeing some skepticism over all for a variety of reasons, certainly valid concerns, but I think they largely frame it in terms of traditional "attention grabbing" streaming, like game play. The other day Notch was streaming his doom-on-the-web experimenting, which was really fascinating to watch. Imagine if Bret Victor was live streaming his playful explorations of coding and visualization, discussing his thinking as he progressed. To me, those are killer apps.
I think programming streaming is essentially different from, for example, video game streaming.
It has many specific qualities that make it an interesting platform. Education, a window into true software development, and the highest integrity source control possible.
It's definitely true that the 'pace' is different, especially if it isn't "showcase" programming. I think the strengths lie in a couple key areas.
It's extremely honestly educational. In the programming industry you see a lot of canned talks, which are great for introducing new things, showing specific techniques, they have lots of uses. On the down side though, they are very misleading to learners. The work programmers do is not largely blazing away along the perfect path of a problem, whipping out code as fast you can type (or copy paste). It messy, complicate, has lots of fumbling and dead ends, and it's more about thinking hard than typing fast (not that fast typing is bad, it's handy to get your ideas out of your head quickly, it's just not job #1).
It's "boring" in a switch off your brain, entertain me at all times sense. If you literally streamed hidden spy cams of most programming, you would get very little interaction. I think it's intellectually very interesting in an engaging way, to watch others wrestle with problems, to see how they do things differently, and gain insights into a very intimate process.
I livestreamed a bit of turn based gaming on the release of a game, and it was remarkable. Most streamers day one were tearing through the game at a relatively fast pace. I was taking it slow. Some people complained about the speed, but my goal was to "full plan" working the thoughts and strategy options through, and talking through it end to end. Some people were frustrated by that, looking for more of the other styles of streaming, but I gained a small audience (averaging 20s, peaking at 80s, it felt decent for a new streamer). I talked out my thought process, which helped improve it. My brain was 'fully switched on' in a state of flow. Just these things helped my play immensely. I also interacted with my audience, which helped that much more. A live stream can be your pair programmer. You can explore new ideas and possibilities.
I imagine it more like when an SC2 player is exploring a build. It's "dull and boring" because it's relatively predictable, but as they explain their thoughts and discover new timings and possibilities, it catches a lot of peoples interest.
Another important aspect for me is the timeline. Maybe not every minute is interesting, but perhaps with a highlights feature you could step through a process and show example. "See, this is where I made the architectural goof. You can see hints here and here showing that it's problematic. Here's where the realization happened and why, and here is the much more satisfying fix".
What if you had a recording of every moment of the programming of a non-trivial system? You could do great research. You could study the kind of mistakes people make, do minute-by-minute root cause analysis. My only concern here is that narrating what you are doing, and having a live audience may alter the style of your work. Can you still complete your best work under these circumstances? It's an interesting question, and I've love to explore the answer. I think it's definitely a different approach from the solo quiet solitary work style, but if my experience with streaming gaming was an indication it's one you can leverage into high engagement and flow. The question is can you do all of the great work you need to in front of an audience?
To me, with a timeline, livestreaming and archiving is the ultimate in source control. What if you could trace a line of code to a check in to a time stamp to the video of that line of code being created? What if you could stitch that all together to a work item or ticket, and get video of the design and thinking process, to understanding why the code is a certain way? That's exciting.
One of my biggest concerns is the licensing policy. I need to own my code. I need to own my ideas. Maybe it's open source software. But as a streaming site, you are getting a non-exclusive, revocable right to host my livestreams. In return you can play ads and host my archives.
I've thought about this quite a bit. I want to be a part of this. I've submitted my email on the website. I believe you can also email me here.
Thank you for embarking on this adventure.
Isn't that the exact use case for code/commit comments? :P
Screen recordings aren't a concise representation of the programmer's thought processes, and it would take any viewer more time and effort to watch 15 minutes of video for a problem context and resolution than a concise 1-2 line comment summary of the code delta.
That said, sometimes my goal isn't "find it quick", it's "understand it fully". Perhaps we'll figure out ways to understand the video in fast forward, make visualization of code change timelines, that sort of thing.
But I think it's interesting to start with all the raw data and figure it out from there.
I think the big difference for me is treating a timeline as a first class programming artifact, giving you locality on the code, and being able to explore. What lead up to this code? How long did it take to create? What dead ends were explored on the way? etc.
I believe my answer still holds true. Programming isn't as well-suited for constant live streaming because:
a) The viewer can't leave the stream in the background (as you would television)
b) A very large amount of dead air where nothing is happening and the streamer needs to fill dead air. (even worse if you have to debug something)
c) It would require a very optimized overlay that makes it easy to see the code at sub-1080p resolutions. (almost no screencast even now does this because it impacts usability)
d) The presenters need to be socially engaging; given the demographics of people who are the best coders, this is not a guarantee.
In the meantime, I've done some code streaming Hello World PoCs just for fun, with a few optimizations to solve the problems above. They haven't gone well (need to fix a sound desync issue) but there is potential: http://youtu.be/DWRI_7HgZwk
Some tasks just aren't well suited to streaming, and coding is one of them.
Watching quill18 fix a bug and be visibly excited about his code working (raising his hands and shouting something along the lines of 'fuck yeahhhh') during the last Ludum Dare was such a warming experience which mimicked the internal monologue I often have when a piece of code finally works as I expected it too.
There's obviously a demand for people who want to watch coding steams, my biggest challenge is ensuring there are people who can offer streams worth watching.
I feel most of those issues you mentioned can either be solved with technological solutions (pause, rewind, ffwd a stream) or with streamer education and practice (talking through your thought process, increasing font sizes).
I do, however, have lots more to research and understand before I can be confident there are solutions to all the problems currently faced.
* Some programming, like quick bursts of activity after an epiphany, can be very lively. These moments can be surfaced to viewers if the right signals are used.
* It can be a million people with an audience of 10, not just 10 people with an audience of a million. It could be useful for real-time distributed projects to have collaborators' streams open. Or track a favorite open-source project whenever the developer is working on it.
* It would also work well if scheduled and with a specific task in mind, especially if the programmer is a "rockstar". (Similar to Notch's recent performance.) e.g. "7pm-8pm PST Linus will begin Git forking refactor". As a performance, could also be used for code walkthroughs instead of actual coding.
* Even though it's live-streamed, it can be still be packaged into highlights later, and the best way to do it is to have the raw content available for anyone to remix it. Different work can also be curated together to highlight a common theme.
* Regarding video quality, that's an easy fix given that most programming remains text-based. The obvious solution is to capture high-level terminal content rather than just plain old video. A coding session could then even be curated into posts like http://asciicasts.com/.
It's interesting to see different people's workflows and mindsets, so I think it's worth pursuing this, and it could be very popular with the number of people learning to code right now.
I built this landing page at the end of the last Ludum Dare compo/when Notch began streaming his Doom build.
I'm currently trying to think of ways to attract developers to stream. There seems to be lots of interest in people wanting to watch good quality streams but I feel the challenge lies in providing these good quality streams.
I plan on streaming myself building the MVP in the near future.
I'd recommend focusing on a particular niche of developers who all gather in one place, and who have a strong interest in learning more and watching others code. Game developers would spring to mind but I'm sure there are other even better groups for what you intend.
Then, if you can persuade one or two of the stars of that community to use your platform, you should get a decent amount of starting traction.
Looking forward to seeing how you get on!
I recommend having a read of this other discussion thread further up the page: https://news.ycombinator.com/item?id=8312701
There are some games developers who live stream occasionally on Twitch.tv. The results are generally visual, and feedback quick.
I wonder how much they interact with the viewers / chat. If they can take feedback from and incorporate ideas or fixes.
When I've tried streaming, I've found it hard focusing on the chat side and coding at the same time - it's probably a skill that the best games streamers have - that of paying attention to the viewers, being entertaining, and doing a good job.
The other issue is wondering why I would want to stream myself programming? The first thought was to share with others if they might find it interesting. The second was that as a home worker I might like some virtual company, and the third was that of narcissism. All three thoughts were kind of weak, and I couldn't really come up with a benefit to myself from doing it. Nevertheless I think that there is some future here with such a platform!
That sounds interesting. Links?
http://www.twitch.tv/ae_play CityBound developer
Notch http://www.twitch.tv/notch (minecraft) used to be on twitch, but I think he's moved to http://hitbox.tv/Notch now
The general gist I'm getting is that people often feel insecure about streaming their coding sessions due to perhaps not feeling confident in their skills, workflow, tools or various other issues.
I'm planning on chatting to some established streamers to understand their process and analyse what's currently missing which I could help them with. I then need to chat to some programmers who have never streamed before to understand what stops them from doing so and if anything can be done about that.
If you've got any thoughts or feedback they'd be much appreciated.
In a former life, I worked on developer tools and as part of that we did some extensive on-site filming of experienced developers, in order to do some new product development (I think we used 10 years of professional development as the minimum bar). I don't remember the exact numbers, but it was over 75% of the time was spent reading code - just navigating, stepping through a debugger (without making any changes), and just staring at huge piles of code.
I think it would be interesting to have the stream be text input aware, so that it can showcase the text currently being selected or edited in a way that highlights it better. That and/or either having window specific zooms. I know up-front what the interesting Apps I'll be working in are.
Also, it's a real hassle to keep open a chrome instance to chat, allowing XMPP or IRC would mean I could have a native app for communicating with the streamers.
I think in terms of a devv.tv MVP it'll probably be video embed to begin with though.
Judging from the responses there is a place for a platform that shows long coding sessions as a tool for people to learn. With all the online courses available today, these kind of video's are a nice way to facilitate further learning and practice.
Let me nominate:
Bret Victor
Rich Hickey
Scott Hanselman
Jon Skeet
Who would you watch?The sensitive information issue is certainly a valid concern and something I'd be worried about personally too when streaming. I'm not sure how we'd solve this in the long term, initially though it'd probably just be down to streamer education.
I might be overreacting, but it might be something to think about.