Forgive me, for I have sinned. I wrote a bad type. It wasn't just bad. It was the kind of type that knows its mom's birthday only from the digits of her credit card PIN number. It was sneaky, conceited, insubordinate and churlish. It threw up all over my codebase like a drunken guest and, despite my efforts to clean up, a bit of the stench remains. Mind you, it's not the first bad…
After managing to shake off the impostor's syndrome long enough for another post, I'm back with the follow-up to last month's GPIO war stories . In the previous entry we looked at the horror of GPIO registers, and managed to assuage the fears of the borrow checker with the promises of a clean, pure, typestate-powered pin representation. That's well and good, but it's time…
As most embedded developers I'm addled by a disease: code vertigo. I like my code flush to the earth, where I can take an ear to the ground and hear the fuzzy rumble of electrons and the crackle of dodgy solder joints. When code at that level collapses it makes a hell of a noise but it doesn't fall too far; digging through datasheets is often enough to put the pieces back together. When…
During last episode , we went on a tour of the pleasantly boring world of flash memory, drafted some driver interfaces, and toyed with the idea of generics at both levels of crate visibility. What's conspicuously absent is, well, working code. It's one thing to lay down data structures, and another entirely to weave generics between the raw ones and zeros of bare metal firmware. Today…
I've had the pleasure to work with very experienced firmware developers; the kind of people who know the size of their red zones and routinely transform coffee into linker scripts and pointer dereferences. In other words, the Mels and Zeus Hammers of the world. When it comes to the tools of our trade, many of them are curious and experimental. Some of them—very much myself included—explore…