I started programming at 13 with Visual Basic 6.
Not because someone taught me. Because I wanted to build a skin engine for Windows XP. I didn't know what a heap was. I didn't know what a stack frame was. I just knew I wanted that thing I was imagining to exist, and the only way to make it exist was to write it.
That's been the throughline for 19 years.
The Systems Years (2008–2020)
When I discovered C, I didn't switch from VB — I left. C felt honest. No runtime, no garbage collector, no abstraction you couldn't see through. You asked for memory. You got memory. You forgot to free it, and reality punished you.
C++ came next. Then Assembly.
x86 first — the classic. I spent months just writing sorting algorithms in NASM so I understood what a swap actually costs at the register level. Then x64. Then ARM when mobile got interesting. Then I started reading about Windows internals because I wanted to understand what happened between my code and the electrons.
By 2013 I was writing WDM kernel drivers. By 2015 I had a working hypervisor prototype. Not for any good reason — because I needed to know if I could.
SysKernel Auth
The first thing I built that other people depended on was SysKernel Auth. I had commercial software I was selling, and off-the-shelf licensing solutions were either trivially bypassed or required trusting a third party's infrastructure.
So I built my own.
Hardware fingerprinting. An encrypted validation layer in C. A Node.js backend. A revocation dashboard. Four language SDKs — C, C++, C#, Python.
It's been running in production for 3+ years. Zero critical piracy incidents. p99 response time under 4ms. 1000+ customers depending on it right now as I write this.
The Web Turn
In 2020 I started taking web seriously. Not because I got tired of systems — because I wanted to build products people could use without downloading anything.
React first. It clicked immediately. The component model felt like object-oriented thinking but for UI. Then Svelte, which compiles away its own runtime. Then Angular, which I used to build the portfolio this one replaces.
The same instincts apply. Why is this rerendering? What's the actual bundle size? Can we eliminate this abstraction?
Why Write This Now
Because I kept getting asked "where did you learn all this?" and the honest answer is: nowhere and everywhere. No CS degree. No bootcamp. Just 19 years of building the next thing I didn't yet know how to build.
If that story is useful to someone, then writing it down is worth it.