I made this game so I can teach my daughter C, particularly thinking about how things exist in memory, while traveling and having dinner or waiting for the bus.
Just grabbing a few cards and looking for where they exist in memory is a fun challenge, but also helps to understand and not be scared of the very overloaded []()* syntax in C.
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.
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.
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 think most kids can learn basic programming and have different attitude towards software. Programs are going to determine their lives, from the tiktok feed algorithm to surveillance to filtering their CV for a job and even evaluating their job performance or paying their taxes.
There was a story recently where toasters were bricked because they received the microwave binary update. Can you imagine? You wont be able to make toast if you cant hack our toaster.
Not to mention the new scams, from NFTs to ransomwares, I have gotten to the point of asking my daughter to tell me for each app she installs 'how it makes money from you, especially if its free' .
What big tech has been doing for the last 20 years has successfully disconnected the user from the computer, the next generation was supposed to be the most 'technologically advanced' generation and yet for them technology is worse than magic. It is magic that controls their lives.. that is filled with exploits, bugs and crashes.
We must do all we can to break down the tech barrier and make them literate.
(this is my log of teaching my daughter https://github.com/jackdoe/programming-for-kids I have posted it in other comments so it looks weird, but I have gotten some feedback that it is a nice resource for other parents, so I will link to it again)
Just grabbing a few cards and looking for where they exist in memory is a fun challenge, but also helps to understand and not be scared of the very overloaded []()* syntax in C.