Increasing open-source inclusivity with paper circuits
Huang started by asking why we should care about making technology more inclusive. Open-source software gets its power from inclusiveness; that power is so strong that we can (quoting Chris DiBona) claim that, without open-source software, the Internet as we know it would not exist. As an engineer, he thinks that's great, but he has a concern: that means that the user base now include politicians.
The problem with politicians is that they may look at the open nature of
open-source software and conclude that random people, some of whom may be
criminals, have access to the public infrastructure. That does indeed lead
to the possibility of things going wrong. The leftpad() fiasco was one example that
affected a large group of developers, but there are scarier examples, such
as criminals who are typo-squatting in the NPM repository, trying to get
malware into others' applications.
Huang also mentioned a time bomb he encountered in XScreenSaver, which
started complaining that it was too old and needed to be upgraded. This
was not a malicious act; the developer was just finding a way to say that
he's tired of Debian not shipping updates to the code and using that code
to try to force a change. In a
Debian bug-tracker discussion, Jamie Zawinski (the author of
XScreenSaver) described his interactions with users, who evidently tell him
"but I don't know how to compile from source, herp derp I eat
paste
".
To Huang, exchanges like this make it clear that the "everybody" that is
empowered by open-source software is actually a small and elite group. Few
people know how to compile a program from source.
What would happen, he asked, if some developer put in an obnoxious warning that popped up on every Android phone? It might be a well-intentioned act, but it would upset a lot of people and show how much power this small group has. That, in turn, can lead politicians to propose that, for example, programmers should be regulated and that a bonding requirement be put into place. One might say that such a thing would clearly never pass, but democracy is a tricky thing, and there are plenty of examples of things not going right. He cited the repeal of network neutrality in the US, the "Brexit" decision, and the recent US presidential election. One cannot, he warned, count on preposterous things not passing.
If one looks at voter demographics with regard to their understanding of technology, the picture is scary. Few people truly understand technology; the best of the bottom 50% in this regard can barely type a search query into a web browser. Far less than 50% of the electorate is qualified to vote on technical issues. So, he asked, do we really want to put issues like network neutrality, surveillance, DRM, right-to-repair, open-source software, or even emoji selection up for a vote? The outcome would be essentially random.
Open-source is politically powerless without the sort of inclusiveness that enables people to understand it, but nearly 100% of the population relies on it. We need the government to help to enforce our licenses, and we need society to support our work. If we believe that open-source software is important, he said, we need to empower more people to preserve and sustain it.
Efficient inclusiveness
That said, teaching people one-by-one to code is an inefficient process; the engineer in him wants to optimize the effort. That led him to look at the demographics of the technical community as it exists now, and he concluded that we're missing half of our society — there are few women in technology. If we could get them involved, we could double the size of our community in one stroke.
Currently, women earn 11% of the degrees in computer engineering, and just under 16% in computer science. Female representation in computer-science faculties is poor, worse than physics or math. It is, he said, an "exclusive boys club". One might ask if this is a cultural problem, and he thinks that it is; he has noted that there is a far better gender balance in China, for example. So he has concluded that there is no fundamental reason why we couldn't get more people involved.
Others have done the same. An effort at Carnegie-Mellon University [PDF] changed the approach in the computer-science curriculum and changed female participation from 10% to 40% in five years. At Harvey Mudd University, the female graduation rate was increased from 12% to 45% in five years. So it is possible to make things better.
The key insight Huang drew from these efforts is that computer-science programs assume that students know the material before they begin to study it. Medicine programs do not expect incoming students to have already done surgery, and law programs do not expect them to have participated in trials, but computer-science programs expect that students can write complex code in a C-like language when they walk in the door. Anybody who didn't decide to learn about computers at a young age is going to respond by concluding that this field is not for them.
The bias that keeps women from learning about technology starts at a young age. According to this study [PDF], over 60% of construction-kit gifts are given to boys (in this study, 9% went to girls, the rest were unknown). Universities like Carnegie-Mellon and Harvey Mudd have responded by creating a softer on-ramp that doesn't assume a lot of familiarity with the field and, as a result, they have succeeded in including a lot more people. Doing this isn't a mystery, we just need to make it easier to get started.
Changing culture with paper circuits
Huang's way to make it easier is to try to change the culture around electronics and, in particular, to do so by building circuits on paper rather than by using breadboards. Paper is the substrate, conductive tape is used for connections, and circuit elements are either taped on or soldered. The result is a lot closer to a real circuit board than any breadboard circuit; it demonstrates issues like wire crossings that don't arise with breadboards. That makes a paper circuit easier to move to a true circuit board once it has been finalized. Paper circuits are also flexible — literally. They can be incorporated into a pop-up book, for example.
There are other advantages to paper circuits. They are, for example, compatible with both surface-mount and through-hole components, while breadboards only handle the latter. Paper, he noted, natively supports comments — they can simply be written on the substrate. It's thin, flat, and light, and the substrate is free; breadboards have none of these attributes. On the other hand, with breadboards there is no soldering required and components can be reused, which is why breadboards tend to be favored in educational settings.
The soldering issue is one of the key barriers to mass adoption of paper circuits. In truth, surface-mount components can also be tricky; they tend to be tiny and can be hard to position correctly on a paper circuit. So Huang met up with Jie Qi, who has done a lot of work in this area, and developed the idea of creating stickers with components that could be easily applied to paper circuits. That, they thought, would make the whole idea much more approachable.
Huang and Qi ran a pitch on Crowd Supply to raise some money to develop this idea. They set their goal to an eminently achievable $1 just to see what they would get; when the time ran out, over $100,000 had been pledged. That put them into a position of running an "accidental startup" that they had to somehow make a proper company out of. One of the first things they decided is that they would not be providing "pinked-out" or watered-down technology. Instead, they would be providing rigorous technology that is accessible and fun. Design and technology would be seen as equals, each of which has value.
The people who initially funded this effort were 67% male. But the customers for the product on chibitronics.com were 74% female, and Amazon.com customers were close to that figure. The number of women has been growing over time; 78% of the customers are now women. Huang said that he would like to make things more balanced again and get more men, but he feels that it is a positive thing to have all of those women playing with the technology.
Love to Code
The next step is to move beyond circuits and add coding into the mix; that was the driving force behind the Love to Code project. This project, too, had some founding principles behind it. One was that engineering and design are equally important. We tend to measure achievement on a single axis, but that can exclude people who don't excel on that axis. By combining engineering and art, it's possible to create a two-dimensional space with a lot of ways for people to stand out.
Familiarity is another core part of Love to Code. Paper is a familiar material to most people. It is also expressive, allowing circuits to be made into all kinds of interesting works of art. But paper is also a technical material with many attractive characteristics.
Finally, simplicity was a key goal; there need to be few barriers to getting started. That led to some interesting challenges: how does one get compiled C code into a microcontroller, for example? By default, that is a difficult process requiring users to figure out details like what their serial port is named. It is frustrating and being able to do it doesn't make anybody better than anybody else. So they tried to find a universal interface that would be easy for everybody to use.
In that search, they concluded that ports on computers change frequently, but humans tend to stay the same over the years. In particular, they still have eyes and ears. As a result, there is an audio jack on almost every device — unless you get a modern phone that tries to lock you into a DRM ecosystem and you have given up your sound port, he said. Sound is capable of carrying data, so Love to Code uses it to upload compiled code. This code is played out of the audio port and into the device. The result is one of the few microcontrollers that can be programmed with a mobile phone.
There were many other challenges to overcome. The component stickers went through several generations of design until the problems were worked out. The problem of connecting a microcontroller to a paper circuit was eventually solved by attaching it to a plastic clip. The result is a usable controller that is suitable for classrooms. The curriculum had to be developed from the beginning; it starts with fun characters and introduces coding concepts in an approachable fashion. It makes the point that code isn't so scary.
The book is, naturally, available for download [PDF] under a CC-BY-SA license. All of the code and hardware designs can be found on the Chibitronics GitHub page. Everybody is encouraged to have a look and make it better.
Details
Huang spent a few minutes talking about how the hardware works. Sound is transmitted using AFSK modulation; it employs two tones like an old modem. Those frequencies are relatively high but were chosen to be "MP3 survivable". The demodulator on the microcontroller is based on linmodem; when running it takes 65% of the available CPU time, not leaving much for anything else.
Picking the microcontroller took some work. It needed to be cheap, open-source friendly, have a digital signal processor, an analog-to-digital converter, and so on. After looking at a number of candidates, they chose the Kinetis MKL02Z32VFK4. It has a 48MHz Cortex M0+ processor ("haha it's not vulnerable to Meltdown"), and 32KB of flash memory. The processor costs less than $1 when purchased in volume and there is no non-disclosure agreement to sign for documentation. The winning feature, though, was a fast GPIO port; it is used for USB low-speed emulation, allowing the controller to function as a USB keyboard.
A normal audio jack is too big to fit onto the microcontroller, so another solution was required. In the end, they created a hybrid USB cable that carries audio over the 5th pin. There is no channel back to the host on this cable, so there is no way for the microcontroller to request retransmission of corrupted data. Instead, the host transmits the whole thing three times.
The microcontroller operating system is based on ChibiOS, which is a separate project not related to Chibitronics; "chibi" means "small and cute" in Japanese. Much of the needed support code has been added to ChibiOS to minimize the size of code downloads from the host. The whole system operates under the "patience of a child constraint", meaning that downloaded code must be small enough to arrive and run before the child gets bored. The smallest programs compress down to about 256 bytes of code.
Huang said that Love to Code is not just for kids; it's intended to be a complete "novice to startup" course. Thus, for example, threading is part of the curriculum. Threading, he noted, is easy (but concurrency is hard). The hardware was also chosen to be "China ready". Kits sold in the US often include components that are available there, but which cannot be had in China; that makes it hard to move a prototype circuit into production. Love to Code uses components available in China, avoiding the need to redesign a circuit around new parts.
The "experience layer" can be found at ltc.chibitronics.com. There are a lot of examples ready to go. A simplified form of C++ is used for the introductory material, but it can get "as hairy as you want it" later on. For the smallest kids who might have trouble finding curly braces on the keyboard, a partnership with Microsoft led to makecode.chibitronics.com, where programs can be created using a visual block language.
Conclusion
Huang concluded by reiterating that sharing source is just the first step toward inclusiveness. Saying "I pushed to Git" is inclusiveness in passive-aggressive form. Reaching out to the wider world is a much bigger project, but it's an important one to take on; open-source software was built on inclusiveness. It is not a "commit and forget" thing, it's about pulling, merging, forking, and accepting new ideas. One way or another, we have to empower more of society to understand and value open-source software, he said, or society may come up with its own value with results that we don't like.
The video of this talk is available.
[Your editor thanks the Linux Foundation and linux.conf.au for assisting
with his travel to the event.]
| Index entries for this article | |
|---|---|
| Conference | linux.conf.au/2018 |
Posted Jan 30, 2018 19:17 UTC (Tue)
by CCrob (guest, #113134)
[Link] (3 responses)
I've taught art students programming and I'm firmly in the "anyone can learn to code if they are taught appropriately" camp but assuming that CS students know programming is not particularly strange. You can learn programming in high school. Likewise, Medicine without high-school biology and chemistry will be more difficult.
I am curious about what is different in China.
Posted Jan 30, 2018 19:50 UTC (Tue)
by mjthayer (guest, #39183)
[Link] (2 responses)
If you have any references I would be very interested - new or second hand, if none of the books are in print anymore. I am involved with a school which has quite a strong distrust of computers but still wants pupils to learn technology skills, and that sounds like an interesting avenue.
Posted Jan 30, 2018 21:34 UTC (Tue)
by carenas (guest, #46541)
[Link] (1 responses)
Posted Jan 31, 2018 7:25 UTC (Wed)
by mjthayer (guest, #39183)
[Link]
https://www.fractuslearning.com/2014/11/18/coding-with-pa...
Posted Jan 30, 2018 21:27 UTC (Tue)
by willy (subscriber, #9762)
[Link] (7 responses)
As a result, I learned Ada, Gofer, Haskell, Prolog, m68k assembler and eventually C. I didn't pick up any lisps until after university. Some of my friends went to universities that were in the ML camp; I understand Erlang became popular after I left. My first job was a Java shop where the prototyping was done in S.
Posted Jan 31, 2018 10:17 UTC (Wed)
by NAR (subscriber, #1313)
[Link] (6 responses)
It's not about languages, it's about knowing how to program. Back in the day when I started the university (about the same time as you), most guys in the class already know how to program in Turbo Pascal, Basic or even assembler. It wasn't a hard requirement, but I think understanding the theory classes must have been really hard for those who didn't wrote a loop or an if clause before. Grasping what is a variable or a type was easier to those whose actually used a variable.
Posted Jan 31, 2018 14:55 UTC (Wed)
by anselm (subscriber, #2796)
[Link] (5 responses)
Eons ago I was in charge of organising the coursework for an “Introduction to CS” lecture, to be taken by first-year students. There were some very interesting moments when various participants who thought they were crack C programmers and therefore well prepared for a CS degree found out, to their considerable outrage, that we expected them to learn Python, which at the time was a fairly new language and not yet well known at all – as well as different enough from the sort of language people were likely to know that previous experience really didn't help all that much.
Posted Jan 31, 2018 15:59 UTC (Wed)
by nybble41 (subscriber, #55106)
[Link] (4 responses)
I would question this assumption. There will be a learning curve involved, of course, as with any new language, but having prior experience with programming—in almost *any* programming language—should provide a significant head-start on learning Python compared to someone who had never programmed before. That should be especially true if their experience included OO languages such as C++ or Java, though even C would offer a basic foundation to build on, and arguably a deeper understanding of what is going on behind the scenes.
Of course, that assumes that the class was intended as an introduction to computer science and programming *using* Python, and not the intricate and esoteric details of the Python language.
Posted Jan 31, 2018 22:14 UTC (Wed)
by k8to (guest, #15413)
[Link] (3 responses)
Going from something like C to lisp is a little more challenging, but the whole process of breaking your ideas into parts is transferable across almost any programming language, and doesn't come at all for free.
Posted Feb 1, 2018 0:55 UTC (Thu)
by anselm (subscriber, #2796)
[Link] (2 responses)
Our experience at the time was that the C people had a harder time, by comparison, getting used to ideas like that in Python variables etc. are basically references, strings are immutable, and there are ready-made high-level data structures like dictionaries where in C you get to assemble that sort of thing yourself out of pointers and things (not to mention significant indentation). Nowadays Python is a lot better known to many people and it no longer seems as weird as it did when it was fairly new. Also at the time, some of the people seemed to think that C was the sort of serious programming language that the professionals were using and that using C would therefore make you as good a programmer as the professionals (much like some people seem to think that buying the sort of huge DSLR that professional photographers use will make you as good a photographer). After all, don't you study CS to become a badass programmer, and don't badass programmers use C? To them, having to use a strange language they'd never heard of instead of C was a bit of a letdown.
In any case, the point of our using Python for the coursework in that class was to get people (even people without a programming background) programming in as little time as possible. We wanted to be able to concentrate on the bigger picture rather than the intricacies of a programming language such as Pascal, C, or Java (which were basically the other contenders). I'm happy to say that it went down really well and in the end even the C people appreciated it ;^)
Posted Feb 1, 2018 16:20 UTC (Thu)
by nybble41 (subscriber, #55106)
[Link] (1 responses)
Well, I'm not surprised that someone with a C background would have a harder time getting used to the *changes* compared to someone with no programming background—who would have no changes to deal with, but would instead have to learn all of these concepts from scratch. The real question is which of the two groups was quicker to reach the point of putting together moderately complex (and correct) Python programs.
> In any case, the point of our using Python for the coursework in that class was to get people (even people without a programming background) programming in as little time as possible.
I agree that this is a laudable goal, and—just to be clear—I'm not criticising your choice of language, just the idea that it would put people with and without previous experience in other programming languages on a level playing field. I do think that it is important to obtain some grounding in how computers actually work at the hardware level at some point fairly early on, but that doesn't mean one should *start* with C, C++, or assembly. In my opinion a high-level language is a better choice for learning the basic programming concepts; you want something which is relatively forgiving of the inevitable beginner mistakes and lets you get straight to the point without a lot of boilerplate. By graduation I would hope the average student would be comfortable programming idiomatically in at least one low-level language like C or C++, a high-level object-oriented imperative language such as Python or JavaScript, and a pure-functional language such as Haskell.
Posted Feb 2, 2018 17:21 UTC (Fri)
by anselm (subscriber, #2796)
[Link]
Which is why we did Python in the first semester and a combination of assembly language (based on a very simple “processor” that was actually implemented as a Python program) and C in the second.
Posted Jan 31, 2018 0:18 UTC (Wed)
by himi (subscriber, #340)
[Link]
The biggest frustration right now is availability issues, particularly in Australia (where a combination of regulatory issues and sales channel difficulties have made availability problematic). I'm very much rooting for them to solve these problems, because it's a really awesome project.
Posted Jan 31, 2018 3:09 UTC (Wed)
by pabs (subscriber, #43278)
[Link]
http://mirror.linux.org.au/pub/linux.conf.au/2018/greatha...
Posted Jan 31, 2018 11:25 UTC (Wed)
by sam.thursfield (subscriber, #94496)
[Link]
I discovered the concept of paper circuits from Ciat-Londarde a.k.a Peter Blasser who is a fairly avant-garde builder of musical instruments. He has made a lot of simple (and not so simple) synthesizer designs as paper circuits and made them available from his website[1] ... they certainly wouldn't be a great introduction to electronics but they have a much lower barrier to entry compared to many other ways of building your own synthesiser.
Posted Jan 31, 2018 16:03 UTC (Wed)
by mfuzzey (subscriber, #57966)
[Link] (3 responses)
Sure getting more females involved in technology is a very worthy goal.
But I don't see how that will address the "politicians doing stupid things" problem that is the starting point of the article (unless someone is claiming that the majority of said politicians are female - and, obviously, there is little evidence of that). It seems unlikely, whatever happens, that we will ever have the majority of the population well versed in technology, any more than them being well versed in international trade, finance or climate physics...
Nor do I see how all the (very interesting) techniques like paper circuits should translate to many more female users.
As to the expectation of computer science and engineering students already knowing how to code (in some language) that seems fairly logical.
Posted Jan 31, 2018 17:47 UTC (Wed)
by excors (subscriber, #95769)
[Link]
For that purpose, it doesn't matter what type of people understand technology - all that matters is the raw number of people. The most efficient approach to increase numbers is to target women, since they are significantly under-represented in the technology industry today (in the US and many other countries, though not all countries). That's certainly not the only approach, and it won't be sufficient by itself, but it makes sense to start with the low-hanging fruit.
(That's how I interpret the writeup here, anyway.)
> If you're signing up for a degree course and there is a way of finding out more about it by yourself in advance that seems the logical thing to do and expect.
At least in some universities, Computer Science is more about computation (which is basically maths) than about computers. A prospective CS student might be better off brushing up on boolean algebra, proof by induction, matrices, etc, since they're likely to struggle during the course if they're not comfortable with that stuff, whereas they can probably muddle through the first year okay if they don't know how to write code yet.
Posted Jan 31, 2018 21:44 UTC (Wed)
by himi (subscriber, #340)
[Link] (1 responses)
As for the question of politicians, right now playing with tech the way we do is a very small and exclusive interest, one that is easy for people on the outside to treat as a special case, threatening to social cohesion and so forth (particularly when people spend a lot of time talking about "Russian/Chinese hackers" and the like in a political context). If we can make it a much larger and much less exclusive hobby/interest, the politicians won't be able to treat it that way. It doesn't have to be something that everyone is passionate about, but if a fairly large percentage of people can be at least vaguely conversant with the ideas then it moves away from being an exclusive and potentially threatening thing to being something that's just part of normal life.
Posted Feb 1, 2018 0:11 UTC (Thu)
by squirrelsFTW (guest, #114940)
[Link]
Posted Feb 9, 2018 0:34 UTC (Fri)
by millenix (guest, #39711)
[Link]
Posted Feb 9, 2018 5:01 UTC (Fri)
by kmweber (guest, #114635)
[Link] (1 responses)
I'm curious how the designers here mitigate the fire hazard of having a hot soldering iron in close proximity to paper, especially when working with young(ish) children. Obviously adult supervision is essential, but unless you have one adult for every student, there are going to be times when a given child is not being watched carefully. Or am I misunderstanding the age group this is targeted at?
Posted Feb 9, 2018 18:26 UTC (Fri)
by raven667 (subscriber, #5198)
[Link]
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
The "Should already know how to program" mentality may be a US thing or a recent thing. When I started at university in the UK in 1994, every university I interviewed at made the point that they taught using an uncommon language so everybody started from the same place of knowing nothing about the language.
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
I do think that it is important to obtain some grounding in how computers actually work at the hardware level at some point fairly early on, but that doesn't mean one should *start* with C, C++, or assembly.
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
They may well result in more people dabbling overall (a good thing of course).
Computer science, unlike, say, medicine or experimental nuclear physics, is a domain in which it is *possible* to (safely) learn at least the basics by yourself, and it is much easier today than it used to be thanks to the wide availability of computers and the internet.
If you're signing up for a degree course and there is a way of finding out more about it by yourself in advance that seems the logical thing to do and expect.
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
Beautifully stated!
Related product: Circuit Scribe
https://www.circuitscribe.com/
Increasing open-source inclusivity with paper circuits
Increasing open-source inclusivity with paper circuits
