Six Months in Review — From Firmware to Cloud, and a Blog That Moved
I moved this blog from Tistory to GitHub Pages, bringing all nine older posts with me. To mark the move, here’s what I’ve been doing in the six months since my last post (What I Learned from 15 Projects).
What I built
Re-platformed an exchange onto Go + Rust. What used to be Java/Spring became 13 Go services plus 2 Rust matching engines, including the futures liquidation and funding-rate engines. Full story
Migrating a Django monolith to a Java 21 MSA. A production system with a 14,646-line views.py, being moved to 19 modules via the strangler pattern — and a zero-downtime NCP→AWS migration along the way. Full story
Rebuilt a legacy PHP system as 15 microservices and took it to production. Unmanned-store SaaS covering 13 industries — from hardware drivers to barrier-free accessibility. Full story
Rewrote coffee-machine firmware from hex reverse engineering. Deriving the clock frequency back out of the disassembly was the highlight of my year. Full story
Extended an open-source low-code engine. Starting from Erupt, I refined an engine where a single @Flow annotation yields APIs, screens, and permissions, then built 9 ERP modules and 3 MES modules on top of it. Full story
Beyond those: a payment/settlement platform (double-entry ledger + fraud detection), a housing platform for expats (four languages), a wholesale fashion commerce site (live in production), an arcade game shipping to three platforms (iOS / Apps-in-Toss / web), and Wi-Fi CSI presence-detection R&D. They’re all written up in my portfolio at agentmichael.me.
What I’d tell myself six months ago
In February I was excited about “building with AI is fast.” I see something a little different now.
Speed is the baseline now. The differentiator isn’t speed, it’s direction. Deciding to enforce the matching-engine singleton in Terraform rather than in code. Deciding to drop the news-body column from the schema entirely to cut off copyright risk. The moment accessibility stopped being regulatory compliance and became a precondition of the unmanned business. AI does not make those calls for you. Accumulating the experience that grounds the judgment is still a human job.
Architecture should be protected by tests, not documents. Five ArchUnit rules carry more weight than a hundred pages of documentation. The faster AI writes code, the more you need machinery that enforces boundaries mechanically.
It isn’t real until it’s in operation. What I’m proud of from these six months isn’t the code — it’s the systems where real money moves and real customers show up. Between a demo and production sit boring things: rollback runbooks, duplicate-request prevention, delete protection, zero-downtime migrations. Those boring things are the skill.
On this new blog I’ll try to write about all of this more often, and in more depth.