naftpink
Software developer
about
naftpink is a software developer who builds web and backend systems in TypeScript — currently a server hosting platform, an encrypted diary app, and a game with its own scripting language.
what I'm building
Three things, and they have less in common than they look. The hosting platform is bare metal, containers and a control plane that provisions in seconds, because the thing that ruins a game server is somebody else's workload on the same disk. It's the project that has to be boring and correct.
Yunoa is the opposite constraint: an encrypted diary and habit tracker where the interesting engineering is everything I chose not to collect. No analytics SDK, no account needed to write something down, entries encrypted on the device. Building something that deliberately knows nothing about its users turns out to be harder than the alternative.
The game is where I get to be indulgent. Gameplay logic in C++ meant a rebuild every time I changed a number, so it has its own scripting language, compiler and bytecode VM — written first in C++, then ported to Rust when I decided to learn Rust properly.
how I work
The line on the front page — things that have to stay up — is the actual thesis. I'm drawn to the parts of a system where being wrong is expensive and quiet: provisioning, isolation, storage, the code that runs at 3am when nobody's watching. That biases me toward fewer moving parts. This site has no CMS, no database and no comment section for the same reason.
I'd rather ship something small that works than something large that demos. Most of what's on the projects page is still in progress, and the archived ones are still listed — the shape of the list is more honest than a highlight reel.
Not all of it is mine, either. I've worked as a subcontractor on client work — owning an auctions system end to end, frontend and backend, and making the stack calls rather than receiving them. That one shipped without my name in the footer, which is the usual arrangement and also the reason a fair amount of what I've built isn't findable by looking me up. The job after it was finished and never deployed, because the client stopped paying. Both are listed for the same reason the archived projects are.
the stack, honestly
I'm solid in TypeScript, React and Next.js, and on the backend in Node with Fastify or Express. Postgres via Drizzle, Docker, Proxmox, and enough shell to be dangerous. That's the work I'd take money for.
Rust is the honest exception: I'm learning it in public by writing the VM, and the VM gets rewritten roughly every other month because that's where the learning is. I'd rather say that than list it next to the others and let you find out. Same with C++ — I can read and work in it, mostly because Unreal gives me no choice.
Before TypeScript it was all JVM. Java through a Minecraft client and an obfuscator and deobfuscator built on ASM, then TrackYourPack — an Android app in Java and a terminal client in Kotlin, over the same carrier. That's a few years cold now, but working at the bytecode level is where I learned to be curious about what's actually running rather than what I wrote.
open source
Small, but real: a contribution to react-use-lanyard — TypeScript types, plus support for Discord's Pomelo username migration so the hook exposes global_name. It's a couple of files in someone else's library rather than a project, and it's listed because it's merged and public, which is more than I can say for a lot of the work above.
elsewhere
Same handle almost everywhere. Email is the reliable one, and it's open — including for contract work, in which case the contact page says what I'd take on and what I'd pass on before you spend an email finding out.