Stu Mason
Stu Mason

Articles

Technical deep-dives, insights, and lessons learned

Red Flags Your Developer Isn't Delivering: A Founder's Checklist

A concrete checklist for non-technical founders to identify when a developer is underperforming, stalling, or outright taking the piss. Not theoretical — based on real situations I've seen from both sides. Each red flag comes with what it actually means and what to do about it.

Founder Guides·April 10, 2026·8 min read

What Happens After Your MVP Launches (Nobody Talks About This)

The honest reality of what happens after you launch an MVP. Not the champagne-popping success story — the actual day-to-day of bug reports, user feedback that makes you rethink everything, the feature requests that never stop, and the operational concerns nobody warned you about. Based on multiple real launches.

Founder Guides·April 8, 2026·8 min read

The Build vs Buy Decision: When to Write Code and When to Use SaaS

A decision framework for knowing when to write custom code and when to use an existing service. Based on real projects where I've seen founders waste months building things that already exist — and equally, where using the wrong SaaS tool created more problems than it solved.

Founder Guides·April 6, 2026·7 min read

Week in Review: Mar 30 – Apr 5, 2026 — 42 PRs, 865 commits

42 PRs merged, 865 commits, 2 releases, +677 lines

April 5, 2026·8 min read

Your Vibe-Coded Prototype is Broken. Here's How I Know.

A practical guide to recognising the symptoms of a vibe-coded prototype — built fast with AI tools but without engineering discipline. Based on the Rezzy rescue project, where I took a 22-table mess and rebuilt it into 10 clean tables. If your prototype was built by prompting an AI for a weekend, this article explains what's likely wrong and what it takes to fix it.

Founder Guides·April 2, 2026·7 min read

What an MVP Actually Costs in 2026 (With Real Numbers)

A no-bullshit breakdown of what it actually costs to build an MVP in 2026, covering solo developers, agencies, and offshore teams. Based on real projects I've built and real quotes I've seen founders receive. If you're a non-technical founder trying to budget, this is the article you need.

Founder Guides·March 30, 2026·6 min read

Week in Review: Mar 23 – Mar 29, 2026 — 8 PRs, 170 commits

8 PRs merged, 170 commits, +1,645 lines

March 29, 2026·4 min read

Testing Laravel Apps with Pest: Real Patterns from Real Projects

This isn't a "getting started with Pest" tutorial — there are plenty of those. This is a collection of testing patterns pulled from real production codebases: how to structure factories, when to use datasets, how Pest 4's browser testing works in practice, and the patterns that actually catch bugs. If you've been writing tests for a while and want to level up, or if you're writing tests that feel like they're testing nothing useful, this should help.

Evergreen References·March 27, 2026·7 min read

Self-Hosting with Coolify: Ditch Vercel and Heroku Without the Pain

PaaS platforms like Vercel, Heroku, and Railway are convenient but expensive. Self-hosting on a VPS used to mean SSH-ing into servers and manually configuring Nginx. Coolify changes that — it's an open-source PaaS you run on your own server. This article covers how to set it up, what it costs, how deployment works, and why I use it for every project including this one. I even built a Laravel package to make the integration smoother.

Evergreen References·March 25, 2026·7 min read

PostgreSQL vs MySQL for SaaS: I've Used Both, Here's What I Pick

I've shipped production applications on both PostgreSQL and MySQL. For SaaS applications, PostgreSQL wins — and it's not even close. This article explains why: JSON columns that actually work, better indexing, CTEs, array types, and a data integrity model that saves your arse when things go wrong. MySQL is fine for simpler applications. But if you're building a SaaS product that needs to scale and evolve, Postgres is the right choice.

Evergreen References·March 23, 2026·7 min read

Week in Review: Mar 16 – Mar 22, 2026 — 6 PRs, 170 commits

6 PRs merged, 170 commits, +1,279 lines

March 22, 2026·3 min read

React 19 + Laravel 12: The Full Stack Setup I Use on Every Project

This is the exact stack configuration I use on every new project — Laravel 12, Inertia v2, React 19, TypeScript, Tailwind v4, and Wayfinder for type-safe routing. Not a theoretical "you could do this" article — this is what's running on the Progress site right now. I'll walk through every piece, what it does, why it's there, and how they fit together.

Evergreen References·March 19, 2026·6 min read

Docker for Laravel Developers: The Only Guide You Actually Need

Docker is one of those technologies that developers either love or avoid entirely because every tutorial is either too basic (hello world in a container!) or too complex (let me explain Kubernetes). This article is neither. It's the practical Docker setup for Laravel developers — what you need to containerise your app, how to set up a development environment, and how to deploy it. I use Docker + Coolify for deployment on every project. Here's exactly how it works.

Evergreen References·March 16, 2026·7 min read

Week in Review: Mar 9 – Mar 15, 2026 — 2 PRs, 20 commits

2 PRs merged, 20 commits, +41 lines

March 15, 2026·3 min read

Stripe Connect Explained for Marketplace Founders: The Bits Nobody Tells You

If you're building a marketplace where money flows between buyers, sellers, and your platform, you need Stripe Connect. The official docs are comprehensive but dense. This article explains what Stripe Connect actually is, how the money flows, what KYC really means for your users, and all the gotchas that caught me out while building TidyLinker. This is NOT a code tutorial — it's a plain-English guide for founders who need to understand the system before paying someone to build it.

Evergreen References·March 13, 2026·8 min read

MVP Tech Stack Decision Tree: Laravel, Next.js, Rails, or Django

Picking a tech stack for your MVP is one of the first decisions founders make, and one of the most consequential. Get it wrong and you're either rebuilding in six months or fighting your tools the entire time. This article walks through how to pick between Laravel, Next.js, Rails, and Django for your MVP — when each makes sense, the real trade-offs, and why I pick Laravel + Inertia for most things. I'll be honest about where it falls short too.

Evergreen References·March 11, 2026·7 min read

The Freelance Developer Rate Guide UK: What to Charge and How

Real talk about freelance developer rates in the UK market. Day rates, project rates, retainers — what's reasonable, what's taking the piss, and how to actually think about pricing. This isn't a generic "charge what you're worth" post. It's based on 16 years of doing this, including a fair amount of getting it wrong before getting it right. If you're a developer trying to figure out what to charge, or a business trying to understand what things cost, this should help.

Evergreen References·March 9, 2026·7 min read

Meilisearch in Laravel: Full-Text Search Without the Elasticsearch Tax

I used to reach for Elasticsearch any time a project needed search. Then I'd spend three days configuring it, mapping fields, tuning analyzers, and wondering why it was consuming 2GB of RAM to index 5

laravel·March 8, 2026·8 min read

GitHub Webhooks to Activity Feed: Normalising Messy Event Data

The Progress site shows a developer activity feed — commits, pull requests, releases, that sort of thing. The obvious approach is GitHub webhooks: configure them, receive events, display them. Should

laravel·March 8, 2026·8 min read

Week in Review: Mar 2 – Mar 8, 2026 — 9 PRs, 171 commits

9 PRs merged, 171 commits, 2 releases, +121 lines

March 8, 2026·5 min read

Availability Slot Systems: Weekly Recurrence with Date Overrides

On TidyLinker, cleaners set their weekly availability once and then block specific dates when they can't work. Sounds simple. It took three attempts to get the data model right. The first attempt was

laravel·March 7, 2026·7 min read

ID Obfuscation with Sqids: Why Your API Shouldn't Expose Sequential IDs

A competitor once told me they figured out how many customers we had by signing up, looking at their user ID, and subtracting. User 4,218. Four thousand two hundred and eighteen customers. That inform

laravel·March 7, 2026·6 min read

Content Extraction at Scale: Building a Pipeline That Processes 100+ Sources

DevTrends started as a side project to track developer news. I figured I'd scrape a few RSS feeds and call it done. Six months later, it processes 120+ sources, extracts content from thousands of arti

ai·March 7, 2026·7 min read

Supabase RLS Pitfalls: When Row-Level Security Fights Your App

I spent three days debugging why a new user couldn't create their first booking. The insert kept failing silently. No errors, no logs, just... nothing. The row didn't appear. Turns out, the RLS polic

saas·March 6, 2026·7 min read

Event-Driven Notifications: Deduplication, Tenant Isolation, Channel Expansion

Every Laravel app starts with notifications the same way: something happens, you call `$user->notify(new SomethingHappened())`, and you move on. It works. Until it doesn't. It stops working when you

laravel·March 6, 2026·7 min read

Stripe Connect Authorize-Then-Capture: The Implementation Nobody Documents

If you've read the Stripe Connect docs and thought "right, but how do I actually build this?" — this article is for you. I built a full authorize-then-capture flow for a marketplace platform and the g

saas·March 6, 2026·8 min read

PostgreSQL vs MySQL for SaaS: I've Used Both, Here's What I Pick

Let me preface this: MySQL is not bad. I used it happily for years. It powers Facebook, Wikipedia, and thousands of excellent applications. If you're using MySQL and it's working for you, you don't ne

saas·March 5, 2026·7 min read

React 19 + Laravel 12: The Full Stack Setup I Use on Every Project

I've iterated on my stack for years. Tried Vue, tried Livewire, tried separate SPAs. What I've landed on is the most productive setup I've ever used. It's not bleeding edge — it's the boring-in-a-good

laravel·March 5, 2026·6 min read

Inertia.js vs SPA vs Livewire: When to Use What

If you're building a Laravel app with a modern frontend, you've got three main options: Inertia.js, a full SPA (React/Vue with an API), or Livewire. They all work. They're all production-ready. But they solve different problems. This article breaks down when each approach makes sense, based on 16 years of building web applications. I use Inertia on everything I build — I'll explain why, but I'll be fair about the others.

Evergreen References·March 5, 2026·6 min read

Docker for Laravel Developers: The Only Guide You Actually Need

I avoided Docker for years. Laravel Herd (and Valet before it) made local development so painless that containerisation felt like needless complexity. Then I had to deploy to a VPS and everything chan

laravel·March 5, 2026·7 min read

Real-Time Chat with Laravel Reverb: What I Learned Building Two Platforms

I've built real-time chat on two separate marketplace platforms using Laravel Reverb. The first was for a service marketplace (think provider-customer messaging). The second was for a restaurant booki

laravel·March 4, 2026·8 min read

Open Source as Marketing: Why I Give Away My Best Patterns

I maintain several open source packages. Claudavel — Laravel integration patterns for Claude. laravel-coolify — a PHP SDK for the Coolify API. polar-flow — tooling for Polar's payment platform. None o

saas·March 4, 2026·8 min read

Testing Laravel Apps with Pest: Real Patterns from Real Projects

I'll be straight with you: I didn't always write tests. For years I was the "I'll test it manually" developer. Then I shipped a bug to production that cost a client money, and I became a testing conve

laravel·March 4, 2026·7 min read

Kent, Remote, Global: Running a Dev Business From Folkestone

I live in Folkestone. If you're not from the UK, that probably means nothing to you. If you are from the UK, you might know it as the town where the Channel Tunnel starts, or possibly as "that place i

freelancing·March 4, 2026·7 min read

AI Code Review via GitHub Actions: Setting Up @claude on Your Repos

I've had Claude reviewing PRs on my repositories for a while now. Not as the sole reviewer — as a first pass before human eyes. It catches things. Not everything, and not always the most important thi

ai·March 3, 2026·7 min read

MCP Servers on Cloudflare Workers: OAuth2 + KV Token Storage

MCP servers need to live somewhere. If you're building tools that proxy API calls to third-party services — and most useful MCP tools do exactly that — you need authentication, token storage, and reli

ai·March 3, 2026·7 min read

Two-Sided Marketplace Architecture: The Decisions That Matter

TidyLinker connects homeowners with cleaners. Sounds simple until you start building it. Two-sided marketplaces have a unique property: every architectural decision affects both sides, and getting it

saas·March 3, 2026·8 min read

Multi-Tenant SaaS Authorization: Policies That Actually Scale

The first time you ship a multi-tenant app without proper authorisation scoping, you'll get a support email that says something like "I can see another company's invoices." That's the moment you learn

laravel·March 2, 2026·6 min read

Stripe Connect Explained for Marketplace Founders: The Bits Nobody Tells You

Right. You're building a marketplace. Buyers pay sellers, you take a cut, everyone's happy. Simple, yeah? It is not simple. It is, in fact, one of the most complex parts of any marketplace build. And

saas·March 2, 2026·8 min read

MVP Tech Stack Decision Tree: Laravel, Next.js, Rails, or Django

Here's the dirty secret about tech stack decisions: the best stack is the one your team knows. That's it. That's the tweet. But since you're here for more nuance than that, let's get into it. ### Th

saas·March 2, 2026·7 min read

Inertia.js vs SPA vs Livewire: When to Use What

Let me save you some time: if you're building a Laravel application with a modern UI, use Inertia.js. That's my answer for about 80% of projects. But the other 20% matters, so let's actually talk abou

laravel·March 2, 2026·7 min read

Laravel Folder Structure in 2026: What Goes Where and Why

Laravel 11 and 12 stripped out a lot of the boilerplate that had accumulated over the years. If you're coming from Laravel 10 or earlier, the new structure looks bare — and that's the point. This article walks through the modern Laravel folder structure, what goes where, and why. I'll reference the actual structure of the Progress site (this very website) throughout so you can see how it works in a real production app, not just a tutorial project.

Evergreen References·March 2, 2026·5 min read

The Freelance Developer Rate Guide UK: What to Charge and How

I'm going to be honest with you: pricing is the thing most freelance developers get wrong for the longest. I certainly did. I spent my first few years undercharging, feeling grateful that anyone would

freelancing·March 1, 2026·7 min read

Building an AI Developer Intelligence Platform in 10 Days

Ten working days. Two developers. An idea that sounded too ambitious on day one and was live in production on day ten. DevTrends — a developer intelligence platform that ingests content from over 100

ai·March 1, 2026·8 min read

I Don't Use Feature Flags. Here's Why.

I'm going to say something that'll upset a certain type of developer: I don't use feature flags. Not in my own projects, not for most client work, not as a default approach. And my deployment frequenc

laravel·March 1, 2026·7 min read

Week in Review: Feb 23 – Mar 1, 2026 — 11 PRs, 290 commits

11 PRs merged, 290 commits, 7 releases, +2,396 lines

March 1, 2026·5 min read

The Solo Developer Advantage: Why One Good Dev Beats a Team of Five

I'm going to make a claim that sounds arrogant but is backed by experience: for most web projects, one good developer will deliver faster, cheaper, and often at higher quality than a team of five aver

freelancing·February 28, 2026·8 min read

Adding AI to Your Laravel App: Practical Integration, Not a Demo

I've shipped AI features in three production applications over the past year. Not chatbots — actual features. Summarising transcripts, classifying content, extracting structured data from messy inputs

ai·February 28, 2026·6 min read

Deploying Laravel to Production with Coolify: My Exact Setup

Every time I mention my hosting setup, someone asks "but how?" So here it is. The exact setup. No affiliate links, no sponsored nonsense. Just what works. ### Why Coolify Coolify is an open-source,

laravel·February 28, 2026·7 min read

Laravel Actions Pattern: Moving Business Logic Out of Controllers

Every Laravel developer goes through the same evolution. First, you put everything in controllers. Then you put everything in models. Then you discover services and put everything there instead. Event

laravel·February 27, 2026·6 min read

DTOs in Laravel: Why I Use Them on Every Project and How

I use DTOs on every Laravel project I build. Every single one. Some developers think that's over-engineering. I think it's the bare minimum for shipping code that doesn't leak data, break frontends, o

laravel·February 27, 2026·7 min read

16 Years of PHP: Why I'm Still Here and Not Sorry About It

I wrote my first line of PHP in 2010. It was terrible. The code, I mean — not the language. Well, actually, the language was a bit terrible too. PHP 5.2, no namespaces, mysql_* functions everywhere, e

freelancing·February 27, 2026·8 min read

Building MCP Servers in Laravel: Give Claude Access to Your App

MCP — Model Context Protocol — is one of those things that sounds like hype until you actually build with it. Then it clicks. It's a standardised way for AI assistants to interact with your applicatio

ai·February 27, 2026·7 min read

Getting Laravel 12 Logs into Coolify's Log Viewer

Coolify shows container logs — anything written to stdout/stderr by the container process. By default, a Laravel app running behind PHP-FPM writes logs to , which is a file inside the container. Coolify never sees it. This guide explains how to get Laravel errors, warnings, and application logs...

February 27, 2026·5 min read

Connecting Claude Desktop to a Laravel MCP Server via Passport OAuth

How to expose a Laravel MCP server over HTTPS with OAuth authentication, so tools like Claude Desktop can connect remotely using . The Goal That's it. Claude Desktop connects to your production Laravel app, authenticates via OAuth, and gets access to your MCP tools. No API keys to manage, no tokens...

February 27, 2026·7 min read

Laravel Folder Structure in 2026: What Goes Where and Why

If you've been writing Laravel since the 5.x days like I have, opening a fresh Laravel 12 project can feel a bit like someone's burgled your house. Where's the Kernel? Where did my middleware director

laravel·February 25, 2026·5 min read

Self-Hosting with Coolify: Ditch Vercel and Heroku Without the Pain

I spent years paying Forge £15/month to manage a server, plus the VPS cost on top. Before that, I paid Heroku ridiculous amounts for what amounted to a Docker container with a nicer UI. Then I found C

laravel·February 23, 2026·7 min read

Week in Review: Feb 16 – Feb 22, 2026 — 17 PRs, 290 commits

17 PRs merged, 290 commits, +1,691 lines

February 22, 2026·5 min read

Claude Code in My Daily Workflow: What Actually Works

I've been using Claude Code daily for months now. Not as an experiment — as a core part of how I build software. Every project I work on, every client engagement, every open source package. It's open

ai·February 20, 2026·7 min read

Code Quality Standards That Make White-Label Work Actually Work

Here's a truth about white-label development that took me a while to learn: the code you deliver under someone else's name has to be better than the code you'd write for yourself.

agencies·February 18, 2026·7 min read

The Overflow Capacity Model: Why Agencies Keep Me on Speed Dial

Here's a scenario that plays out at agencies constantly: a new project lands. It's a good one — solid budget, interesting brief, keen client. The agency won the pitch and everyone's buzzing.

agencies·February 16, 2026·8 min read

Week in Review: Feb 9 – Feb 15, 2026 — 14 PRs, 240 commits

14 PRs merged, 240 commits, 1 releases, +1,866 lines

February 15, 2026·4 min read

What Agencies Get Wrong When Hiring Freelance Developers

I've been freelancing for sixteen years. In that time, I've worked with agencies that made the experience brilliant and agencies that made me question my career choices. The difference was almost neve

agencies·February 13, 2026·8 min read

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

agencies·February 11, 2026·7 min read

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.

agencies·February 9, 2026·7 min read

Week in Review: Feb 2 – Feb 8, 2026 — 17 PRs, 480 commits

17 PRs merged, 480 commits, +10,194 lines

February 8, 2026·6 min read

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

freelancing·February 6, 2026·8 min read

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.

saas·February 4, 2026·8 min read

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.

February 2, 2026·3 min read

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.

saas·February 2, 2026·8 min read

Week in Review: Jan 26 – Feb 1, 2026 — 31 PRs, 980 commits

31 PRs merged, 980 commits, 3 releases, +19,556 lines

February 1, 2026·9 min read

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.

January 31, 2026·10 min read

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

saas·January 30, 2026·7 min read

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.

January 29, 2026·7 min read

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.

January 28, 2026·9 min read

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

freelancing·January 28, 2026·8 min read

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.

January 26, 2026·10 min read

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.

saas·January 26, 2026·8 min read

Week in Review: Jan 19 – Jan 25, 2026 — 41 PRs, 1,667 commits

41 PRs merged, 1667 commits, 3 releases, +18,426 lines

January 25, 2026·13 min read

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.

January 24, 2026·8 min read

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.

saas·January 23, 2026·7 min read

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.

January 22, 2026·11 min read

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

laravel·January 21, 2026·8 min read

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.

January 20, 2026·9 min read

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

freelancing·January 19, 2026·7 min read

Week in Review: Jan 12 – Jan 18, 2026 — 83 PRs, 3,368 commits

83 PRs merged, 3368 commits, 11 releases, +66,594 lines

January 18, 2026·30 min read

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.

saas·January 16, 2026·6 min read

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.

January 14, 2026·2 min read

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.

January 6, 2026·5 min read

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.

December 30, 2025·3 min read

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.

December 23, 2025·3 min read

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.

December 16, 2025·3 min read

Deploying Laravel to Coolify the Easy Way

Laravel package for Coolify deployments - dashboard, CLI tools, and smart Nixpacks generation that detects your stack automatically.

December 9, 2025·3 min read

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.

December 2, 2025·3 min read

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.

November 25, 2025·3 min read

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.

November 18, 2025·4 min read

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.

November 11, 2025·3 min read

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.

November 4, 2025·2 min read

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.

October 28, 2025·4 min read

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.

October 21, 2025·4 min read

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.

October 14, 2025·3 min read

Scope-Locked Vibing

Pure vibe coding breaks down on complex projects. Scope-locked vibing is my middle ground - keep the speed, avoid the mess.

October 7, 2025·4 min read

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.

September 30, 2025·3 min read

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.

September 23, 2025·2 min read

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.

September 16, 2025·3 min read

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.

September 9, 2025·4 min read