<i>Now, I haven't seen one line of Notch's code. I have no idea if it's well structured or spaghetti. I would make an educated guess and say that there's a lot of the basics in this project that have been ported over from the Minecraft or 0x10c code.</i><p>This last point is rather unlikely I think. I spent more than one or two weeks worth of time watching the various screencasts you can find on twitch.tv of Notch coding (I find it highly relaxing).<p>He usually writes everything from scratch. He doesn't copy & paste from other projects because he's experienced enough to pretty much to just write down the code he wants. He also hardly ever looks up documentation (besides using autocomplete for library methods). Also, he practically doesn't write any code comments in these toy projects.<p>He's extremely productive in my opinion, and can easily spend hours at a time coding. He does a lot of play testing and small gameplay fixes, even at early stages.<p>I've learned a whole lot just watching these videos. For instance that we don't have the same taste in music :-) But thank god for twitch.tv.
I don't want to criticise the blub essay too much because there were some valid points in there. But in fairness as soon as I read it I thought of John Carmack. He uses C++. Given that the perspective of the essay is Lisp then if C++ isn't a blub I don't know what is.<p><i>But John Carmack is really productive.</i><p>Also he doesn't use vi or emacs. He uses an IDE! He used it even before it had any bells or whistles at all. (He also uses Windows!)<p>So is it because he's a genius and he does it in spite of using blub? Or is it because:<p>"Peter Norvig here. [....] In terms of programming-in-the-large, at Google and elsewhere, I think that language choice is not as important as all the other choices: if you have the right overall architecture, the right team of programmers, the right development process that allows for rapid development with continuous improvement, then many languages will work for you; if you don't have those things you're in trouble regardless of your language choice."<p>As for Notch. He uses Java and wait for it..<p>Eclipse!
This is less a matter of only writing what's needed, than having written the same thing in lots of different variations, until you know the essence of the problem, and which are the most elegant paths to take.<p>A beginner in any discipline can't accomplish so much with so little effort. And it's wrong for a beginner to start out trying to do so, IMO; it's too easy to get discouraged if you think from the start that you should be able to do it with so little effort.<p>Writing your first game loop is a bit clunky, trying to fit it in with whatever framework / language / API is hosting you, and the sequencing / setup of everything. The tenth time, you know exactly what you want from an API, and have a good idea of what bits you need to build to get the effect you need. The hundredth time, you can look at a new API / framework and see the what it enables you to build most efficiently, and you can let that inform the design of what you create. Then, very little effort is needed. But that's only because you've already done the "really complicated system for loading meshes and shaders" or some equivalent in the past.<p>It's hard to get really efficient without having done things the inefficient way to begin with, if not earlier in the current project, then in previous projects.
I don't know why the blog poster is impressed. This is Notch's domain, writing code of this ilk. He's probably got over a decade or more dealing with games and graphics, the hard part is dealing with a API that's unfamiliar.<p>(I have ported familiar code from a Python script to a C# desktop application in similar time, the hard part was dealing with various .NET quirks.)
"Just saw a nerd flamewar debating if I'm a bad programmer. I'm self-taught, prefer working along, and program for fun. Don't learn from me."<p><a href="https://twitter.com/notch/status/408011329237049344" rel="nofollow">https://twitter.com/notch/status/408011329237049344</a><p>Gotta feel sorry for him, he didnt ask to be or not to be an idol, must be disconcerting to have a bunch of random strangers talking about how good you are.
I agree with his main point, but to be honest, on most of the games I've worked on I've had something playable very fast (1 or 2 weeks)... Its all the details beyond basic gameplay that take all the time and really make delivering a game hard.
Now I feel bad for slowing up my current pet project by getting bogged down writing polygon collision detection when axis aligned bounding boxes would have done for prototyping. (I'm not as quick as Notch!)
Dart syntax is very similar to Java in many respects, but simpler, so is it really any surprise that Notch would try out Dart, given his history with Java?<p>People like what's familiar. One of the reasons Java took off is because of it's similarity to other ALGOL type languages. C/C++ programmers could learn Java quickly for example.
You know, I read Hacker News less and less precisely because the posts are so damn negative. For those debating whether Notch is good or bad, I suggest reading every article from programming in the 21st century.[1]<p>[1] <a href="http://prog21.dadgum.com/archives.html" rel="nofollow">http://prog21.dadgum.com/archives.html</a>
>Don't build an engine that you will someday build a game on top of, because you will never get past step one.<p>I have several still-unfinished Game Maker apps which more or less died because I got so bogged down on the "engine". So yeah.
ahha, thanks for this! I'm really pleased to see Notch doing what I always thought he did best - messing around with wee projects and coming out with joyous little playthings.<p>Minecraft just got a little bigger than I imagine he was interested in playing with.