Articles
Technical deep-dives, insights, and lessons learned
Embedding Into Agency Teams: Daily Standups, Their Tools, Their Brand
There's a word that gets thrown around a lot in agency circles: "embedded." As in, "we have an embedded developer." Most of the time, what they actually mean is "we have a freelancer we email tasks to
How White-Label Development Actually Works: 10 Years of Doing It
I've been doing white-label development for agencies for about a decade now. And the thing that surprises most people when I explain it is just how invisible you have to be.
When to Hire a Freelancer vs an Agency vs Build a Team
Every founder building a software product hits this question: who do I hire to build it? The three options — freelancer, agency, or in-house team — each have vocal advocates. Usually people who've onl
The Real Timeline for Building a SaaS Product (Not the Twitter Version)
Open Twitter on any given day and you'll see someone claim they built a profitable SaaS in 4 weeks. Side project. No code experience. £10k MRR. Life-changing.
Marketplace Payments Are Harder Than You Think
If you're building a marketplace, you've probably budgeted a week or two for "payments." After all, Stripe makes it easy, right? Drop in some code, money flows through, job done.
The Build vs Buy Decision: When to Write Code and When to Use SaaS
Every project I start involves this conversation: "Should we build this ourselves or use an existing service?" And every time, the founder's instinct is wrong in at least one direction. Either they wa
Week in Review: Feb 16 – Feb 22, 2026 — 17 PRs, 290 commits
17 PRs merged, 290 commits, +1,691 lines
Red Flags Your Developer Isn't Delivering: A Founder's Checklist
I want to be upfront about something: I'm a developer writing this article about how to spot bad developers. There's an obvious conflict of interest. But I've also spent years inheriting projects from
What Happens After Your MVP Launches (Nobody Talks About This)
You launched. Congratulations. The site's live, the first users are signing up, and you feel like you've climbed a mountain.
Your Vibe-Coded Prototype is Broken. Here's How I Know.
I'm going to describe a codebase to you. Tell me if it sounds familiar.
How I Rescued a 22-Table Mess and Rebuilt It in 10 Clean Tables
Jamie came to me with a problem I've seen too many times. He had a vision — a platform for the underground music scene that would connect DJs, promoters, and venues. He'd had a prototype built. It loo
How to Evaluate a Developer When You're Not Technical
You're a founder. You've got a great idea, maybe some funding, and you need someone to build it. Problem is, you can't tell the difference between a brilliant developer and one who's going to take you
What an MVP Actually Costs in 2026 (With Real Numbers)
I've built MVPs for marketplace founders, SaaS startups, and solo entrepreneurs. Here are the honest numbers — not the "it depends" hedge you'll get from most developers.
Week in Review: Feb 9 – Feb 15, 2026 — 14 PRs, 240 commits
14 PRs merged, 240 commits, 1 releases, +1,866 lines
Week in Review: Feb 2 – Feb 8, 2026 — 17 PRs, 480 commits
17 PRs merged, 480 commits, +10,194 lines
I Asked Claude to Do Archaeology on My Own Codebase
Claude dug through git history and Coolify deployment data to tell me the story of a 10-day project. The receipts were illuminating.
Week in Review: Jan 26 – Feb 1, 2026 — 31 PRs, 980 commits
31 PRs merged, 980 commits, 3 releases, +19,556 lines
Converting a Laravel/Inertia App to SSR: The Real Problems Nobody Tells You About
SSR isn't just a config flag. Here's every problem I hit converting 396 pages to server-side rendering — window.location crashes, duplicate meta tags, and the SEO gotcha that nearly broke every page.
Claude Code Troubleshooting: Every Common Error and How to Fix It
A practical guide to fixing every common Claude Code error — from ENOENT and MCP failures to context blowouts and permission issues. Real error messages, real fixes.
Securing Your Coolify Instance After the January 2026 Disclosure
Multiple critical CVEs hit Coolify in January 2026. Here's how to check if you're affected, update safely, and harden your instance — practical steps from someone who runs Coolify in production.
Running Parallel Claude Code Agents on Real Projects
A practical guide to running multiple Claude Code sessions in parallel using git worktrees — how to split tasks, manage branches, and get 3x the output without conflicts.
Week in Review: Jan 19 – Jan 25, 2026 — 41 PRs, 1,667 commits
41 PRs merged, 1667 commits, 3 releases, +18,426 lines
My Laravel AI Development Stack in 2026
An opinionated look at my full AI-assisted Laravel development stack — Claude Code in the terminal, MCP servers for context, Coolify for hosting, and how it all fits together.
My CLAUDE.md Setup for Laravel Projects (With Real Examples)
A detailed walkthrough of my actual CLAUDE.md configuration for Laravel projects — global settings, project-level rules, and the sections that make the biggest difference.
How I Use the Coolify MCP Server to Manage Production from Claude Code
A walkthrough of how I manage my production Coolify servers entirely from Claude Code using the MCP server I built — deployments, diagnostics, logs, and more.
Week in Review: Jan 12 – Jan 18, 2026 — 83 PRs, 3,368 commits
83 PRs merged, 3368 commits, 11 releases, +66,594 lines
Claude Status in My Menu Bar
Quick SwiftBar script to show Claude's status and my daily usage in the macOS menu bar. 10 minutes to build, saves me checking status.claude.com constantly.
Connecting Claude Desktop to Your Laravel App via MCP
Set up Laravel's official MCP package with Claude Desktop. All the gotchas around Sanctum tokens, mcp-remote config, and OAuth vs bearer auth.
Claude Code Global Settings: Where They Live and What They Do
Breakdown of Claude Code's settings system - where config files live, how CLAUDE.md works, and the skill system.
Self-Hosting My Polar Health Data
Polar's API only keeps 28 days of data. Built a server to sync and store it all permanently so I can actually analyze trends.
Building a Python SDK for Polar Watches
Built a Python SDK to pull data from my Polar watch. Async, typed, handles OAuth - all the boilerplate Polar's docs leave out.
Deploying Laravel to Coolify the Easy Way
Laravel package for Coolify deployments - dashboard, CLI tools, and smart Nixpacks generation that detects your stack automatically.
Claudavel: My Laravel + Claude Code Starter
Package that sets up Laravel the way I like it - Fortify, Sanctum, Horizon, Reverb, Telescope, plus Claude Code configuration out of the box.
I Built My Wife a Macro Tracker in 2 Hours
Wife was tracking macros in Google Sheets. Built her a proper app in 2 hours with React, N8n, and Claude for food parsing.
Idea to App Store in 4 Hours
Built a tide times iOS app and submitted to the App Store in 4 hours. React Native, Expo, Claude Code, and a Coolify API proxy.
I Almost Pushed My API Keys to GitHub
Nearly committed my API keys to GitHub. Built a wrapper to keep MCP secrets out of repos entirely.
Coolify MCP: Back From the Dead
Revived my Coolify MCP after letting it rot. Now Claude can manage my entire infrastructure without me copying UUIDs around.
Building My First MCP: Mistakes and All
Built an MCP to manage Coolify from my editor. The OpenAPI spec was too big for Claude to handle, so I learned to work in chunks.
When 97% Is Good Enough
Software engineers have been spoiled by deterministic systems. AI is dragging us into the world every other engineer already lives in.
Feeding Your AI the Docs It's Missing
Claude kept giving me outdated Laravel syntax. The fix was condensing the docs down to just what changed since its training cutoff.
Scope-Locked Vibing
Pure vibe coding breaks down on complex projects. Scope-locked vibing is my middle ground - keep the speed, avoid the mess.
Running Claude Code from Your Phone
Set up SSH access to my laptop so I can run Claude Code from my phone. ZeroTier was the answer after port forwarding and Tailscale failed me.
Claude Code Won't Run? Check Your PATH
Claude Code wouldn't start. Turned out to be a rogue alias in my .zshrc from months ago. Here's how to debug PATH issues.
Why I Split My Coolify Server in Two
My Coolify server kept dying during deployments. The fix was stupidly simple - separate the UI from the workload.
Ditching Forge for Coolify: The Full Migration
Migrating a production Laravel app from Forge to Coolify - database dumps, storage files, Nixpacks configs, and all the shit that can go wrong.