My three kids are now 5, 7 and 9 years old. Meanwhile, they all have their own
rooms which, for the two older school kids, contain desks with a
Raspberry Pi 400 on them. They use it to look up pictures of Pokemon,
to listen music and to play minetest, supertuxkart or the secret of monkey island :)
Well, they also used for joining classes remotely during lockdown things.
My primary intention was, to make the computer accessible so - whenever their
interest arouses - they could play around and discover on their own. Today I
think that the number of possibilities may be way too high to just sit down and
start with something specific.
I actually consider to run the Pis in some kind of kiosk mode, to reduce
distraction. I remember that, on the first computer I used, we ran one program
at a time. If you decided to run another program, you would turn off the
computer, change the floppy and restart. Of course it's nice to have multiple
things running at once on a computer, but to learn something new, I would argue
that running one thing and only this one thing, might be best.
Our first family computer
Thinking back when I was their age, it must have been the time when my father
received an old Amstrad PCW (Joyce) from a friend, our first
I was fascinated by that machine, I loved the green on black text and the
different noises it made - especially the dot matrix printer noises :D My father
used it for word processing and because that was all he needed, it was all he
ever tried. I also loved editing text in locoscript (which was just
awesome) and playing the few games that were available.
However, the Joyce came with a BASIC and with the Logo programming language.
I had no idea what either of them was, nor had anyone in our family. So one day I
grabbed the manuals (which luckily were in German) and started learning Logo and
running the examples until I was able to draw my own little pictures. In a playful
manner I learned the concepts of algorithms; of variables, loops and subroutines.
At that time, BASIC was still incomprehensible for me. This changed when my
parents, which wanted to foster my interest but didn't quite know how, gifted me
a VTech SL, an educational computer that could not really do much, but came with
a BASIC and a manual that was actually appropriate for children and that I could
follow along nicely. So I soon had plenty of those little programs that would
ask you for your name or age and then make funny comments about that. Always, my
main motivation to write code was to eventually develop a cool game. Good for me
that some of my friends shared that interest and one in particular I considered a
real programming wizard.
Interest amplification through friends
When I was young, LAN parties were the real thing. I saved money for a then
cheap Medion PC - an Intel Pentium D with an NVidia RIVA TNT graphics card. The
only condition my parents put upon me was, that I would have pass an official
typewriter's course - "The computer is not just a toy, learn touch-typing so you
can use it for work/school".
So you would carry over your midi tower and 17 inch CRT monitor and a box of
cables to a friend's basement and forget about daytime and the rest of the world
for one weekend over Duke Nukem 3D, Starcraft and Jedi Knight - Dark Forces 2.
The friend at whom we met was two years older and first impressed me when we
were missing the last BNC terminator to finalize or LAN connection (yes, that's
when before the time of Ethernet, all PCs had to be hooked up in line, connected
by a coaxial cable and cleanly terminated on both ends). So he grabbed an
ohmmeter, measured the resistance the terminator had to have, found a fitting
resistor in a drawer and bent it into shape to close our network connection.
He was regularly programming in Pascal and I was blown away when he showed us
his self-written window manager/desktop environment. It could not do too much,
but show files as icons which you could nicely customize in color, but to me it
was magic. Together we installed Borland Pascal on my machine and he showed me
how to use the built-in documentation system. However, my English skills at that
time were simply not good enough to really make sense of that excellent
documentation. So I couldn't wait for the computer science course in school to
Two extremes of school computer science
Computer science. Awesome! I was so excited about it, that it hurt even more
when we realized that it would be a complete disappointment. The first "computer
science" course I had in school was nothing but a Microsoft
Word/Excel/Powerpoint introduction, and not even a good one. Well, we endured
and in the next year the teacher changed and so did the course. And that may
have been the best class I've had, ever.
The new computer science teacher was also physics teacher and was not too famous
with the kids. He had a quite nerdy 70s look which I appreciate today, but was
inscrutable for us when we were young, and a funny name that translates to
"beef". However, the topics he covered and the hands-on way he taught them were
just great. Within two years we started with the basics of the Pascal
programming language and the workings of computer algorithms with a Logo-like
environment. After that we switched over to abstract data types (queues, lists,
linked lists, trees etc.), computer architecture down to a level of "what does
an ALU do, and how?", and finally we wrote our own assembly code to draw icons
and images on the screen. That must have been in old unprotected mode, where you
could just write into the video adapter memory directly, which was mapped into
the PC's memory.
Soon enough we found us bumming instruction code lines from our assembly
programs to find the most elegant and shortest solution to a problem, looking
over each other's shoulders and admiring clever tricks. When I read
Steven Levy's Hackers many years later, I perfectly remembered
that feeling when reading about the first MIT hackers, hacking on the PDP-1.
We finished the course with a group project: We developed an idea for a 2D
racing game we called "Geisterfahrer" (wrong-way driver) where the player had to
dodge oncoming traffic. We identified the different tasks we had to do, planned
what routines needed to be programmed and assigned teams. It didn't work out
well, but hey, the concept was superb.
College, work and DGPLUG
I hate to admit it, but back then in my school days, I didn't like the computer
science course very much. I simply could not appreciate the value of these
lessons; I was bored by abstract data types, didn't know what I would ever need
computer architecture knowledge for and was a bad team player in our final
programming task. Only when I was in college and studied physics and computer
science, I realized just how good this school course has been. In two years at
college we covered exactly the same topics going just as deep, but this time I
was in a course with ~200 people instead of just 20.
I learned Java and C/C++ basics at college, and when I applied for a project to
write my bachelor's thesis, I was looking for programming tasks in physics
working groups; there were and still are plenty of them. I did the same when I
started my master's thesis, this time programming in Java and C# (just because
the syntax was similar but the performance was way better), and after that once
again the same to find a PhD position - this time in a medical field. I started
to learn Python with Mark Pilgrim's Dive Into Python, which was
an excellent choice for me, because it gave plenty of examples and comparisons
with other programming languages I already knew.
There's not much interesting to say from that era except one thing: In terms of
programming, I was still a bad team player. The code I wrote was hard to
maintain; I wrote it alone and I wrote it for me to work. I imagine the poor
people coming to the working groups to continue my work had hard times. I simply
never learned how to collaboratively develop software - this part was actually
not covered in college.
This only changed when I learned about DGPLUG and the
summertraining, where - as I read - people were taught what need be known to
start contributing to Open Source projects. I've written about that project
before and every summer I realize how much it has changed the way I work today
for the better. And it is only now, that I feel like I almost know what I am
doing, and why, when I write code.