Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Notch Playing Ludum Dare [video] (twitch.tv)
157 points by n1c on Dec 14, 2013 | hide | past | favorite | 101 comments


Love watching this. It makes you realize that the process of discovery and trial/error during programming is universal to everyone and what makes you feel sometimes stupid should never stop you carrying on. Also shows the celebration of the minor successes ('yeah! it's working'), followed by the 'what the... ?' is something even the greatest experience.


I can't help but think of how much money this guy has and how he's still at it, hacking away and streaming his program-a-thon. Seems like a good role model not only for creative programming but also surviving success.


'surviving success' is one of those good problems to have...which makes it, in some ways, a non-problem. surviving failure is a lot more impressive.


Success scares me far more than failure.


depends on how much you enjoy food i guess


http://www.twitch.tv/georgebroussard

Also worth a look. One of the main guys from Apogee / 3D Realms / Duke Nuke'em.


Also great to watch - very different approach.


Couldn't help but notice:

>Makes fortune in "shareware"

>Uses Sublime Text, unregistered version


Listening to notch umming, ahhing and changing stuff at random in a desperate effort to get his program to work makes me feel so much better about my own (similar) programming process.


It is really nice to see others having the same "Wait, what did I change?" kind of moments.


I remember feeling the same watching a lisper (who I always assume being uber flawless gurus) being confused about something trivial.


Don't try it at an interview at $startup or $famous_company, though.


Watched it for about a minute and got a great quote: "everything sucks about this language".

So yeah,

Everything sucks about Dart.

-notch


Funnily enough he was referring to the fact that doubles are proper nullable objects, the inverse of a common reason for people saying that Java sucks.


Do people really say "I wish that all my doubles were actually Maybe<double>s, which could cause my program to explode at any arithmetic operation?" I have never heard this complaint.


What I want:

No object/primitive distinction, but you have to explicitly make objects and methods nullable, and the dereference operator is null-safe. (You use the dereference operator on a null object, you get null. You use the dereference operator to call a nullable method on a null object, you get null. It is a compile-time error to call a non-nullable method on a nullable reference where the compiler cannot prove that it won't be null. Pure functions are implicitly nullable.)

It is a compile-time error if you assign a nullable reference to a non-nullable reference and the compiler cannot prove that it won't be null.

I've also had an idea for what I call a "pseudo-statically typed" language: instead of checking types at compile time, it checks that you implement all functions called on the parameter at compile time. Public variables are just syntactic sugar for getX/setX, operations are just syntactic sugar for addX/subX/etc. If you define a method with an input type of X, the compiler checks that you only call methods that are defined in X, and then replaces the type with the methods actually called.

But nullable "primitives" can actually be useful occasionally, for caching, for example. Having a separate boolean flag works, but can be inefficient (you can store null internally as NaN with a specific payload, for example, whereas a boolean flag generally requires at least a byte, more with alignment. This also allows easier atomic updates.)


Google's Closure JS Compiler has exactly what you are describing as an optional layer on top of Javascript inside jsdoc comments. In that, primitives are default non-nullable unless you include ? in the type (eg @type {number} is non-nullable, {?number} is nullable), whereas Objects are nullable by default unless you specify otherwise (eg @type {Object} is nullable, {!Object} is non-nullable).

It's a pretty good system that does what it can, but you can still pretty easily get code that violates your specified types at runtime if you go out of your way.


Kotlin seems to do exactly what you want.


As someone who writes Scala most days, this feature of Kotlin looks pretty great.


No checked exceptions, which for me is a dealbreaker.


I sympathize, I think checked exceptions are a good idea overall, just poorly used in Java, but the current trend of languages is clearly showing that we're moving away from the idea. None of the languages that came out on the JVM these past ten years (Scala, Groovy, Clojure, Kotlin, Ceylon, etc...) support checked exceptions.


No checked exceptions is a deal breaker for you for a programming language? What kind of deals are you making?


One with the programming underlords.



Now, they say "I wish Java had a unified type system, and did not have the Object/primitive type distinction".

Which is also a goal for a future Java release, as announced by Oracle (don't know if they'll follow through):

Java 9 and 10 will tackle big data, multi-language interoperability, cloud and mobile and ship in 2015 and 2017 respectively, Oracle said Wednesday. For the Java Development Kit (JDK) 10 or after, a fundamental change is being discussed: making the Java language Object Oriented. This might see the introduction of a unified type system that turns everything into objects and means no more primitives.


doubles come with that built in -- NaN.


Even better: use the NaN payload to distinguish between null and "standard" NaN.


Most of my operations cannot generate a signaling NaN.


To be fair, he was singing its praises for ages.


Do you have a source for the above quote? I ask because it appears he liked using it: https://twitter.com/notch/status/412290357892636673

"I really like it." - notch


I heard him saying it when a double value was not initialized and gave no such method exception. But again, anyone can curse any language during coding, that is natural. He would have not use Dart for this contest if he had not liked it. He is in the process of learning it.


Notch his success has nothing to do with being good at programming. It's about being creative and able to create good game play.

Because he programmed game play routines a lot and dealt with everything involved (i.e graphic rendering and such) more than the average Joe it looks like he is a good programmer because he just shakes it out live on some streaming website. Those concepts are language-agnostic and you can remember them.


Anyone who could make Minecraft by himself is at least kind of okay.

I recommend you build a game of similar scope before saying stuff like this.


To me, your comment is a strong implication that Notch is a gifted programmer. If you meant "at least kind of okay" literally (he is better than average), then feel free to ignore me. Otherwise, read on.

I know tons of people, myself included, that have coded something of similar, if not bigger scope than Minecraft. The only difference between Notch and everyone else is that Notch ended up creating a game that became extremely popular. It is a combination of skill and luck. Thinking it is all skill, and even worse, thinking that you are "gifted" because of such a happenstance is very unhealthy.


>I know tons of people, myself included, that have coded something of similar, if not bigger scope than Minecraft.

Pics or it didn't happen. Merely writing something with an equal or larger amount of LOC doesn't count.


Then what does count? Download count? Net monetary gain? Fame?


notch never said that hes gifted, quite the contrary.

Also i hope you realized that you responded to jonathan blow, creator of braid and a gifted programmer himself. Atleast give notch some credit


I don't care who he is. And it seems that you missed the whole point of my previous comment. He is not gifted. He indeed is very good but he is not gifted.


> Notch his success has nothing to do with being good at programming.

To me, being able to sell (not give away, charge) thirteen million applications that you write is a testament that you are good at programming.

Now, "programming" has many different dimensions, but Notch achieved something that very, very few developers will ever able to achieve in their lifetime (I'd argue he's actually the only solo programmer who's ever been able to achieve such a goal, beating even icons such as John Carmack).


To me that means you are good at creating something fun.

Let's be perfectly honest, after Quake 3, nothing id put out was really fun despite all the technical achievements Carmack made with the subsequent engines

I'm not saying Notch is a bad programmer, I admire him very much, but you need to keep the success / marketing / fun factor separate from the actual code


I mean we have to look at the conext here. Programming a game has very different goals than for example writing a service which should never crash.


I'd have a hard time writing code knowing someone is watching me, judging every step. I'm so used to the cycle of making something that passes the tests -> refactor loop, and the code produced in the first iteration is so bad compared to what it will end up like.


If not caring about being judged were a tangible resource, and I had larger reserves of it, I know I'd be more successful. Fear of judgement makes me do all kinds of dumb things, and often subdues me into inactivity. It's something I'm working hard to combat.


I suggest caring less about code being "bad".


This new title is absolutely ridiculous.


Yeah, I would love to hear the reasoning behind the title change.


I'm guessing whoever changed it doesn't know what Ludum Dare is.


What was the old one?


I think it was something like "Notch streaming his Ludum Dare entry made with Dart"


I'm a really big fan of having inspiration like this to start learning a new language. I'm happy he choose Dart over Java for a change of pace.


Isn't Dart an easier language to work with than JavaScript. Notch is probably being practical and thinking long term. At 100,000 lines of code, you want the "cleaner" language.


I sincerely doubt that long-term maintainability was a factor unless Notch has said that it was. For a game jam you generally want to get something running as fast as possible. Of course, Notch has done it often enough that may have been motivated by more whimsical reasons, like trying out a language on a new project.


Java != Javascript


What does Java have to do with what I said? His current web project wasn't going to be written in Java. Why bring it up?


The comment you originally replied to was pointing out that Notch usually writes in Java.


Hmmm. I guess the question is why he chose Dart over JavaScript for the web? He must have had another reason for going with the web other than to try something different than Java.


The Dart editor is Eclipse-based, so the IDE at least is familiar.


I bet big deciding factors were that the IDE is eclipse-based and it's a statically-typed language that is "close" to Java. That limited his choices quite a bit.


Just spent about 5 minutes watching him program and test a game... Can't watch anymore, do people actually enjoy this sort of thing? I think its more fun to program than to watch someone program...


I've spent a lot of time pair programming, and my normal tolerance for pure watching is 10 minutes or so. I think that's pretty typical; seasoned pair programmers have a lot of tricks to make sure control shifts frequently so that people don't get board and mentally disengage.

That said, I really enjoyed watching this stream for a while, and will come back later. One of the best parts of pairing is picking up tricks. Watching Notch work on the graphics was amazing. I've never done video games with modern tools, and seeing how somebody quickly iterates, always coming back to a running demo to see how it feels was great. In 90 seconds he added snow.

As somebody else mentioned, it was also great to be reminded that even legends are human. He's constantly making little mistakes, trying little experiments, being puzzled by something. If anything distinguishes him from the people I've paired with, it's his cheeriness in the face of adversity.

Also, I love this bit I just heard: "Does Santa shoot? Does Santa shoot? No. I think Santa swings his mighty sword. A sword? Yes. Santa wields a sword." It's so easy to think that well-tuned games spring full-formed from the minds of their creators, but real creativity is like that: continuous exploration and experimentation.


Some people might find it educational to watch an expert create, especially if they are new to game programming ... Don't have to be dismissive. :) now if watched for 24 hours that might a bit much.


He just scrapped the whole game he had been working on for 6 hours (it was some kind of endless runner in a 3D forest setting) and started on a new one.


He scrapped that too and is now back in the forest :D


For anyone wondering, the theme for this ludum dare is "You Only Get One"


This reminds me of my LOVE for the fact that programming is just as much (if not more so) an art than it is a science . :D




The concept of streaming such a thing is great. Except that twitch.tv seems to be for gamers and windows only. And I can't find any description on their website of how to download and run even the Windows software that would stream the video.


If you're interested in streaming more general programming, check out twitch's sister site, justin.tv - more specifically the new Creativity category (http://www.justin.tv/directory/creativity). We have a bunch of awesome people doing live coding already, and we're very interested in helping more people get started. Feel free to email me - bill@justin.tv - if you need any help.


You can use Flash or Livestreamer on Linux and presumably OSX. There are also apps for Android.


Crap, so if I wanted to do the ludum dare I'd have to use windows? :/


George Broussard (linked above) is streaming from OS X.


http://www.twitch.tv/dvcolgan <-- this guy is using VIM and CoffeeScript to make a game...

I now find CoffeeScript scary... and I use CoffeeScript...


For some reason, I really like having these live streams (both the Notch one and the George Broussard one) on in the background when I'm programming. Something about hearing other people hacking away helps me get in the zone, and periodically checking the video helps me get re-motivated if I happen to lose focus.

I'd love a site like Twitch but specifically for coding sessions (seems to me like Twitch is primarily for gaming sessions?).


How do you skip or remove the opening commercial?

YouTube ads skippable in 3 seconds are more or less OK, but these run for whooping 1:30 with no option to skip. That's really pushing it.


Why would you? Running a video streaming service is hardly free. It is only like 30 sec of advertisement.

If you really wanted you could use an ad blocker.


> Why would you?

Because I am not interested in what they are offering and I know this after first 2 seconds.

It's not 30 seconds, it's 90.

I'd use AdBlock but it's an iPad.


I'm surprised there's people here that don't.


I don't -- I put up with ads because it's the way people online who produce content get paid.

Sure, a lot of people take advantage of spamming ads, but if it bothers me enough, I just wont revisit their content.


I'd venture to say there are more people here interested in the old-fashioned notion of a noble hacker than in the subversive form of the term.


It looks like Java, classes, super, static, the editor shows the little red error decorations so you can quickly resolve a new edit and test. This looks like Java? Maybe DART is worth giving a try.


OK, I can't go to the Marketplace in Eclipse and install it, Strike 1, Perspectives are removed (HUGE) Strike 2, the entire Window menu has been removed Strike 3.


This is great, for all the reasons everyone has said so far.

Like to pair with people ? http://www.pairprogramwith.me/


Anyone know which steaming music station he is listening to?


So far he's been alternating between.. di.fm's Electro House channel: http://www.di.fm/electro .. his own Autechre playlist, and the latest Boards of Canada album.

If it sounds like upbeat ravey house music, it's electro house. If it sounds like a headache waiting to happen, Autechre. If it's pretty dreamy stuff, Boards of Canada.


Thank you so much!


I'm enjoying popping in and watching for a couple minutes here and there. Interesting watching how progress happens.


All I see is "totally stuck! BRB". How long has it been there?


About 15 minutes since your post. I guess you have to take breaks when you program for hours straight.


Looks like he went out to get himself some chicken :)


Seems to be having trouble deciding on a game to build.


The theme this time, IMHO, is not very easy to pick a standout idea to work on. Almost everything you can make will fit that theme, and thus, is hard to create a unique or fun one.


Love the sound of his keyboard.


I think he uses Das Keyboard.


I believe he uses a Das at work(saw it mentioned in a story about Mojang a while ago) but he mentioned on stream that he's currently using an old IBM Model M.

Both are nice mechanical keyboards with a wonderful sound though :)


Is there a reason why one would prefer a Das keyboard over a Model M?


Native USB, choice of switches, appearance, full NKRO. I would be fine with a Model M myself, but those are at least a couple distinct differences.


He's now off-line


http://test.notch.net/ld28/ld28.html -> Notch's game. Runs like garbage on my firefox though


According to twitter, upgrading to FF 26 fixes it.


I'm on FF25– the framerate is fine and it's heating my apartment. Win win.




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

Search: