Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: The Unix Pipe Card Game – teach kids basic Unix commands (punkx.org)
216 points by throwaway47292 on Oct 16, 2022 | hide | past | favorite | 59 comments



In the example.jpg image, we can see an example with sort -R "to shuffle the input (random sort)."

But sort -R does not randomise input if one is using NetBSD.

https://man.netbsd.org/sort.1

A POSIX-like sort has no -R option. See, .e.g, Plan9 sort or early versions of FreeBSD or OpenBSD. Early Linux did not have this non-POSIX option either. For example, look at Debian, RedHat, SuSE and other distributions in the mid-2000's. HP-UX, Minix, BusyBox, and so on have no -R option.

A different approach to teaching "basic" UNIX commands would be to focus on the portability and "lowest common denominator" and ignore non-ubiquitous options like -R. Ask the student what sequences of commands, i.e., scripts, will work on all UNIX/UNIX-like OS regardless of the age of system. From that "basic" foundation, one can then learn how the programs have evolved to become larger and more complicated (a side lesson about bloat) and all the OS-specific differences between them.


Is `shuf` a basic command on *BSD (or Unix)?



Looks a bit simulator to the online Unix Game, which I really like:

https://www.unixgame.io/unix50


This is amazing! Thanks for sharing, I will try it with my daughter.



The photo at the bottom appears to be some small ergonomic keyboard (maybe an Atreus?) built into stained wood along with a screen. Perhaps it is a cyberdeck? Curious to know more.


Ah! I didnt mean to show it off, just my desk is a mess..

Yea its a cyberdeck I am building with hardwired Atreus directly connected to pi zero gpios and using libuinput to make a software keyboard, which works amazing btw.

I am making it to init directly into getty without login (with busybox init), so it boots directly in usable /bin/bash in only 2-3 seconds, and all the available programs are simple python programs (ls, cp, mv, a basic line editor, touchtyping game, hangman etc) and the keyboard itself is a simple python program that basically scans the matrix and emits events to uinput. The frame is from plywood.

And I am trying to make it like a 'scavenger hunt' experience for my daughter, I will put special codes in various places in the programs or on the file system with different difficulty, and I can challenge her to find them.

The goal is to have < 50$ scavenger hunt computer kit (thats why I cant afford teensy or something)

This is just the prototype to see how it feels to write code using line editor, and also to test the effect of thinking of the keyboard as a program with a nested for loop, on her thinking about 'what happens when you press a key'

    for r in rows:
        send(r, 1)
        for c in cols:
             v = read(c)
             if v == 1:
                  # (r,c) is pressed
        send(r, 0)

I just uploaded those to show you how it looks, but again, its just to test the software and the screens size:

https://github.com/jackdoe/programming-for-kids/blob/master/... https://github.com/jackdoe/programming-for-kids/blob/master/...


>And I am trying to make it like a 'scavenger hunt' experience for my daughter, I will put special codes in various places in the programs or on the file system with different difficulty, and I can challenge her to find them.

This is brilliant. I really admire the lengths you go to so that your kids can be engaged. Sounds like this has the potential to be quite fun and exciting.


I really enjoy finding new ways to introduce her into how computers think, in the same time, I have to constantly level up my game, as I am competing with tiktok, instagram, youtube, netflix.. etc. So I have to come up with new incentives, and more and more interesting projects, e.g. I printed a tshirt with some of her code, or made a huge poster with one of the turtle images she made (https://github.com/jackdoe/programming-for-kids/blob/master/...), or sometimes its pure bribery, like buying robux.

When I was her age, I spent hours just reading random man pages, pretty much because cartoon network was showing the same episode of dexter's laboratory for the 25th time.

The kids her age are growing in a strange era, programs will control their life, wether they want it or not, so it will be great if they can debug :)


This brings me back to when I was ~5 and my grandpa built together with me kits for a simple light bulb, an electromagnet, and a simple crystal radio. It wasn't enough to get me consistently interested, but it put "dots" into my mind that I could later "connect" when I was older. The experience was invaluable.


Is there any way you could/would change the license from ND to something else allowing derivatives? I would love to see translations of these!


Sorry, I copied ND and NC by mistake, I just pushed https://github.com/jackdoe/programming-for-kids/commit/8d14a... to move to CC-BY-4.0 (removing NC and NC)


I would love a Kickstarter (or something similar) with this. Would totally buy a nice set.


I reformatted and uploaded the game to a US-based print on demand game publisher. If you can't print your own and need a copy before the author has them back in stock or don't want to ship from the UK, here you go:

https://www.thegamecrafter.com/games/the-unix-pipe-card-game

Full disclosure, I will make about a dollar from each purchase.


There's a typo on the instructions page. The example has 'rises' but the rest of the explanation uses 'raises'

I love this as a concept, though.

I think if I were to expand this I'd maybe have pre-defined strings for the greps, cards with results on, number pre-selected etc. This makes it more of a 'find the card' or 'matching' game than a problem solving game, but it would make it more kids-card-gamey


Oh! Because of the slow and costly printing process I read it like 50 times, and yet..

Its amazing how your brain just sees what it wants to see.


Nice. Was trying to print out the programming set for my son, but its too hard to read.

Can anyone get these to printout larger, and where the grey comments are less washed out?


You can just generate the tiffs yourself with different colors, border_color is the color of the border and the comments https://github.com/jackdoe/programming-for-kids/blob/8d14a24...

(if you are talking about the programming time game)


Is the creator thinking of doing another printing? If not can someone recommend a service that will print a high quality card deck given the PDF?


I print with some professional card printing companies, the pricing goes something like 10 decks, 500$, 50 decks 800$, 100 decks 1200$, and 300 decks 1500$ and then it continues to drop

Since I printed only 50, I think the price is too high, so I would rather to give them for free than to charge unreasonable price. If you are willing to pay the shipping cost send me an email to b0000@fastmail.com, I still have few left.


You can get the 50 deck rate for even a single deck (and there are often coupon codes) at https://www.printerstudio.com/unique-ideas/blank-playing-car... or https://www.artscow.com/photo-gifts/playingcards

Also, if you're trying to give this away, they both allow you to share a link to your design so other people can buy the cards direct.

----

edit: the sites may seem cheezy, but they're probably responsible for 95% of prototype card decks that professional designers print.

For other excellent non-Chinese, Buy America options, there are https://www.printplaygames.com/product-category/prototypes/c... , https://www.thegamecrafter.com/make/pricing#Cards and https://www.drivethrucards.com/joincards.php


For those kind of costs, I'd print 300 for $1500. That's just $5 a piece. Sell them for $10, and you can afford to give away half of them.

I think this project would make a great Kickstarter. I don't think it would be hard to get 300 people interested in backing this. Shipping is probably going to be the biggest issue; find people on other continents to help you distribute it there. That can save a lot of money.


Maybe you could run all the decks as a kit on kickstarter?

I would love to buy all of them as a set, and I believe a lot of others would as well.


I am halfway done with the C deck, as we are switching to C soon, and I will setup a kickstarter after, should be done around December.

I want her to know why x[3] and 3[x] are the same thing.

    int x[3];
    2[x] = 5;

    printf("%d %d\n", 2[x], x[2])
A lot of people struggle with

    x = 5
    y = 6

    y = x

    x = 7
    print(y)
and

    x = [1,2]
    y = [3,4]

    y = x

    x.append(5)
    print(y)
There is something magical in understanding how the computer uses its memory, its almost as if you walk out of a mist.

I think it will be very valuable to have a set of 4 decks: python, machine code, unix pipes and C, so that the decks compliment each other. In the machine code deck there are few cards that have pointers (e.g. https://punkx.org/4917/play.html#43), and they can be used to help with the C deck for example.

Then its LISP.


Sounds awesome! I’ll pitch buying a bunch of these for work as well. Extremely good idea!


A cheap laser engraver could work well here.


Would you need 2layered paper, with a different color underneath? Or would engraving the words directly onto card stock be legible?


I was able to complete everything that does not involve Random. I am working on a solution as a wrapper for the sort function, that involves the last digit of the seconds clock.

The amount of shells that run in the browser, amazing, the number of new shells that run well in the browser - amazing.


My first thought when I saw this was "stocking stuffer". It sounds a little bit pricey for DIY, though. The Python game sounded interesting, but my initial impression was that it would be way too advanced for beginners. Am I missing something?


You should add this game to boardgamegeek. They will also host the files for you if you want.


Doesn't seem to be a problem for OP since the files are available on GitHub [1] but they choose to leave downloads up on their domain.

1: https://github.com/jackdoe/programming-for-kids/tree/master/...


I do that so there is no tracking, I want people to be able to download the pdfs without microsoft's knowledge :)


Looks nice, though my guess is it would be more appealing to kids if it used more color, a bigger font size and a more "fun" font family like Comic Sans perhaps.

Nice work though, would definitely consider this for my own kids.


Please no. Doh’t feed bad typography to kids.

(When I was a kid, I had access to good design examples. I hated fonts “for kids”. Also, because the essence of play is simulation, and childish fonts ruin the game)


Comic sans black on white is more readable than most copy produced in modern web products.

Designers love grey on grey. I’ll take comic sans any day.


Font and font contrast are entirely orthogonal.


Are they? Font contrast is a multifaceted concept that encompasses not only color but other properties as well. For instance, stroke weight and its modulation, which are inherent to a typeface.


Can you give a visual example where they're not? (other than anti-aliasing round the edges)


See https://medium.com/alex-couch-s-portfolio/type-hierarchy-and... for some of them. The “blurry eye test” mentioned there is related to the typographical term of color (see https://bigelowandholmes.typepad.com/bigelow-holmes/2015/04/... and https://practicaltypography.com/color.html) which is affected, among other things, by the actual shape of the glyphs. Font contrast has little to do, if anything at all, with anti-aliasing.


I see. You're clearly knowledgeable in this area and my naively used terminology has misled you. In terms of contrast I'm talking about the simple stuff "Contrast is the difference in luminance..." https://en.wikipedia.org/wiki/Contrast_(vision) whereas you're talking of something typographical I was unaware of. Sorry for the confusion.


In the end, font contrast also involves the simple stuff, but the difference in perceived luminance depends on more than just foreground and background colors.


To be fair, though, the first comment that referred to contrast was clearly talking only about color, and had nothing to do with "topography contrast."

The original comment was

> Designers love grey on grey. I’ll take comic sans any day.

These are two orthogonal features. It's like saying "fashion today is really into high waists, but I'll take denim any day."


They're orthogonal in the space of pixels on the page, and maybe not even, if the font includes some gradients or dithering, but they fit into different wholes, with some dependence.

Denim has a design style to it that goes beyond the material, as does comic sans. Like, you could put "comic sans" as part of a dalle prompt, and it would do more than pick a font


They’re not. The people asking for specific font faces for brand or accessibility reasons are the same people who design apps and websites with text I can’t read.

In this case, click the post link. It’s black text on a white background. Comic sans would work fine, and it would be better than a monospaced font added for some nostalgia for a time when fonts could not be kerned.


> the first comment (…) was clearly talking only about color

That comment explicitly mentions a typeface (Comic Sans).


While I wouldn’t advocate for Comic Sans, monospace isn’t exactly good typography either.


But appropriate for a game about shell commands.


> When I was a kid, ... I hated fonts “for kids”

So you were a snob since you were a child. Got it.

Please stop gatekeeping subjective matters.


Kids don't like comics fonts?


Not when they'ee out of place.

Any time I've worked with kids older than ~8, they'll gravitate away from comic or obviously "kid focused" fonts, and more towards "cool" fonts.


And a mascot - Pipey


This is brilliant. Every office should have this!


Oh man! Love it. Great Idea!


I love Unix pipes and I love the immense computational power you can achieve through streaming pipelines. You hear stories of people processing terabytes of data faster and cheaper than a distributed cloud solution, by the virtue of Unix pies[1].

But I don’t really see them in any other environment. I can’t think of anything that uses something similar except for big, distributed data processing pipelines like Apache Beam.

Where’s the Python with streaming pipelines?

[1] https://livefreeordichotomize.com/posts/2019-06-04-using-awk...


This is one of the things that I think Perl (still) does really well. It has flags to allow for command-like one liners and has built in things (like the diamond operator) that make it very quick and easy to write 'filter' scripts that read STDIN and print to STDOUT.

Python can do these things, but they aren't very pythonic and they don't feel as natural/intuitive.


I'm not saying that this isn't a great way for people to familiarize themselves with basic Unix shell commands. That said, why would you want to teach this to kids?


Now with everything on the cloud, kids are growing more and more disconnected with their computers, instead of the kid making the computer do something, they do some magic sequence of actions and sometimes things work, sometimes they dont.

Being able to type a command, give it some input and see its output, I believe is the most fundamental way to interact with the computer.

The basic concepts of files, folders, programs and processes are getting more and more murky with every new iOS and windows release, and yet, those are still the building blocks of everything, they are just hidden by some obscure interfaces and menus or are just plain inaccessible to the user.

UNIX Pipes are the most pure and useful way I know of how the user interacts with the programs and how the programs interact with each other passing their output to the other program's input, and I think it illustrates how more complicated things can be built.


Kids are people too?

But yeah this type of thing was always fun for me when I was a little guy.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: