Code For Hackers

Mike and I were talking about two very similar clock projects we’d both built recently: they both use ESP8266 modules to get the time over WiFi and NTP, and they both failed. Mike’s failed because he was visiting relatives in a different timezone with different WiFi credentials, and mine failed because daylight savings time caught me off-guard. In both cases, we hard-coded stuff that could obviously change, but we drew vastly different conclusions.

Mike thought he’d solve his WiFi problem with a fallback to a captive portal, and maybe would have to figure out some web interface for configuring the timezone. A very clean, professional solution. Me? I’ve got good comments in the code, can find the UTC offset (or the WiFi creds) in a few minutes, and flash the new version up simply by fetching a USB cable, for something that happens twice a year. It’s hardly worth the trouble to cobble together a web interface.

There’s an XKCD for everything.

We’ve accidentally embodied a quandary that spans both the hardware and software worlds: should flexibility be exposed to the end-user or to the hacker who can peer under the hood or open up the source code? (And what if the end-user is the hacker?) What are the tradeoffs, in project complexity and in ease of use?

And in this, Mike is on the side of right and good, and I’m the heretic. I don’t always write my code to be extensible or re-usable. I sometimes write it to be quickly re-edited and patched whenever I need to. Is it full of magic numbers? Sure! But I know just where they are and how to change them. Heck, most are even well documented in their own header file. You could probably figure it out just about as fast. Would my father-in-law be able to tweak the timezone? Nope! But this ain’t his project anyway.

Dare to code for hackers! Don’t over-generalize or over-abstract. Less is more. Don’t be afraid to edit code. Tweak, compile, and re-flash when the situation changes. After all, that’s how you got the code there in the first place.

And although I’m on the wrong end of history, in this case I was right. You see, before daylight savings time could come around again, and I could have made use of that captive portal that I didn’t bother coding up anyway, my son entered first grade. Everything needs to be changed, from the hardware to the software. Will I code up the next version with flexible time regimes? As flexible as I need it to be, but not more.

Controlling A Broken Super Nintendo With MIDI

A Super Nintendo that has trouble showing sprites doesn’t make for a very good game system. As it turns out, Super Mario World is a lot less fun when the titular hero is invisible. So it’s no surprise that [jwotto] ended up tossing this partially functional SNES into the parts bin a few years back.

But he recently came up with a project that may actually benefit from its unusual graphical issues; turning the glitched console into a circuit bent video synthesizer. The system was already displaying corrupted visuals, so [jwotto] figured he’d just help things along by poking around inside and identifying pins that created interesting visual effects when shorted out.

Installing the new electronics into the SNES.

Once he mapped out the pins, he wired them all up to a transistor switching board that he’d come up with for a previous project. That would let an Arduino short out the pins on command while still keeping the microcontroller relatively isolated from the SNES. Then it was just a matter of writing some code that would fire off the transistors based on MIDI input.

The end result is a SNES that creates visual glitches along with the music, which [jwotto] can hook up to a projector when he does live shows. A particularly neat feature is that each game responds in its own way, so he can swap out the cartridge to show completely different visuals without having to change any of the MIDI sequencing.

A project like this serves as a nice introduction to both circuit bending and MIDI hacking for anyone looking to get their digital feet wet, and should pair nicely with the MIDI Game Boy Advance.

Continue reading “Controlling A Broken Super Nintendo With MIDI”

Plastic Prosthetics For Rubber Duckies

Will someone please think of the rubber duckies?!

For decades they’ve been reduced to a laughing stock: a caricature of waterfowl. Left without a leg to stand on, their only option is to float around in the tub. And they don’t even do that well, lacking the feet that Mother Nature gave them, they capsize when confronted with the slightest ripple. But no more!

Arise!

Due to the wonders of 3D printing, and painstaking design work by [Jan] from the Rubber Ducky Research Center, now you can print your own rubber ducky feet. We have the technology! Your ducks are no longer constrained to a life in the tub, but can roam free as nature intended. The video (embedded below) will certainly tug at your heartstrings.

OK, it’s a quick print and it made my son laugh.

The base and legs probably don’t fit your duck as-is, but it’s a simple matter to scale them up or down while slicing. (Picture me with calipers on the underside of a rubber ducky.) The legs were a tight press-fit into the body, so you might consider slimming them down a tiny bit when doing the scaling, but this probably depends on your printer tolerances.

It looks snazzy in gold-fleck PETG, and would probably work equally well for some more elaborate rubber duckies as well.

Continue reading “Plastic Prosthetics For Rubber Duckies”

Greeking Out With Arduinos

Learning a new language is hard work, but they say that the best way to learn something is to teach it. [Angeliki Beyko] is learning Greek, and what better way to teach than to build a vocabulary flash-card game from Arduinos, color screens, 1602 text screens, and arcade buttons? After the break, we have a video from the creator talking about how to play, the hardware she chose, and what to expect in the next version.

Pegboard holds most of the hardware except the color screens, which are finicky when it comes to their power source. The project is like someone raided our collective junk drawers and picked out the coolest bits to make a game. Around the perimeter are over one hundred NeoPixels to display the game progress and draw people like a midway game. Once invested, you select a category on the four colored arcade buttons by looking at the adjacent LCD screens’ titles. An onboard MP3 shield reads a pseudo-random Greek word and displays it on the top-right 1602 screen in English phonetics. After that, it is multiple choice with your options displaying in full-color on four TFT monitors. A correct choice awards you a point and moves to the next word, but any excuse to mash on arcade buttons is good enough for us.

[Angeliki] does something we see more often than before, she’s covering what she learned, struggled with, would do differently, and how she wants to improve. We think this is a vital sign that the hacker community is showcasing what we already knew; hackers love to share their knowledge and improve themselves.

Typing Greek with a modern keyboard will have you reaching for an alt-code table unless you make a shortcut keyboard, and if you learn Greek, maybe you can figure out what armor they wore to battle.

Continue reading “Greeking Out With Arduinos”

Parsing Math In Python

Programming computers used to be harder. Don’t get us wrong — today, people tend to solve harder problems with computers, but the fundamental act of programming is easier. We have high-level languages, toolkits, and even help from our operating systems. Most people never have to figure out how to directly read from a disk drive, deblock the data into records, and perform multiplication using nothing but shifts and adds. While that’s a good thing, sometimes it is good to study the basics. That was [gnebehay’s] thought when his university studies were too high level, so he decided to write an arithmetic expression parser in Python. It came out in about 100 lines of code.

Interpreting math expressions is one of those things that seems simple until you get into it. The first problem is correctly lexing the input — a term that means splitting into tokens. For a human, it seems simple that 5-3 is three tokens, {5, -, and 3} and that’s easy to figure out. But what about 5+-3? That’s also three tokens: {5,+,-3}. Tricky.

Continue reading “Parsing Math In Python”

Wooden Disc Player Translates Binary Back Into Text

[jbumstead] used MATLAB to convert the text messages into binary to be cut out of the disk.
[jbumstead] wanted to demonstrate the idea of information-storing devices such as LPs, CDs, and old hard drives. What he came up with lies directly at the intersection of art and technology: an intricately-built machine that plays beautiful collaged wooden disks. Much like the media that inspired the Wooden Disk Player, it uses a laser to read encoded data, which in this case is short bits of text like “Don’t Panic”.

These snippets are stored in binary and read by a laser and photodiode pair that looks for holes and not-holes in the disk. The message is then sent to an Arduino Nano, which translates it into English and scrolls the text on an LED matrix. For extra fun, the Nano plays a MIDI note every time it reads a 1, and you can see the laser reading the disk through a protective acrylic shield.

Though the end result is fantastic, [jbumstead] had plenty of issues along the way which are explored in the build video after the break. We love it when people show us their mistakes, because it happens to all of us and we shouldn’t ever let it tell us to stop hacking.

If anyone knows their way around lasers, it’s [jbumstead]. We loved playing their laser harp at Supercon!

Continue reading “Wooden Disc Player Translates Binary Back Into Text”

Falcon 9 Lamp Is Touching Down In The Living Room

Many of us have been inspired by the videos of the Falcon 9 booster, tall as an office building, riding a pillar of flame down to a pinpoint landing at Kennedy Space Center or on one of SpaceX’s floating landing pads in the ocean. It’s not often that we get to see science fiction fantasy become reality on such a short timescale, and while they might not be sold on the practicality of reusable rockets, even the most skeptical of observers have to admit it’s an incredible feat of engineering.

Though it can’t quite compare to the real thing, this 1:60 scale Falcon 9 lamp by [Sir Michael II] promises to bring a little of that excitement home every time you flick on the light. Combining a scratch built model of the reusable booster with some RGB LEDs, the hovering tableau recreates the tense final seconds before the towering rocket comes to a rest on its deployable landing legs. We imagine those last moments must seem like an eternity for the SpaceX engineers watching from home as well.

The LED “exhaust” without the fluff.

[Michael] walks readers through assembling the Falcon 9 model, which cleverly uses a 2 inch white PVC pipe as the fuselage. After all, why waste the time and material printing a long white cylinder when you can just buy one at the hardware store for a few bucks?

Dressed up with 3D printed details from Thingiverse user [twuelfing] and splashed with a bit of paint, it makes for a very convincing model. While the diameter of the pipe isn’t quite right for the claimed 1:60 scale, unless Elon Musk is coming over your place to hang out, we don’t think anyone will notice.

The rocket is attached to the pad with a piece of threaded steel rod, around which [Michael] has wrapped one meter of RGB LEDs controlled by an Arduino Uno. With some polyester fiber filler as a diffuser and a bit of code to get the LEDs flickering, he’s able to produce a realistic “flame” that looks to be coming from the Falcon 9’s center engine. While we admit it may not make a very good lamp in the traditional sense, it certainly gets extra points for style.

We’ve actually seen a similar trick used before to light up the engines of a LEGO Saturn V and Apollo Lunar Module. It’s amazing how realistic the effect can be, and we’d love to see it used more often. We’d also like to see more model rockets that actually levitate over their pads, but one step at a time.