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.
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:
>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.
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:
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
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.
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.
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.
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?
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.
(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)
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.
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.
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.
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.
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.