Our educational system is a sorting algorithm. It searches for particular kinds of minds and bodies and separates them out, hazing them as it initiates them into particular kinds of specialized labor. It recognizes one particular kind of genius above others: that which can manipulate and comprehend the particular system of symbols that our society has evolved to use mathematics on paper with a pencil in such a way that it is easy to transfer to moveable type.
As I teach students in my Makerspace, I have frequently noted 3 assertions among students:
- I love math and programming. It’s fun.
- I’m bad at math.
- I can’t code.
I would estimate that category 1 represents perhaps 2 students a year, maybe 3 of my dozen or so consistent students.
Categories 2 and 3 represent the majority of the rest of my students.
These are students who are capable of reasoning, of weighing values against each other, of recognizing how many of one thing fit into another, who can build gear ratios out of LEGO, who can scale drawings up and down.
They are not Good At Math, but they are, in fact, good at math. They do it when the systems use sets of symbols that they understand. Seymour Papert was quite firm about this in his writings, that the convenience of our particular writing technologies is very much an artificial constriction of the kinds of people we allow to explore mathematical concepts.
The history of programming comes from the culture of mathematicians. They are a self-selecting group that has found their way into a group of people with similarly-flavored talent. So when they moved from programming with switches and wires to programming with words, many objected (HARD), but it allowed a slightly different kind of student to start learning the new medium.
There were several attempts at producing a viable language that would extend the capabilities of the programmer through the use of mnemonics. They came in rapid order, from switches to increasingly sophisticated mnemonics within a few years. The philosophy behind them developed rapidly until 1973, when C was first introduced (so named because it was the third draft of the design).
If you have learned to program a computer, you have probably programmed in C, C++, C#, or Java. Those architectures provided the existing talent base with the tools they needed while excluding other talent bases. It serves as a gate to keep with enough of a user base to guard that gate.
The personal computer revolution began in 1977 with the release of the Apple II, just four years later. It ran on BASIC, which was considered, at the time, a high-level language. BASIC has since practically died out, leaving us with dialects of C.
It’s become trite to marvel at ideas like, “I carry a supercomputer around in my pocket!” and, yes, it’s cool. But you can also change the other side of the equation: for the cost of the red power LED in 1977, you can now get a highly operational computer that well exceeds the capabilities of the $4500 Apple II.
Those little computers — microcontrollers — are common now. In TV remote controls, thermostats, doorbells, earbuds, toys, jewelry, Bluetooth speakers, costumes, and shoes. And that’s just off the top of my head. I’ve seen them in items as trivial as greeting cards, empowered to play video on a built-in video screen. They’re in pregnancy tests. And they’re becoming more present.
When C became the standard programming language, it was great. It gave more people the conceptual tools to use mainframes and minicomputers — expensive machines that few people could access. It essentially gave access to all the people who could reach those tools.
And then it pulled up the latter.
And now we’re conceptually shut out of our shoes.
There is a parallel sociotechnological problem I see:
Since the 1970s, luminary minds like Alan Kay and Seymore Pappert have been pushing to build a programming system that children can understand. From LOGO and SmallTalk to today’s Squeak and Scratch, there are tools built by experts for kids to find those kids who will, in the future self-sort into the kinds of kid who like to code.
And that sorting is important. Because a meaningful number of those kids will wind up becoming experts in Scratch (perhaps using the LEGO dialect for their new Spike Prime sets), then find that they’re not good at coding after all when they then have to sit down with a text editor and a compiler.
Those are a LOT of kids who get filtered out.
The issue, as I see it, is this:
Tools (like Linux, say) improve rapidly because the users of the tool also are in charge of developing their tool.
Tools (like Scratch) do not improve in the same ways* because the users of the tool cannot use their growing expertise to improve the tool.
*They improve, of course. Today’s Scratch is a much better Scratch than the Scratch I first used. But you still can’t use it to write a phone app or program a custom-built keyboard.
In my observations, an expert in Scratch feels one of two things: that they’ve wasted their time becoming an expert in Scratch because they can’t program a phone or build a standalone game or program an Arduino with it; or they are excited to work in an environment outside of Scratch for which they’ve gained the conceptual tools that they need by the use of Scratch, and so they leave the tool behind. A very small number will return to or remain with the Scratch environment because they enjoy its constraints or want to give back to the community. But they aren’t improving it with the deep understanding that you have when you need the thing to work really well for your own purposes. They’re doing it to help other people which, while admirable, is coming at the questions from a shallower understanding of the needs of the users than an Apache hacker who needs the web browser to work better so their websites work better.
So the question I hope to be answer with Liberation Technology is:
How do we design a system so that, as new and casual users become expert users, they “pay forward” their solutions and innovations toward inexpert users?
I’ll talk about how we find the communities to start this process in my next post. I’ll probably cross-post it here, but it’ll likely show up on xenoglyph first because I’m talking about it over there on my Discord. Those cats already have access to the outline of the project as it currently exists, so if you’re really interested, please back xenoglyph and join the conversation!
NOTE: I’m looking for people to help me direct this project. It’s at a very early stage right now, and this is the time when decisions about the direction it goes will have the greatest impact. So I’m looking for a krewe other than the usual guys. If you’re interested in this and have UX skill and vision; or if you understand microcontrollers and their support electronics on a deep level, I want to hear from you. If you’re a white guy, you can help by first finding me some interested and interesting people who aren’t like us and connecting them here. Backing Punk Pedagogy and telling other people about it will help feed me (I make about $11k/y teaching without my Patreon) while I work on this project. When we’ve found the core strategic team, we’ll still want help from the white guys. The project will be stronger, though, if the experiences and perspectives forming its core principles don’t stem from the same experiences and perspectives that got us in this mess.