This was the week that I accidentally taught my nearly ten-year-old son binary. And I didn’t do it on purpose, I swear.
It all started innocently enough. He had a week vacation, and on one of those days, we booked him a day-course for kids at our local FabLab. It was sold as a “learn to solder” class, and the project they made was basically a MiniPOV: eight LEDs driven by a museum-piece AVR ATtiny2313. Blinking lights make a pattern in your persistence of vision as you swipe it back and forth.
The default pattern was a heart, which is nice enough. But he wanted to get his own designs in there, and of course he knows that I know how to flash the thing with new code. So I got him to solder on an ISP header and start drawing patterns on grids of graph paper while I got the toolchain working and updated some of the 2000’s-era code so it would compile.
There’s absolutely no simpler way to get your head around binary than to light up a row of LEDs, and transcribing the columns of his fresh pixel art into ones and zeros was just the motivation he needed. We converted the first couple rows into their decimal equivalents, but it was getting close to dinner time, so we cheesed out with the modern 0b00110100
format for the rest. This all happened quite organically; “unintentional parenting” is what we call it.
While we were eating dinner, I got the strangest sense of deja vu. When I was around ten or eleven, my own father told me about the custom fonts for the Okidata 24-pin printer at his lab, because he needed me out of his hair for a while, and I set out to encode all of the Hobbit runes for it. (No comment.) He must have handed me a piece of graph paper explained how it goes, and we had a working rune font by evening. That was probably how I learned about binary as well.
Want to teach someone binary? Give them a persistence of vision toy, or a dot-matrix printer.
(Art is from a much older POV project: Trakr POV — a hack of an old kids’ toy to make a long-exposure POV image. But it looks cool, and it gets the point across.)
I recall drawing Karnaugh maps and logic gates on our family blackboard as a tween when my dad suggested I recreate a BCD-to-7segment decoder out of plain 74xx TTL, but it wasn’t until my 2nd or 3rd year of CompSci in college that I learned what they were called. What a refreshing feeling to be sitting in an advanced college class and realizing that I already knew what the professor was teaching us!
With the Forth language you can set the radix whenever you want and just enter the data. Key words like HEX and DECIMAL and BINARY are used as well as changing the value of BASE let you to what you want, like Radix 60 if it is convenient. What do people do in C to avoid needing the messy pre-processor prefixes like 0x and 0b?
In 1983 as age of 10, I got ZX Spectrum as Christmas present. I of course played games from cassettes, but started to code also. I made ‘pacman’ clone and for that I needed to design sprites in binary. And also some game logic and drawing routines was made in machine code. Tedious coding on paper as assembly and translating by hand to machine code. I didn’t even know that assembler editors existed, back then.
I followed a similar learning path, except I was designing fonts and display software in 6502 assembler code to drive a compact screen in a prototype of a RAAF forward air defence module. The need was for big clear text in a menu system in a constrained space. Back in the day the radio frequencies for military aircraft were hardcoded sets and you would switch to a given stud number, i.e. manual frequency hopping. A dumb security by obscurity system I guess. So they needed a small display for the system that helped the operators manage that in their converted shipping container like control center. We could have done something more sophisticated but had to work with the old gear common to all of the military aircraft they had at the time. Yeah this _was_ last century, but I hadn’t finished high school at the time.
Am I the only on that’s bothered by Persistence of Vision and Point of View having the same TLA?
Texas Library Association?