This post is about the Charlieplexing Wikipedia page.

4 summers ago, I was a student playing with microcontrollers. I needed a way to drive a large number of LEDs with a small number of I/O pins, and was stumped because even multiplexing wouldn't give me enough. Puttering around, I discovered an obscure reference to a technique called Charlieplexing on a Maxim application sheet, but couldn't understand it right away. After more puttering around, I decided there wasn't a good human-readable explanation of charlieplexing on the internet - or at least not one that worked for me. So I buckled down and pounded my head against the topic, doodling circuit diagrams for an hour or two until I was enlightened enough to implement it, threw my notes into a Wikipedia page, and went off to do other things, like graduate from college.

Unbeknownst to me, a conversation had started. Was Charlieplexing a notable enough subject for a Wikipedia entry? There was support. "Charlieplexing is a well-established term in communities of microcontroller hackers and I've encountered it on numerous independent occasions in my research." "This is an extremely important technique in electrical engineering that is taught in many universities these days, including my own, MIT."

Eventually, the conversation turned to Charlieplexing itself. "Reverse-bias leakage currents are on the order of uA, so this really isn't power-inefficient." They fixed some of my mistakes. "It does NOT increase cost of production - the whole idea is to DECREASE the cost of production by using a microcontroller with fewer I/O lines." They added diagrams. They put in real-world applications. "Added a picture of a clock I created which actually uses Charlieplexing (though I didn't know it was called that, I thought I was inventing it myself when I created it) as an example in the top right." They expanded into areas I hadn't thought about, like tri-state logic.

Fast forward a couple years. I've completely forgotten about Charlieplexing by this point, having finished my project that summer and headed off into the software world. (Hardware, I haven't forgotten you! I will come back when I have space for a stable hobbyist workbench!) I'm reading Matt's blog and notice his del.icio.us feed has a link to something called... wait, what's that? That sounds sort of familiar. I click - and now I get to learn about electronics from a page I started years ago.

I can't help but compare this to the reams and reams of my undergraduate work which has either been recycled, deleted from various hard drives, or sits mouldering somewhere forgotten. I spent weeks and months on those projects; now they're dead. These were quick notes I wrote up for myself to understand something so I could solve a problem that I had; making them available to others to remix was almost an afterthought. It turned out to be useful to other people. They found it, they gave back, and now it's more useful to everybody, including future-me when I get back into electronics as a hobby. What goes around comes around; here's the difference between my original page and the current page.

This is a tiny example of something that happens every day in open source. It's not just code. In this world, you can learn a new programming language by reading your own book. This is completely normal.

Just a cool moment that I thought I'd share.