<?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>Wed, 30 Sep 2026 00:00:00 +0100</lastBuildDate><atom:link href="https://oneforthecode.com/index.xml" rel="self" type="application/rss+xml"/><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>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>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>