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.
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 :)
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:
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.
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 [email protected], I still have few left.
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)
I am still working on the games, but since it took me 2 months to make the programs, I decided to print anyway.
https://punkx.org/4917/guide.html#game here I have just given examples of possible games, but I think parents will have to see what their kid responds to, as mine really like dice and modifying the code so that works for me, but for another parent they might want to make some sort of treasure hunt with the cards for example.
4-5 days in queue is infeasible with modern amount of spam, especially generative spam (e.g. someone gets verisign's .com zone and sends one email to every john@domain)
My gut feeling is that almost nobody waits more than few hours, probably even less.
But at least whoever tried to send you email got a 'well we tried to send but failed' so they know to reach you in some other way.
hmm the hardest one is to reduce stress (which now when we have a disaster bingo is really hard to do) which will directly impact your weight, therapy also helped me.
a weird i have done is one is to make food just super inconvenient, and order groceries online only when my stomach is full, and buy lots things that are easy to eat raw, like cauliflower and carrots; you can even add pi-hole rules to block ordering groceries before lunch or before dinner when you are especially hungry.
i think its also important to drink just water, but each day try few drops of lemon or orange or something to change the taste if you are bored of it.
make sure your vit d is good as it will help with the stress as well
I have a friend who says: "when you invent more efficient lightbulbs, people do not consume less energy, they just get more light"
Every time we did a milestone performance improvement in our infrastructure, e.g. search used to take few seconds, we reduced it to few milliseconds. One year later our colleagues were doing machinegun-like queries and the search was back to take 1 second, and it is just a matter of time to go back to few seconds.
One thing that helped a lot was hard limits, e.g. InternetExplorer9 having hard cap on css size was literally the only thing that forced people not to push megabytes of css.
I wish Chrome does something similar, like 'you cant have more than 500kb of js code evaluated per page' or 'no more than 200kb css', it will do miracles in just one year, and I am willing to bet that we will have the same features we would without the limit.
EDIT: I did not mean to undervalue Chrome's 49% improvement in one year, which is just extraordinary work!
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.