<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>One For The Code</title><link>https://oneforthecode.com/</link><description>Recent content on One For The Code</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 05 Mar 2026 20:21:48 +0000</lastBuildDate><atom:link href="https://oneforthecode.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Everyone Should Maintain Legacy Code</title><link>https://oneforthecode.com/posts/2025-01-03-everyone-should-maintain-legacy-code/</link><pubDate>Thu, 20 Aug 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-everyone-should-maintain-legacy-code/</guid><description>Nothing teaches humility quite like inheriting someone else&amp;rsquo;s decisions.</description></item><item><title>Documentation Is a Feature, Not a Chore</title><link>https://oneforthecode.com/posts/2025-01-03-documentation-is-a-feature-not-a-chore/</link><pubDate>Mon, 17 Aug 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-documentation-is-a-feature-not-a-chore/</guid><description>Code that nobody can work out how to use is not really finished.</description></item><item><title>Docker's --init Flag Fixes Zombie Processes</title><link>https://oneforthecode.com/posts/2025-01-03-dockers-init-flag-fixes-zombie-processes/</link><pubDate>Thu, 13 Aug 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-dockers-init-flag-fixes-zombie-processes/</guid><description>Why your containers weren&amp;rsquo;t shutting down cleanly.</description></item><item><title>Docker Volume Mounts vs Bind Mounts: When to Use Each</title><link>https://oneforthecode.com/posts/2025-01-03-docker-volume-mounts-vs-bind-mounts-when-to-use-each/</link><pubDate>Mon, 10 Aug 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-docker-volume-mounts-vs-bind-mounts-when-to-use-each/</guid><description>Understand the difference between volume mounts and bind mounts, and how to share data between containers.</description></item><item><title>Docker Compose depends_on Doesn't Wait for Ready</title><link>https://oneforthecode.com/posts/2025-01-03-docker-compose-depends-on-doesnt-wait-for-ready/</link><pubDate>Thu, 06 Aug 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-docker-compose-depends-on-doesnt-wait-for-ready/</guid><description>Healthchecks are required for true dependency ordering.</description></item><item><title>Docker BuildKit Secrets Don't Leak Into Images</title><link>https://oneforthecode.com/posts/2025-01-03-docker-buildkit-secrets-dont-leak-into-images/</link><pubDate>Mon, 03 Aug 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-docker-buildkit-secrets-dont-leak-into-images/</guid><description>Pass secrets at build time without baking them into layers.</description></item><item><title>Debugging Is the Most Underrated Skill</title><link>https://oneforthecode.com/posts/2025-01-03-debugging-is-the-most-underrated-skill/</link><pubDate>Thu, 30 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-debugging-is-the-most-underrated-skill/</guid><description>The skill nobody interviews for and everybody quietly relies on.</description></item><item><title>Dataview's dv.pages() vs dv.list()</title><link>https://oneforthecode.com/posts/2025-01-03-dataviews-dv-pages-vs-dv-list/</link><pubDate>Mon, 27 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-dataviews-dv-pages-vs-dv-list/</guid><description>Which Dataview query to reach for, and when the other one is simpler.</description></item><item><title>CSS :has() Is Finally Here</title><link>https://oneforthecode.com/posts/2025-01-03-css-has-is-finally-here/</link><pubDate>Thu, 23 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-css-has-is-finally-here/</guid><description>Parent selectors that actually work, after decades of waiting.</description></item><item><title>Creation Is Art, Debugging Is Science</title><link>https://oneforthecode.com/posts/2025-01-03-creation-is-art-debugging-is-science/</link><pubDate>Mon, 20 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-creation-is-art-debugging-is-science/</guid><description>Why models are so much better at finding your bug than designing your system.</description></item><item><title>Creating Your First Laravel Package</title><link>https://oneforthecode.com/posts/2025-01-03-creating-your-first-laravel-package/</link><pubDate>Thu, 16 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-creating-your-first-laravel-package/</guid><description>Pulling the code you keep copying between projects into something reusable.</description></item><item><title>Creating Type-Safe Environment Variables in TypeScript</title><link>https://oneforthecode.com/posts/2025-01-03-creating-type-safe-environment-variables-in-typescript/</link><pubDate>Mon, 13 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-creating-type-safe-environment-variables-in-typescript/</guid><description>Catching a missing environment variable at boot rather than in production.</description></item><item><title>Creating a Daily Review Template in Obsidian</title><link>https://oneforthecode.com/posts/2025-01-03-creating-a-daily-review-template-in-obsidian/</link><pubDate>Thu, 09 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-creating-a-daily-review-template-in-obsidian/</guid><description>Opening and closing the day deliberately instead of just letting it happen.</description></item><item><title>Creating a Custom ESLint Rule</title><link>https://oneforthecode.com/posts/2025-01-03-creating-a-custom-eslint-rule/</link><pubDate>Mon, 06 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-creating-a-custom-eslint-rule/</guid><description>Getting the linter to enforce the thing you keep repeating in reviews.</description></item><item><title>Copilot Is Training Wheels You Should Eventually Remove</title><link>https://oneforthecode.com/posts/2025-01-03-copilot-is-training-wheels-you-should-eventually-remove/</link><pubDate>Thu, 02 Jul 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-copilot-is-training-wheels-you-should-eventually-remove/</guid><description>Useful while you are learning, and worth putting down once you have.</description></item><item><title>Comments Should Explain Why, Not What</title><link>https://oneforthecode.com/posts/2025-01-03-comments-should-explain-why-not-what/</link><pubDate>Mon, 29 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-comments-should-explain-why-not-what/</guid><description>Nobody has ever needed a comment narrating the line directly underneath it.</description></item><item><title>Code Review Is About the Team, Not the Code</title><link>https://oneforthecode.com/posts/2025-01-03-code-review-is-about-the-team-not-the-code/</link><pubDate>Thu, 25 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-code-review-is-about-the-team-not-the-code/</guid><description>Reviews are for sharing what you know, not for scoring points on style.</description></item><item><title>Code Ownership Is an Anti-Pattern</title><link>https://oneforthecode.com/posts/2025-01-03-code-ownership-is-an-anti-pattern/</link><pubDate>Mon, 22 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-code-ownership-is-an-anti-pattern/</guid><description>Why &amp;lsquo;my code&amp;rsquo; is a phrase that should worry you and everyone around you.</description></item><item><title>Channel Your Drama Into Entertainment</title><link>https://oneforthecode.com/posts/2025-01-03-channel-your-drama-into-entertainment/</link><pubDate>Thu, 18 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-channel-your-drama-into-entertainment/</guid><description>Drama belongs on a stage, deliberately, and not in the middle of your day.</description></item><item><title>Caddy's Automatic HTTPS Is Magic</title><link>https://oneforthecode.com/posts/2025-01-03-caddys-automatic-https-is-magic/</link><pubDate>Mon, 15 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-caddys-automatic-https-is-magic/</guid><description>Certificates that renew themselves, off the back of about three lines of config.</description></item><item><title>Burnout Is Not a Badge of Honour</title><link>https://oneforthecode.com/posts/2025-01-03-burnout-is-not-a-badge-of-honour/</link><pubDate>Thu, 11 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-burnout-is-not-a-badge-of-honour/</guid><description>Working yourself into the ground is not dedication, it is bad planning.</description></item><item><title>Building Type-Safe APIs with tRPC</title><link>https://oneforthecode.com/posts/2025-01-03-building-type-safe-apis-with-trpc/</link><pubDate>Mon, 08 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-type-safe-apis-with-trpc/</guid><description>Type safety from client to server, with none of the code generation.</description></item><item><title>Building Streaming APIs with Node.js</title><link>https://oneforthecode.com/posts/2025-01-03-building-streaming-apis-with-node-js/</link><pubDate>Thu, 04 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-streaming-apis-with-node-js/</guid><description>Moving a lot of data without your process quietly running out of memory.</description></item><item><title>Building Real-time Features with Laravel Reverb</title><link>https://oneforthecode.com/posts/2025-01-03-building-real-time-features-with-laravel-reverb/</link><pubDate>Mon, 01 Jun 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-real-time-features-with-laravel-reverb/</guid><description>First-party WebSockets in Laravel, without reaching for a third party.</description></item><item><title>Building Multi-Tenant SaaS with Laravel</title><link>https://oneforthecode.com/posts/2025-01-03-building-multi-tenant-saas-with-laravel/</link><pubDate>Thu, 28 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-multi-tenant-saas-with-laravel/</guid><description>One codebase serving many customers without their data getting mixed up.</description></item><item><title>Building Custom GPTs for Your Workflow</title><link>https://oneforthecode.com/posts/2025-01-03-building-custom-gpts-for-your-workflow/</link><pubDate>Mon, 25 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-custom-gpts-for-your-workflow/</guid><description>Building a narrow assistant that knows your workflow rather than everything.</description></item><item><title>Building Custom Artisan Commands in Laravel</title><link>https://oneforthecode.com/posts/2025-01-03-building-custom-artisan-commands-in-laravel/</link><pubDate>Thu, 21 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-custom-artisan-commands-in-laravel/</guid><description>Moving the tedious jobs into the CLI, where they were always meant to live.</description></item><item><title>Building an Automated Weekly Review with Things 3 and Obsidian</title><link>https://oneforthecode.com/posts/2025-01-03-building-an-automated-weekly-review-with-things-3-and-obsidian/</link><pubDate>Mon, 18 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-an-automated-weekly-review-with-things-3-and-obsidian/</guid><description>Use Dataview queries to automatically aggregate daily notes and completed tasks into a weekly review.</description></item><item><title>Building an AI Code Review Bot</title><link>https://oneforthecode.com/posts/2025-01-03-building-an-ai-code-review-bot/</link><pubDate>Thu, 14 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-an-ai-code-review-bot/</guid><description>Letting a bot take the boring first pass so people review what matters.</description></item><item><title>Building a Zettelkasten in Obsidian</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-zettelkasten-in-obsidian/</link><pubDate>Mon, 11 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-zettelkasten-in-obsidian/</guid><description>Small atomic notes that quietly compound into something genuinely useful.</description></item><item><title>Building a Type-Safe API Client with Zod</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-type-safe-api-client-with-zod/</link><pubDate>Thu, 07 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-type-safe-api-client-with-zod/</guid><description>Validating at runtime so your compile-time types are not a comfortable lie.</description></item><item><title>Building a Robust Webhook System in Laravel</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-robust-webhook-system-in-laravel/</link><pubDate>Mon, 04 May 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-robust-webhook-system-in-laravel/</guid><description>Sending events to other people&amp;rsquo;s systems and coping when they are down.</description></item><item><title>Building a RAG Pipeline with LangChain</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-rag-pipeline-with-langchain/</link><pubDate>Thu, 30 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-rag-pipeline-with-langchain/</guid><description>Getting a model to answer from your documents instead of inventing things.</description></item><item><title>Building a Plugin System in TypeScript</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-plugin-system-in-typescript/</link><pubDate>Mon, 27 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-plugin-system-in-typescript/</guid><description>Letting other people extend your code without it descending into chaos.</description></item><item><title>Building a Pi-hole + Unbound DNS Stack</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-pi-hole-unbound-dns-stack/</link><pubDate>Thu, 23 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-pi-hole-unbound-dns-stack/</guid><description>Blocking ads at the DNS level and doing your own recursion while you are there.</description></item><item><title>Building a Personal CRM with Obsidian and Dataview</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-personal-crm-with-obsidian-and-dataview/</link><pubDate>Mon, 20 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-personal-crm-with-obsidian-and-dataview/</guid><description>Keeping track of the people you care about without paying monthly for it.</description></item><item><title>Building a Notes MCP Server for Claude Desktop</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-notes-mcp-server-for-claude-desktop/</link><pubDate>Thu, 16 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-notes-mcp-server-for-claude-desktop/</guid><description>Give Claude direct access to your local notes folder using the Model Context Protocol.</description></item><item><title>Building a Media Server Stack: Jellyfin + *arr Apps</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-media-server-stack-jellyfin-arr-apps/</link><pubDate>Mon, 13 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-media-server-stack-jellyfin-arr-apps/</guid><description>Jellyfin and the *arr apps wired together so the library looks after itself.</description></item><item><title>Building a Local-First App with CRDTs</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-local-first-app-with-crdts/</link><pubDate>Thu, 09 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-local-first-app-with-crdts/</guid><description>Using Yjs so your app carries on working when the network does not.</description></item><item><title>Building a Job Queue with BullMQ</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-job-queue-with-bullmq/</link><pubDate>Mon, 06 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-job-queue-with-bullmq/</guid><description>Getting slow work off the request cycle without losing any of it.</description></item><item><title>Building a Home Dashboard with Homepage</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-home-dashboard-with-homepage/</link><pubDate>Thu, 02 Apr 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-home-dashboard-with-homepage/</guid><description>One page that tells you whether everything in the house is still up.</description></item><item><title>Building a CLI Tool with Commander.js and Ink</title><link>https://oneforthecode.com/posts/2025-01-03-building-a-cli-tool-with-commander-js-and-ink/</link><pubDate>Mon, 30 Mar 2026 07:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-building-a-cli-tool-with-commander-js-and-ink/</guid><description>Terminal UIs in React with proper command parsing.</description></item><item><title>Build Momentum Before You Need It</title><link>https://oneforthecode.com/posts/2025-01-03-build-momentum-before-you-need-it/</link><pubDate>Thu, 26 Mar 2026 08:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-build-momentum-before-you-need-it/</guid><description>Momentum is easier to maintain than it ever is to create from scratch.</description></item><item><title>Always Be Refactoring</title><link>https://oneforthecode.com/posts/2025-01-03-always-be-refactoring/</link><pubDate>Mon, 23 Mar 2026 08:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-always-be-refactoring/</guid><description>Why the big rewrite never actually happens, and what to do instead.</description></item><item><title>AI Won't Replace Developers, But It Will Replace Developers Who Don't Use AI</title><link>https://oneforthecode.com/posts/2025-01-03-ai-wont-replace-developers-but-it-will-replace-developers-who-dont-use-ai/</link><pubDate>Thu, 19 Mar 2026 08:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-03-ai-wont-replace-developers-but-it-will-replace-developers-who-dont-use-ai/</guid><description>The tooling is not coming for your job, but the people using it might be.</description></item><item><title>Linux chattr Makes Files Immutable</title><link>https://oneforthecode.com/posts/2025-01-01-linux-chattr-makes-files-immutable/</link><pubDate>Mon, 16 Mar 2026 08:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2025-01-01-linux-chattr-makes-files-immutable/</guid><description>The one Linux command that tells even root to do one.</description></item><item><title>Reducing Katas</title><link>https://oneforthecode.com/posts/reducing-katas/</link><pubDate>Wed, 26 Feb 2025 11:08:41 +0000</pubDate><guid>https://oneforthecode.com/posts/reducing-katas/</guid><description>Practising reduce until it stops feeling like witchcraft.</description></item><item><title>Roll Your Own Component Generators</title><link>https://oneforthecode.com/posts/roll-your-own-component-generators/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/roll-your-own-component-generators/</guid><description>A little trick to speed you along your development journey.</description></item><item><title>Stone Soup Programming</title><link>https://oneforthecode.com/posts/2023-07-11-stone-soup-programming/</link><pubDate>Tue, 11 Jul 2023 13:58:42 +0000</pubDate><guid>https://oneforthecode.com/posts/2023-07-11-stone-soup-programming/</guid><description>Put a rock in some water and ask if anyone fancies adding a carrot.</description></item><item><title>Shape Shifting Functions</title><link>https://oneforthecode.com/posts/2023-07-10-shape-shifting-functions/</link><pubDate>Mon, 10 Jul 2023 14:24:03 +0000</pubDate><guid>https://oneforthecode.com/posts/2023-07-10-shape-shifting-functions/</guid><description>Functions that change shape depending on what you hand them.</description></item><item><title>How to Make Time</title><link>https://oneforthecode.com/posts/2023-05-11-how-to-make-time/</link><pubDate>Thu, 11 May 2023 09:39:36 +0000</pubDate><guid>https://oneforthecode.com/posts/2023-05-11-how-to-make-time/</guid><description>How I actually structure a day around a big family and too many projects.</description></item><item><title>Higher-Order Functions</title><link>https://oneforthecode.com/posts/2023-04-22-javascript-101-higher-order-functions/</link><pubDate>Mon, 02 Mar 2026 19:14:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2023-04-22-javascript-101-higher-order-functions/</guid><description>Functions that take functions, and why you already use them every day.</description></item><item><title>Call, Bind and Apply</title><link>https://oneforthecode.com/posts/2022-04-02-javascript-101-call-bind-and-apply/</link><pubDate>Sat, 02 Apr 2022 09:58:29 +0000</pubDate><guid>https://oneforthecode.com/posts/2022-04-02-javascript-101-call-bind-and-apply/</guid><description>Three ways to tell a function what &amp;rsquo;this&amp;rsquo; is supposed to mean.</description></item><item><title>JavaScript 101: Immediately Invoked Functions</title><link>https://oneforthecode.com/posts/2022-02-11-javascript-101-immediately-invoked-functions/</link><pubDate>Fri, 11 Feb 2022 10:01:40 +0000</pubDate><guid>https://oneforthecode.com/posts/2022-02-11-javascript-101-immediately-invoked-functions/</guid><description>The pattern that gave us module scope before modules turned up.</description></item><item><title>Comparison and Logical Operators in Javascript</title><link>https://oneforthecode.com/posts/2022-02-05-comparison-and-logical-operators-in-javascript/</link><pubDate>Sat, 05 Feb 2022 09:56:54 +0000</pubDate><guid>https://oneforthecode.com/posts/2022-02-05-comparison-and-logical-operators-in-javascript/</guid><description>Double equals, triple equals, and when you can trust either of them.</description></item><item><title>Javascript 101: Hoisting</title><link>https://oneforthecode.com/posts/2022-01-25-javascript-101-hoisting/</link><pubDate>Tue, 25 Jan 2022 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2022-01-25-javascript-101-hoisting/</guid><description>What JavaScript does with your declarations before it runs a single line.</description></item><item><title>JavaScript 101: Implicit Type Coercion</title><link>https://oneforthecode.com/posts/2022-01-14-javascript-101-implicit-type-coercion/</link><pubDate>Fri, 14 Jan 2022 10:06:56 +0000</pubDate><guid>https://oneforthecode.com/posts/2022-01-14-javascript-101-implicit-type-coercion/</guid><description>Why JavaScript quietly changes your types behind your back.</description></item><item><title>JavaScript 101: Data Types</title><link>https://oneforthecode.com/posts/2021-12-29-javascript-101-data-types/</link><pubDate>Wed, 29 Dec 2021 10:10:51 +0000</pubDate><guid>https://oneforthecode.com/posts/2021-12-29-javascript-101-data-types/</guid><description>Everything JavaScript thinks a value can be, and why that matters.</description></item><item><title>Passing By Value and Passing By Reference</title><link>https://oneforthecode.com/posts/2021-12-14-what-does-passing-by-value-and-passing-by-reference-mean-in-javascript/</link><pubDate>Tue, 14 Dec 2021 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/posts/2021-12-14-what-does-passing-by-value-and-passing-by-reference-mean-in-javascript/</guid><description>The distinction that trips everyone up at some point, explained properly.</description></item><item><title>About</title><link>https://oneforthecode.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/about/</guid><description>&lt;p&gt;I’m a software engineer with a passion for building websites, apps, and scalable systems.&lt;/p&gt;
&lt;p&gt;When I’m not coding, you can find me on the mats practicing Brazilian Jiu-Jitsu, or hanging out with my family.&lt;/p&gt;
&lt;h3 id="i-love-working-with"&gt;I love working with:&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge&amp;amp;logo=react&amp;amp;logoColor=%2361DAFB" alt="React"&gt;
&lt;img src="https://img.shields.io/badge/vue-%2335495e.svg?style=for-the-badge&amp;amp;logo=vue.js&amp;amp;logoColor=%4FC08D" alt="Vue"&gt;
&lt;img src="https://img.shields.io/badge/angular-%23DD0031.svg?style=for-the-badge&amp;amp;logo=angular&amp;amp;logoColor=white" alt="Angular"&gt;
&lt;img src="https://img.shields.io/badge/nodejs-%2368A063.svg?style=for-the-badge&amp;amp;logo=Node.js&amp;amp;logoColor=white" alt="Node.JS"&gt;
&lt;img src="https://img.shields.io/badge/laravel-red.svg?style=for-the-badge&amp;amp;logo=Laravel&amp;amp;logoColor=white" alt="Laravel"&gt;
&lt;img src="https://img.shields.io/badge/python-%233776AB.svg?style=for-the-badge&amp;amp;logo=python&amp;amp;logoColor=white" alt="Python"&gt;
&lt;img src="https://img.shields.io/badge/Docker-%230db7ed.svg?style=for-the-badge&amp;amp;logo=docker&amp;amp;logoColor=white" alt="Docker"&gt;
&lt;img src="https://img.shields.io/badge/Kubernetes-%233970e4.svg?style=for-the-badge&amp;amp;logo=kubernetes&amp;amp;logoColor=white" alt="Kubernetes"&gt;
&lt;img src="https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge&amp;amp;logo=typescript&amp;amp;logoColor=white" alt="TypeScript"&gt;
&lt;img src="https://img.shields.io/badge/Next-black?style=for-the-badge&amp;amp;logo=next.js&amp;amp;logoColor=white" alt="Next JS"&gt;
&lt;img src="https://img.shields.io/badge/css3-%231572B6.svg?style=for-the-badge&amp;amp;logo=css3&amp;amp;logoColor=white" alt="CSS"&gt;
&lt;img src="https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&amp;amp;logo=html5&amp;amp;logoColor=white" alt="HTML"&gt;&lt;/p&gt;
&lt;h3 id="-what-im-up-to"&gt;🔭 What I&amp;rsquo;m Up To&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Check out my &lt;a href="https://oneforthecode.com/now/"&gt;Now&lt;/a&gt; page to see what I’m currently working on.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-currently-learning"&gt;🌱 Currently Learning&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://img.shields.io/badge/Golang-aqua.svg?style=for-the-badge&amp;amp;logo=Go&amp;amp;logoColor=white" alt="Golang"&gt;
&lt;img src="https://img.shields.io/badge/rust-black.svg?style=for-the-badge&amp;amp;logo=Rust&amp;amp;logoColor=white" alt="Rust"&gt;&lt;/p&gt;
&lt;h3 id="-find-me-here"&gt;📫 Find Me Here&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.linkedin.com/in/dave-yates-0064a1136/"&gt;&lt;img src="https://img.shields.io/badge/linkedin-%230077B5.svg?style=for-the-badge&amp;amp;logo=linkedin&amp;amp;logoColor=white" alt="LinkedIn"&gt;&lt;/a&gt;
&lt;a href="https://mastodon.social/@kodizen"&gt;&lt;img src="https://img.shields.io/badge/mastodon-%23338FCC.svg?style=for-the-badge&amp;amp;logo=mastodon&amp;amp;logoColor=white" alt="Mastodon"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;or shoot me an email at &lt;a href="mailto:david@oneforthecode.com"&gt;david@oneforthecode.com&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>AI and LLMs</title><link>https://oneforthecode.com/topics/ai-and-llms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/topics/ai-and-llms/</guid><description>&lt;p&gt;I use these tools daily and I am neither evangelical nor dismissive about them. Mostly I am interested in where the line sits between useful and confidently wrong, and in running as much of it as possible on my own hardware.&lt;/p&gt;</description></item><item><title>CV</title><link>https://oneforthecode.com/cv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/cv/</guid><description/></item><item><title>Engineering Craft</title><link>https://oneforthecode.com/topics/engineering-craft/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/topics/engineering-craft/</guid><description>&lt;p&gt;Fifteen years in, the things that separate a good team from a struggling one are almost never technical. These are the opinions I have arrived at, including the ones I am least sure about.&lt;/p&gt;</description></item><item><title>Homelab and Self-Hosting</title><link>https://oneforthecode.com/topics/homelab-and-self-hosting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/topics/homelab-and-self-hosting/</guid><description>&lt;p&gt;My homelab has been running and evolving since 2023, managed with Ansible and Terraform rather than by hand. It is the best learning environment I have ever had, because when it breaks nobody is paging me but me.&lt;/p&gt;</description></item><item><title>Learning</title><link>https://oneforthecode.com/learning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/learning/</guid><description>&lt;p&gt;These are the books I return to and the courses I have worked through rather
than bookmarked. When I mentor someone I hand them a subset of this, in roughly
this order.&lt;/p&gt;
&lt;h2 id="books"&gt;Books&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Book&lt;/th&gt;
 &lt;th&gt;Author&lt;/th&gt;
 &lt;th&gt;Why it is here&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;The Pragmatic Programmer&lt;/td&gt;
 &lt;td&gt;Hunt and Thomas&lt;/td&gt;
 &lt;td&gt;The one I give people earliest. Very little of it is about code, which is the point: it is about the habits that decide whether what you write survives contact with a team.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Code Complete, second edition&lt;/td&gt;
 &lt;td&gt;McConnell&lt;/td&gt;
 &lt;td&gt;Long, and worth it. It answers &amp;ldquo;why is this function hard to read&amp;rdquo; with something better than taste.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Design Patterns&lt;/td&gt;
 &lt;td&gt;Gamma, Helm, Johnson and Vlissides&lt;/td&gt;
 &lt;td&gt;The Gang of Four. Dated in its examples and still the shared vocabulary: when I argued for the builder pattern over a procedural mess, this was the argument.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Clean Code&lt;/td&gt;
 &lt;td&gt;Martin&lt;/td&gt;
 &lt;td&gt;Worth reading and worth arguing with, which is most of its value. Some of it I follow to the letter, some I have watched teams apply as dogma until the code got worse.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Refactoring&lt;/td&gt;
 &lt;td&gt;Fowler&lt;/td&gt;
 &lt;td&gt;Gives the moves names, so a code review stops being an argument about preference and becomes two people agreeing which transformation applies.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Structure and Interpretation of Computer Programs&lt;/td&gt;
 &lt;td&gt;Abelson and Sussman&lt;/td&gt;
 &lt;td&gt;Genuinely hard, and anyone who says otherwise has skimmed it. It keeps asking you to build the thing you have been taking for granted, then asks what that means. I still do not understand half of it.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="courses"&gt;Courses&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Course&lt;/th&gt;
 &lt;th&gt;By&lt;/th&gt;
 &lt;th&gt;Why it is here&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Learn Python the Hard Way&lt;/td&gt;
 &lt;td&gt;Zed Shaw&lt;/td&gt;
 &lt;td&gt;The title is the method: type it out, break it, fix it. Unfashionable now, and still how I pick up a language I have no commercial reason to know yet.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;The Ruby on Rails Tutorial&lt;/td&gt;
 &lt;td&gt;Michael Hartl&lt;/td&gt;
 &lt;td&gt;Taken while at an agency that was passing database files around by hand. I came back on the Monday and introduced migrations, which is the most direct line I can draw from a course to something I changed at work.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Laracasts&lt;/td&gt;
 &lt;td&gt;Jeffrey Way&lt;/td&gt;
 &lt;td&gt;Years of it. The best explanation of Laravel and of PHP as it is actually written now rather than as its reputation suggests, and the reason the PHP on my CV is not stuck in 2013.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Frontend Masters&lt;/td&gt;
 &lt;td&gt;Various&lt;/td&gt;
 &lt;td&gt;Where I go for depth rather than a tutorial. The courses are taught by the people who build the things.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Stephen Grider&amp;rsquo;s catalogue&lt;/td&gt;
 &lt;td&gt;Stephen Grider&lt;/td&gt;
 &lt;td&gt;Most of it, over the years. Good at the thing that is hardest to teach: building the whole thing rather than the interesting part of it.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Teach Yourself CS&lt;/td&gt;
 &lt;td&gt;Ozan Onay and Myles Byrne&lt;/td&gt;
 &lt;td&gt;A curriculum rather than a course, and I am still working through it. It exists because a lot of us came in by building things first and filled in the fundamentals afterwards. That is my route exactly.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="why-this-page-exists"&gt;Why this page exists&lt;/h2&gt;
&lt;p&gt;Most of my career has been spent arriving somewhere that already has a problem.
What travels between those engagements is not a framework, it is the set of
ideas above. A CV lists what I have used. This is closer to how I decide.&lt;/p&gt;</description></item><item><title>Now</title><link>https://oneforthecode.com/now/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/now/</guid><description>&lt;ul&gt;
&lt;li&gt;🧘 Still trying to learn how to meditate with &lt;a href="https://www.calm.com/"&gt;Calm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;👨‍🏫 Mentoring and sharing my expertise in software engineering. Check out my profile on &lt;a href="https://www.upwork.com/en-gb/freelancers/~017aa37de24a348482"&gt;Upwork&lt;/a&gt; for more details!&lt;/li&gt;
&lt;li&gt;🥋 Working on my Purple Belt @ &lt;a href="https://www.sbgcrewe.com/"&gt;SBG Crewe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;💼 Working on fintech features for my clients @ &lt;a href="https://builtbyup.com"&gt;Built By Up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🦀 Learning Rust via some hands-on algorithms&lt;/li&gt;
&lt;li&gt;📱 Still building some apps in Swift and Firebase that may (or may not!) make my life a little easier.&lt;/li&gt;
&lt;li&gt;🏃‍♂️ Working towards the someday goal of an Ironman, by training for a marathon first&lt;/li&gt;
&lt;li&gt;🕹️ Playing stuff on the &lt;a href="https://pyrite-carriage-369.notion.site/Video-Games-ce0f94cbc85544ec9e9596565c4ec18f?pvs=4"&gt;games list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🎵 Listening to &lt;a href="https://music.apple.com/gb/playlist/my-coding-playlist/pl.u-leylMl6f91m6J2"&gt;these tunes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Obsidian and Productivity</title><link>https://oneforthecode.com/topics/obsidian-and-productivity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/topics/obsidian-and-productivity/</guid><description>&lt;p&gt;Everything here runs on markdown files I own. Obsidian happens to be a nice window onto them, but the point is that the notes outlive whichever app I am using this year.&lt;/p&gt;</description></item><item><title>PHP and Laravel</title><link>https://oneforthecode.com/topics/php-and-laravel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/topics/php-and-laravel/</guid><description>&lt;p&gt;PHP has been quietly excellent for years and Laravel is the reason a lot of small teams ship at all. These are the things I keep reaching for on Laravel engagements.&lt;/p&gt;</description></item><item><title>TypeScript and JavaScript</title><link>https://oneforthecode.com/topics/typescript-and-javascript/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://oneforthecode.com/topics/typescript-and-javascript/</guid><description>&lt;p&gt;Most of my contract work is Node and TypeScript, so this is the pile that grew fastest. It runs from the fundamentals that trip everyone up at some point through to the type-level tricks I actually reach for on client work.&lt;/p&gt;</description></item></channel></rss>