This brought back a memory from the way back machine. Back in the early days of computers, many of them like the C64 or TRS80 (circa 1985-ish) had an option to use a TV as a monitor to save money. I recall that I had a Trash 80 and it was hooked up to the TV with a cable splitter in a spare bedroom. There were a number of relatives and friends visiting and myself someone that shared my love of computing were in the there programming away, and really programming, we are talking assembler here. And after a couple of hours we came down to the living room and everyone had the TV on channel 3 and everyone was watching us (I did not realize the splitter was broadcasting throughout the cable in our house). I guess there was nothing better on back them before cable had 100's of channels. It was interesting to hear the non-programmers questions and comments about what we were doing and really how much they had actually picked up on.
Along these lines, I recently started watching (and enjoying!) Casey Muratori's Handmade Hero, "an ongoing project to create a complete, professional-quality game accompanied by videos that explain every single line of its source code."
I've only made it to week 10 but i've already learned a huge amount in a short amount of time (and only had to completely abandon my own code and start from scratch from the archived version once so far.) It's fun (and insightful) to watch half the comments disagree vehemently with something Casey said that day (const is useless? what?)
This may be a good place to ask this question -- I think I saw a website which had videos of how well-respected experts write projects from start to finish. So, if I were interested in learning how experts in golang write a web-service end-to-end (design, DB, write, test, deploy, debug), I could watch those videos and learn the right(ish) way to write a web-service in golang. I'm sure I'll learn a few other things too (like how they replaced a block of code in vim in 4 keystrokes where it would have taken me 12). Does anything like that exist? If not, then that sounds like a fantastic opportunity to me.
Recently, I was amazed at how fast one of our devs were. When trying to see what made him so fast, it was a combination of being very good at reading code and understanding the underlying structure of the code, and also he was very fast with his editor. I could barely follow what he was doing as he was tracing his way through the code.
Watching him work as we were discussing an architecture made me more inspired to type faster, learn my tools better, and get better at reading code.
You might enjoy watching a few episodes of Emacs Rocks! The guy who does them is pretty cool to watch as far as knowing your tools well. Even if you're a vim user, you'll probably appreciate how well he uses emacs.
Emacs Rocks is great, almost got me converted ;) For a vim guys I can recommend watching 'Destroy All Software' by Gary. He's a master of his tools and pleasure to watch.
After ~60 minutes of random debugging in production. If anyone noticed any weirdness(like a lot of repeated streams / streams disappearing) -- we're sorry. Looks like everything should work now.
Just a bit of technical details for curious: twitch streams are painful to deal with. Twitch channel != youtube channel. Twitch channel is akin youtube video(or stream) but with offline/online status. Mapping "online/offline" statuses into proper upcoming/live/completed statuses isn't straightforward. Differentiating between different "streams" is also difficult(i.e. user streams twice on two different days, but the link stays the same).
I offer these quotations from well known figures as a mental antidote to the 'churn things out fast' / 'learn all the editor shortcuts' mentality being promoted throughout some of the comments.
The real hero of programming is the one who writes negative code. - Doug McIlroy
You're not to come up with a simple design through any kind of coding techniques or any kind of programming language concepts. Simplicity has to be achieved above the code level before you get to the point which you worry about how you actually implement this thing in code. - Leslie Lamport
Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them. - Doug McIlroy
OT slightly: Why do some YouTube embeds (including the one on this site) not contain a full screen button? It drives me nuts. Especially here as to actually see what's happening full screen is essential. The only way to get full screen is to click the YouTube button to actually go to YouTube and full screen it from there.
Not sure about this particular case, but this will happen if you're using the HTML5 version of Youtube and the video is inside an iframe that doesn't have the allowfullscreen attribute.
However in this case, the fullscreen button appeared for me after I clicked play.
What stream were/are you watching? Also, what is your OS/browser? I checked "Instruction Set Development - Part 5" and there is full screen button(Mac OS X, chrome/firefox).
Side question: I'd like to stream some audio content to a few 1000 people (24/7) and wondered if anyone knew (back of the envelope) what the cost model for this would look like? Assuming it's just bandwidth unless I go p2p... Just trying to understand the current lay of the land as I remember the youtube guys were paying $$$/mo for bandwidth when they first started. Thanks.
If you don't stream video, you can use something designed for audio streaming like Icecast[0]. Then your bandwidth per month is approximately users×bitrate×60×60×24×30/8/1000000000. For 1000 people at 128kbit/s, that would be 41.472GB/mo, which you could pay for with $5.
I did sell streams for several years, and have to claim please do !NOT! use icecast. The "standard" streaming server is still shoutcast (sc_trans_040/sc_serv), even if this software is not maintained for nearly 10 years, since AOL bought Nullsoft.
Icecast extends the Shoutcast protocol at several places. This might be great news, if you have Icecast clients, but most of the shelf radios and tvs can only do ages old shoutcast.
An other warning: Do not use cloud providers like amazon, where traffic costs extra money, if you stream more then once. 1000 peak listeners calls to run your own cloud of cheap root servers and vps servers, and I also advise on GeoIP-DNS, with Nagios plugin to throttle servers that are already under load, and disable those who went down. You might do a lot of provider hopping in the early stage, so avoid long contracts. 500 average listeners is the legal distinction between a radio and an internet service for ASCAP, if you stream music. But 500 average is at least 10k in peak.
I wonder if Opus is being used in production anywhere yet. For some content you could get away with 48kbit or less, which would cut the costs dramatically.
While I think it'd be difficult to fully learn how to implement something from this (read: tedious), I do see it as a cool way to learn how other people think about and solve problems. If it means anything, I watched a good five minutes of the guy working on the Arduino code without thinking about turning it off.
I watched notch develop Prelude of the Chambered over a livestream a couple of years ago. It took a couple of days, but I picked up so much (I went on to port it to Ruby, bizarrely).
I like this idea! Having the option to watch people code their games live is also a feature I enjoy on the Ludum Dare site. I often tune in to Twitch channels to watch people write code, only for a few minutes mostly, but it does make me feel connected and sometimes there are interesting things to discover.
I'm less sure about your choice of data source, though. /r/WatchPeopleCode is fine if you're already active on Reddit, but given the fact that people need to actively register there means you're missing out on a lot of programming streams.
In my opinion it would be a better idea to automatically pull a list of programming streams from Twitch, Youtube, and Hitbox just using the appropriate key words.
I'm more concerned that twitch.tv is already good and has it's own culture developed for this. Unless some extra meta data type stuff is added like which language, which subjectd, which editors, which techniques etc are added in a very useful way.
> I'm more concerned that twitch.tv is already good and has it's own culture developed for this.
Twitch is ok, but it is against ToS to stream non-gamedev programming. These rules aren't enforced strictly though.
VOD support for twitch sucks. Personally, I prefer my videos not getting deleted after 14 days. So that's why I stream on youtube.
As for the other stuff, we have a few ideas(most of them vague). One of them: auto speeding up "boring" parts of videos(e.g. silent thinking) in recorded videos.
I wonder if there is an viable alternative to YouTube. I find the idea intersting and could see people gaining something from watching others code, but sadly live streams are yet another thing I cannot use without a proxy.
There seem to be legal problems with them in Germany or is it some European law and other countries are also blocked? Does anyone know what exactly the problem is? Just potential copyright infringements from audio in the background e.x.?
"Because of the German law (RStV), you must have a broadcast licence from the media authorities when you make a live stream that can reach more than 500 people at the same time. Not getting one would result in a fine of up to 500 000€.
However, even if you would have one, Google might need one as well (because they somewhat are the "television channel") and they don't have one (if you do stuff that is against German law in your live stream, Google would lose its licence because of you)."
The question in that thread is a good one, and unfortunately not actually answered. What defines 'live stream'? Obviously basic sharing of non-commercial recordings cannot require a license.
Obviously basic sharing of non-commercial recordings cannot require a license.
I seem to recall reading that the German audio royalties law forced streams to pay royalties to the industry association (RIAA equivalent) even for creative commons music. I could be misremembering or misinterpreting, so if someone could provide an up-to-date reference it would be appreciated.
"Obviously" how? I'm not sure how that's obvious, or even true. Could you explain? It's a broadcast to over 500 people; so therefore it's considered a broadcast, commercial or not.
The feedback on these streams makes this a really incredible idea. I just watched one where users were constantly noticing syntax errors, etc. and alerting the dev in real time of them. A few people on these streams are learning languages (like Lua) for the first time and powering through these projects with aid from viewers/commenters. Love it.
Would it be better performance wise to get the Twitch.tv/YouTube/etc. summary of what they're showing and present that first, and if you're interested to click on the summary then you can load the video? Loading all of those videos at once is pretty heavy, at least for my mbp.
Yeah this is quite a problem - I'm puzzled how there aren't more comments on this. This page brought my PC almost to a complete halt for 20 seconds or so. On newest FF and Chrome!
I don't understand how this adds more value than the other places on the web. A blog, tutorial video, stackoverflow post, book, etc will provide more knowledge in less time than watching someone real-time code and step through the software writing process. I understand the game channels on twitch provide entertainment, but don't see how this will catch on widely. Would love to hear others thoughts.
Watching someone code teaches many subtle techniques that people don't even realize they do. Especially the holistic set of techniques an individual uses and how they interact.
Also, probably more smart people (not saying the smartest, but maybe even that) don't spend time distilling their ideas publicly as they are so focused on taking on challenging things.
What do you think? Also, personally I kind of like the human element. I agree that written form or edited video's probably make a better reference. But that can also be extracted later from a set of freestyle videos.
Interaction. There is something different / powerful about being able to ask, express, and share knowledge with the person streaming. Something far more innate. You can see this in how the successful streamers all have microphones and cameras. Blogs and tutorials have more accuracy, but live streams have more humanity.
Having said that, I think most will fail to gain an audience. Because, being good at streaming is not the same as being good at programming. Take a look at the popular streamers and you will see how they mimic classic presentation techniques. Improving your skills as a programmer and improving your skills as a streamer/presenter can be mutually exclusive.
I teach software engineering using an "athletic" pedagogy which means (in part) that I publish YouTube videos showing how I complete small (i.e. 10-30 minute problems) in an efficient manner. Students then try to complete the problems as fast as I do. Once a week, in class, they are assigned a new problem that they must complete correctly within a short time period or else receive no credit.
This provides a mixture of learning by watching a more experienced practitioner do the work, along with active engagement.
For example, here is the website for the software engineering class I am teaching this semester:
Other people in this comment thread made good point about value for viewers, so I'm not going to focus on streamers in my response.
> blog, tutorial video, stackoverflow post, book, etc
Well, how does one records a tutorial video? It is not that easy, there are a lot of details: language, library, length of video, format(i.e. what things to explain, in what order, etc, etc). Streaming is straightforward, you code as you normally would and explain stuff as you go. As for information density, I think it is possible to speed up "boring" parts(e.g. silent thinking) in recorded videos. We aren't 100% sure, but we're coding a prototype.
When I've watched these things, I've tried to see if I could figure out whatever bug the streamer was trying to fix before they could (difficult without the ability to actually look through the code on one's own), and alert them if so. It's like a game, but you might actually help someone out.
There's also seeing what people really do rather than what they say they do. It's easy to say you follow various principles, always test, yada yada, but I suspect most people's real world behavior is different to their ideals.
Well, this was kind of fun! I just finished streaming 6 hours of UX development. Didn't expect much of an audience, but in the end there were over a hundred viewers (I bet most came via HN). I'll definitely be doing this again soon :)