Documenting my journey of tackling challenges during my software development endeavors.
Gathering all my in-depth reflections on programming, solution architecture, and related topics, arranged in a chronological sequence.
Writing about software, architecture, and the developer experience.
Six commits across two codebases today — a deployment platform and an identity system. Different...
TL;DR — I read someone else's skill library, went back to my own 32 skills, and found every one of...
TL;DR — I shipped a baseline of security headers into every generated nginx vhost, meaning it as a...
Twenty-two commits across four repos today. Different stacks, different problems, and — reading them...
Fifty-three commits across eight repos today. Reading them back in one sitting, they sorted...
Thirty-eight commits across five repos today. Reading them back, most were the same species of bug:...
TL;DR — I spent today building out a backup subsystem, and almost every design decision that mattered...
TL;DR — I had Capistrano-style releases on a plain VM: build into releases/<ref>, swap a...
Twenty-three commits across four repos today. Looking back at them, most had the same shape...
TL;DR — I shipped managed S3-compatible storage servers today, and the most interesting thing in the...
Twenty-five commits across eight repos today. The thread running through most of them: finishing...
TL;DR — Content-Security-Policy took down parts of two different apps in one day. One app enabled it...
TL;DR — nasrulhazim/claude 2.4.0 ships a schema-diagram skill and an /erd command that generate a...
TL;DR — I built an interactive ERD for a 112-table Laravel schema: one self-contained HTML file,...
Thirteen repos moved today, sixty-nine commits. One is public — laravel-billing — and got its own...
TL;DR — laravel-billing 2.0.1 makes the one-off charge the primitive. A plan checkout is now just a...
Nine repos moved today. One is public and got its own post; the rest is private work, so what follows...
TL;DR — laravel-scheduler-manager now targets Livewire 4 only. Not because Livewire 3 stopped...
Four repos moved today. One is public and got its own post; the rest were private work, so what...
TL;DR — I shipped a release note claiming "Livewire 4 is not supported" based on two failures I never...
TL;DR — Forty-one commits across six repositories and almost all of them share one shape: code that...
TL;DR — A package that writes raw SQL inherits every database its host application might run on....
TL;DR — A Laravel package that fetches a stylesheet, a script, or a webfont from a third-party host...
TL;DR — I spent today running a provisioning pipeline against a fresh OS family for the first time,...
TL;DR — A long day across a deployment platform and a brand-new mobile app. Two themes kept...
TL;DR — I have an OsProfileContract with a Debian implementation that's been happily provisioning...
TL;DR — A heavy day across a deployment platform and a CRM. The thread running through most of it:...
TL;DR — I sanitize rich-text email bodies when they're saved. Today I added a second pass at render...
TL;DR — I spent today building the ability to manage a database server from a platform UI: create...
TL;DR — A long day across five repos. The theme that kept repeating: the failure that looks like...
TL;DR — I spent the day teaching a deployment control plane to build apps natively on a plain VM — no...
TL;DR — A view shipped inside cleaniquecoders/laravel-db-doc opened with <x-guest-layout> and...
TL;DR — A Redeploy button in a Livewire component ran the full clone-and-build inline in the HTTP...
TL;DR — I spent an evening chasing a deploy that kept dying with "command produced no output for 30s...
Thirteen commits across five repos today, and once I lined them up in the evening the pattern was...
Today's job: let people write email bodies with bold text, headings, links and inline images instead...
TL;DR — Every new terminal I open now greets me with my company's logo in isometric ASCII art,...
Eight commits across four repos, and by evening they'd all quietly converged on the same question:...
Today I shipped both sides of a form. A marketing site got a "Get Notified" modal on its course...
Twenty-six commits across six repos, and the day had one accidental theme running through it: things...
I spent today on a control plane that provisions plain VMs over SSH — the kind of app where a wrong...
Thirty commits across three repos, and the day split cleanly into two halves: standing a control...
Fifteen commits, three repos, and the bulk of it in one: a control plane that got an MCP surface, a...
I spent today putting an MCP surface on a multi-tenant Laravel control plane — the kind of app where...
TL;DR I stood a Laravel control plane up on a bare Ubuntu host today. The provisioning...
Four commits across two repos, and a short day by commit count that still managed to contain the most...
TL;DR Bulk actions over a mixed selection always skip rows. A count of skips is not a...
Sixteen commits, all on one private deployment platform, spread across a very long day — a batch just...
TL;DR A method that can't do its job has three options: do it, throw, or return "I can't"...
Heavy day, mostly on one private deployment platform, plus a small but instructive fix in a PDF book...
TL;DR The most expensive bug I hit yesterday wasn't a crash. It was a stub that answered...
A heavy day across six repos. Rather than list commits, here's the through-line: almost everything...
TL;DR Drift detection and autoscaling look like different features. They're the same...
TL;DR cleaniquecoders/pii-protection now ships SecretScrubber (pattern-based),...
TL;DR Rolled a Laravel starter/scaffolder onto Pest 5, made pest --tia (test impact...
TL;DR When one system has to build many kinds of app (Laravel, Django, Go, Node,...
TL;DR An MCP server lets an AI assistant call your app's real actions instead of guessing...
TL;DR Bumped Kickoff (my Laravel scaffolder) to Pest 5, PHP 8.4 floor, Symfony Console...
TL;DR If a web request shells out to a slow CLI (docker, kubectl, rsync…), move it to a...
TL;DR On a deployment platform: added a real nginx reverse-proxy tier with health gating,...
TL;DR Shipped a big reorg of my open-source Claude Toolkit and bundled it into my Kickoff...
TL;DR I reorganised my Claude Toolkit into three clear layers: skills (knowledge), agents...
Back in February I wrote about agent-skills — a repo of SKILL.md files that taught Claude Code my...
TL;DR Fixed a package that ignored its own "configure your own model" setting. Reworked a...
TL;DR A package that lets you configure a model, then calls the default one statically...
TL;DR I use two identifiers per row: a UUID as the public ID (URLs, APIs, forms) and an...
TL;DR Shared-database multi-tenancy = one database, every row tagged with tenant_id, a...
TL;DR Ran the same SEO + analytics checklist across five public repos and a couple of...
TL;DR Shipped a SEO + analytics baseline in Kickoff: meta/OG, canonical, JSON-LD org...
TL;DR I merged several training courses into one monorepo and gave every course the same...
TL;DR Spent today rebuilding two training diagrams — a layered reference architecture and...
I'm opening up my ebook series to technical reviewers before the final edition ships. Here's what the job actually involves, and the four-column format I use to make book feedback useful.
TL;DR Shipped an email broadcast module: audience filtering, suppression, queued...
TL;DR Shipped an email broadcast feature: audience filter → suppression gate → one queued...
TL;DR Rewrote a bootstrap seeder so the deployment stack — DB engine, queue runner, PHP...
TL;DR I rewrote a product's differentiators after noticing four of five were claims any...
TL;DR Rewrote a product's landing-page differentiators to only keep claims a rival can't...
TL;DR Shipped account suspension across two Laravel apps — an enum, a middleware, a...
TL;DR Suspension is not deletion: keep the row, block the sign-in. Model it as a status...
TL;DR Fast-forwarded two Laravel apps off an old in-house skeleton — in layers, not one...
TL;DR A job dispatched once, at row-creation time, has a silent failure mode: if that...
TL;DR Three unrelated repos, one recurring theme: derive from a single source of truth...
TL;DR The sidebar, the new section switcher, and breadcrumbs all read the same...
TL;DR Two apps each had their own password-change/reset logic, plus config toggles to...
TL;DR Collapsed a billing model from à-la-carte features to plans-only, in four safe...
TL;DR Moved a SaaS from à-la-carte feature subscriptions (pay per feature) to plans-only...
TL;DR Rolled a shared support-widget embed setting across the whole product suite — one...
TL;DR You can't put a Blade directive (@if/@endif) inside a component tag's attribute...
TL;DR 23 commits across 4 repos, one theme: opening apps to the outside world,...
TL;DR Built an embeddable support widget for a helpdesk product: no cookies — a...
TL;DR Two Laravel backends started serving Flutter apps on the same day — an events...
TL;DR A gate check-in app can't depend on live Wi-Fi: scans must work offline and sync...
A driver-based, testable BayarCash integration pattern from three production Laravel apps — checkout, webhooks, and the recurring-billing reality.
TL;DR Sync must be idempotent. Re-running a gateway sync should converge, not explode on...
TL;DR Syncing config into an API gateway (Kong here) is a converge operation, not an...
TL;DR You can record outgoing mail — sent, delivered-ish, opened, clicked — using...
TL;DR Shipped two a11y wins in laravel-livewire-tables v4.1.0: focus traps on popovers...
TL;DR "Disable" should drain, not delete. Turning off a gateway route or an upstream...
TL;DR Public Livewire tables package: extracted a theme-class seam so Blades stop...
TL;DR Blade templates that branch @if($isTailwind) ... @elseif($isBootstrap) for CSS...