Writing
Practical engineering notes.
Notes on product engineering, AI service flows, payment integrations, maintainable APIs, and internal tools.

October 2026 · 8 min read
AI-Generated Design: How to Tell (and How to Fix It)
Spotting an AI-built interface takes seconds: the same gradients, fonts, cards, and copy everywhere. Where the tells come from, and the techniques that break the pattern.

September 2026 · 9 min read
Cheaper Tokens Are Not a Cheaper Bill
Sticker AI pricing collapsed in late 2026, but dynamic spreads, peak billing, and cache state mean you can still overpay. Here is how to audit your real LLM cost per task.

September 2026 · 5 min read
StepFun 5 Preview: A Big Step From Step 3.7 Flash
StepFun 5 Preview marks a major shift from the 3.7 Flash tier. My benchmark data shows an 82 accessibility average and restored floors.

September 2026 · 5 min read
Jev Is a Referee, Not a Writer: Where Typed AI Judgment Fits
Jev offers a System One approach to AI: typed decisions for software backends instead of chat. Learn how to route, score, and gate with confidence.

September 2026 · 6 min read
DeepSeek V4.1 Flash: The Flagship Killing MoE
DeepSeek retired V4-Pro for a cheaper, faster open weights model. Learn how the V4.1-Flash architecture changes agent economics and your production configuration.

September 2026 · 5 min read
Gemini 3.7 Flash vs 3.8 Flash: I Compared Them on Identical Prompts
Google released two Flash models 20 days apart at identical pricing. On identical frontend prompts, average accessibility jumped from 37.9 to 70.7.

September 2026 · 7 min read
Claude Fable 5.1: First Benchmarks After the Cache Price Cut
Anthropic released Claude Fable 5.1 with identical $10 and $50 base rates alongside a 75 percent cache read price cut. Here is the first OpenVibeEval data.

September 2026 · 6 min read
Gemini 3.8 Flash Benchmarked: A 98 Ceiling and a 23 Floor
I evaluated Gemini 3.8 Flash on frontend prompts via antigravity-cli. It scores a 70.7 accessibility average, recovering from 3.7 while showing extreme variance.

August 2026 · 7 min read
HY4 Preview Benchmarked: How the 770B MoE Compares
Tencent released HY4 preview as a 770B / 49B active MoE with 1M context, open-weights. I ran it through OpenVibeEval the same day. The model is bigger and reviewers like the intelligence story, but my accessibility numbers regressed. Here is the data.

August 2026 · 8 min read
GLM 5.3 Flash: I Ran Zhipu's New MoE on Frontend Prompts
I ran GLM 5.3 Flash through OpenVibeEval the day it dropped. The 7 of 8 results put it in the GLM 5.2 band, not the GLM 5.3 ceiling, and the 0x Alpha kinship theory still holds up.

August 2026 · 7 min read
How I Decide What to Cache and What to Leave Alone
Every cache is a second source of truth. How I decide whether a slow Laravel query needs Redis, a schema change, or nothing at all.

August 2026 · 8 min read
What Breaks When an AI-Built MVP Meets Real Users
Launch traffic is where generated code gets honest. The failure modes I hit on an AI product backend, and what each one actually needed.

August 2026 · 7 min read
How I Handle Failed Payments Without Losing Customers
A failed payment is a product state, not an error. How I build the recovery ladder that protects revenue without punishing customers for a declined card.

August 2026 · 7 min read
Adding Usage-Based Billing to AI Features
Usage-based billing for AI features is a database problem before it is a payments problem. How I keep metering idempotent, protect margin, and leave pricing changeable.

August 2026 · 5 min read
OpenVibeEval: An Open Frontend Benchmark Where You Vote Blind on AI Models
OpenVibeEval is now live, featuring a blind-vote Arena, 233 versioned frontend results across 26 models, and harness-specific metrics to strip away marketing bias.

August 2026 · 5 min read
Is 0x Alpha Just GLM 5.3? I Compared Them on Identical Prompts
Community speculation points to 0x Alpha being a repackaged GLM 5.3. I ran both through my frontend benchmark to verify if the kinship holds up.

August 2026 · 5 min read
0x Alpha: I Benchmarked the Stealth Model Beating Every Leaderboard
A mystery model dominates social media leaderboards. I ran it through my public frontend benchmark to see if it actually works for developers.

August 2026 · 5 min read
Gemini 3.7 Flash Is Coding-Optimized: My Frontend Benchmark Says Check the Prompt Type
Gemini 3.7 Flash claims optimization for coding, but my frontend benchmarks show a stark, bimodal performance split that demands caution.

August 2026 · 6 min read
Meta Launched Muse Code: I Benchmarked Muse Spark 1.2 on Frontend Work
Meta has entered the coding agent race with Muse Code, powered by Muse Spark 1.2. I tested the model on my public frontend benchmark, and the results are startlingly bimodal.

August 2026 · 8 min read
Creating Google Wallet Passes: JWT Flows and Backend Integration
A technical guide for backend developers on implementing Google Wallet passes, from issuer account setup to the final signed Save to Wallet JWT.

August 2026 · 5 min read
When an AI Blog Pipeline Is Smarter Than a Prompt: Building a Grounded Generation System
I stopped treating LLMs like open-ended chatbots and built a deterministic pipeline. Here is how structured stages, deduplication, and human gates produce reliable technical content.

August 2026 · 2 min read
A Git Tree Is Enough: Running a Public Benchmark Without a Database
Ditch the server-side database. Use a structured folder tree in Git as your source of truth and build a manifest for a static SPA.

August 2026 · 9 min read
Escaping AI Harness Lock-In: One Prompt, Many Harnesses
Do not let your coding agent define your workflow. Learn how to export your AI logic into portable configuration files that function across any tool.

July 2026 · 2 min read
Leaderboards Do Not Render: Comparing AI Models for Frontend Work Fairly
Ignore aggregate leaderboard scores. For frontend generation, fair comparison requires identical prompts, manual rendering, and total transparency about your harness.

July 2026 · 9 min read
I Built an Open Benchmark for AI Frontend Generation
I replaced marketing-driven AI leaderboards with a verifiable, rendered benchmark that forces models to ship functional frontend code.

July 2026 · 5 min read
Same Model, Different Results: Why Your AI Coding Harness Matters
Model benchmarks are misleading. If you want better frontend output, stop worrying about the model and start auditing the harness that wires it to your files.

July 2026 · 7 min read
Laravel Queue Reliability: Failed Jobs, Retries, and Horizon in Production
Build a production-ready Laravel queue setup with explicit backoff strategies, database-level idempotency, Horizon supervisors, and reconciliation loops.

July 2026 · 6 min read
Handling LLM Rate Limits in Laravel Without Breaking Your Queue
Synchronous LLM calls in controllers lead to 504 errors and broken UX. Learn how to offload, throttle, and back off intelligently.

July 2026 · 5 min read
Testing Stripe Webhooks Locally in Laravel
Do not guess how your payment webhooks handle events. Use the Stripe CLI to replay real events against your local Laravel app safely to ensure idempotency and security.

July 2026 · 5 min read
Laravel Auth in 2026: Sanctum vs Passport vs Plain JWT
Choosing an API authentication strategy in Laravel isn't about features. It is a complexity budget decision based on who actually consumes your backend.

July 2026 · 1 min read
Automating Astro Rebuilds via Sanity Webhooks
Link your Sanity CMS content changes directly to Cloudflare Pages deploy hooks to automate your Astro site rebuilds without manual git pushes.

July 2026 · 7 min read
Shadow IT Is Just a Symptom of Bad Internal Tools
When your operations team relies on fragile spreadsheets, you are failing to provide usable workflow tools. Here is how to fix the root cause.

June 2026 · 7 min read
Durable Execution: Why I Used Cloudflare Workflows for AI Automation
Standard serverless functions crash on long AI pipelines. Here is how I used Cloudflare Workflows to handle slow APIs, self-critique loops, and stateful retries.

June 2026 · 7 min read
From Paper to Structured Data: Building a Lightweight OCR Profile Builder
A deep dive into chaining Vision APIs with structured LLM schemas to convert messy, physical cards and flyers into reliable database records during onboarding.

June 2026 · 7 min read
Webhook Idempotency: Defending Your Database from Duplicate API Events
External platforms like Stripe and Clerk will inevitably send duplicate webhooks. Learn how to stop these events from corrupting your database.

June 2026 · 5 min read
Headless Cookie Consent with Cloudflare Zaraz
Eliminate heavy client-side consent bundles. Offload cookie management to the Cloudflare edge using Zaraz for performance and privacy.

June 2026 · 5 min read
Volta vs NVM: My Clean Node.js Runtime Setup on macOS
Ditch NVM for Volta to remove shell startup lag and enable automatic Node.js version switching that follows your projects, not your current directory.

June 2026 · 6 min read
Integrating with the Google Wallet Passes API: A Developer's Retrospective
Moving beyond static links to native Google Wallet passes. I break down the JWT signing, class architecture, and the mechanics of native loyalty integration.

June 2026 · 5 min read
Simplifying Internal Workflows Without Losing Auditability
Build maintainable operational software by prioritizing explicit workflow states and automated audit trails over complex, over-engineered systems.

June 2026 · 2 min read
Stop Using rm -rf in Your Daily Terminal Workflow
Prevent accidental permanent deletions by replacing the standard rm command with a native trash utility linked directly to your macOS Zsh shell.

June 2026 · 2 min read
Don't Block HTTP Requests Waiting for LLMs
Calling LLM APIs synchronously inside Laravel controllers leads to 504 Gateway Timeouts. Learn how to immediately return 202 Accepted and offload LLM calls to background queues.

May 2026 · 2 min read
Stop Showing Loading Spinners for Safe Mutations
Loading spinners are a failure of UX design when simple toggle actions are 99% guaranteed to succeed. Here is how to use React 19 useOptimistic for instant interfaces.

May 2026 · 8 min read
Webhooks Fail. Build Them to Fail Safely.
External APIs will inevitably send duplicate webhooks or drop connections. Learn how to construct resilient database-level idempotency, atomic transactions, and background queues.

May 2026 · 2 min read
Stop Returning Raw Database Models in Your APIs
Returning raw database models in API responses leaks sensitive internal fields and couples your frontend tightly to your schema.

May 2026 · 2 min read
How I Think About Stripe Payment Flows in Product Backends
A practical blueprint for payment flows: checkout state, idempotent webhooks, subscription access, grace periods, and operational debugging.

May 2026 · 2 min read
Adding AI Features Without Turning the Product Into a Demo
How to structure AI product features around service boundaries, queues, rate limits, state, and failure handling so they survive real users.

May 2026 · 2 min read
What I Learned Building Internal Workflow Tools
Reflections on designing operational software: mapping team coordination into simple workflows, useful states, readable screens, and maintainable data models.

May 2026 · 2 min read
How I Approach Maintainable Laravel Product Backends
A practical way to structure Laravel product backends around workflows, thin controllers, transactions, queues, and readable domain code.

July 2025 · 6 min read
Git Reset to Remote: Force a Local Branch to Match Origin Safely
When your local branch drifts into a mess, a hard reset is often the fastest path back to sanity. This guide covers the precise command sequence to safely discard local divergence.