How to Speak NeoPixel

Adafruit calls them NeoPixels, but their real name is WS2812 or SK6812. They’re handy little RGB LEDs with built-in controllers.

They use a single-wire anisochronous self-clocking signal, so controlling them requires some precise timing. There’s an easy-to-use Arduino library available, but I wanted to use a PIC16F1455, so I had to get into the protocol.

Continue reading

Posted in Uncategorized | Tagged | Leave a comment

Spooky nulls in an ArrayList

I had a crash reported for one of my Android applications. Thankfully that includes a stack trace, because I would never have found this bug without it. I learned something new about concurrently accessing an ArrayList.

Continue reading

Posted in Uncategorized | Tagged | Leave a comment

A Gentleman’s Orthonormal Basis Rotation

So you need to draw curved and bent pipe-tube-things.

You can make a straight section with two rings of points; just orient one ring like so, the other ring like so, and draw triangles between them. For a curve, just string a bunch of short straight pieces together.

Almost but not quite. Why the hell is there that pinched part in the curved pipe?

The problem is that the orientation of the rings is not as simple as “normal to the pipe’s tangent”. But a ring is a circular-symmetrical thing, right, so rotation about the pipe’s tangent shouldn’t really matter. Right?

Continue reading

Posted in Uncategorized | Tagged | Leave a comment

Iterating Over a Triangulation in Java

Say you’ve got some points in a plane, and you’re fixin’ to triangulate them. Specifically, you’re going to generate the Delaunay triangulation with an incremental algorithm, and then of course you’re going to want the triangles and/or segments.

Now say you’re doing this in Java, and you’re doing it many times over, and you’re doing it on battery power, so you have to do it efficiently.

Continue reading

Posted in Uncategorized | Tagged | Leave a comment

SNES Classic Teardown

If I made a Christmas wish-list, the SNES Classic would be on it.

I finally found one on the store shelf. When I got it home I played me some Star Fox and Super Metroid, and then of course I took the poor thing apart.

Continue reading

Posted in Uncategorized | Leave a comment