Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

My son is 12 y/o, and he's into Minecraft.

Yesterday he discovered the server mc.openredstone.org. He spent all day yesterday and about one hour today, and he ended up building a 4-bit adder.

On this server players learn how to build logic gates, and mix them so they eventually build CPUs. It's fully gamified, so beginners are called "students" and more advanced players are called "builders". To become a "builder" you need to pass some trials. The "builders" probably have their own challenges (not sure, my son is still a student), in any case, they behave like teachers. So a student will find a builder who will give them instructions, and guide them through more and more complex designs.

So, yesterday my son had no idea what XOR or NAND is, and today he already built a 4-bit adder, and has dreams of building an ALU.

I'm quite excited to be honest. By the way, I'm not in any way connected with whomever put together this Minecraft server. I don't even think it's a for-profit thing, as far as I can tell, it's fully non-profit.



My kid has been into Minecraft for years, even before he had permission to play videogames. This year (he's 9) he started making 3d models and textures with Blockbench, and added them into his MCreator mod. It's a great gateway to learn stuff.


I've been programming for 15 years and had to google what NAND was. Had a sense of XOR


To be fair, AND, OR and NOT are enough to compute any function, and you can make all the other operators out of a combination of those three. For example A XOR B is just (A OR B) AND (NOT (A AND B)). Knowing things beyond AND, OR or NOT is useful, but not strictly necessary. XOR has useful properties though: with random inputs you get TRUE 50% of the time, allowing you to chain it without trending to 0 or 1; also it's the opposite of bitwise equality.

The others aren't that interesting if you aren't dealing with hardware, and their function is obvious if you know the naming convention.


Nah, all you need are nand gates. Everything else can be implemented from those.


Yeah, similarly in mathematics they often like to build everything up from ‘implies’ where the rule is implies(a,b) = or(not(a), b) = nand(a,nand(b, b)).


You only need one of {AND, OR} too.

((a or b) is (not ((not a) and (not b))), and vice versa.)


You would be surprised how much more relevant info programmers miss...

Example, most programmers I know have no idea when a variable gets allocated on the stack and when it's on the heap.

Let's not talk about how many dont even know what a (stack overflow)[https://en.m.wikipedia.org/wiki/Stack_buffer_overflow] is...


I remember being shocked to discover that a recent CS grad could not implement a factorial function using recursion. I can understand why you wouldn’t want to do that, but to not be able to do it?


a lot of CS undergrads compress out recursion knowledge. They learn that most recursion is best skipped in favor of iteration/dp, and they learn that they should implement things efficiently.

It’s possible the undergrad assumed you were referring to an efficient recursive algorithm or simply forgot most recursion.


No, I was quite explicit, and seriously, is it really that hard to write something along the lines of

    if (i<=1) 
       return i;
    else
       return factorial(i-1)*i;
It wasn't meant to be a trick or trap, it was the simplest recursive function I could think of and it’s not like I was asking him to implement a stack.


Heh, I just did the DS+A section of a Faang interview, and got the time and space complexity of an optimal solution more or less correct, as well as most of a recursive binary search implementation, but not quite there. I stumble with recursion because syntactically it's something you either have to use a lot or deliberately practice to have a keen sense of return values imo.

Probably won't get an offer because of that. Do I feel like as a frontend engineer I really need that knowledge? Not really. I could work it out for work purposes if I needed to tho. I'd be practicing it just to pass interviews.


I'd venture 95% of JS and Python devs don't even know what the stack is. They might have some vague understanding of a reference type vs. a value type, but that's probably it. Even in something like C# or Java I'd guess it's less than half that know what they are.


Diving into reverse engineering taught me just how little I know about assembly/call conventions and such. But it is highly educational.


If you want to learn more about logic gates, you might like the book "Bebop to the Boolean Boogie". It's aimed at kids but someone with a CS background could fly through it pretty quickly.


All the Ns are just the opposites.


[flagged]


The truth is that you can be a successful computer software developer and not need to know much at all about how computers work. Or even how things like compilers work.

Some of us never even studied in a CS program - gasp!


It’s all layers of abstraction, right? While it’s good to have a basic understanding of how the whole stack works, it’s also a feature and a goal of those building the lower levels to enable others to operate at higher levels independent of that knowledge.

Taking this away from software for a second, I know a hell of a lot of people skilled in their professions that have no idea exactly how their cars work but they drive them just fine.


i also never studied CS but find it quite odd they didn't even stumble across them in 15 years


I've stumbled across and used them, but it never occurred to me to actually check what NAND stood for.


That's not something you should be so quick to tell people.


Oh come on! There are a lot of types of programming and most of them exist pretty far from logic gates. The previous poster probably understands the concepts from their work but doesn’t relate them to logic gates.


Ya that's basically what I meant. The concepts are arguably unavoidable if you've done enough.


Heh, roasted. I know you're being a bit facetious, but it's not like I haven't used them, but in terms of the acronyms and maybe actually using them as bitwise operations, it's something I've rarely needed in JS programming. If you aren't being facetious, then you might need to work on humility


Redstone is fun, and some people do amazing builds with it, but it gets tedious fast; like building your own computer from transistors - fun … once! :-) But Minecraft has an incredible amount of richness once you get into modding and command blocks (although it’s a shame that they don’t have a proper lua built in.) Speaking of which, there’s powder toy, which DOES have built in Lua.


Well, there's Minetest[1] if you want a voxel block game with Lua built in.

[1]: https://www.minetest.net


mazbe this could be to your sons liking?

https://nandgame.com/



[flagged]


Immediately jumping to this kind of thinking completely ruins the will for people to get involved with these kinds of initiatives.

OP didn't even hint that they thought this could be an issue but you did and now any discussion of people involved is tainted under the potential that they may be a pedophile.


IMO, much better to progressively teach your kids about safety (online and off) and to do your best to monitor/keep track of what's going on, and ensure you have good lines of communication open with your kids and have them know that they can come to you without reprisal...

than to try and keep them in a bubble and eliminate all possibility they could meet someone predatory.


A little bit. I keep an eye on what he’s doing there, which is quite easy, as he just won’t stop talking about it. It’s also an opportunity for me to teach him, but in a way that he finds exciting. If one day I had decided to teach him XOR or NAND, he would’ve found it very boring. This way, he comes to me with questions, and I can pick up a piece of paper and show him what a truth table is, and he soaks it up. He feels like he’s cheating a bit at the game, because he has a Dad who helps him on the side, but no one knows, so he progresses very quickly and everyone thinks he’s very smart.


What?




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

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

Search: