5 ms·
As a science teacher and former software dev, I find this totally cute, and I understand exactly why the creator chose to make it a physical card game. That sa
by SamBam 9mo ago
As a science teacher and former software dev, I find this totally cute, and I understand exactly why the creator chose to make it a physical card game.
That said, I do think the translation into a physical card game means that kids aren't getting the experimentation and near-instant feedback that they'd be getting if they were doing this digitally.
In order for a kid to "win," they either have to already know, or explicitly be told using words, what all of the commands do. Then they have to hear the parent analyze their solution, and tell them where they went wrong. Picture, however, a different game, played online: A kid has no idea what "sort" does, but when they link the "sort" command to a blob of text, all the lines are sorted in order. Now no one has told them what this command does, but they've discovered it. By playing the role of a scientist discovering these commands, they might actually gain an intuitive understanding of them.
I'm thinking of the board game "robot turtle," where kids needed to create a "program" of commands to move a turtle to a goal. When they did that, they had near-instantaneous feedback: the parent moved the turtle. If the kid mixed up their left with the robot's left, the failure was obvious. But if the game has been re-made so that there was no board, and the parent and kid just needed to talk about whether the turtle would actually end up seven paces forward and three paces to the left -- i.e. doing it all verbally -- it wouldn't have been nearly as powerful.
So I'm not raining on this, I can see this as very cool. But I am having a hard time imagining it's the best way to learn to pipe together commands.
- d-us-vb 9mo agoAs a young Linux user I always hated the experimentation aspect because usually it meant just straight up getting the command wrong 5 times before trying to read the man page, thinking I understood what the man page meant, trying again another 5 times and then giving up. This idea of experimenting and getting instant feedback is just survivorship bias for a certain type of person, not “the way we ought to teach Unix shell” This view is corroborated by the research summarized and presented in the programmer’s brain by Felienne Hermans.
- nomadygnt 9mo agoMaybe I am wrong about this but I think a lot of recent research has shown that trial and error is a great way to learn almost everything. Even just making an educated guess, even if it is completely wrong, before learning something makes it much more likely that you remember and understand the thing that you learn. It’s a painful and time-consuming way to learn. But very effective. Maybe Linux commands is a little different but I kinda doubt it. Errors and feedback are the way to learn, as long as you can endure the pain of getting to the correct result.
- JamesTRexx 9mo agoTrial and error was the root of what became my IT career. I became curious about what each executable did from DOS and with that did my first tweaking of autoexec.bat and config.sys to maximise memory. Years later I was the only one who could investigate network (and some other) problems in Windows via the command line while I was the junior of the team. Ended up being the driver of several new ways of working for the department and company.
- raddan 9mo agoDitto. I found that people whose attitude was “let’s just try it” tended to be a lot more capable and effective. Nevertheless the prevailing wisdom when I was in IT was that if you had a problem that didn’t have an obvious solution, you had to purchase the solution.
- lotu 9mo agoSounds very profitable for whoever is selling solutions, I wonder if perhaps they also provide wisdom as a loss leader.
- cheesecakegood 9mo agoNeeds qualification. Research shows trial and error learning is very durable, but it’s not the most time efficient (in fact it’s relatively poor, usually, on that front). The two concepts are a bit different. Yes, trial and error engages more of the brain and provides a degree of difficulty that can sometimes be helpful in making the concepts sticky, but well designed teaching coupled with meaningful and appropriately difficult retrieval and practice is better on most axes. When possible… good teaching often needs refinement. And you’d be surprised how many educators know very little about the neuroscience of learning!
- shakna 9mo agoI'd add nuance to Hermans' work. Its not all experiment blind, but also not feedback-less. They advocate for "direct instruction", not just rote learning. > As that is not a surprise, since research keeps showing that direct instruction—explanation followed by a lot of focused practice—works well. Note the "lot of focused practice". [0] https://www.felienne.com/archives/6150 https://www.felienne.com/archives/6150
- raddan 9mo agoThere’s a pretty rich literature around this style of pedagogy going back for decades and it is certainly not a new idea. My preferred formulation is Vygotsky’s “zone of proximal development” [1], which is the set of activities that a student can do with assistance from a teacher but not on their own. Keeping a student in the ZPD is pretty easy in a one-on-one setting, and can be done informally, but it is much harder when teaching a group of students (like a class). The. Latter requires a lot more planning, and often leans on tricks like “scaffolded” assignments that let the more advanced students zoom ahead while still providing support to students with a more rudimentary understanding. Direct instruction sounds similar but in my reading I think the emphasis is more on small, clearly defined tasks. Clarity is always good, but I am not sure that I agree that smallness is. There are times, particularly when students are confused, that little steps are important. But it is also easy for students to lose sight of the goals when they are asked to do countless little steps. I largely tuned out during my elementary school years because class seemed to be entirely about pointless minutiae. By contrast, project work is often highly motivational for students, especially when projects align with student interests. A good project keeps a student directly in their ZPD, because when they need your help, they ask. Lessons that normally need a lot of motivation to keep students interested just arise naturally. [1] https://en.wikipedia.org/wiki/Zone_of_proximal_development https://en.wikipedia.org/wiki/Zone_of_proximal_development
- robocat 9mo ago> usually it meant just straight up getting the command wrong 5 times before trying to read the man page, thinking I understood what the man page meant, trying again another 5 times I think that is a developer's superpower. The poncy term for it is grit. I tell others that the secret to leaning computers is frustration and persistence. > and then giving up. Knowing when to stop or change direction is hard. I've definitely wasted years of work failing to solve something that I eventually had to give up on (most memorably depending on nasty Microsoft products). But I've also been paid very nicely because I've solved problems that others struggled with. And I was paid for the failures too.
- snowmobile 9mo agoI consider myself a fairly good developer, and I think that's in large part due to knowing, "doing this should be possible, and the reason it's not working right now is just due to stupidity (my own or the developer of whatever I'm using's)". But yes, in a few (thankfully rare) cases it just plain isn't practically possible. Even then, I've given up on problems just to have it nagging in the back of my mind and then randomly coming up with a beautifully simple solution weeks later. That's sort of the essence of what I like about programming (and math too).
- jama211 9mo agoGrit is something you gain once you already have an intrinsic motivation, such as already having a belief you can do this. Something has to spark in people that they’re capable in the first place.
- godelski 9mo agoPeople forget that struggling is part of the learning process. It's great that people want to make things easier to learn, but struggling is essential. You want to ensure that people don't struggle so much they get stuck (one extreme), but you don't want to make it so easy people don't struggle at all (the other extreme). There's balance, but that balance requires struggling.
- 9mo ago
- inopinatus 9mo agoI'm trying to remember being a young Unix user but it was four decades ago, so the details become hazy. Nevertheless the proper go-to after the manpage fails to clarify matters is the same as it ever was, that is, one reads the source code, if you have it, and this is easier today than ever.
- vacuity 9mo agoI'd like to add that, while anything will have some learning friction, learning the Unix CLI is rather unnecessarily painful.
- raddan 9mo agoI’m curious: what do you see as unnecessary about the CLI? Or, to put it another way, in what way should the CLI be changed so that the only remaining difficulties are the necessary ones?
- vacuity 9mo agoI'm not qualified to give a complete answer, but I think two main issues are the proliferation of flags in standard tools (e.g. ls has a lot of flags for sorting behavior) and the extreme preference for plain text. Text is very useful, but a lot of semantic information gets discarded. Representing structured data is painful, stdin/stdout/stderr are all in one place, window resizing makes a mess sometimes (even "write at end of line" isn't given), and so on. I'm definitely not qualified to describe just how to fix these issues, though.
- raddan 9mo agoI think you hit the nail on the head. Plaintext is universal in a way that nothing else really is. Outputting structured data means that consumers would have to process structured data. That definitely raises the difficulty of the programming. It’s not an easy problem, but I also do not have any good ideas.
- trashb 9mo agoI actually feel like the Unix/Gnu CLI is quite nice (yes I'm used to it already). I feel like it provides a lot of consistency through community standardization and standardization through POSIX and libraries. For example it's quite difficult to find a program that breaks the "-o --option" long/short options and if you do the "man command" or "info command" pages will tell you how to use a program. In my experience this is quite different on for example Windows. Learning it is a step but once you've learned the basics you can read 90% of the commands.
- pmontra 9mo agoGetting a pipeline wrong 5 times is common. The normal process is: write a couple of steps, right output! Add a grep, bad output! Fix it, again, again, right output! Add cut -bM-N, adjust the boundaries a few times. Sort the output. Oops, sort -n
- dhosek 9mo agoI’m wondering whether it could be played with a Unix box connected to the big TV in the living room so that with each command added to the pipe you can see the result. That’s my instinct for what to do with this, although it does feel like it is a play once kind of game.
- williamcotton 9mo agoWould this be something along those lines? https://github.com/williamcotton/guish https://github.com/williamcotton/guish It's a GUI for constructing and executing Unix pipelines and it shows the output of each step in the pipeline.
- jackdoe 9mo ago> But I am having a hard time imagining it's the best way to learn to pipe together commands. To be honest, it is very strange how hard it is to teach programming concepts, for some reason almost all humans use computers but only 0.1% or so can program them. I am not sure we have the 'best way' to teach anything computer related. People develop world model for physics quite early, they know they can pull with a rope but cant push with a rope. And they get intuition, things that are thrown up, go down, and they can transfer this intuition in the math, because math is real. For some reason its hard to do that with code. People keep trying to push with a rope, even after studying for many years. PS: I am trying to teach her neural networks now and am working on this RNN board game https://punkx.org/projekt0/book/part2/rnn.html https://punkx.org/projekt0/book/part2/rnn.html to fight the "square" dragon. I want her to develop good world model for neural networks, so that she understands what chatgpt is. I just keep experimenting, sometimes things click, sometimes not.
- bc569a80a344f9c 9mo ago> almost all humans use computers but only 0.1% or so can program them. This is nitpicking but I was curious: there are 4.4 million software developers in the US (https://www.griddynamics.com/blog/number-software-developers-world https://www.griddynamics.com/blog/number-software-developers...). The population is 340 million, 0.1% would be 340,000. You’re off by over one order of magnitude.
- smj-edison 9mo ago
- derrida 9mo agohey, I just copy and pasted your comment into an agent I hope you don't mind. one shot result: https://wonderful.exe.xyz https://wonderful.exe.xyz you could do the same, or I could give you access to this one if you want.
- d--b 9mo agoOne could make an app that actually scans the cards from a distance and computes the stuff. Brett Victor style.