Community

From 0 to Blinking LED

By John Hawley, Open Source Software & Hardware Developer

While I was in India recently, I went to a software conference (PyCon India), and gave a talk on open source hardware and MicroPython. There’s a lot of interesting crossovers between open source software and the fledgling world of open hardware, the neat things going on to make MicroPython worth a look, but I don’t want to talk about those. What I want to talk about the people, because the people I met were much more fascinating than code or circuits.

LED

I got to spend a couple of days during the code sprints, a typical part of most PyCons where attendees get the opportunity to vote with their feet and go and work on code for any project that’s got folks willing to work with you. This is actually really helpful for both the upstream developers, as they get a chance to see new users try and use their projects. It exposes pain points for new contributors, and it’s actually a really amazing thing to get to work on a project when you can just talk across a table about a problem you are having, and possibly work out it’s a bug and go write your first patch for it with the core developers themselves. In Pune there were folks writing their first commits for Django, Mailman 3, and a whole slew of other projects that I couldn’t even begin to list, because I was off in a separate room working with folks to just introduce them to MicroPython and micro-controllers.

I have no idea how many folks came through the room, but everyone who came through was able to borrow a NodeMcu from me, get their own systems setup to be able to flash MicroPython on the boards, and get leds blinking at the very least. There were the expected Linux users, who for once had the easiest time doing this as the serial drivers are all built into Linux. There were Windows users helping each other figure out how to talk to the boards, which invariable required a driver download, and there were the indomitable Mac users who had, by far, the hardest time getting things working, but everyone prevailed.

When people got their LEDs blinking, there was genuine accomplishment, and there was a new understanding of how these things work. The more adventurous folks went further and did a lot more exploring. One gentleman hooking up as many LEDs as he could, got them all blinking and was writing patterns as if the light was dancing across the bread board.

Another gentleman, not being content to just blink and LED snagged one of the I2C temperature and humidity sensors we had, and with little knowledge of even what I2C was, eventually able to not only read data from the device, but realize the one he had was miss-calibrated, and write appropriate software to offset it back into being reasonably accurate.

One particular individual, a lawyer by profession who had an interesting in learning to code, but kept having trouble trying to learning it the more traditional ways, found that getting LEDs to blink was far more tangible, and helped the code make more sense to her. By the time I left India she was understood not only how to blink an LED, but what I2C was, how to interface with a PWM controller and blink some LEDs. Since then she’s gone far beyond that, and learned how to connect to make a device that can independently blink if she’s mentioned on twitter, and published her work up on github. There’s a lot of firsts there for her, and if your interested in reading her own impressions, take a look at her own write up at https://anweshadas.in/my-bunnyuncle/

Suffice it to say, sometimes it’s not about how amazing an algorithm is, or how prolific a project is. Sometimes it’s about getting an LED to blink.

John Hawley is an open source software and hardware developer, because he sees fundamental value in being open, and open collaboration. He’s built multiple star ship bridges, robotic dogs, and content distribution and mirroring system. You can follow him on Twitter @warty9.