throwaway47292
Joined 5 years ago
Joined 5 years ago
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.
Its amazing how your brain just sees what it wants to see.
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 :)
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/...
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.
(if you are talking about the programming time game)
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.
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.
if you have good ideas on programming pedagogy shoot me an email at [email protected]
thanks!