I'm a hacker at heart โ someone who can't leave a piece of
software alone when it works but I don't yet understand why.
Whether it's reverse engineering old binaries, dissecting an
undocumented file format, or piecing together how a long-dead
runtime actually behaves, I find the process of figuring
things out more interesting than most polished end results.
Most of what I build comes out of that habit. If I run into a
problem worth solving twice, it usually ends up as a small
tool, a CLI utility, or a longer-running project like WIE. I
lean toward systems-level work โ emulators, parsers, virtual
machines โ but I'll reach for whatever fits the job: Rust for
performance-sensitive code, C++ when I'm interfacing with
legacy ecosystems, TypeScript for anything that lives in the
browser, and Python or shell for quick one-offs.
Open source is where most of this work lives. I contribute
back when I can, ship my own projects publicly by default,
and try to write things up on the blog so the next person
hitting the same wall doesn't have to start from scratch.
These days I spend most of my hobby time on emulation,
WebAssembly tooling, and the long tail of legacy platforms
that no longer have anyone maintaining them officially.
There's something satisfying about taking software that was
effectively dead and putting it back into a state where you
can run it, study it, or build on it again.