220: Cascading Waterfall of Lights
Transcript for Embedded 220: Cascading Waterfall of Lights with Ben Hencke.
EW (00:00:06):
Welcome to Embedded. I'm Elecia White. My co-host is Christopher White. Just about every embedded system project starts with blinking lights, but what if that's the end goal? Aren't there some interesting things there? This week, Ben Hencke is in studio with us to talk about light controllers, Tindie, and learning hardware as a software engineer.
CW (00:00:31):
Hi, Ben. Welcome to the fine studio.
BH (00:00:34):
I thank you for having me.
CW (00:00:35):
It took no time at all to get this set up. It's all ready for guests to come in and just hit the ground running.
EW (00:00:43):
Could you tell us a bit about yourself?
BH (00:00:46):
I'm a tinkerer at heart. I've always been really interested in gadgets and making things and inventing things and taking things apart and figuring out how they work, and sometimes putting them back together properly, and sometimes not ... sometimes just leaving them in a pile of pieces ... but really just curious about how all that stuff works.
BH (00:01:03):
Career wise, I've been mostly doing software, but early 2016, I kind of just jumped in head first into hardware. I sort of pursued my hobby as a potential career path. So, trying to follow the dream of, can somebody just make a bunch of stuff in their garage and tinker around with things, and if not become the next Tesla or whatever, but at least make a living selling kits or parts or things like that.
EW (00:01:31):
So you're on Tindie now?
BH (00:01:32):
Yeah.
EW (00:01:33):
Okay, what is your stage name? Wow, that's not the right word. What's your store name?
BH (00:01:40):
My store name is ElectroMage.
EW (00:01:41):
ElectroMage.
BH (00:01:41):
Yeah.
EW (00:01:44):
Okay. So I'm going to ask you some about Tindie, but mostly about what you have there, and some of your other projects. Our outline this week is called ‘Ben and Blinking Lights’, just so that those of you listening know where I'm headed. But first we have to do lightning round. I'm not even going to explain that.
CW (00:02:01):
Have to do it. It has to be done.
BH (00:02:02):
Yeah.
EW (00:02:02):
Has to be done.
BH (00:02:03):
This is my favorite part.
EW (00:02:04):
Christopher, you first.
CW (00:02:05):
Do you like to complete one project or start a dozen?
BH (00:02:10):
I definitely like to start a dozen projects. Maybe more.
CW (00:02:14):
How many of those do you complete?
BH (00:02:16):
One out of a dozen.
CW (00:02:17):
Okay.
EW (00:02:19):
It's good to know yourself.
BH (00:02:20):
Yeah.
EW (00:02:21):
Beach or mountains?
BH (00:02:22):
Mountains.
CW (00:02:24):
How many bits?
BH (00:02:25):
Four or 64.
CW (00:02:28):
Four?
BH (00:02:28):
Yeah.
CW (00:02:30):
Okay.
BH (00:02:31):
My first foray into microcontrollers was this Radio Shack kit, and it was this little four-bit microcontroller with a hex LED and ... a couple of LEDs, and you would punch in single-digit opcodes and ... yeah. It was fun.
EW (00:02:48):
Open Source Hardware Summit or Hackaday Supercon?
BH (00:02:52):
Ooh, that's tough. Both? Is that valid?
EW (00:02:56):
Both? All right.
CW (00:02:58):
Favorite wavelength?
BH (00:02:59):
950 nanometers.
EW (00:03:03):
Technical tip everyone should know?
BH (00:03:07):
Figure out how to configure your IDE, your editor, whatever you're using, to let you look up the source code for things. So if you're using an RTOS, or you're just using a library, jump into all these functions and see how they're written. You can learn crazy amounts of stuff that way.
EW (00:03:24):
Reading code miraculously does often make me a better programmer. Okay, I think that's enough lightning round, unless you want another one, Christopher?
CW (00:03:35):
I can be done. It just seemed very ... cursory.
EW (00:03:38):
It was lightning.
CW (00:03:40):
Oh. Is that how it's supposed to go?
BH (00:03:40):
That was very quick.
EW (00:03:46):
You went to the Open Source Hardware Summit recently. What was that like?
BH (00:03:52):
I did. It was awesome. It was an amazing experience. I've gone two years in a row now, and just met some of the most amazing people ever, and seen some pretty incredible projects. Stuff like bringing medical devices to countries where access to this kind of technology is difficult, or even in remote areas, maybe where you just can't get supplies in, and just bringing sort of open source projects and technology to those people to kind of help them build things or survive catastrophes and things like that.
BH (00:04:27):
But, beyond that, just meeting a bunch of amazing people and just talking about fun stuff. It's really cool to just be able to walk up to anybody in this organization and just talk about cool, fun, geeky hardware and software projects.
EW (00:04:43):
Yes. I haven't been, but I've heard it is a lot like Supercon in that there are just so many people, and everyone you talk to has something cool they're working on. How do you decide what conferences to go to? And are there others? There are those two I know you go to, but are there others?
BH (00:05:05):
In the software part of my career, I've gone to a bunch of different conferences. I try to be pretty judicious about which I end up going to. It's kind of funny, but almost always, the talks are sort of the last on the list of things that are interesting at the end of the conferences. So it might be like, "We're doing this conference and there's all these great talks," and you get all jazzed up about it, but then you just end up meeting really cool people, or ... When I was going to DEF CON, I would just spend the whole time in the Hardware Hacking Village, and just messing around hacking badges and stuff like that.
BH (00:05:40):
So, these days, those are the only two I've been to recently. In the software career, there's all kinds of fun stuff. DEF CON was definitely the best mix of software and hardware. That was pretty fun.
EW (00:05:55):
At the Open Source Hardware Summit, did you meet John Leeman? He's the Don't Panic Geocast guy.
BH (00:06:06):
Yeah. Yeah, I did.
EW (00:06:08):
Okay. He did a really good summary on their show, so I was going to ask you more about what talks you went to and who else you met, but I think I'm going to skip some of that and say just go listen to John's report on the Open Source Hardware Summit. I have a really hard time saying that, but yes. That's the Don't Panic Geocast with John Leeman and Shannon Dulin.
EW (00:06:35):
Okay. One of the other events you went to recently—
BH (00:06:37):
So, is that—
EW (00:06:40):
Oh. Going back.
BH (00:06:41):
He's the guy that did the seismic recording tests, and recorded gigabytes of data in milliseconds kind of thing?
EW (00:06:48):
Yeah.
BH (00:06:48):
Yeah, okay. Yes. Then yes. Same guy.
EW (00:06:52):
It's fine, you can just say yes. It's okay.
BH (00:06:53):
Well, I didn't know if I remembered the right person, because I'm terrible with names. I could remember somebody based on their project a lot better than I can remember their name.
EW (00:07:04):
So much stuff. That actually does lead into what I was going to say, and that's Hats and Hacks. You came to our party last January.
BH (00:07:12):
Yeah.
EW (00:07:13):
And as far as things, people's names that I don't remember, but I remember what hat they wore or what hack they brought. Yes. And you won the hack contest part of it with a hat. Could you describe the hat?
BH (00:07:34):
Yeah, it was a wifi-enabled hat, and you could connect to—
CW (00:07:39):
Of course.
BH (00:07:40):
Right? And what could you possibly need wifi on a hat for? Well, of course so that you could log into this thing and change the lights, because it had a bunch of lights going around the brim, so you could actually log in and change it. So instead of just selecting some patterns, it was all the math. So it's basically a webpage with a bunch of expressions on it. If you go in there and tweak numbers and type in stuff and change the pattern of the LEDs, all in real time.
EW (00:08:07):
Tell me about the math parts, and how I get good patterns from typing in ‘cosine t’ or whatever I needed to type in.
BH (00:08:15):
Yeah, yeah. It helps to start in an HSV kind of color space, where you have ... Hue is, if you imagine a circle or a clock, but instead of 12, it's zero, and it goes around through the circle from zero to half down at the bottom, back up to zero up at the top. It's a terrible explanation.
CW (00:08:44):
It's difficult to describe color spaces in audio.
BH (00:08:47):
So you basically have a color around this rainbow that loops around in a wheel, and that makes it really easy to use things to just sort of change color. You could have an infinitely incrementing number and it would just basically be shifting color until the end of time. Because you basically take the mod one of that and you get this fractional floating point remainder bit and feed that into color space, and you get a color. So if you wanted to shift around or change over time, you can offset it based on time, you can take the pixel index, some fraction, and use that. You can then feed time through a sine wave, and then you basically get this thing that shifts back and forth. Then you can take a bunch of sine waves and kind of overlap them and create fun interference patterns, and just end up with interesting blinking LEDs.
EW (00:09:40):
So, if I did a square wave ... or, I'm sorry, a sawtooth pattern ... then when it was at the high point, it would be red, but as it went through the whole ramp, it would go down, and it would go red, orange, yellow, blah blah blah, until it got down to violet, and then it would go back up and cycle through again.
BH (00:10:01):
Yep.
EW (00:10:01):
But if I did that on the value of the HSV, then it might have green all the time, but it would be like a snoring pattern. A sawtooth would be more like a bright up, and then it goes dark, and then bright up.
BH (00:10:15):
Yeah, yeah. Yeah.
EW (00:10:20):
But this whole math thing is kind of a little language.
BH (00:10:24):
Yeah, it is.
EW (00:10:25):
Where did it come from?
BH (00:10:28):
It started off as a hack, even before it was a hat. It started off as a hack, and it was just like, "Can I reduce the iteration cycle of programming LEDs?" I've done a bunch of LED stuff over the years, for Burning Man projects or just little tinkering kind of things, and always it's the same kind of thing ... the same kind of thing that I imagine embedded engineers have ... is if you want to try something, you've got to make your changes, compile it, wait for the compiler to finish, it dumps out some hex file or whatever. You run it through your programmer, your programmer connects in, uploads it, resets the thing, it boots back up again, and you can test your new code.
BH (00:11:06):
So I was trying to see, is there a way to kind of shortcut this? Is there a way to reduce the iteration cycle in this? I found an expression parser, and it basically just takes a mathematical expression in a C-like syntax, and then gives you an abstract syntax tree that you can then do things with.
BH (00:11:29):
What do I do with this abstract syntax tree? Well, basically I end up turning it into a stack machine. So I unroll this tree, depth first, into a series of operations that push things onto a stack. So if you wanted to call HSV with the values one, two, three, you would push one, two, and three, and then push the operation for calling HSV. Then HSV would pop those off the stack and consume them, and potentially return a value, and so on and so forth.
BH (00:12:00):
So I did all that, where you could type in this expression, it would get parsed, compiled into basically a set of these instructions, and then that was fed down into the chip, and then a small virtual machine. It's really just simple. It's just going through the sequence of operations. And then sometimes it's calling out to, like, "I need to add these two numbers, or I need to multiply them," and so on.
CW (00:12:24):
So, is all of that running on the micro?
BH (00:12:26):
Yeah. The parser was still, it's still JavaScript web based, so that's all still browser. I'm not doing any of the parsing on the actual microcontroller.
CW (00:12:37):
Okay.
EW (00:12:38):
But the ... What does the microcontroller receive from the Java page?
BH (00:12:46):
It receives something that sort of looks like an assembly language. It's a bunch of mnemonics for operations that need to happen. So if you need to add two numbers, I send down a plus, and then I tell it that you need to consume two arguments. On the microcontroller, I parse all this stuff out into more efficient opcode to run in memory, and then just basically run through the list of operations.
EW (00:13:15):
And what is the microcontroller?
BH (00:13:18):
It's an ESP8266.
EW (00:13:20):
Those are the $4 wifi controllers that are so ubiquitous, and are not at all based on ARM Cortex anything.
BH (00:13:27):
Yeah. They're pretty amazing. The processor that they put into these things is very impressive. This thing, it can run at 80 or 160 megahertz, has crazy amounts of RAM, and four megabytes of flash, and in a pretty cheap module. It's a game-changer.
EW (00:13:48):
It really is, but it's getting older now.
BH (00:13:51):
It is.
EW (00:13:51):
And there are new ones out.
BH (00:13:53):
Yeah. They have the ESP32, which is its big brother, and it's got Bluetooth in addition to wifi, and all kinds of other cool stuff, heaps more RAM, a little bit faster clock, two cores actually ... so they have one core dedicated for all the wifi management type stuff, and then one for you to just run whatever you want to run on it ... and those are interesting, but they're also a little bit more expensive, a little bit bigger. So I think there's still room for the ESP8266, just being a cheaper, smaller module.
EW (00:14:26):
Okay, so you have lights as well. What kind of lights were you using for this hat?
BH (00:14:35):
I started off when it was in the hack phase, with NeoPixels, and I've been using those for a really long time ... the WS2812, 2811s ... but I haven't had great luck with them. They always glitch out or get flakey, and—
EW (00:14:52):
Ah, the blue glitch. Which can only be fixed with the appropriate capacitor. The appropriate capacitor is always not the one you put on.
BH (00:15:02):
Yeah, and sometimes it's ... I don't know, it's like whatever die manufacturing process that goes into these things, they delaminate themselves, or contamination gets in there and messes it up, and sometimes you just have to take the LED off or just cut the strip and rewire it.
BH (00:15:22):
Around that same time, I saw people started to mention the DotStar and started to see those pick up a little bit more traction. I thought, "That's pretty cool. Let me check it out." Well, I got some and I was just blown away. These are really cool LEDs. They're pretty similar in terms of they have three-channel RGB 0-255 values, but they also have another channel for overall global brightness, and they operate at a faster PWM refresh rate.
BH (00:15:56):
If you've ever seen NeoPixels, they're not really great for persistence of vision type effects, and even if they're just stationary, they kind of blink if you're looking around, or ... you know?
EW (00:16:07):
Yeah. They're just not fast enough.
BH (00:16:10):
Yeah. So these are awesome. I ended up exploring that global brightness. It's additional five bits on top, so it's basically multiplied with the brightness of the channel. And it's not per channel, it's the overall brightness for all RGB. And you can do some pretty amazing stuff with that.
BH (00:16:33):
One of the things is, if you're using a NeoPixel and you're trying to get something that's not just blindingly bright and blinky, but something that's a little bit more subtle, it just really doesn't have the resolution to cut it at lower light levels. If you look at the brightness difference between a one and a two, is just staggering, and between a zero and a one, it's clearly on or off. There's no fade-to-nothingness kind of levels. You can actually do that with these APA102s.
BH (00:17:05):
I ended up figuring out how to basically take an HSV function, and take that brightness level, and then convert that back in and figure out how much I need on the RGB side, and how much can I feed in to that global brightness? So you get just these incredibly smooth transitions. It will go down to where you can't even tell that it's on, and you have to look at it really, really close and you can kind of tell. So it's pretty amazing.
CW (00:17:33):
I'm surprised, because five bits doesn't seem like enough to make a smooth transition. Is it because it's multiplying against the other one, so you can kind of expand the space?
BH (00:17:41):
Yeah.
EW (00:17:42):
Well, it's five plus three-eighths. No, is it ... How many bits do you get to set the LED? Is it eight bits per LED, or is it eight times three?
BH (00:17:56):
You have five plus eight, basically.
EW (00:17:59):
Okay.
BH (00:17:59):
Yeah. But it's not exactly just five plus eight, because you end up getting more of the different variations at lower brightness levels, because they're effectively multiplied together.
CW (00:18:11):
Okay. That makes sense. But it does make it a little trickier to take an input and say, "This is what I want," and figure out what those five bits should be, because there's going to be spaces where you need to know, "This is one of those dangerous areas where I want to use the global thing to get me more range," right?
BH (00:18:29):
Yeah, exactly.
CW (00:18:29):
Okay.
BH (00:18:31):
I mean, ideally, you just want to say, "I want this brightness number. Make it so and figure it out. And don't set the global brightness and dim down green, because green is bright," and so ... Yeah, I figured out how to smoosh all that into this HSV function, and you basically get it for free. You don't have to think about it.
EW (00:18:50):
Cool. Okay, so one of the things I have learned about the LEDs like this is that they require power handling. They need more oomph. They draw more current than if you just have two or three LEDs out there. You can't drive their power from your processing board.
BH (00:19:15):
Well, yeah, I guess it depends on what you're powering your processor with.
EW (00:19:18):
You know, a LiPo 4.2V battery.
BH (00:19:24):
Yeah. Those can put out quite a bit of juice.
CW (00:19:28):
Yeah, I've got some in there that will melt the house.
EW (00:19:31):
[crosstalk 00:19:31] batteries. It was a hat, and you didn't have a backpack, so you had to put some power on there.
BH (00:19:40):
Yeah, I mean, they do take a surprising amount of juice. It adds up very quickly. Each of them is, imagine 20 milliamps per element, and you're like, "What's 20 milliamps? It's nothing," right?
EW (00:19:51):
Yeah, it's trivial.
BH (00:19:51):
But then you have a couple hundred of them, and all of a sudden ...
CW (00:19:55):
Things are melting, and your hat is catching on fire.
BH (00:20:01):
Actually, so the APA102s are a little bit better than the WS2811s in this regard. If you look at the strips, the WS2811s actually have little tiny capacitors. They have the bypass capacitor, basically, on every single chip all the way down the line. The APA102s don't need that.
BH (00:20:18):
The reason for that is that the signal and timing conditions for those WS2811s are super, super critical. If they get any kind of noise on the power supply, they can end up freaking out and getting the wrong signal, and you get weird flickering effects, and all that kind of not-so-fun stuff. The APA102s are basically SPI. You have a clock and a data, and so the integrity of that signal is good enough that ... at least on all the strips that I've seen ... they don't have additional capacitors on there.
EW (00:20:49):
And I've used SPI with the WS2812, the NeoPixels, but it's not like I'm using it as SPI, I'm using the SPI port to trick it into talking to these NeoPixels. With the DotStars, the APA102s, it's really SPI, it's really data and clock; it's not some weird specially-timed driver and median bizarreness.
BH (00:21:16):
Yeah. Exactly. And people have done a lot of interesting tricks. Charles Lohr has the I2S driver on the ESP8266, which is pretty awesome. So basically fill up memory with a bit sequence that this thing uses, this I2S driver, to just basically spew out a bit stream that ends up fooling it to think that it's in the right protocol. It's amazing stuff.
CW (00:21:38):
I2S is usually used for audio codex, right?
BH (00:21:41):
Yeah.
CW (00:21:41):
Pretty high speed. So it just replays that whole thing over the thing and ... ?
BH (00:21:45):
Yep.
CW (00:21:45):
That's a great idea.
BH (00:21:47):
Yeah. And you can clock the I2S driver on those ESP8266s to something ridiculous, like 40 megahertz or something crazy. Way beyond what you need for audio. You can really abuse that peripheral.
EW (00:22:04):
And we had Charles Lohr on the show, talking mostly about ColorChord, if I remember right. He had an ESP8266, and he was controlling LEDs, but he was controlling them live. So if he was playing music, he wanted the LEDs to go with the music that he was playing at that time. But with your hat, I would log into it and set it up for a pattern, and then go away and it would continue that pattern forever. It didn't need any live input. Is that a fair assessment of how they're different?
BH (00:22:42):
Yeah. Yeah. My understanding, ColorChord is all audio-driven, and it's really cool.
EW (00:22:48):
It's very pretty.
BH (00:22:49):
Yeah. It's pretty cool stuff. And he's doing some pretty amazing audio analysis on the ESP chip using its ADC and all that kind of fun stuff, as far as I could tell. It's just really, really cool stuff. On the controller that I've got, right now, it's all based on time, so time is your only variable, really. Then you just faded that in through a whole bunch of math. So it's good for non-interactive patterns.
BH (00:23:15):
That said, it does have a WebSocket protocol, so you can actually connect to this thing through a Raspberry Pi or something like that and feed it in variables, so you could use it to set variables in real time if you had an audio processing engine or something on a Raspberry Pi, or some other computer. Or even another ESP8266.
EW (00:23:37):
I like both, because sometimes I want the lights to go with that I'm doing, and sometimes I want to be able to set up a lamp in the living room and not have it need constant interference from me. I just want it to do the thing it was supposed to do.
EW (00:23:54):
Okay, so this is your hat, and then a few months later, you sent me a widget and you said, "This was it. This is ... " You named it Pixelblaze.
BH (00:24:07):
Mm-hmm (affirmative).
EW (00:24:08):
And you gave me one, and I think I blew it up immediately, because that's how I roll. But then you gave me another and explained it to me, and wrote a nice getting started guide, or idiot's guide to not blowing up my board, I think was maybe what you were thinking it should be called, but ... You gave me the board and some LEDs, and then you said, "I'm thinking about putting this on Tindie." Why? I mean, selling hardware is hard! Why would you do this? I understand building these things—
BH (00:24:44):
Why would anybody go through this?
EW (00:24:45):
But why does anybody do this?
BH (00:24:46):
Yeah. That's a great question. I want to build things, and hopefully make a living doing that, otherwise I'm going to have to go back to boring old dry software at a nine-to-five. This was a hack that I thought was pretty interesting and kind of unique, and I thought, "Maybe this would be useful for other people. Can I polish this up? Can I put it out there, maybe sell a couple units?" But more just to get the experience, like what does it take to do that? If I'm going to do this process for something that's bigger or more complicated, try it first. Try it on something simple.
CW (00:25:29):
That's a really good point, yeah. Go through the whole pipeline and process with something that's easier to do.
BH (00:25:37):
Yeah.
CW (00:25:38):
Learn the hard part at the business side ... or at least the production side ... without a massively complex product.
BH (00:25:45):
Yeah, and all the things ... I mean, there's so many things to keep track of, and to learn, and to figure out. On the technical side, those are all the fun challenges. But then you have stuff like, "How do I ship this thing?" One of my first orders was to somebody in Spain, and I'm like, "How do I ship a package internationally?"
CW (00:26:07):
That always happens.
CW (00:26:08):
"Do you ship to ... ?"
BH (00:26:10):
Yeah.
CW (00:26:10):
Yeah.
BH (00:26:11):
And, having no idea what to charge for these, I put the price at $40 with free shipping. I figured I'll just eat whatever the cost was. Well, it turns out that shipping can be quite expensive. It was a learning process. I had to figure it out.
BH (00:26:30):
Another guy, I ended up shipping, and I was shipping by United States Postal Service. They have these rules, like if it's more than three-quarters of an inch thick, or if it's rigid, and all these kinds of stuff, and you need to use this, ship it as a package, otherwise you can ship it as just a regular envelope. I was thinking, "Well, this is a little teeny board. It's not like you can't fold the non-board parts of the package. I can't imagine it getting stuck in some kind of auto-loader or something like that. It's definitely not more than three-quarters of an inch thick."
BH (00:27:04):
So I put it in the mail, and I get this email from this guy that's understandably very upset because they actually charged him the additional postage.
EW (00:27:16):
Oh!
BH (00:27:16):
Yeah!
EW (00:27:17):
Oh!
BH (00:27:17):
Yeah. I was able to work it out with that guy, but it was like, "Oh, that's a learning experience." And that's not something I want to give people that buy my stuff. I want them to have a great experience. I want them to say, "This is really cool. I got this thing, it's really, really fun;" not like, "Oh man, this guy said it was free shipping, and I got hosed on extra shipping charges," and all that kind of stuff. So, shipping was a whole learning experience.
BH (00:27:43):
Then there's the whole marketing side of things. How do I tell people about this? So Tindie is great, because you can put it up on the store and people do browse, but it's not enough to drive everything. You have to do some marketing beyond that, and just learning how to even do that ... I don't like the extra spammy stuff, or if I'm following somebody on Twitter and they just start not posting anything interesting, and it's just continuous spam, and it's like, "Unfollow that guy." I didn't want to be that guy, I want to post interesting stuff, but at the same time, this is how I can generate interest, and even just knowledge about this thing's existence. So just trying to figure out where I can do this, and how to do that in a way that I'm comfortable with, but also that is interesting to people.
EW (00:28:33):
HP, when I first worked there in the '90s, had this reputation of being very bad at marketing because they promoted their engineers to marketing positions, so there was this phrase that if HP sold sushi, they would call it ‘cold dead fish’. As an engineer, I'm like, "Yeah, of course! That is how I market. I made this thing. Here are all the problems with it, and—"
CW (00:29:07):
"Here's why it might not work for you."
EW (00:29:08):
Yeah. It's all about—
CW (00:29:08):
"Here's why you shouldn't buy this."
EW (00:29:08):
Yes!
CW (00:29:11):
"I'm really embarrassed to be selling this. Please don't buy it."
EW (00:29:15):
And as an engineer, I don't mind buying that way either, because I understand the discrepancy between another engineer telling me what they made and how it doesn't work. I'm used to that. But most people would rather have sushi be called ‘yummy deliciousness’ instead of ‘cold dead fish’. Or maybe we should just call it ‘sushi’. So, I understand—
CW (00:29:45):
Which means ‘cold dead fish’, but ...
EW (00:29:49):
I understand the difficulty quite well, and my own exploration into marketing is entirely about this podcast, which we are terrible at marketing. What have you learned? Where did you go? Twitter isn't it. I know, because people keep telling me I should market someplace other than Twitter.
BH (00:30:11):
It definitely helps. I think it's really about connecting with people that are interested in this kind of stuff, and trying to figure out where they are and where they hang out. That's kind of weird, because I am one of those people. I built this for me. I am my target audience. But I just messed around with Arduinos and stuff. So I had a bunch of Arduinos, or if I needed to, I would build a board and put a pick in it or something like that, or eventually an ESP8266, so I was just really about do-it-yourself kind of thing. But, for me, that was sort of the thing that was the most interesting; it wasn't necessarily the end product.
BH (00:30:50):
I started off thinking, "Who is interested in having the end result, cool-looking LEDs, as opposed to figuring out how to make a board and program a bunch of stuff, and all that kind of fun stuff?"
EW (00:31:01):
"Who wants the output of my work, instead of doing all the fun stuff like I did?"
BH (00:31:11):
It got me to thinking, artists, right? People that make interesting physical artistry.
EW (00:31:18):
Installations?
BH (00:31:19):
Yeah, exactly.
EW (00:31:20):
Yeah.
BH (00:31:20):
And maybe not the big, fancy installations, because obviously those you need a lot of thought and design, and almost the technology is secondary to the desired effect on those sort of things, but local artists ... Santa Cruz has a huge artist community, so I've got a lot of friends I've reached out to, "Can we incorporate this into some of your artwork?" That was actually, that was a great start in figuring out, how will this thing work? I tried that market first, and it was actually really cool.
BH (00:31:51):
My buddy does these amazing laser-cut wood mandalas, and other things, and he was making this ... He was commissioned to make this gorgeous Tesla portrait, of Nicola Tesla. Just amazing multi-layer ... I can't even describe it accurately. So we ended up putting one of my controllers in there, but taking away all the programming aspect and just reducing it down to math, it wasn't enough for that target market. The math stuff was still too much.
EW (00:32:27):
Oh yeah, because most artists also get degrees in math.
BH (00:32:32):
Right. Of course.
CW (00:32:33):
Signal processing.
BH (00:32:34):
I mean, who wouldn't—
CW (00:32:35):
Trigonometry.
EW (00:32:37):
And interference patterns. I mean, yeah, totally. "You want two sines and a cosine in order to build this pattern I want." Yeah. I found your math interface confusing until you did more of a writeup on it, and then once I realized I could copy some of you canned ones and change them, it helped, but ...
EW (00:32:56):
Okay, so yeah, you figured out that the math part was not optimal for your target market.
BH (00:33:05):
Yeah, so that wasn't probably the best fit. So instead of pursuing that and going deeper into there ... And again, this sort of started out like ... And this is the opposite way that you should build things. You don't build the product and then figure out if you have a market for it, you figure out the market and then design your product around the needs of that market. But, of course, this is a hack. This is for me, so—
EW (00:33:28):
[crosstalk 00:33:28] Yeah.
BH (00:33:29):
So I'm coming at it from the other direction, so I'm just trying to see where this really fits. I've had a lot more interest with the kind of people that are a little bit closer to me; as opposed to necessarily artists, it's people that want to do cool stuff with LEDs.
EW (00:33:48):
Okay.
BH (00:33:50):
So I've been tailoring it more and more to that.
EW (00:33:52):
All right. Do you see a big future for this product, or are you already planning your next one?
BH (00:34:05):
I'm still working on the future list. It's funny, even like when you started the show, the first thing you do when you start a microcontroller, you get in Arduino or whatever, you run the blink sketch, and you're blinking in LED. I never really stopped with that, just kept blinking LEDs. More LEDs, more complicated blinks, interesting ... even infrared stuff. It's all just blinking LEDs at the end of the day.
BH (00:34:36):
Sorry, I totally lost track. What was—
CW (00:34:38):
What's next?
BH (00:34:40):
Right, right, what am I doing next. So, even just for blinking in LED, the amount of different features and product enhancements that could go into this thing is pretty crazy. I've tossed around ideas for segment mappers. That's a pretty common feature request where, "I've got this strip of LEDs, but I want this half, or these 20, to do something different than the rest of them."
CW (00:35:03):
Oh, right.
BH (00:35:05):
And things like that. You can do that in math, but it's kind of a hassle.
CW (00:35:08):
What about syncing multiple?
BH (00:35:12):
Exactly! That was the other highly-requested feature, was, "I want to use this in a costume or something, and I want one in my left boot, one in my right boot, and maybe a belt or something like that. I don't want them to just do random, unsynchronized stuff, I want them to all sort of line up; maybe control all of them with one interface so I don't have to log into the wifi of each of these three things individually. But if I do put them on the same pattern, it would be really cool if they at least shared a time base."
BH (00:35:46):
So there's that—
EW (00:35:47):
That doesn't seem easy.
BH (00:35:49):
It's harder than it should be.
EW (00:35:51):
Because they're each individual microcontrollers.
BH (00:35:53):
Mm-hmm (affirmative).
EW (00:35:54):
And they don't share a common clock.
BH (00:35:57):
Right.
EW (00:35:57):
So you have to have a start signal, which needs to get to them all at the same time, and 802.11—
CW (00:36:06):
You just run an NTP server on one of them.
BH (00:36:08):
Yeah, exactly.
EW (00:36:09):
All right.
CW (00:36:10):
And it all works itself out.
EW (00:36:12):
[crosstalk 00:36:12] All right, that's a solution.
BH (00:36:14):
Yeah. And they actually have NTP libraries if there is an NTP server somewhere else, but I haven't seen any NTP servers for these.
CW (00:36:20):
Yeah, that's the trick. Client is one thing; the server is something else.
BH (00:36:25):
An NTP protocol has got ... It does all kinds of other things that aren't necessarily super critical. So I ended up looking at the specs for NTP, and re-implementing some of that protocol, especially the back-and-forth and time window calculation, and got pretty close, but this hack that started out running in the Arduino framework is still all executing in this main loop. So the main loop is doing all these things; it's calling out to the web server, it's calling out to the pattern engine, it's calling out to the WebSocket thing, and trying to do some time-sensitive UDP all in the middle of that doesn't really work too well.
CW (00:37:07):
I'm surprised it's working as well as it is.
BH (00:37:13):
Yeah, so the next thing to go from there is maybe look at doing some async stuff. There's libraries out there that will call some handler in an interrupt so you're not waiting for whatever is going on in the main loop to finish what it's doing, and adding tens of milliseconds to your time-sensitive thing.
CW (00:37:35):
And you don't want to move away from Arduino, because you don't want your customers to have to do something more complicated, right?
BH (00:37:42):
Well, actually, the customers don't have to touch any actual traditional IDE or development environment at all. That's part of the draw. It's literally, you just fire up a web browser and you're good to go. But yeah, it started off in that framework, and I've been looking at what will it take to get away from that. You can take the Espressif ... I forget what they call it, but they have an SDK ... and just go from there, or find a web server that's open source, or find a WebSocket server, and something that helps you set up wifi and all that kind of stuff. There's all these libraries that made it a lot easier to sort of get started, but they're not, I would say, professional enough to really have it be considered completely dialed in. It's sort of a dead end for a lot of those things, so it's like, "Do I start from scratch, or do I just live with the limitations that I have right now and keep going?" That's the same kind of challenge that I imagine all projects face, at some level.
EW (00:38:58):
Yeah. "Do I pay the technical debt, or declare bankruptcy and go on?"
CW (00:39:02):
It does sound like this product has a lot of head room. It's a very powerful chip, you have lots of space, there's lots you can do with it without changing anything except software.
BH (00:39:14):
Yeah.
EW (00:39:16):
So, it costs about $40?
BH (00:39:19):
Yeah, and I've actually, in the process of figuring out how to manufacture these things at home, I've gotten better at it. It used to take me a lot of time to put together one of these boards; so a bunch of little surface mount things, and ESP chip, and a fun excursion into figuring out how to get panelized PCBs that weren't panelized. I had this little, tiny PCB and this stencil that's an eight-by-ten sized stencil or whatever, and it's got just one board in it, so I'm doing them one at a time.
BH (00:39:54):
But I've now upgraded to this pneumatic thing, so it's basically like a little air pump and a little tiny syringe thing with the little needle that I can pick up these little 602 resistors a lot faster than tweezers.
EW (00:40:11):
And assembling these yourself is ... Do you know other people can assemble things for you?
BH (00:40:18):
I do, I've heard that. I've heard of these places.
CW (00:40:24):
You mean I didn't have to build my Mac by myself?
EW (00:40:31):
But you're enjoying the building part?
BH (00:40:33):
Yeah, yeah, and I haven't had the volume—
CW (00:40:35):
Yeah, that's the thing, is there's a curve, right?
EW (00:40:38):
Yeah, you have to have the volume.
CW (00:40:39):
It has to be cost effective.
BH (00:40:40):
Yeah. Before I jump in and build a couple hundred of these things, I want to make sure that I'm going to be able to sell them. Otherwise I'm going to have more fun gadgets than I can possibly figure out what to do with. I've actually dropped the price a little bit, so they're $34, I think, right now, or $29 if you buy three or more. And I do have a code for your listeners.
EW (00:41:04):
All right, a coupon!
BH (00:41:05):
Yeah. So if you go to Tindie and you look up ElectroMage, and you purchase some of these and you put in the code [REDACTED] you get 25% off.
EW (00:41:12):
Wow!
BH (00:41:13):
Yeah.
EW (00:41:14):
Thank you.
CW (00:41:15):
I'm going to buy them all.
BH (00:41:16):
Okay!
CW (00:41:18):
He doesn't care.
BH (00:41:18):
I can make more.
EW (00:41:24):
Then he gets to make more. And I do feel like I should say that if you decide to assemble things, you should talk to Bob Coggeshall over at Small Batch Assembly, because he's giving out Embedded.fm discounts, too.
BH (00:41:33):
Yes. I actually—
EW (00:41:34):
Often.
BH (00:41:35):
Bob, if you're listening, I have a draft email that I'm working on right now.
EW (00:41:39):
Great.
BH (00:41:41):
Yeah, and I'm just trying to figure out, how do I source all the parts for these things? So I did a little bit of digging, and I can get these ESP8266 modules that are usually ... They come to me in these little antistatic bags, and that's great, but I imagine you can't feed a handful of antistatic bags into a machine and have it assemble things.
CW (00:42:00):
Not yet.
BH (00:42:02):
Not yet. So, getting some sort of tape or reel of these things, figuring out how to source all this stuff, and then of course the transistor that I use for the level shifting is out of stock everywhere, so I have to figure out an equivalent transistor, and I'm reading data sheets. That's really fun, figuring out gate charge and nanosecond rise time, and—
CW (00:42:23):
But this is a huge skillset. This is something that, once you've done this and you've gone through the process, and you learn some of these ‘gotchas’, doing this anywhere else, you're going to have a leg up on a lot of people, right? Because that's the whole production/manufacturing/electrical engineering thing.
BH (00:42:45):
Yeah, and it's fascinating. It's exciting. It's fun.
EW (00:42:49):
Sourcing is a skill. All of these things ... knowing where to go, how to KiCAD up a board.
CW (00:42:55):
And for small companies, this is not something, like you were suggesting, that you outsource a lot; this is something you have to ... It's on you to figure out, "I need these parts, and this one is difficult to get, so can I get two sources," and that kind of thing. "Can I put this into a kit that I can send to somebody to ... " So, yeah, this is great learning experience.
EW (00:43:14):
So, the ESP8266 boards on their own are $4. And you're charging $40.
BH (00:43:23):
Mm-hmm (affirmative).
EW (00:43:25):
So you're charging—
BH (00:43:25):
So what's the deal with that? Why is it so expensive?
CW (00:43:27):
Let me explain capitalism.
BH (00:43:33):
Yeah, and I mean, I would love to sell them for exactly what I paid for them, but then I wouldn't be making any money. It's really to figure out the economics behind it, so ... That's funny. So I ended up looking into this thing, like how do you even price a board? How do you price this thing? Can I just take whatever it will cost to make, and then just add a dollar? Well, probably not if you're spending ... You've got the ESP chip, you've got the board, you've got all these transistors, there's some through hole stuff ...
EW (00:44:07):
Just the whole bill of materials.
BH (00:44:09):
Yeah. So you've got all these things, and then you've got to figure out, how much is it going to cost me to package and ship these things, and all that kind of fun stuff. There's a formula, like what if you want to have a reseller for these things? That would be pretty cool. And I'm not thinking that these things are going to be the most popular thing, that they're going to be carried in whatever replaces Radio Shack, but—
CW (00:44:30):
Adafruit.
BH (00:44:30):
Yeah. Exactly. That would be cool.
EW (00:44:31):
But yeah, it would be kind of cool if they were on Adafruit. And Adafruit has carried some others, like FadeCandy.
BH (00:44:38):
Yeah.
EW (00:44:39):
And SparkFun carries some things like this, so you can start ... Once you have a sales record, and a fulfillment record, you can start looking at them.
BH (00:44:51):
Yeah, exactly, and the price is part of that experiment; to try to figure out, what would I have to sell these things at to be making a little bit of money, even if I was in a reseller type situation? And then try to adjust for there.
BH (00:45:08):
Once I can get my manufacturing cost down, and I'm not spending all day building a couple of boards—
CW (00:45:14):
That's the thing, because your time is valued at ... Every hour you spend on it is your hourly rate.
BH (00:45:20):
Yeah, exactly.
CW (00:45:21):
If it takes you an hour to build two boards, that's pretty expensive. That's the tricky bit, is incorporating your labor into it; not just parts and that sort of thing.
BH (00:45:33):
Yeah. Yeah, exactly.
EW (00:45:38):
But going back to my question, it wasn't just a ‘how do you price it’, it was a ‘what does it have in addition to the baseboard’?
BH (00:45:46):
Oh yeah. Okay. What's on the board, what do you get? I tried to keep it as small as possible, so it's basically—
EW (00:45:53):
He's showing you with his hands, by the way.
BH (00:45:55):
Yeah. It's this many inches.
CW (00:45:57):
He's showing his hands. It is a small square, less than two inches, but greater than half an inch on each side. Sorry.
BH (00:46:06):
I forget, but I think it's something like 40 millimeters by 25 millimeters, or something like that. If you don't count the ESP antenna. If you do, it's whatever that is.
BH (00:46:19):
So the idea is it's pretty small, that you could incorporate it into wearables. Obviously I'm still using ESP12 module, so it's still at least postage stamp size. I added in screw terminals because, in pretty much all of the projects that I've ended up working on, I've either used little ... like the tenth-inch spaced header pins, or soldered things in and then you need to take the thing out, and then it's just a hassle. So I ended up going with screw terminals so that you could install this thing and remove it without any kind of soldering at all, and you could just go from some bare wires that you've got coming out of your art piece or whatever.
BH (00:47:04):
So there's a screw terminal to connect to the strip, there's a micro USB connector for power, and then on the right-hand side, there's a header where you can actually connect the button and cycle through patterns, or put it back into wifi setup mode.
EW (00:47:22):
All right. And the USB is primarily power? But that's also how you program it.
BH (00:47:30):
Yeah, USB is just power.
EW (00:47:33):
Oh.
BH (00:47:33):
I actually program it on the header that's on the right-hand side. It's got all the things that you need to flash the ESP; the serial port, power, ground, GP-0 and reset so that you can hold that low and put it into programming mode.
CW (00:47:48):
Do you bring out any of the other ESP stuff, signals or ... for prototyping, or just purpose build?
EW (00:47:59):
I need an accelerometer?
BH (00:48:02):
Yeah. Today, it's just what's on the header. Obviously you can use GP-0 for the button, so that's repurposed, but so far none of the other pins on the version one board, but—
CW (00:48:13):
That's a size versus extra headers choice, yeah.
BH (00:48:16):
Yeah. But today actually I sent to OSH Park ... favorite board prototyping place ever; those guys are awesome ... I sent them a new version, so I was able to move things around a little bit, and I've exposed the ADC. What I want to do there is add in software, so in your expression you could use whatever is going on in the ADC. I think that would be pretty cool. You could at least do a view meter, things like that.
CW (00:48:39):
Yeah.
BH (00:48:41):
And then, on the back side, I'm not adding additional through holes, but I've exposed a bunch of paths for all the other pins, so all the IO on the new version are exposed.
CW (00:48:49):
Cool.
EW (00:48:50):
Cool.
CW (00:48:51):
I was specifically thinking about audio when I thought of that question. It's like, "What if I want to do something with a signal?" Even if it's a low rate signal, you can do some really cool stuff.
EW (00:49:03):
Yeah. Christopher today, after doing our own things for a couple of hours, he returned to the kitchen and he said, "I made a project!" It was kind of cool.
CW (00:49:15):
Well, I just put a kit together.
EW (00:49:17):
It's still fun.
CW (00:49:18):
It doesn't work right.
EW (00:49:20):
It will. All right, so you're selling these on Tindie, and you're learning a lot about building a small kit company, and you have not told very many people about one of the coolest things you built with this. The hat is cool, I give you that, but when I saw the light you built for your daughter, I was just like, "To heck with selling the board, just sell kits for that." It was awesome. Could you describe it?
BH (00:49:50):
Okay. Well, there's an idea. It's basically a design that I based off of a tulip. It's all laser cut. It's a bunch of acrylic. I took an acrylic sheet, and I kind of drew an outline of a tulip petal, whatever I thought it ... what a tulip looked like. I had to Google it. Fortunately, there's little papier-mâché patterns or whatever for tulip petals. Took that, and then I was like, "Okay, well this is cool," so I fired up OpenSCAD and they have this great ... This was a fun detour. Learned all about L-system fractals, so that was fun, and made a little fractal tree pattern thing that I could etch onto the petals, so instead of it just being a plain acrylic sheet or whatever, it's got fun fractals on it.
BH (00:50:47):
Laser cut two of those, and then made a vice with some wood disks. Held that together, and then got a heat gun and heated up these petals. Then when the acrylic got malleable, I was able to fold them in so it's more of a three-dimensional flower structure.
BH (00:51:06):
So now I've got this, basically, donut thing, and 3-D printed a bracket that basically let me stuff these LEDs in facing outwards so that they would shine into the circle donut edge of the acrylic. Then as it went through the curve of the bent acrylic, it's bouncing around until it hits the edges, or the laser-cut edge parts. So I've got photos of that up on ... You know, I don't have it on my website. I should put it on my website.
EW (00:51:37):
No, you don't have it on your website. And you don't have it on your Tindie store, where you could say, "You could build things like this."
CW (00:51:42):
You've got three days.
EW (00:51:44):
Yeah.
BH (00:51:44):
Okay.
EW (00:51:45):
By Wednesday. Maybe Thursday.
BH (00:51:48):
Yeah. I mean, that's pretty easy, because I could just upload the patterns if people have access to a makerspace.
EW (00:51:58):
Well, that was the thing, is that you listed a number of things there. You have the laser cutter, you have to etch it ... which is probably laser cutter, unless you have a water jet, in which case you also need a laser cutter ... and then you need to be able to melt it safely. Although, if you didn't want to use that pattern, there's the malleable plastic that you can heat up and it gets soft, and for as long as it's warm, you can squish it around. That doesn't have the clear sides, so it would glow much differently, but it might still work.
BH (00:52:38):
Yeah. And I think you could probably take the acrylic and even just put it into your oven. Put it on ... I forget where the deformation temperature—
EW (00:52:48):
Maybe into your reflow oven.
CW (00:52:49):
Don't try this at home.
EW (00:52:51):
Yeah, don't use your cooking oven.
BH (00:52:51):
You know, bake some cookies, too.
CW (00:52:57):
One could maybe do this.
EW (00:52:59):
Maybe do this.
CW (00:53:01):
But we shouldn't probably suggest it.
BH (00:53:02):
Yeah.
EW (00:53:03):
But you also 3-D printed brackets.
BH (00:53:07):
Yeah.
EW (00:53:07):
And I know you like 3-D printing, because you and I have talked about this in the past. I can't use my 3-D printer, and at one time, yours caught fire.
BH (00:53:20):
Twice.
EW (00:53:22):
Well, and then you brought it over and you let me watch it catch fire. That was totally fun.
BH (00:53:25):
Yeah. Yeah, I've gone through two printers that have caught on fire in varying degrees.
EW (00:53:32):
And did that teach you not to let them run when you're not home?
BH (00:53:36):
Yes.
BH (00:53:37):
Which limits the [crosstalk 00:53:39]
CW (00:53:39):
It really does limit the usefulness of 3-D printers, because they take forever.
BH (00:53:43):
Yeah. I mean, some of these things, you need to let it run for 16 hours.
CW (00:53:46):
What you need to do is to put them in a metal box with a fire extinguisher system on top. It'll just put itself out.
BH (00:53:58):
Yeah.
EW (00:53:58):
You have those battery-charging bags that are made of flameproof material—
CW (00:54:02):
They're just storage bags. It's not for charging, but yeah.
EW (00:54:04):
Oh, I see.
CW (00:54:04):
Yeah. You put the scary LiPos in those.
EW (00:54:09):
Do you have the best home shop, or are you going out to community college, or library? Where are you getting access to all of your toys?
BH (00:54:20):
I love having the tools nearby as much as possible, but the laser cutter is not something that I've ponied up for yet. Especially the ones that can cut half-inch and things like that.
CW (00:54:33):
That's serious business.
BH (00:54:34):
Yeah. So, there's a local makerspace ... Idea Fab Labs in Santa Cruz; they have Chico and Santa Cruz locations ... and they have a membership that gets you access to laser cutters and wood shops and all that kind of stuff. I've got a garage I've dedicated, I've repurposed for all this stuff, plus an office in the house. My hobby is serious enough that it's taking over some very large percentage of my house.
EW (00:55:05):
Which is good if you're running a business, but at some point, as you're packing boards to ship on the kitchen table, you start wondering when you get your life back.
BH (00:55:14):
Yes.
EW (00:55:15):
And maybe your family wonders that, too.
EW (00:55:19):
Okay, so then the lights shine into the edges of the acrylic, and you can see the glow of the colors on the etched part of the petals, as well as the edge of the petals.
BH (00:55:32):
Mm-hmm (affirmative).
EW (00:55:32):
But not in the petals themselves.
CW (00:55:34):
Through the magic of total internal reflection.
EW (00:55:37):
Yes.
CW (00:55:38):
Sorry.
EW (00:55:39):
Well, I mean, I was going to say something about fiber optics, but that's fine. You're totally [crosstalk 00:55:44]
CW (00:55:43):
Same thing. It's exactly the same. Yeah.
EW (00:55:47):
And it glows, and it can change, and it can change over a long period. So it's not just that it's blinking lights all the time, it's like, "Oh, it's morning. It can go on gently." It was really pretty.
BH (00:56:03):
Thank you. Yeah, and this is actually, it's in my daughter's room as a nightlight. So I can connect into it, and I've actually put in some patterns ... This is where those APA and the global brightness really comes in handy, because I can dim this thing down just to ridiculously low levels and it's still doing cool, interesting tones and colors and things. But it's not, obviously, keeping the baby up.
EW (00:56:28):
Cool. This isn't your first foray into light things. When I first met you, you told me about Synthia, which is synthesizer and light. You described it all to me, and I don't think you had any pictures, and I walked away thinking, "I have no idea what he's talking about."
BH (00:56:51):
We can repeat that experience.
EW (00:56:53):
Yes, let's repeat that for everybody. That's not ... I mean, Christopher has seen it, so Christopher can describe it at least.
CW (00:57:02):
I'm trying to remember. It was a keyboard, and I think there was plexiglass keys or something? But it was all very clear, and as you played, it would shoot the sound up the LEDs at the same time. So, depending on the timbre of the sound you were playing, it would do different things, and as you played, it would be like a cascading waterfall of light. I'm remembering based on five minutes of playing with it, so ...
BH (00:57:26):
Yeah, that's pretty good.
CW (00:57:27):
Okay.
BH (00:57:27):
I like the ‘cascading waterfall of lights’, yeah.
EW (00:57:31):
I like ‘waterfall of lights’, yeah.
BH (00:57:33):
That was fun. Synthia is an art project I've been doing for a number of years. She started off just as like, if you can imagine eight clear arcade buttons with NeoPixel LEDs shoved in them. It was actually, the first one was quite large; two meters long of LED strips. It was kind of like a Guitar Hero thing, where you would press a bunch of buttons and ... a reverse Guitar Hero, where you press a bunch of buttons and then light beams would shoot across to the other side. And there was two players, so you would have another person on the other side, and they would shoot them back and forth.
BH (00:58:08):
But the whole idea with this thing was an interactive light project, but it needed sound. It just needed sound. So I was trying to think, "How can I make this fun interactive thing that does a bunch of sound, that isn't going to just sound like this random cacophony to stuff?" Well, of course, through music. But then, there's a lot of people that are not musically inclined, myself included, that couldn't just go up to a piano and start playing something that sounded interesting or cool.
BH (00:58:38):
So it got me to thinking, how can I make this thing more approachable
CW (00:58:41):
Right, that was a piece that I forgot. Yes.
EW (00:58:44):
This was the thing that I really didn't understand. Okay.
BH (00:58:46):
So I taught myself enough music theory to figure out why just pressing random white and black keys on the keyboard just sounds terrible, and basically learned about music scales. So I put into this keyboard the concept of calculating all these music scales for you. So the idea is you can pick a bunch of different music scales, and you can pick a starting offset, and it'll just calculate the whole music scale for you across to all of its keys.
BH (00:59:14):
It's kind of fun, because you can move one dial to shift up and down the starting color, and it's basically this keyboard is like a rainbow moving back and forth. And another one where you can change the music scale, and you can see, you have some colors disappear and other colors appear. It's pretty cool, because at least for me, I can intuitively see what's going on. I know that red is a C, and it doesn't matter where on this thing it is, all the Cs are always red. So I can pick them out in any octave.
EW (00:59:47):
It's like synesthesia.
BH (00:59:48):
Yeah, exactly.
EW (00:59:50):
It's like a product that causes ...
CW (00:59:54):
It doesn't cause it, it creates it.
EW (00:59:57):
Oh yeah. Those are totally different things.
CW (00:59:59):
Well, if it caused it, once you've used it, you would have it forever and that would be bad. Or good, I don't know.
EW (01:00:03):
Well, I wonder if you could learn perfect pitch—
CW (01:00:06):
It's not LSD.
EW (01:00:07):
This way?
CW (01:00:10):
I don't think you can learn perfect pitch.
EW (01:00:11):
You can.
CW (01:00:12):
That way.
EW (01:00:13):
There are lots of studies that show you can learn perfect pitch.
CW (01:00:16):
Well, you can learn good relative pitch.
EW (01:00:18):
You can even learn perfect. It just requires a lot of effort.
BH (01:00:21):
Yeah. But like an oscillator, I imagine that you have some drift depending on what temperature your brain is at.
CW (01:00:29):
Yeah.
EW (01:00:29):
But that's not a kit yet either.
BH (01:00:30):
No. That one is the least manufacturable thing I have ever created. It took me weeks to put that thing together. A lot of little, tiny wires, a lot of troubleshooting. And this is where my adventure into something that isn't a WS2812 began, because I've had to replace all the LEDs on that thing at least three or four times.
EW (01:01:01):
You took it to the Santa Cruz Mini Maker Faire.
BH (01:01:04):
Yes.
EW (01:01:04):
How did that go?
BH (01:01:06):
It was really good. It was really good. It got a lot of attention. We were kind of back in the corner, so we didn't get a lot of foot traffic, but everybody that came through the area was just drawn to this thing. It was awesome. And kids—
EW (01:01:21):
Because it was glowy, and because no matter what you did, it didn't sound awful.
BH (01:01:26):
Yeah. Yeah. It was a lot of fun.
EW (01:01:28):
But you had to be inside because it was glowy, and everybody else was outside.
BH (01:01:31):
Mm-hmm (affirmative).
EW (01:01:32):
Do you have plans for a future one of those, or future showings of that?
BH (01:01:38):
Yeah, I've been working on ideas for a version three, mainly around the keyboard. Version one was just arcade buttons. Version two was a little bit more keyboard like, but it was very wavy, and the keys were not all the same size, and they were definitely not standard keyboard size. So I'm thinking of shifting a little bit, and going a little bit more as close to piano keys as I can, so that if somebody is familiar with that spacing, they can intuitively play it instead of having to kind of hunt-and-peck.
BH (01:02:14):
I'm thinking about building capacitive-based keys. Right now, it's all very mechanical, and you get a lot of clickety-clackety kind of thing, so I'm thinking capacitive. I figured out a way to basically laminate the back side of an acrylic key with a conductive layer that's nice and shiny and reflective, and then attach electrodes. I haven't dialed in yet. I want to make, basically, how quickly you end up touching the touch key pad create acceleration for generating different key sounds.
EW (01:02:52):
Yeah. In the good electric pianos, that's an important feature.
BH (01:02:56):
Yeah. What's that called?
CW (01:02:58):
Velocity sensitivity.
BH (01:02:59):
Yes, velocity.
EW (01:03:00):
You have so many interests here.
BH (01:03:04):
Yes.
EW (01:03:07):
It must be very hard to complete anything.
CW (01:03:10):
As we, at the top of the show, we did ask the question ...
BH (01:03:13):
Yeah, I might have to change the ratio to maybe 24-to-one.
EW (01:03:20):
But these things we're talking about, you have completed. I imagine Synthia is something that you never finish, you just always keep tweaking.
BH (01:03:30):
Yeah. Like somebody's hobby classic car, there's always more tinkering to be done.
EW (01:03:37):
How did you learn to do all the electronics part?
BH (01:03:43):
Oh gosh. Well, I've been interested in this stuff for forever. I can remember when I was a kid, my parents got me these Radio Shack kits, the four-bit microcontroller included, but also those 101s, 201s or whatever, the little springboard things? And we would plug in a bunch of wires to a bunch of ICs and just bare transistors. I loved those things. I just played with those tons.
BH (01:04:11):
When I was 14, actually, my parents got me this mail-in electronic course, an actual college-level McGraw Hill mail-in kind of thing, and they would send me all these kits and books and all that kind of stuff. I got maybe two-thirds of the way through it. I didn't end up doing a lot of the labs, but I read about two-thirds of the theoretical stuff. It was pretty cool. I got a basic understanding of, how does a transistor work? Well, there's silicone, and we dope it, and there's holes and electrons and barriers and all kinds of fun stuff. So that was cool.
BH (01:04:46):
But I never really pursued that as a career. I ended up getting swooped up in the whole internet thing.
EW (01:04:59):
Scooped up into the internet. So you went into software because it seemed lucrative and fun and expanding?
BH (01:05:09):
Yeah. I have as much interest in that kind of stuff, I would say, as I do in the electronic stuff. I find trying to figure out how to scale big, giant clusters of servers, and designing architectures with all kinds of complicated bits just as fun as I do tinkering on some little microcontroller board.
BH (01:05:30):
But yeah, that ended up being my career path. But at a certain point, I did a lot of really great, fun things, and I felt like it was time for a change.
EW (01:05:42):
And here you are.
BH (01:05:44):
Yeah.
EW (01:05:44):
Selling things on Tindie.
EW (01:05:46):
All right, do you have any advice for people who are thinking about changing careers, or are thinking about trying something completely new? It sounds like it has been a good idea for you, but it also sounds like you're not making money yet.
BH (01:06:04):
Yeah. My advice would be, if you can do it, do it. Always. If you're interested in something, do it. Life is short. Pursue all of your interests. Simultaneously if possible.
EW (01:06:18):
Sleep is for the weak.
EW (01:06:23):
Christopher, do you have any other questions, or are we out of time?
CW (01:06:26):
Oh, right. I'm supposed to answer that verbally.
EW (01:06:28):
Shaking your head doesn't do them a lot of good.
CW (01:06:29):
No, no. I don't have anything else.
EW (01:06:34):
All right, Ben, is there anything you would like to leave us with?
BH (01:06:38):
I would say enjoy the gifts that are given to you fully, and share as you can, and share the things that you learn with other people.
EW (01:06:51):
Our guest has been Ben Hencke, the ElectroMage and maker of the Pixelblaze, which you can find on Tindie. There is a coupon, [REDACTED], all one word, all capitalized, and that will get you 25% off of the Pixelblaze, which you can then use to build lights or things.
EW (01:07:12):
Thank you for being with us, Ben.
BH (01:07:15):
Thank you for having me.
EW (01:07:16):
Thank you to Christopher for producing and co-hosting, and of course, thank you for listening. Those of you who are ... patrons? Patreons?
CW (01:07:28):
Patrazons.
EW (01:07:28):
Those people who are supporting us on that site, I want to give you a special thank you. We did sponsor part of the Open Source Hardware Summit, and I got to give out little tiny stickers to everyone, one of which ended up on our sworn enemy's T-shirt. Thank you for that.
CW (01:07:47):
On the back.
EW (01:07:47):
On the back.
CW (01:07:48):
Without his knowledge. That's the important part.
EW (01:07:50):
Oh. Yes, yes. So now—
BH (01:07:53):
I have no idea how that happened.
CW (01:07:53):
Ah.
EW (01:07:56):
Now a quote to leave you with. This from a fairly new author, Rita Schiano, and she has to say this: "Talking about our problems is our greatest addiction. Break the habit. Talk about your joys."
EW (01:08:18):
Embedded is an independently-produced radio show that focuses on the many aspects of engineering. It is a production of Logical Elegance, an embedded software consulting company in California. If there are advertisements in the show, we did not put them there, and do not receive money from them. At this time, our sponsors are Logical Elegance and listeners like you.