Hacker News new | past | comments | ask | show | jobs | submit login
Thousands of people are watching this guy code a search engine (vice.com)
130 points by DiabloD3 on Feb 19, 2015 | hide | past | favorite | 64 comments



The first time I saw this kind of thing was watching Notch on the Ludum Dare challenge. I don't really see it as a way to learn much about programming, it's more entertaining and a fascinating insight into how other people work.

For example, realising that other people find listening to trance music also helps them code. Or finding out that other people use MS Paint as a level building tool. Or perhaps discovering that it's even possible to use MS Paint as a level building tool!


> For example, realising that other people find listening to trance music also helps them code.

I'm starting to find that listening to repetitive music helps with coding as opposed to lyric based music such as hip-hop.

It would be really interesting to see how many others feel this way and what else helps them focus.


Definitely feel the same way, I even have the habit of extracting part of songs to make short looping versions to reinforce the effect :)

Otherwise di.fm long mixes usually hit the spot.

----

Something else that also works well for me (but not everytime) is long playlists of conference talks, fullscreen on the second screen (usually the ~25 minutes ones work best because it's in-depth enough to be interesting, but not long enough it gets boring, plus if my curiosity gets tickled to look deeper into a topic, I can pause the video to dig deeper before continuing).

I tend to mix both [and it lets me re-use the in-ear headphones that only have one side working anymore]: left ear on talks, right ear on music :)


Oh for sure – instrumental-only for me. Lyrics are too distracting. I like ambient, downbeat, chillout-type stuff. Groove Salad on SomaFM is great: http://somafm.com


Groove salad is the best! Like Pavlov's dogs, hearing groove salad means time to go to work.


I really like Post Rock, its a little slower then techno/trance. Here are some reccomendations:

Godspeed You! Black Emperor: https://www.youtube.com/watch?v=PZwQeZh6rP0

God is an Astronaut https://www.youtube.com/watch?v=HKFDYdaSyng


I also listen to a lot of post rock while programming.

Two more recommendations:

- Explosions in the sky

- Mono ("For My Parents" is my favorite post rock album)


You can't drop all those post rock bands without giving Mogwai a mention


I really like the latter. Spotify recommended it a few weeks ago.


I enjoy the Grateful Dead's long improvisational jams while coding. Try track 10 for example, and be sure to listen to it in its entirety:

https://archive.org/details/gd73-07-27.aud.weiner.gdadt26.26...


I think the theory is that you need to distract a certain part of your brain if you want to get on with a task that requires a degree of concentration. Dance/trance works pretty well for this (for most people). After all music is just a way of tricking the brain into enjoying counting.

Once I tried listening to classical music, I found it very difficult to program to. I decided that the music was too complex and actually used the complex-task part of my brain (which I needed for programming). I also had a similar experience when I tried to play a language learning tape in the background while programming.

It's a fun experiment to run on yourself either way.


I find that whatever music I use for working out works best. I guess there's some link in my brain - the meditative state you get into when you exercise where it's just you, the pain and the music puts your brain into a highly focused state. I discovered that after a while of doing this, whenever I listen to my exercise playlist, it puts me into that same focused state regardless of whether I'm exercising... and I now use the same playlist for highly focused/fast pace programming. Of course it helps to maintain the link between that kind of music and focus if you regularly use it for exercise.

YMMV


If you're still interested, try solo stringed classical pieces while coding. Bach's solo cello suites are a good place to start.


For me, lyrics are fine if I know the music well enough (as in, can recite the lyrics fluidly from memory). Otherwise, I mostly listen to bebop and free jazz. Repetitiveness is usually not welcome, though.


Nothing gets me in focus like the mixes over at musicforprogramming.net

Great selection of ambient/non-invasive electronica.

If that doesn't cut it, Burial and Vangelis always does the trick. And for sessions where it's only some brute force grokking, some uplifting jazz from accujazz.com


I feel that I go too fast, start making mistakes, and missing obvious things, but maybe it's different when creating rather than maintaining. I prefer ambient and chill music when maintaining.


Music with no lyrics for me. Mostly jazz, not really repetitive.


(Uplifting) trance, preferably no lyrics, for me.

Post metal (again no lyrics ) on bad days (more than a year since last.)

Maybe someone with higher level account can make a poll?


Game soundtracks also work well because they're designed to be non-distracting


Ludum Dare is always fun to watch. Like you mentioned, I enjoy seeing different workflows, and watching how the developer tackles things.


Oh hi! I am the guy that codes a search engine. Just wanted to say thank you for posting the link, and join the discussion.

If you have questions, I'll be glad to answer them!


For the non-technical, can you explain the search engine you are building.

Also, what is your interest? Are you more interested in coding the search engine, or is the project irrelevant and you just wanted to stream yourself coding? In other words has the streaming of yourself coding become the project itself? If you are going to stream another project after the search engine, are you looking for ideas or do you have other pet projects you want to work on?

My suggestion, if you are trying to build an audience, crowd source your next project idea. Maybe give your audience a few ideas, allow them to nominate other ideas, and then have them vote. This way you build in the largest audience prior to beginning...and not unsurprisingly I have a project idea if you are interested.


> For the non-technical, can you explain the search engine you are building.

It is a search engine for one subreddit(/r/learnprogramming).

> so, what is your interest?

I know about search engines, and I wanted to share my knowledge with people(personally, I think there isn't much info on the web, compared to e.g. operating systems). I also wanted to start live streaming, so I started this.

> are you looking for ideas or do you have other pet projects you want to work on?

Suggestions are always welcome! I have a couple of ideas for side projects(and I sometimes stream building them).

> My suggestion, if you are trying to build an audience, crowd source your next project idea.

We tried something like this in /r/WatchPeopleCode, and it doesn't worked very well(for some reason). Although the subreddit was 10x less popular then(and maybe implementation wasn't that good).

I am curious about your project idea though!


I think what you are doing is great, but you really, really, really need to get a better audio set up. Think about how you'll have these episodes for the rest of your life improving your audio quality is paramount.


That's true about audio quality. Do you have suggestion for a good mic?


I always wanted a twitch.tv for coding/intellectual work. I am sure that it would provide me a lot of good models of workflow and insight.

I searched in their site and saw nobody was doing it, then noticed that their conditions doesn't allow it.

EDIT: Just found http://coderstv.com :)


Also, from the article, http://www.watchpeoplecode.com/


Also, where it all started: http://www.reddit.com/r/WatchPeopleCode


And this video from he site is a treat

https://www.youtube.com/watch?v=ivOUPCpE5BU


There is a Game Development channel where you can see people developing games. There is also one for Music but I haven't looked at it and it is in beta.


This is a good idea, and I've watched that guy on youtube develop his game from the groundup for couple of episodes, but the last thing I want to do after coding all day is to watch somebody else code.. so maybe it would be nice to have some kind of "best of" compilations after people have done these.


> that guy on youtube develop his game

You're probably talking about Handmade Hero, by Casey Muratori. Unless there's more than one person doing this.

https://handmadehero.org/


Could you want it at a faster speed (maybe 1.5x)? That should cut down your viewing time. Similar to the idea of listening to podcasts at a faster speed.


I don't think watching someone "code" (God, I hate this word) is going to teach you much.

It might teach you about what tools he uses, and what keyboard shortcuts he likes, but not about the more important tasks of understanding problems, and organising solutions. That's what makes writing software hard, not the "coding" part.


I haven't actually scoped anything out beyond the article, but I'm not sure this is necessarily true. I've noticed while screen-sharing coding sessions that -- for those who are interested -- it is a great way to convey how one approaches programming at a fundamental level: that a lot of it is about planning and researching and how you think about problems. That can be pretty valuable to someone with no experience but a willingness to learn.

Also, as the article suggests, the developers appear to describe what they're doing, so it could be a window into the thought process of a talented developer. I think I would have valued this quite a bit as a novice when the technology to enable this wasn't as developed.


I agree. I think it's much more educational to watch two people pair program. Pairs have to explain their ideas and concerns to each other, so viewers are more likely to understand the problem, potential solutions, and general problem-solving approaches.

It can also help if the solo programmer is "rubber ducky" programming[1], but people typically assume more shared knowledge than actually exists. It takes another human to counteract this by asking for clarification.

1. https://en.wikipedia.org/wiki/Rubber_duck_debugging


Because I was just reading about this last night, it's the Curse of Knowledge[1]. Who knows what your audience is on a live stream? Viewers could range from "I'm also building a search engine and I'm curious about the techniques others use" to "I wonder what programming looks like". There could be gains for both audiences depending on how the process is presented.

Edit: I don't get how HN footnotes work... So I'll just pretend this is close enough.

[1] http://en.wikipedia.org/wiki/Curse_of_knowledge


How do you figure? Reading source code is incredible helpful for understanding how to program properly. Watching somebody step through their code and solve each problem in real time would be absolutely fantastic for understanding problems and organising solutions. Also what's wrong with code as a verb for programming?


Reading "refined" source code for projects will likely teach you significantly more about programming if that's what you wanted to learn. These videos are mostly to see someone else's process rather than the code itself.

For example, I watched the linked video. Using it as an example for Python programming would be terrible - it does not follow PEP8 (extremely long lines, no spaces around operators, excessive descriptive names ("Java style")), has many unnecessary assignments and copies, very few comments, no sphinx docstrings, etc...


Coding sounds like a monotonous task of slapping together stuff until it works without any thought about architecture, testing, or anything 'big picture'.


It's interesting that the most important part, the part of the process that will cut your costs and cut variability is the requirements/analysis and architecture design part. It's the thing that many people skim over and don't see and apparently don't know how to do well. That's the most important piece and you can't get that from watching someone write code.


>but not about the more important tasks of understanding problems, and organising solutions

Where do you go to learn the proper way to do that? Couldn't you teach that through streaming as well?

Even if the viewer isn't learning much, the streamer certainly might be because he's getting people to review and help him. Maybe the real value is in what the streamer can learn, and not really the viewers.


What if they were explaining what they are doing and why? Kind of like a screencast, but much longer.


Like looking over Shakespeare's shoulder, hoping to absorb some genius through osmosis ;-)


I fully agree!


I think it can be interesting, but only if the guy is a great developer. And if he is, he should spend more time thinking than typing, so not sure it'll make a fun video to watch.

The hard part of coding is the design. A lot of programmers think as they code. They try something, get stuck, try something else, understand the problem better and so on. It's a kind of intellectual laziness which is not optimal.

I've been doing competitive algorithms for a while, and I learned that the best programmers don't start programming until they know exactly what their algorithm will be. And an other thing is that they rarely have bugs. Also testing/debugging is extremely time consuming: they think carefully that everything is right before testing. Which is unlike the lazy approach which is to have something working asap and go into debugging mode.

It takes a lot of discipline to be able to work like that, esp. under pressure.


This is really good to know because I think I fall into the "try something in code, test, and debug my way through it" category a lot.

Do others agree that thinking it through completely before hand is optimal?

Are there any studies out there which compare amazing programmers to just average ones on brand new material (where the more experienced programmer doesn't necessarily have the advantage of just more knowledge but has better principles/strategies of breaking down the problem)?


Yeah, my experience has lead me to believe that planning the solution in relatively high detail before touching my keyboard leads to faster feedback, better designs, and fewer bugs.

I’ll generally take a pad and pen and write down my requirements and assumptions. This helps flesh out any further information I’ll need before I begin.

Once I’m satisfied that I understand the problem I’ll sketch out a planned architecture (dependency graphs, data structures, etc). If this uncovers more missing information then I’ll get that information and revisit the requirements and assumptions. Sometimes the missing information is that I don’t actually know how to do something in the particular environment I’m coding in. In that case I’ll prototype the minimum code I need to figure out how to do what I need to (I never use the prototype in production code).

Once I have a planned architecture that I’m happy with, writing the tests and code is relatively mechanical and straight-forward.

I’ll do this for pretty much any change to a codebase that is more complicated than changing a single function.


Source code is usually a very later version of the software that is a result of lots effort and mistakes. To watch good programmers build a system from scratch and watch and learn through the mistakes they made along the way seems to be a great tool to learn the craft of building software.

What comes to mind is chess; this is like watching players play from the beginning and learning their intuitions at each stage rather than just learning from their endgames.

I'm excited to see what comes of this.


>The plan, he says, is to teach people, but it’s also to create a better search engine than the one reddit currently provides, which is notoriously terrible.

Yup. I've often been disappointed by the reddit search engine. I know they are a big site and everything, but surely it's not as difficult as indexing the internet.

If you're interested in this, also check out Handmade Hero: https://handmadehero.org/


I agree, they all suck. I've been working on this for a while in my spare time. :)

http://pxlb.in/?searchterm=programming


They've replaced it once already (a few years ago), it used to be even worse!


I would love doing this -- as long as I felt like I was helping somebody. It's a shame the system can't be set up so that you propose an idea/project, then depending on how many people express interest you decide to proceed or not.


For now you could very well gauge people's interest on the relevant subreddit by asking and then proceed if you feel it's enough. Also keep in mind that people will watch the recorded video way beyond the scheduled time as well and potentially reach thousands of views and therefore be helpful to a lot of people.


I think what I'm going to do is record the first hour or so of setting up a new project today, then post about it on the reddit site, G+, and here.

I'll watch the views. If people are interested, I'll post some more.

What I can't decide on is whether or not to do it live or recorded. This first part I'm going to record -- much more control that way. I would imagine doing this live would involve a lot of looking at me stare blankly at the screen <g>


This actually seems like a great idea. And despite how much I love coding and how comfortable I am helping others to learn it, I think I would be too self-conscious to stream my coding sessions. Most of them are spent thinking really hard about what I want to do, testing or deleting a bunch of things I wrote really quickly to make room for better replacements.

I guess that process feels very personal to me. Much in the same way I would probably feel uncomfortable streaming video of my writing an academic paper.


To me, your concerns are actually the biggest learning and takeaway. I learned and am learning programming completely on my own without peers so it's difficult to understand where I stand. I watched and still am watching this kind of videos to see how others are thinking and approaching problems and reinforce that there probably aren't genius programmers out there who just bang out code without mistakes, errors and iteration. Without it I always felt bad / inadequate as it's easy to fall into that way of thinking and constantly second-guess myself. I find it immensely helpful and don't really understand why some people here are so quick in dismissing it as not useful. But I can see how under different circumstances, say, learning programming in school or otherwise with peers or mentors involved, it's easy to forget that this might play a significant role in feeling comfortable with where you are and how you're doing.


Oh that's perfectly fair. I don't doubt at all that this kind of thing is incredibly helpful for new programmers. Rather, I was just musing that I don't think I'd ever feel comfortable coding with the knowledge that someone's looking over my shoulder :)


There have been a couple of Show HNs with projects like "Twitch for coding". I don't remember what they were called though.

Great idea anyway. I don't think Twitch is the perfect medium for this though since a full-featured "Twitch for programming" could include stuff like live-pasting snippets to your audience etc.


I can't imagine watching anyone code realtime. Unless it has explanatory voiceover it's not very informative and it's far slower than just waiting for them to finish and reading the code afterwards?


This is amazing. I'm thrilled. Opensource has a whole new dimension.

Or, as the classic has put it, "given enough eyeballs, all bugs are shallow".


Wow someone get linus torvalds to use it! I'm willing to buy the webcam.


Doesn't he just merge stuff and write on the mailing list these days?


He is an ex-Yandexer! :)




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: