
Jurij Tokarski
Hey 👋 I'm Jurij. I run Varstatt and create software. Usually, I'm deep in the work shipping for clients or building for myself. Sometimes, I share bits I don't want to forget: mostly about software, products and self-employment.
An Empty AI Response Corrupted Chat History
Gemini returned HTTP 200 with zero content. I saved it. The conversation never recovered.
Software Engineering Principles for Startups
33 principles I use to ship software every week: a working system built from years of product development
Why Scrum Fails In Small Teams
Scrum was designed to coordinate large cross-functional teams. When your team is small enough to just talk, the ceremonies become the bottleneck.
Three Bugs That Were Actually My Prompts
Three debugging sessions where I spent hours chasing AI misbehavior — and each time discovered the model was executing my instructions exactly as written. The bug was me.
What a Freelance Web Developer Actually Charges
My actual pricing model, why hourly billing is broken, and what clients should expect when hiring a freelance web developer in 2026.
Nobody Finishes a 15-Minute AI Interview
How I decomposed a monolithic AI discovery interview into 8 standalone tools — each with its own deliverable, landing page, and search intent.
The Production Bugs That Never Threw an Error
Six bugs across OAuth, Next.js, launchd, n8n, browser APIs, and OpenAI. Every log said success. Every result was wrong.
Using Firestore Transactions to Handle Race Conditions
When two Cloud Function instances race to create the same external resource, a Firestore transaction decides the winner.
Merging Two Firestore Listeners for Cross-Field OR Queries
Firestore can't OR across different field types in a real-time query. Two parallel listeners merged client-side can.
SwiftUI Is Like React + CSS-in-JS
I had to jump into an iOS codebase with no SwiftUI experience. The fastest way in was mapping everything I already knew to the Swift equivalent.