<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Moon Pixels Blog</title><description>Practical notes on building useful software, choosing the right technical approach, and making better decisions about web projects.</description><link>https://moonpixels.co.uk/</link><language>en-GB</language><item><title>How my agentic coding workflow changed in three months</title><link>https://moonpixels.co.uk/blog/how-my-agentic-coding-workflow-changed-in-three-months/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/how-my-agentic-coding-workflow-changed-in-three-months/</guid><description>Why stronger coding models pushed my Propulsion workflow away from mandatory stages and towards concise, user-invoked, methodology-backed skills.</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate><category>AI Coding</category></item><item><title>How to hire a freelance Laravel developer</title><link>https://moonpixels.co.uk/blog/how-to-hire-a-freelance-laravel-developer/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/how-to-hire-a-freelance-laravel-developer/</guid><description>What to look for when hiring a freelance Laravel developer to take over or improve an existing business application.</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate><category>Business</category></item><item><title>Stop passing primitives around: Laravel value objects in practice</title><link>https://moonpixels.co.uk/blog/stop-passing-primitives-around-laravel-value-objects-in-practice/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/stop-passing-primitives-around-laravel-value-objects-in-practice/</guid><description>A practical Laravel value object pattern for stopping invalid primitive values from travelling through your app.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><category>Technical</category></item><item><title>Monorepo vs polyrepo: when a monorepo makes sense for tightly coupled apps</title><link>https://moonpixels.co.uk/blog/monorepo-vs-polyrepo-when-a-monorepo-makes-sense-for-tightly-coupled-apps/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/monorepo-vs-polyrepo-when-a-monorepo-makes-sense-for-tightly-coupled-apps/</guid><description>How moving three tightly coupled client apps into one monorepo cut releases and PRs from three to one, and why repo boundaries should follow coupling, not habit.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><category>Technical</category></item><item><title>The agentic coding workflow I use in OpenCode</title><link>https://moonpixels.co.uk/blog/the-agentic-coding-workflow-i-use-in-opencode/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/the-agentic-coding-workflow-i-use-in-opencode/</guid><description>How Propulsion grew out of a bloated AGENTS.md, what each workflow stage does in OpenCode, and why developers should build agentic workflows that fit how they think.</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate><category>AI Coding</category></item><item><title>Document your units (or production will do it for you)</title><link>https://moonpixels.co.uk/blog/document-your-units-or-production-will-do-it-for-you/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/document-your-units-or-production-will-do-it-for-you/</guid><description>A practical way to prevent unit bugs in config: put the unit in the name, and promote values into a value object at runtime.</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>Technical</category></item><item><title>Safely adding non-nullable columns in Laravel without breaking production</title><link>https://moonpixels.co.uk/blog/safely-adding-non-nullable-columns-in-laravel-without-breaking-production/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/safely-adding-non-nullable-columns-in-laravel-without-breaking-production/</guid><description>A production-safe rollout pattern for adding a new NOT NULL column to a table that already has data: add it nullable, backfill safely, then enforce constraints when you can prove it is clean.</description><pubDate>Sun, 08 Feb 2026 00:00:00 GMT</pubDate><category>Technical</category></item><item><title>From Laravel to Astro: why I rebuilt my site with the right tool for the job</title><link>https://moonpixels.co.uk/blog/from-laravel-to-astro-why-i-rebuilt-my-site-with-the-right-tool-for-the-job/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/from-laravel-to-astro-why-i-rebuilt-my-site-with-the-right-tool-for-the-job/</guid><description>Why I moved my personal site from Laravel to Astro, what changed, and what I learned about performance, maintenance, and choosing the right tool for content-driven websites.</description><pubDate>Sat, 31 Jan 2026 00:00:00 GMT</pubDate><category>Technical</category></item><item><title>OpenCode AI coding agent review</title><link>https://moonpixels.co.uk/blog/opencode-ai-coding-agent-review/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/opencode-ai-coding-agent-review/</guid><description>Why I switched from Claude Code and how OpenCode’s model-agnostic approach fits daily development workflows</description><pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate><category>AI Coding</category></item><item><title>How I structure Laravel support services so I can swap vendors without a refactor</title><link>https://moonpixels.co.uk/blog/how-i-structure-laravel-support-services-swap-vendors-without-refactor/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/how-i-structure-laravel-support-services-swap-vendors-without-refactor/</guid><description>A contract-first pattern for Laravel support services: define an interface, implement providers behind it, and bind it in a service provider so you can swap (or conditionally select) vendor packages later.</description><pubDate>Sun, 24 Aug 2025 00:00:00 GMT</pubDate><category>Technical</category></item><item><title>How to use mixins in Laravel with Macroable</title><link>https://moonpixels.co.uk/blog/how-to-use-mixins-in-laravel-with-macroable/</link><guid isPermaLink="true">https://moonpixels.co.uk/blog/how-to-use-mixins-in-laravel-with-macroable/</guid><description>A practical guide to organising Laravel macros into mixins for cleaner, maintainable, and type-friendly extensions, with a request helper example.</description><pubDate>Sun, 29 Jun 2025 00:00:00 GMT</pubDate><category>Technical</category></item></channel></rss>