Fifteen total n00bs can teach you a lot.
Yesterday I gave (the beta version of) a class I’ve put together called “Blinky 101 with Arduino”. There were fifteen students, all adults with programming experience, ranging from some basic scripting to deeply hardcore computer science. My goal for the 90-minute class was to take these folks from “what the heck is this piece and where does it plug in?” all the way to “Hey everyone! Look at MY LED animation!”
We succeeded. See attached video clip of the proud students holding up their 20-pixel, battery-powered, Arduino Nano-driven animations.
Along the way, they learned a ton, and so did I! Some of the lessons learned were about things like which laptops need FTDI COM port drivers and which don’t. But some of what emerged was more interesting.
Everyone was OK working with RGB pixel values eg-
leds[i] = 0xFF0000;
but everyone also took much longer wrangling HSV values. And watching this, and helping people out, I realized that there is [was
] a missing set of APIs in the library that would help people use HSV color a lot more easily.
So despite the fact that we’re already at RC2, I’m adding the capability to set pixel values directly from HSV colors:
leds[i] = CHSV( 90, 255, 255);
You could already achieve the same effect other ways, but they were typically 5-7 lines of source code, versus one clear, simple assignment. There will be a few different ways to do this now, all of them one-liners.
We’ve put a lot of time into support for HSV colorspace in V2 of the library, and my sense, particularly after witnessing fifteen new users in person yesterday, is that without the new simpler APIs, much of the value we’ve created in the HSV code would go unused.
What else did I learn from teaching the class? That (surprise! not!) we need more example code for users new to the library, and reference docs for people digging in deep. Both are in the works. Some users will want the tech ref doc, but all library users are new library users at some point, and as we’ve added more breadth and depth to the library APIs, we need examples of how to use it all.
I will be putting the course materials on line, as well as a bill of materials for the “Blinky kit” of parts that each student got to work with.
Paraphrasing Guy Kawasaki (who was unfortunately paraphrasing Mao), I’m helping to “Let a thousand pixels bloom.”
