💾 Archived View for anarchitech.org › Tools › tools.gmi captured on 2023-04-19 at 22:21:52. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Currently I'm mainly focused on low-level hardware programming and data extraction from various devices. My two main tools for this are radare2 and muforth. The latter is a truly nifty tool a friend has labored over for many years, and I've been a close participant in that process (think "test pilot who laughs at a parachute.") I tend to push for specific needs of the moment; our focus isn't necessarily the same, but our interests and opinions align in a multiplicity of ways. It's quite frankly the best tool I've found, I just have to convince daf that a target is worth the ensuing thrashing, frothing spittle and debugging over Signal. ;-)
radare2 is well-known. I use it extensively. Some day I might even make it to r2con. I use ghidra as well ... but if I actually need to get real work done, quickly, you'll find me using r2, usually in concert with muforth.
My primary and go-to operating system is OpenBSD. Everything I need to use works on OpenBSD; its engineering is solid, it's consistently stable (in my experience even running -current,) it has excellent documentation, its dev team is highly skilled and committed to sound engineering practice and in particular it runs on a lot of old hardware. More about that in a bit. I've been using NixOS since its inception and hope they can keep its development evolving. If I have to use a penguin, Archlinux is my go-to default. As a general rule I eschew anything Debian-based, but also find it's useful for introducing neophytes who have had a spiritual awakening and realize that there are alternatives to Redmond and Cupertino. Some in the collective swear by Gentoo, but I've never managed to find the time. There are additional custom/proprietary OS's ... but they're outside the scope of this document.
With respect to programming languages, I'm an agnostic. I use what works in any given moment. I'm a huge believer in stitching together the classic *nix tools when confronted with a task. I tend to eschew the latest hipster languages. Getting listed here isn't exactly an endorsement of use (cough, Haskell, cough) but I have or do regularly use all of these for different things. I have a special fondness for SBCL and Erlang (very early adopter of the latter,) OCaml tends to "just work OOTB," Lua and Go are both extremely intuitive. I use Python, but I don't recommend it as it's a bit of a hot mess right now (hell, they all have their special moments.) Anyway, use what works for you, avoid the holy wars, just mull over whether or not its going to get you where you need to go.
Hopefully you know this, but you don't actually need much to do a great deal of useful work. You most definitely do not need to go out and buy a $5000 laptop with 64GB of RAM etc ad nauseum. Repurpose/re-use/recycle. Old hardware is your friend, and can actually keep you from an entire shitlist of Unintended Consequences.
OpenBSD is fairly brilliant in this respect. It will install and run on old and (by current modern "standards") utterly resource starved hardware.
My main dev machine is one of my better acquisitions: a new in the box IBM Thinkpad T60. Well built, fantastic keyboard, 4:3 display, came with a docking station, a plethora of ports for whacking on hardware (rivaled only by the Toughbook.) Back in the day this was about a $2500 machine. I picked it up for $50. Yes, of course I have far newer and more powerful machines at my disposal. But this has become my favorite. Yes, I run OpenBSD on it. Yes, I can stream youtube and crank Amelie Lens while batting away at things. Oh, and it's a 386 machine. (Sound of evil laughter, tm.)
: muforth? ." host -> target tethered system for programming microcontrollers " cr ; Ok