This Is The Year Conference Badges Get Their Own Badges

Over the last few years, the art and artistry of printed circuit boards has moved from business cards to the most desirable of all disposable electronics. I speak, of course, of badgelife. This is the community built on creating and distributing independent electronic conference badges at the various tech and security conferences around the globe.

Until now, badgelife has been a loose confederation of badgemakers and distributors outdoing themselves each year with ever more impressive boards, techniques, and always more blinky bling. The field is advancing so fast there is no comparison to what was being done in years past; where a simple PCB and blinking LED would have sufficed a decade ago, now we have customized microcontrollers direct from the factory, fancy new chips, and the greatest art you’ve ever seen.

Now we have reached a threshold. The badgelife community has gotten so big, the badges are getting their own badges. This is the year of the badge add-on. We’re all building tiny trinkets for our badges, and this time, they’ll all work together. We’re exactly one year away from a sweet Voltron robot made of badges.

Continue reading “This Is The Year Conference Badges Get Their Own Badges” →

Make A Natural Language Phone Bot Like Google’s Duplex AI

After seeing how Google’s Duplex AI was able to book a table at a restaurant by fooling a human maître d’ into thinking it was human, I wondered if it might be possible for us mere hackers to pull off the same feat. What could you or I do without Google’s legions of ace AI programmers and racks of neural network training hardware? Let’s look at the ways we can make a natural language bot of our own. As you’ll see, it’s entirely doable.

Continue reading “Make A Natural Language Phone Bot Like Google’s Duplex AI” →

Teardown: Box Of Pain (Gom Jabbar Sold Separately)

I immediately felt uncomfortable when I realized this thing is called the “Breo iPalm520 Acupressure Hand Massager”. You’re supposed to stick your hand into it, and through unknown machinations it performs some kind of pressure massage complete with heating action. It’s like one of those pain boxes from Dune. It’s all the more disturbing when you realize the red button on the thing is an emergency release. That’s right, once your hand is in this contraption you can’t take it out until the thing has had its way with you or you tap out.

Press to administer the Gom Jabbar

At least once a week I try to get to the local thrift store to look for interesting things. I’d like to be more specific than “interesting things”, but truth be told, I never really know what I’m looking for until I see it. Sure there’s the normal consumer electronics kind of stuff, but I’ve also found some very nice laboratory equipment, computer parts, software, technical books, etc. You just have to go regularly and keep an eye out for the occasional needle amongst the hay.

I want you to know, Dear Readers, that I did briefly summon the courage to put my hand into this thing and turn it on. Now I am not what one might call an overly brave man, and perhaps that might explain my personal experience. But when it started to hum and heat up, constricting around my hand to the point I couldn’t move my fingers, I screamed like a child and mashed the emergency button as if I was a pilot trying to eject from a mortally wounded aircraft. As far as Frank Herbert is concerned, I’m no human at all.

In an effort to better understand this torture device, lets open it up and see what lurks beneath that futuristic exterior.

Continue reading “Teardown: Box Of Pain (Gom Jabbar Sold Separately)” →

Buttery Smooth Fades With The Power Of HSV

In firmware-land we usually refer to colors using RGB. This is intuitively pleasing with a little background on color theory and an understanding of how multicolor LEDs work. Most of the colorful LEDs we are use not actually a single diode. They are red, green, and blue diodes shoved together in tight quarters. (Though interestingly very high end LEDs use even more colors than that, but that’s a topic for another article.) When all three light up at once the emitted light munges together into a single color which your brain perceives. Appropriately the schematic symbol for an RGB LED without an onboard controller typically depicts three discrete LEDs all together. So it’s clear why representing an RGB LED in code as three individual values {R, G, B} makes sense. But binding our representation of color in firmware to the physical system we accidentally limit ourselves.

The inside of an RGB LED

Last time we talked about color spaces, we learned about different ways to represent color spatially. The key insight was that these models called color spaces could be used to represent the same colors using different groups of values. And in fact that the grouped values themselves could be used to describe multidimensional spacial coordinates. But that post was missing the punchline. “So what if you can represent colors in a cylinder!” I hear you cry. “Why do I care?” Well, it turns out that using colorspace can make some common firmware tasks easier. Follow on to learn how!

Continue reading “Buttery Smooth Fades With The Power Of HSV” →

Fatalities Vs False Positives: The Lessons From The Tesla And Uber Crashes

In one bad week in March, two people were indirectly killed by automated driving systems. A Tesla vehicle drove into a barrier, killing its driver, and an Uber vehicle hit and killed a pedestrian crossing the street. The National Transportation Safety Board’s preliminary reports on both accidents came out recently, and these bring us as close as we’re going to get to a definitive view of what actually happened. What can we learn from these two crashes?

There is one outstanding factor that makes these two crashes look different on the surface: Tesla’s algorithm misidentified a lane split and actively accelerated into the barrier, while the Uber system eventually correctly identified the cyclist crossing the street and probably had time to stop, but it was disabled. You might say that if the Tesla driver died from trusting the system too much, the Uber fatality arose from trusting the system too little.

But you’d be wrong. The forward-facing radar in the Tesla should have prevented the accident by seeing the barrier and slamming on the brakes, but the Tesla algorithm places more weight on the cameras than the radar. Why? For exactly the same reason that the Uber emergency-braking system was turned off: there are “too many” false positives and the result is that far too often the cars brake needlessly under normal driving circumstances.

The crux of the self-driving at the moment is precisely figuring out when to slam on the brakes and when not. Brake too often, and the passengers are annoyed or the car gets rear-ended. Brake too infrequently, and the consequences can be worse. Indeed, this is the central problem of autonomous vehicle safety, and neither Tesla nor Uber have it figured out yet.

Continue reading “Fatalities Vs False Positives: The Lessons From The Tesla And Uber Crashes” →

Books You Should Read: Sunburst And Luminary, An Apollo Memoir

The most computationally intense part of an Apollo mission was the moon landing itself, requiring both real-time control and navigation of the Lunar Module (LM) through a sequence of programs known as the P60’s. Data from radar, inertial navigation, and optical data sighted-off by the LM commander himself were fed into the computer in what we’d call today ‘data fusion.’

The guy who wrote that code is Don Eyles and the next best thing to actually hanging out with Don is to read his book. Don’s book reads as if you are at a bar sitting across the table listening to his incredible life story. Its personal, hilarious, stressful, fascinating, and more importantly for those of us who are fans of Hackaday, it’s relatable.

Continue reading “Books You Should Read: Sunburst And Luminary, An Apollo Memoir” →

General Purpose I/O: How To Get More

The first program anyone writes for a microcontroller is the blinking LED which involves toggling a general-purpose input/output (GPIO) on and off. Consequently, the same GPIO can be used to read digital bits as well. A traditional microcontroller like the 8051 is available in DIP packages ranging from 20 pins to 40 pins. Some trade the number of GPIOs for compactness while other devices offer a larger number of GPIOs at the cost of complexity in fitting the part into your design. In this article, we take a quick look at applications that require a larger number of GPIOs and traditional solutions for the problem.

A GPIO is a generic pin on an integrated circuit or computer board whose behavior, including whether it is an input or output pin, is controllable by the user at runtime. See the internal diagram of the GPIO circuit for the ATmega328 for reference.

Simply put, each GPIO has a latch connected to a drive circuit with transistors for the output part and another latch for the input part. In the case of the ATmega328, there is a direction register as well, whereas, in the case of the 8051, the output register serves as the direction register where writing a 1 to it sets it in output mode.

The important thing to note here is that since all the circuits are on the same piece of silicon, the operations are relatively fast. Having all the latches and registers on the same bus means it takes just one instruction to write or read a byte from any GPIO register.
Continue reading “General Purpose I/O: How To Get More” →