12 ms·
John Carmack's son's game in Racket
- Arjuna 11y ago"Now I get to show him how there is actually a cleaner 1000 line program hiding inside his 2000 line program." https://twitter.com/ID_AA_Carmack/status/635831064846594048 https://twitter.com/ID_AA_Carmack/status/635831064846594048
- Johnny_Brahms 11y agoAh! That constant realization. It is hard, but the "what now" feeling I get after polishing a small stupid sideproject of mine until there is really nothing left to do but adding features I don't need or want. I like to think it is teaching me good habits, but that is really not very comforting. This week I revisited my scheme automounter I have running on my raspberry pi that I wrote when I first learned scheme. I made the code half as long and made it not suck and now I am struggling with not starting an ever-growing project of replacing systemd with it...
- SSLy 11y agohttps://www.gnu.org/software/dmd/ https://www.gnu.org/software/dmd/
- Johnny_Brahms 11y agoBeautiful!
- txdv 11y ago"Welcome to programming. You suck."
- dang 11y agoPlease stop posting unsubstantive comments to Hacker News.
- pmelendez 11y agoI guess the apple doesn't fall far from the tree. Good job :)
- mcbuilder 11y agoIn the thread he mentions that his 10 year old is through Algebra II. That's definitely advanced for his age.
- btzll 11y agoThe son's favorite games don't include any games of his dad. That's quite funny.
- chrisdbaldwin 11y agoBut his dad is his dungeon master ;)
- chkuendig 11y agoMaybe he's not old enough yet to play any of his dad's games :)
- confiscate 11y agoWoah. Nice job Ryan It's pretty cool how he added squealing sounds when the FLY character dies. I died several times while being in Ghost mode. This game is hard! When I was 10 I was probably still reading choose-your-own-adventure paperback books. Ryan's already wrote his own game in a functional language. Nice job!
- myth_buster 11y agoDropping a newbie into Eclipse or MonoDevelop makes them feel like they are walking around in a byzantine museum, afraid to touch things, while DrRacket feels closer to old-school personal computers where you felt like you were in command of the machine. I think this is a very important observation. As with most things, it's extremely important to get in during the humble beginning stage and then tracing your way up to grok more complicated systems. Similar to the "first principle" approach.
- ChicagoBoy11 11y agoHow widespeard of a belief is this in the teaching community? I happen to completely agree with it, but I've also heard the opposite -- suggestions that dropping kids into professional coding environments would give them the feeling they were doing something "for real" and help motivate them. I feel that the cognitive load of these kinds of environments is so high, and the possibility to click something that breaks everything unexplainably so great, that introducing kids to programming using systems whose environment they could completely comprehend seemed like a no-brainer. Was wondering if there was evidence to this intution (or contrary to it). The school where I work at is incidentally piloting a intro to computer programming course that uses Blender and Python for completely green 10yr olds. I don't see this turning out well; how doesn't it just devolve into a CTRL-C/CTRL-V bonanza?
- johnchristopher 11y agoThe only evidence I have is that game for adults called `Word'. I strongly believe they would be much better players if they sticked to Wordpad for a year or two before switching to Word (they might then realize they don't need it 99.9999% of the time).
- ErikRogneby 11y agoI've switched to markdown for most of my personal stuff. In Word my typing content to formatting content was around 60/40. In markdown I format as I type and it's maybe 5% tops.
- hauget 11y agoMan I wish I'd had this kind of experiences when I was his age... WELL DONE to both father and son!
- ohitsdom 11y ago> I’m still taking a little heat from my wife for using an obscure language instead of something mainstream that is broadly used in industry That is hilarious.
- rgawdzik 11y agoSince his son is 10 years old, he'll most likely enter the professional industry in ~10 years. Maybe Racket will be a popular language by then.
- guiomie 11y agoI doubt he will need to know a popular language to get employment opportunities if he starts at 10.
- denim_chicken 11y agoI doubt he will need to know a popular language to get employment opportunities if he's the son of John Carmack.
- lern_too_spel 11y agoI doubt employment will ever matter to him if he's the son of John Carmack.
- cpach 11y agoWell, I guess even some rich kids might want to make their own fortune rather than living off their parents.
- lern_too_spel 11y agoMy point was that he's more likely to work for himself, whether for increasing his wealth or for some other goal, than care about how employable he is to somebody else.
- deleted 11y ago[deleted]
- curiousjorge 11y agohe's half korean! but wtf is Jumbly gook on his website
- ericfrederich 11y agoWhat a shame. When you unzip it, it looks like a Linux game made to run on Windows but where is the Linux version? libcairo-2.dll libeay32.dll libexpat-1.dll libffi-6.dll libfontconfig-1.dll libfreetype-6.dll libglib-2.0-0.dll libgmodule-2.0-0.dll libgobject-2.0-0.dll libgthread-2.0-0.dll libharfbuzz-0.dll libiconv-2.dll libintl-8.dll libjpeg-9.dll libpango-1.0-0.dll libpangocairo-1.0-0.dll libpangoft2-1.0-0.dll libpangowin32-1.0-0.dll libpixman-1-0.dll libpng16-16.dll ssleay32.dll zlib1.dll
- cwyers 11y agoYou're really complaining that a ten-year-old kid's toy video gaming product doesn't have a Linux port? That's what you're doing here?
- ericfrederich 11y agoNot really complaining about this specific game's lack of a port. More of a general complaint about software that leverages other open source software but cannot run on Linux. I've never used Racket, maybe it doesn't even run on Linux.
- soegaard 11y agoRacket programs runs on many platforms including Linux. In DrRacket you can choose the "Create Executable..." to package your Racket program with the files needed to run the program (without the user installing Racket). Since this is a just-for-fun project, they just made installers for Windows and OS X.
- ericfrederich 11y agoWhat are you saying, that a Linux port was a click away?
- soegaard 11y agoIf you happen to be on a Linux machine, yes. If you have, say, an Windows machine - you need a friend to make the executable.
- vivekian2 11y agoNice! A bit off-topic here, but still related I guess. I have a 1 year old daughter and I keep wondering what would be the right time to introduce her to computers and programming in the future? I have always thought that she should spend time reading books, playing in the backyard and lego before she delves into computers. Have any other programmer parents thought about this as well? Or any other experiences on how they introduced programming to their kids?
- beggi 11y agoI have a 2 year old and I'm not sure, but she's definitely not ready :) I think we're talking 4-5 year old at least to start introducing the concepts, then I'm guessing 7-9 to start doing some programming.
- Omnipresent 11y agoDefinitely agree with this. My 1 year old will simply sit on my laptop and bangaway at the keyboard.
- zeidrich 11y agoI have a 2 year old, and we play Minecraft, and I'd say we've started with 'concepts' already. Simple things, but things like make a switch that turns on and off a lamp or opens a door. Or simply building larger things out of smaller things. I mean programming is really a matter of logic and composition. Something like "This switch will turn off all of the lights, but these switches will turn on and off individual lights." is a sort of "If (mainswitch is on) then {lights settings is the same as its switch} else {light is off}" Apart from some pretty simple logic, it's really just composition. A turing machine is comprised of some really simple functions, and apart from that it's just a matter of understanding how to compose those into more complex ones, and understanding programming is just recognizing the processes of breaking down those complex compositions into simpler ones.
- bentcorner 11y agoI've tried introducing my son to Scratch (and one other language - it was a long time ago so I forget), and it was hard to keep him motivated without a meaningful sense of forward progress. A class provides better structure with an end goal in mind. We enrolled him in several "make a game" camps that I think he enjoyed more than open-ended exploration. These days, he takes CS courses in high school and enjoys them, I think getting them into programming at a young age is fine but not a necessary condition if you would like them to have it as a skill later in life. As a parent, I'd say to introduce them to many different sorts of experiences and indulge them if they show interest, and be willing to let them change their mind. Be interested in what they do.
- nickbauman 11y agoFRP notwithstanding, the comment about UIs is important in that OOP was originally developed around the needs of user interface components with their inherent "mutable state" and single-threadedness (ever find yourself needing to use two mice at once?)
- nfoz 11y ago> (ever find yourself needing to use two mice at once?) Yes, two-player competitive Lemmings on my Amiga 1000 was friggin awesome. Shame that PCs still haven't caught up.
- nickbauman 11y agoVery cool. And then technically BeOS was such a machine where two mice could go at it in the same UI.
- ajmurmann 11y agoI would love two nice for pair programming. Also for playing/making a first person shooter for two people where each player controls one arm/gun. A third player would control the legs and head. It would be amazing!
- thaumasiotes 11y ago> (ever find yourself needing to use two mice at once?) Yes. I tried to get that working in GNOME once, naively expecting that because it's trivially easy to state well-defined behavior for multiple mouse cursors, it must also be possible to have multiple mouse cursors. But no. I'm still bitter that this seemingly obvious concept seems to be so thoroughly precluded at very basic levels.
- saint_fiasco 11y agoSupposedly, it will work on Wayland. https://www.youtube.com/watch?v=WO2L_ihO_rI https://www.youtube.com/watch?v=WO2L_ihO_rI
- comex 11y ago
- dpcan 11y agoAwesome! My 11 year old son submitted his first LudumDare Jam game this morning. It's a Javascript / HTML5 clicker/incremental game (think Cookie Clicker) built on a game engine I created. He's been getting so much better at coding all summer long. I had to help a lot at first, but now he's implementing everything on his own, and only comes to me when he can't hunt down a bug - which 99.9% of the time is a missing end-quote, ) or } I'm not sure I want him to have a public website though with photos and an email address posted :/ I guess I'm not as trusting of... well... the entire world. Then again, maybe it's a good idea. I don't want him to leave the house at 18 and be surprised at how nasty the Internet can be.
- wishinghand 11y agoThinking back to my own learning curve, I'm not sure if a linter would be helpful or harmful. On the one hand, it makes him think about the little details, on the other hand, not having to think about it frees him up to move on to thinking about bigger things.
- agentultra 11y agoNot only John Carmack but Mathias Felleisen in one thread? How cool is that!? I had the same impressions as Carmack, I think, about the suitability of the DrRacket environment for young programmers. It's nice seeing that it can work for young, motivated programmers.
- bitwize 11y ago> DrRacket feels closer to old-school personal computers where you felt like you were in command of the machine. This motivates the design of my Scheme IDE, Glass Table [https://github.com/bitwize/glasstable https://github.com/bitwize/glasstable], which is modelled on old-school micro BASICs (notably from Microsoft). GT is implemented as a series of hooks into the REPL, which listen to all typed input for variable, procedure, or macro definitions and log them in a "workspace" which can then be saved as a Scheme file. Individual definitions in the workspace can then be edited with an inferior editor (or, if you are working from inside emacs, with emacsclient). Not to take anything away from DrRacket of course. Any programming tool that puts direct, immediate command of the machine at your fingertips is a good thing.
- jshap70 11y agoI love scheme, though at first I definitely thought I would hate it. The big issue that I have with it is the difference between interpreters and how things that work in Petite won't always work in Gambit.
- Axsuul 11y agoThat's great to see that John Carmack's son has a similar passion for programming as his father. However, what if his son turned out differently and didn't have it in his blood? Would John Carmack still pursue it?
- nemo1618 11y agoThat's a good question. Speaking from experience: I am a programmer like my father, but my older brother is not. My dad and I discuss programming all the time, but he doesn't take much interest in my brother's hobbies. For what it's worth, he tried to steer me towards programming from a young age, but it never really stuck; we never built anything interesting. I did, however, write some simple games for my TI-83+ calculator, and finally I rediscovered serious programming in college. My guess is that Ryan is primarily interested in programming as a means of making games. And since his father basically wrote the book on that topic, he's in a perfect position to nurture that interest. If John instead wrote, say, the world's best accounting software, I think Ryan would be more likely to pursue a different hobby.
- swalsh 11y agoAt 10, it may not be a passion for programming as much as a passion to do something with his father. I think back to my past, my dad is obsessed with baseball statistics. He would spend hours studying everything baseball... honestly I don't get why he likes it, but it's where he spent ALL his time. I was also interested in computers and video games, he found no value in either so he would never participate. If I wanted to spend time with him (and every boy does) i'd have to go to baseball games with him. So for several years I did. Honestly though, I hate baseball.
- Osiris 11y agoI have never done any game development and my primary programming experience for the last few years has been JavaScript. My 10 year old daughter has a lot of ideas for games, but since I have no game programming experience I literally have no idea where to start with her. Does anyone have any suggestions for a good framework / toolset to get started for a simple game?
- krapp 11y agoGame Maker[0] has a pretty intuitive UI and comes with a very basic (albeit proprietary) scripting language, so making 2d games at least is quite simple. Although the scripting language may be too simple for more than a rudimentary introduction to programming languages. Better than Alice though. Construct 2[1] is a game framework for HTML5 and javascript, and Unity[2] has tutorials[2a] for basic games and it uses javascript, C# and "boo" (basically python) for scripting. [0] http://www.yoyogames.com/studio http://www.yoyogames.com/studio [1] https://www.scirra.com/construct2 https://www.scirra.com/construct2 [2] https://unity3d.com/ https://unity3d.com/ [2a] for versions prior to 5 - I don't know how many tutorials for the current version of Unity there are - you may want to check first and consider an older version.
- Tyr42 11y agohttps://processing.org/ https://processing.org/ Processing seems pretty good. I'm teaching my younger brother with PyGame and Python, and that's ok, but not perfect.
- Gracana 11y agoI'm a big fan of processing for learning. It does just the sort of things you want out of the box, it comes with lots of examples, there are books available on it, the time to get set up and running your own programs is practically nil, and it runs the same way regardless of the platform you put it on. All great stuff for a "toy."
- tremendo 11y agoat 10 his son is likely in 5th grade or so, knowing Racket is going to be handy for Math homework, especially fractions.
- technomancy 11y agoLater in the thread he says his son is working through Algebra II, so I imagine it will be useful, but not quite in the way you've described.
- js4win 11y agoVery impressive Ryan! This kid is going places :)
- cicero 11y agoI am beginning my second time of teaching out of HtDP/2e at the high school level. My experience last time I taught it (3 years ago) was similar to what Carmack describes. There are many advantages to the DrRacket environment and the Racket language (or BSL teaching language) for teaching beginners, and I think HtDP teaches some valuable design techniques and disciplines. I also felt that the approach to drawing taught in HtDP became awkward as things got complicated, so I appreciate some of the advice given in the thread. I may try some of these things this semester. I may also try jumping out of BSL into full Racket at some point so that we can use some more advanced features.
- tomphoolery 11y agoI’m still taking a little heat from my wife for using an obscure language instead of something mainstream that is broadly used in industry, That's adorable. Of course John Carmack's wife would be ribbing him about what programming language he uses.
- malkia 11y ago] 10 PRINT "HELLO" ] RUN It was that easy from my Apple ][/c And this was pretty much fun ] CALL -151 * T
- tbrock 11y agoFrom his web page: "My new game is about a character name Barb B. Queue" It's enough that he's an amazing 10 year old programmer but he's also funny!
- drcode 11y agoFor anyone interested in yet another opinion, I've had good experiences with my young daughter using the Wonder Workshop robot as an early programming introduction. It has pretty solid hardware and relatively flexible programability: https://www.makewonder.com/ https://www.makewonder.com/
- fernly 11y agoOK, grumpy person here. Awesome work for a young person, but. I launched the mac version and pressed enter. Just as I was forming the thought, oh, flappy bird, the flying thing went down into barrier. My macbook emitted a very loud and unpleasant sound. Then I decided I didn't want to play, so hit cmd-q. Nothing. cmd-q cmd-q. Nothing. Ctrl-click on the dock icon, oddly, "force quit" isn't there. Three-finger salute, select program, force-quit. Delete.
- technomancy 11y agoHopefully he will eventually share the source code. I showed it to my son who was very interested to see how it was made. We go back and forth between Racket and Lua Love; he thinks Love is easier, but seeing examples of Racket that other kids had made might encourage him to explore it further. I would love that since Racket is obviously a much better language than Lua for learning, but Love is still a bit more approachable for graphics than Racket's universe library.
- Kiro 11y ago> but I’m not sure that the functional drawing paradigm ever really sank in while my son was working with it, rather it felt like you just drew everything backwards with missing parenthesis at the end Can someone explain this? How are things drawn in functional programming?
- zurn 11y agoThis is the Racket library in question for context, it provides a framework for doing world simulation in a FP way. http://docs.racket-lang.org/teachpack/2htdpuniverse.html http://docs.racket-lang.org/teachpack/2htdpuniverse.html
- bcantrill 11y agoI imagine this sentiment is going to be very unpopular here, but as a parent of a ten-year-old, I find this kind of fetishizing of the accomplishments of ten-year-olds to be disturbing. I think it's great that Carmack's son has taken an interest in programming at such a young age, but why need this be so public? Not only does this do his son a disservice (who, despite his precociousness, is not old enough to understand how cruel the internet can be -- or how long its memory), it also does other children a disservice by implicitly encouraging absurdly aspirational parenting. Witness this comment, found in this HN discussion: I am so jealous when I hear these damn stories. Another 5 or more years to go. Does anyone have a book about the method they develop? I bet that, following it to the T or not, it would sell here with the HN crowd. It's great to inspire your kids to program (computational thinking is literacy, after all), but it's deeply misguided to believe that normal ten-year-olds exhibit the kind of intense interest that Carmack's son seems to display here -- and indeed, believing that a "method" can yield this kind of interest in a child can result in the kind of paternal (or maternal) disappointment that does lasting emotional harm. Good on Carmack's son for showing such interest and talent, but let's encourage that to be fostered relatively privately -- and thereby allow him to be what he is first and foremost: a ten-year-old kid.
- toothbrush 11y agoI am glad you have vocalised this sentiment. I have been feeling vaguely uneasy about this whole thread, and honestly i had put it down to plain jealousy (“if only my childhood environment hadn't consisted of accountant parents but programmers”). I think it's more than that though, this morning i already had an offline chat with someone about it, and came to the conclusion that it was perhaps setting up unreasonable expectations for those kids who don't have rockstar and/or programmer parents. You've hit the nail on the head, in my humble opinion. Let the kid decide. Maybe he wants to become an astronaut instead, or a penniless country musician. We'll see, all in good time.
- amag 11y agoI discovered programming as a ten year old because I grew tired of the games I had for my C64. After all C64 BASIC was there all along, behind the scenes, just waiting for me. Today when kids grow tired of the games they have, they open the App Store and download another one. There's no programming language "behind the scenes" waiting for to be discovered by a bored ten year old. I totally agree that kids should decide and that as parents we should never force them to fulfill our dreams. But at the same time as adults we still need to show them what options there are, guide them through obstacles and push them a little when it's boring or scary in order to make them grow. Far too often today I see parents (myself no exception though I try no to) treat their children as small adults, as if they already possess all the knowledge and skill to make informed decisions about what's best for them. When I take the time to really listen to my kids it always strikes me how much their view of the world differs from mine. It's easy to think that a certain event we experience together has the same impact on us, but a lot of the things I consider trivial has a lasting effect on my kids. I guess what I want to say is that it's easy to say "if the kid wants to program, she will program" but it doesn't always work that way if she doesn't know that you can program.
- sytelus 11y agoSo we are hearing about lot of 6-8 year old writing code. I'm trying to figure out what is normal and what are edge cases. I'm wondering... What is the age they start reading proficiently? What is the age they start writing effortlessly? What is the edge they can read a web manual for, say, Racket and actually understand it?
- argklm 11y agoAs someone that volunteer to share computer literacy to kids, I can assure you that kids are underestimated by a big margin. I saw a lot of kids adsorbing concepts more easily than some adults. I'm not obviously talking about Monads; but the concepts are still fundamental to programming. Kids can get sufficient results to do something on their own and to really enjoy it. The thing that I see most, and in this activity, the thing that displease me most is: parents that work as programmers and they pretend that their children must be programmers too. They bring them because they tried in all ways to make them interested and didn't succeed. One parent, a programmer, was worried with the quality of the teaching and wanted to be present a day. After the end of the meeting(I like to call them meeting. Kids see school as prison rather than joy, and I don't want to make them feel uneasy) the programmer seemed pleased of the experience and made a praise about the kids being happy and interested. He told me that he would send his son, in the hope that this time he would listen and asked about the price. I told him the truth and true nature of that meeting: they are all kids that really wanted it: When I am the new batch I usually try to talk of other things and wait something that makes me happy: a kid asking me when we begin. This is the clear sign that there is something in the room that is happy to learn. The programmer looked a bit puzzled and I told him my opinion. Are you sure that this is what your son want? If you imprison your son in something, he will totally hate it, wasting an activity that he could have enjoyed at a later time. I finished the speech saying that I'm doing it for free. My reward is making them have a good time and hopefully, giving them a better future. Kids in front of other people can have problems and feel anxiety. So, Carmack, I'm worried if having an entry bar of all the Internet watching your son, could be a burden too high. Are we sure that this is what he wants? Is he ready to compete? Kids are precious, they will be the mark of our efforts and their mirror. I think that your son should enjoy as much as he can what he is doing and be kept away from the Internet consumerism for now ... Have a nice day.