Live data from Hacker News

Notch, WebGL, Dart, and ramping up quickly

blog.tojicode.com

151–160 of 204 posts

Re: Notch, WebGL, Dart, and ramping up quickly

#151
post #126

Earlier quoted context omitted.

> to the point of being able to design his own toy CPU architecture Not sure what the CS curriculum is in other countries but back where I'm from they had basically taught us enough by the middle of the second year for one to be able to design something like DCPU16 using only that knowledge. In other words, it isn't that hard, especially when you're surrounded by examples. I would expect a second-year undergrad to be…

> Not sure what the CS curriculum is in other countries but back where I'm from they had basically taught us enough by the middle of the second year for one to be able to design something like DCPU16 using only that knowledge. Same with us. That doesn't mean that 90% of the graduates out there, that even have taken such as class, will be able to do it. Heck, a surprising majority of them (like 30% or more), even fail…

A majority of 30% of more?...

Re: Notch, WebGL, Dart, and ramping up quickly

#152

Earlier quoted context omitted.

I've also spent time examining Notch's coding habits. He is a terrible, terrible coder. Minecraft was (and still is) an unoptimized, poorly designed piece of crap when he handed it off to the rest of Mojang. The DCPU-16 he designed had many flaws and his assembler for it threw out assembly convention. He makes very basic mistakes very frequently and his core designs are flawed. I say this as someone who has spent a c…

If Notch was trying to write an API, then sure. If he's trying to write fun games (which he is) then you are dead wrong. Not all code is written for the same purposes.

Most code, even more for a sandbox game, is made to be modified. If it's not well made, it will be hard to modify it, you will add mistakes to mistakes and it will become harder to develop. The last Minecraft update is probably a sign of that (they remade everything if I understood correctly).

Terraria is currently a good example to compare with the situation of Minecraft. I don't know how both is made (except some stuff that my friends told me about Minecraft) but all I know is that most Terraria player made fun of Minecraft in the last big updates because they had SO MUCH content added when Minecraft had nearly nothing more.

If he's trying to write fun games that won't be updated, yeah, it's fine. Except that it's not the goal of Minecraft (at least I hope it's not...).

Re: Notch, WebGL, Dart, and ramping up quickly

#153

Earlier quoted context omitted.

> I guess someday when you're an old man, right before you close your eyes for the last time, you can imagine all that cool code that you wrote, and say what a great life you had. You were a hacker. I'm also a researcher, and I like to think that the ideas I discover will outlast me and will make a difference. Your implication is that those who think of software as a 'product' to be sold are making a difference, and…

>> I just wish there was a place for those of us who appreciate the craft to hang out. Hacker News, for a long time, was that place for me. I still don't get what you're talking about, you like to look at and admire code like it's art? Can you give an example of code that gives you satisfaction to just look at it regardless what it does?

This: http://fabiensanglard.net/rayTracing_back_of_business_card/i... is a perfect example of what you're asking for (for me of course).

Re: Notch, WebGL, Dart, and ramping up quickly

#154
post #71

Earlier quoted context omitted.

There are lots of problems with it. Here are a couple: He uses poor OpenGL practices, and sees poor performance as a result. He also designed the entire product in a way that makes it cumbersome to mod, without a consistent interface or a logical way for mods to work together. Modding Minecraft as a whole is one big hack. I'm more familiar with the networking side of things. The Minecraft networking protocol is a mes…

You don't seem to understand or have experience with how game code is written. It's not written to be "modified". It's not written with a specific modular outcome in mind. It's more often than not a one-off messy code that gets the job done, because that's the requirements and the pace of the industry. And, especially for something like Minecraft, it has to be original and even explore the problem space and ideas in…

I guess it's a balance between over and under-engineering. The thing is, more often that not the person coming along to do 'external modifications' to that code is actually you, a few months after you wrote it.

You can adopt some good coding practices that ensure that the code isn't a spaghetti mess that's hard to understand when you come back and look at it. That's different than designing a system to be pluggable from the start.

So, I haven't watched any of Notch's livecoding videos, but for those who have, what kind of bad is the code? Is it bad "this is a mess and I won't remember what these variables do in 3 months" or is it just simply designed to handle the most immediate case (coded well but not with plugins in mind)?

Re: Notch, WebGL, Dart, and ramping up quickly

#155
post #24

>Don't build an engine that you will someday build a game on top of, because you will never get past step one. I have several still-unfinished Game Maker apps which more or less died because I got so bogged down on the "engine". So yeah.

I've thought about that a lot as I also have the same tendency. What I've concluded (for me at least) is that it's just EASIER to get started writing an engine than to write a good game, so you end up working on the engine out of intellectual curiosity and because it's the path of least resistance.

(I've never really gotten far writing a 'from-scratch' engine here but I'm also thinking of things like integrating a scripting system into an existing engine, which is something I've done before).

With an engine, you don't start with such a nebulous spec. You know, for example, the various pieces that your engine will need and it's easy to get started. You can say "well I need an asset importer", "I need to integrate a scripting system for gameplay", "I need some kind of rendering pipeline", etc. These are generally well-defined things.

With a game, well, what is there? You start off with the question "what is a fun game idea?" but in comparison it's so free-range. The ideas of where to head next just don't come as easily. Not to mention a lot of the non-programmer things that need doing - drawing the graphics, writing the music, writing the dialog if appropriate, etc. These can be intimidating things to attempt to do.

Re: Notch, WebGL, Dart, and ramping up quickly

#156

Earlier quoted context omitted.

Agreed. A programmer maintaining a new project is going to feel frustrated when the application cannot be easily extended in a way that they expect, but the original author should be forgiven for not predicting every possible future permutation of their existing code base. The best design decision might seem obvious from the maintainer's perspective, but given 100 different maintainers, you'll end up with 200 differe…

Though there are some good points here, my experience has been that this "just get it done" above all else principle has sunk just as many projects as it has launched. Getting it done is a bare necessity of a good programmer, but what separates the mediocre programmer from a good programmer is whether they get it done in a more maintainable fashion. It is completely ridiculous to say as long as one can get a product…

I didn't say above all else, but I take your point. Of course, this is a balancing act, and I suspect we're both facing some selection bias, but I have to disagree that creating maintainable code is necessary for being described as a good programmer. At the end of the day, all programs are maintainable, as long as the source can be read and understood by a programmer. There is a huge advantage to having a well designed application structure, but there is no replacement for an application that meets its functional specification.

Re: Notch, WebGL, Dart, and ramping up quickly

#157
post #19

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. 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 f…

I've also spent time examining Notch's coding habits. He is a terrible, terrible coder. Minecraft was (and still is) an unoptimized, poorly designed piece of crap when he handed it off to the rest of Mojang. The DCPU-16 he designed had many flaws and his assembler for it threw out assembly convention. He makes very basic mistakes very frequently and his core designs are flawed. I say this as someone who has spent a c…

Jonathon Blow had a great talk on the topic of programming indie games, http://the-witness.net/news/2011/06/how-to-program-independe... One part he mentions how when he was a more novice programmer and looking at the Doom1 source code he thought they made some horrible programming choices - but only once he actually started to try to make commercial products himself did he realize none of that mattered. When the goal is to make good products with very little resources (which is the defining aspect of being indie) being pragmatic is the most important thing.

what you would consider 'good code' wasn't Notch's goal, doesn't mean he isn't capable of it

Re: Notch, WebGL, Dart, and ramping up quickly

#159

Earlier quoted context omitted.

I've also spent time examining Notch's coding habits. He is a terrible, terrible coder. Minecraft was (and still is) an unoptimized, poorly designed piece of crap when he handed it off to the rest of Mojang. The DCPU-16 he designed had many flaws and his assembler for it threw out assembly convention. He makes very basic mistakes very frequently and his core designs are flawed. I say this as someone who has spent a c…

Notch is a very bad programmer I despise this sort of single-dimension haughty evaluation of programming "goodness": It is garbage, and is the dismissive grenades that a particular type of maintenance programmer tosses to feel better about themselves as they try to feed the family with sloppy seconds. I single out maintenance programmers because there is a stark difference between creating something out of nothing, a…

Well if we're singling out maintenance programmers, lets also talk about programmers who use "maintenance" as a dirty word. They tend to be the type to vomit out whatever immediately comes to their head and ship when it just barely works, with no thought or consideration for maintainability. Because, hey, they're going to move on to their next project anyway, and "getting things done" in the short term is far more important than little details making sure your project, and your business by extension, is sustainable in the long term. Thats someone else's' problem.

There is a middle area here, where one doesn't worry about perfect code, but still takes a moment to consider design. However, you don't hear that often on HN, because it loves a good "Such coding, so productive!" circle-jerk. The reality is that a lot of "get it done fast" programmers could use a maintenance project or two, and develop the habit of actually thinking about what they write.

But no, lets hate on maintenance programmers and people who want some thoughtfulness in their development. They're just not agile enough. eye roll

Re: Notch, WebGL, Dart, and ramping up quickly

#160

Earlier quoted context omitted.

Agreed. A programmer maintaining a new project is going to feel frustrated when the application cannot be easily extended in a way that they expect, but the original author should be forgiven for not predicting every possible future permutation of their existing code base. The best design decision might seem obvious from the maintainer's perspective, but given 100 different maintainers, you'll end up with 200 differe…

Though there are some good points here, my experience has been that this "just get it done" above all else principle has sunk just as many projects as it has launched. Getting it done is a bare necessity of a good programmer, but what separates the mediocre programmer from a good programmer is whether they get it done in a more maintainable fashion. It is completely ridiculous to say as long as one can get a product…

If you're looking for new opportunities I have openings on my team.
Post reply on HN