Journal
Notes on craft.
Short essays on building native apps, working with Swift, and exploring the open web.
RSS- 8 min read
Replaying the chain locally: the fork that made my bot's simulations affordable
A bot that picks fights by simulating the game's battle engine needs hundreds of thousands of on-chain reads. The free RPC tier can't keep up, and I refused to pay for it. The fix: fork the chain onto my own machine — and the memory bug that taught me elegant isn't the same as correct.
web3basefoundryanvilperformanceviemdev - 8 min read
Simulate before you strike: how my bot picks a fight
Luchamon Bot doesn't guess which opponent to fight — it asks the game's own battle engine, over and over, and plays the least bad option. A look at simulation-driven selection, Monte-Carlo win probabilities, and the economics of never wasting an energy.
web3basesimulationmonte-carloviemdev - 5 min read
The email I was waiting for: Souffle is on the App Store
Three weeks after four rejection reasons, the right email finally arrived. How the appeal was accepted, what the whole journey taught me, and where to download Souffle.
souffleiosappleapp-storeindiedev - 6 min read
Zero server: why Souffle knows nothing about you
No account, no tracking, no backend. How and why Souffle runs entirely on your iPhone — and what that actually changes.
souffleprivacyiosswiftdataindiedev - 7 min read
Anatomy of the PatolabsOG contract
229 lines of Solidity, an ERC-721 with on-chain SVG art, a 1-per-tier invariant enforced on transfers, and a few design decisions worth explaining.
soliditynfterc721baseweb3foundrydev