<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Posts on Hi, I&#39;m Ben 🐚</title>
		<link>https://benrutter.codeberg.page/site/posts/</link>
		<description>Recent content in Posts on Hi, I&#39;m Ben 🐚</description>
		<generator>Hugo</generator>
		<language>en-uk</language>
		
		
		
		
			<lastBuildDate>Wed, 10 Jun 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://benrutter.codeberg.page/site/posts/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>What the semver!?</title>
				<link>https://benrutter.codeberg.page/site/posts/what-the-semver/</link>
				<pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/what-the-semver/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve never used &lt;a href=&#34;https://elm-lang.org/&#34;&gt;Elm&lt;/a&gt; properly, but since I found out about it a couple years ago, have been jelous of it&amp;rsquo;s automated versioning.&lt;/p&gt;&#xA;&lt;p&gt;In theory at least (and from what I hear in practice too!), when you publish a package for Elm, it compares the type signature between your current and previous version, and determines from that, whether you are introducing a breaking change. The logic is pretty solid, if you have a fully typed language, the type signatures of your functions should indicate what calls will and won&amp;rsquo;t work, and therefore what is and isn&amp;rsquo;t a breaking change. I think it works along the lines of:&lt;/p&gt;</description>
			</item>
			<item>
				<title>The worst and best laptop I ever had</title>
				<link>https://benrutter.codeberg.page/site/posts/bad-hardware/</link>
				<pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/bad-hardware/</guid>
				<description>&lt;p&gt;I was recently reading about Apple&amp;rsquo;s new MacBook Neo. If you somehow haven&amp;rsquo;t encountered it yet, it&amp;rsquo;s a very cheap, but pretty competent MacBook. It made me realise that I owe a lot, to a &lt;em&gt;really terrible&lt;/em&gt; PC I used to have.&lt;/p&gt;&#xA;&lt;p&gt;It was about 5/6 years ago, I&amp;rsquo;d recently finished my masters degree and (probably related) had zero money. I needed a laptop, but couldn&amp;rsquo;t really afford anything with power.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why melt?</title>
				<link>https://benrutter.codeberg.page/site/posts/melt/</link>
				<pubDate>Tue, 23 Dec 2025 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/melt/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;There are only two hard things in Computer Science: cache invalidation and naming things.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;It might not be the most obvious name for a function, but any time I use pandas &lt;code&gt;melt&lt;/code&gt; method, it always brings a smile to my face. Polar&amp;rsquo;s &lt;code&gt;unpivot&lt;/code&gt; is probably a more obvious and consistent name (no surprise there, polars has great naming!) but let&amp;rsquo;s be honest, it&amp;rsquo;s not as fun!&lt;/p&gt;&#xA;&lt;p&gt;Anyway, I got really curious and decided to go deep on why pandas &lt;code&gt;melt&lt;/code&gt; is called &lt;code&gt;melt&lt;/code&gt;. Github took me as far back as the original function commit, but that doesn&amp;rsquo;t really make any reference to naming. Looking around a little bit more though, turned up that R&amp;rsquo;s &lt;code&gt;reshape2&lt;/code&gt; and before that &lt;code&gt;reshape&lt;/code&gt; package have a melt function that predates the pandas one! Aha!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Data Testing in 1, 2, Something</title>
				<link>https://benrutter.codeberg.page/site/posts/data-testing/</link>
				<pubDate>Fri, 17 Oct 2025 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/data-testing/</guid>
				<description>&lt;p&gt;I don&amp;rsquo;t get a lot of free time for development, but whenever I do, at the moment I&amp;rsquo;m plugging it into making data testing, and specifically, data contracts, as easy as possible!&lt;/p&gt;&#xA;&lt;p&gt;Programming is messy enough anyway, but programming with data is extra messy, because your programme gets to keep changing every time it runs even if you change nothing. Luck you!&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a whole load of products that exist for data testing, but I built a new one anyway, it&amp;rsquo;s called &lt;a href=&#34;https://benrutter.codeberg.page/wimsey-docs/site/&#34;&gt;Wimsey&lt;/a&gt;! Most existing tools for data contracts are prioprietary and non-open source, but even the ones that &lt;em&gt;are&lt;/em&gt; often &lt;em&gt;tied to&lt;/em&gt; open source products, that winds up making a huge impact on how they exist, they tend to want you to build an entire server and database to get them up and runner. Not enough people test data to start with, without us making it hard for them! That&amp;rsquo;s where Wimsey comes in.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Covering all bases</title>
				<link>https://benrutter.codeberg.page/site/posts/coverage/</link>
				<pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/coverage/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;../../img/dog-in-blankets.png&#34; alt=&#34;Dithered image of a dog under blankets&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I while back, I made a few contributions to the &lt;a href=&#34;https://github.com/narwhals-dev/narwhals&#34;&gt;Narwhal&amp;rsquo;s project&lt;/a&gt;, mostly helping get Dask support up and running. It was an awesome experience overall, not in small part because the lead maintainer Marco puts high five gifs of cats on pretty much every pull-request. One thing I hadn&amp;rsquo;t really seen before, was &lt;em&gt;actual&lt;/em&gt; 100% coverage across the full codebase.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve heard a lot of people advocate &lt;em&gt;against&lt;/em&gt; 100% coverage, mostly on the principle that it doesn&amp;rsquo;t measure how good your tests are, or how much they cover the important edge cases that your code might hit. That&amp;rsquo;s all true of course, but after putting 100% coverage in place on some work and personal based projects, I&amp;rsquo;m completely sold on it- here&amp;rsquo;s why.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hello Codeberg!</title>
				<link>https://benrutter.codeberg.page/site/posts/hello-codeberg/</link>
				<pubDate>Tue, 24 Jun 2025 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/hello-codeberg/</guid>
				<description>&lt;p&gt;If you&amp;rsquo;re reading this, you&amp;rsquo;ve found me over on Codeberg! I&amp;rsquo;ve been wanting to start shifting projects over to Codeberg for a while now, and have been putting it off for various reasons. As of, well now, I&amp;rsquo;ve moved over - it&amp;rsquo;s always fun to play with new tools, and I&amp;rsquo;m pretty excited about Codeberg.&lt;/p&gt;&#xA;&lt;p&gt;I should probably acknowledge that it&amp;rsquo;s at least in some part a move &lt;em&gt;away from&lt;/em&gt; github. I don&amp;rsquo;t have a huge problem with the site, and it&amp;rsquo;ll continue being a place that a bunch of exciting open source stuff happen for years and years. But it&amp;rsquo;s hard to ignore its increasingly hostile, and occasianally exploitative position against open-source software and its community.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Planning to Fail</title>
				<link>https://benrutter.codeberg.page/site/posts/planning-to-fail/</link>
				<pubDate>Fri, 16 May 2025 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/planning-to-fail/</guid>
				<description>&lt;p&gt;I read the hilarious &lt;a href=&#34;https://we.phorge.it/book/flavor/article/please_please_please/&#34;&gt;&amp;ldquo;Please Please Please&amp;rdquo; Phorge entry&lt;/a&gt; today and it&amp;rsquo;s as hilarious as it is trauma inducing.&lt;/p&gt;&#xA;&lt;p&gt;As somebody who spends a bunch of time working on libraries, I sometimes see feedback like this gem from the aforementioned entry:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Subject: help&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Priority: 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;it dun work&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There&amp;rsquo;s also the opposite side, where in my head an error stack is super expressive but I see this:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Subject: Strange Error&lt;/p&gt;&#xA;&lt;p&gt;Not sure why but when I call this script:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Data Contracts as Therapy</title>
				<link>https://benrutter.codeberg.page/site/posts/data-contracts-as-therapy/</link>
				<pubDate>Mon, 27 Jan 2025 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/data-contracts-as-therapy/</guid>
				<description>&lt;p&gt;I think I&amp;rsquo;ve heard people say &lt;a href=&#34;https://youtube.com/watch?v=FvG41iEXFrU&#34;&gt;data is the new gold&lt;/a&gt; at least twenty times. Having worked in data for a while, I&amp;rsquo;m pretty sure what they mean by that is that extracting and processing is a laborious and often violent process.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s possible that my take is inspired by working as a data engineer, and therefore being the victim of other people&amp;rsquo;s data continuously. I once, during my first few weeks at work, came in to find that multiple pipelines had failed because a huge data provider had suddenly replaced a bunch of values with &amp;ldquo;field-7&amp;rdquo;. Worst off, it wasn&amp;rsquo;t obvious that that&amp;rsquo;s what had happened, because the error was happening further down the line when it was being processed.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Fun &amp; Torture with Github Actions</title>
				<link>https://benrutter.codeberg.page/site/posts/github-actions/</link>
				<pubDate>Wed, 13 Nov 2024 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/github-actions/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve been working hard on a new project called &lt;a href=&#34;https://benrutter.github.io/wimsey&#34;&gt;&lt;em&gt;Wimsey&lt;/em&gt;&lt;/a&gt; lately. I&amp;rsquo;ll save writing about the project itself for another day, but it got me thinking about github actions (or really &lt;em&gt;any&lt;/em&gt; CICD workflow tool). And crucially, how my process for setting up a new CICD flow always winds up being:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Write a nice clean yaml config&lt;/li&gt;&#xA;&lt;li&gt;Feel like everything is very neat and tidy&lt;/li&gt;&#xA;&lt;li&gt;Push to a branch and try running it&lt;/li&gt;&#xA;&lt;li&gt;It doesn&amp;rsquo;t work&lt;/li&gt;&#xA;&lt;li&gt;Ammend, thinking I&amp;rsquo;ve fixed it, commit and push&lt;/li&gt;&#xA;&lt;li&gt;It still doesn&amp;rsquo;t work&lt;/li&gt;&#xA;&lt;li&gt;Repeat steps 5 &amp;amp; 6 at least 10 more times&lt;/li&gt;&#xA;&lt;li&gt;Swear a bit&lt;/li&gt;&#xA;&lt;li&gt;Repeat steps 5 &amp;amp; 6 at least 14 more times&lt;/li&gt;&#xA;&lt;li&gt;Cry in front of my friends and colleagues&lt;/li&gt;&#xA;&lt;li&gt;Repeat steps 5 &amp;amp; 6 at least 7 more times&lt;/li&gt;&#xA;&lt;li&gt;It now works! Praise the lords of github actions&lt;/li&gt;&#xA;&lt;li&gt;Vow never to touch it again&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Setting up the CICD for Wimsey was no different, only this time somewhere between steps 6 and 11 I found a new step where I thought about the issues with this workflow, which I&amp;rsquo;m now converting into this blog.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Fun with Hy and Pandas</title>
				<link>https://benrutter.codeberg.page/site/posts/fun-with-hy/</link>
				<pubDate>Wed, 02 Oct 2024 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/fun-with-hy/</guid>
				<description>&lt;p&gt;I don&amp;rsquo;t keep it much of a secret- I &lt;em&gt;love&lt;/em&gt; functional programming. Or maybe I&amp;rsquo;m just burned form spending hours of my life chasing back inheritance to see where an object variable was defined. Either was, when I saw that &lt;a href=&#34;https://hylang.org/&#34;&gt;hy lang&lt;/a&gt; v1.0 was release the other day, I was pretty kean to try it out!&lt;/p&gt;&#xA;&lt;p&gt;One of the downsides of new or more experimental languages, is the lack of ecosystem while things take time to catch on. That makes languages like Hy or Clojure a way easier sell, since they bring everything you love about Lisps without needing you to give up on the libraries of Python or Java respectively.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Libraries over tools</title>
				<link>https://benrutter.codeberg.page/site/posts/libraries-over-tools/</link>
				<pubDate>Tue, 20 Aug 2024 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/libraries-over-tools/</guid>
				<description>&lt;p&gt;Especially in the dark realm of data engineering, there&amp;rsquo;s a huge range of neat low-code/no-code UI tools. I don&amp;rsquo;t want to complain about those today, but I &lt;em&gt;do want&lt;/em&gt; to talk about why libraries (as opposed to low-code UI) are really awesome.&lt;/p&gt;&#xA;&lt;h2 id=&#34;low-code-is-good-code&#34;&gt;Low code is good code!&lt;/h2&gt;&#xA;&lt;p&gt;One thing that I think get&amp;rsquo;s missed out, is that low-code can &lt;em&gt;still be code&lt;/em&gt;. Plotly and dash is a really nice example of this. Here&amp;rsquo;s the code to make a bar chart:&lt;/p&gt;</description>
			</item>
			<item>
				<title>An Imaginary Language</title>
				<link>https://benrutter.codeberg.page/site/posts/an-imaginary-language/</link>
				<pubDate>Wed, 08 May 2024 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/an-imaginary-language/</guid>
				<description>&lt;p&gt;I don&amp;rsquo;t know where abouts we sit on the wave of yaml-domain-specific-languages. I &lt;em&gt;really hope&lt;/em&gt; it&amp;rsquo;s the peak, and that things will simmer down. I like yaml a lot as a configuration language, but every time I was to work in a domain specific language pretending to be configuration, it sends chills down my spine.&lt;/p&gt;&#xA;&lt;p&gt;A big part of it is that github actions and other similar yaml DSLs don&amp;rsquo;t have much tooling, the only way to run and test anything is committing. So I know that in 20 minutes my commit history will look something like this:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Learning Curves</title>
				<link>https://benrutter.codeberg.page/site/posts/learning-curves/</link>
				<pubDate>Fri, 19 Apr 2024 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/learning-curves/</guid>
				<description>&lt;p&gt;People (sadly) don&amp;rsquo;t go around asking me my favourite text editor a lot. But if they did, I&amp;rsquo;d answer in a second, (&amp;ldquo;Helix!&amp;rdquo;)[https://helix-editor.com/].&lt;/p&gt;&#xA;&lt;p&gt;But weirdly, I have worked a bunch in the past with people who are new to coding, and have recomended them editors, I&amp;rsquo;ve &lt;em&gt;never&lt;/em&gt; recommended Helix to someone starting out.&lt;/p&gt;&#xA;&lt;p&gt;That probably isn&amp;rsquo;t that wierd if you&amp;rsquo;re familar with Helix. If you&amp;rsquo;re not, it&amp;rsquo;s a lot like Vim or Neovim. You edit from the terminal (which I love) and you have different &lt;em&gt;modes&lt;/em&gt; for writing, reading and selecting (which makes keyboard shortcuts very optimised for each of those). A lot of people have used modal editors, a lot of people love them, and a lot of people can agree that they come with a pretty steep learning curve when you first get started.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Empty Objects &amp; Pandas&#39; Pipe Method</title>
				<link>https://benrutter.codeberg.page/site/posts/pandas-pipe/</link>
				<pubDate>Thu, 22 Feb 2024 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/pandas-pipe/</guid>
				<description>&lt;p&gt;The other day, I listened to the episode of &lt;a href=&#34;https://pod.link/1602572955/episode/7de37354dfa00eb3308e523467f410aa&#34;&gt;Richard Feldmans&amp;rsquo;s &lt;em&gt;Softward Unscripted&lt;/em&gt; with Greg Wilson&lt;/a&gt;. It&amp;rsquo;s a brilliant episode (in fact, the every episode is brilliant so you should probably check it out instead of reading this) and Greg has a lot of great insights around how we teach and discuss software engineering.&lt;/p&gt;&#xA;&lt;p&gt;One thing that really got me thinking was when Greg pointed out that we are &lt;em&gt;pretty bad&lt;/em&gt; at talking about design patterns and &lt;strong&gt;really bad&lt;/strong&gt; at talking about design patterns with examples.&lt;/p&gt;</description>
			</item>
			<item>
				<title>The Joy of Monads</title>
				<link>https://benrutter.codeberg.page/site/posts/the-joy-of-monads/</link>
				<pubDate>Wed, 10 Jan 2024 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/the-joy-of-monads/</guid>
				<description>&lt;p&gt;I love taking some time out in December, but my code obsessed brain often results in me using it to learn about some new coding concepts. This year, I took to reading though Miran Lipovača&amp;rsquo;s awesome &lt;a href=&#34;https://www.learnyouahaskell.com/&#34;&gt;Learn You a Haskell for Great Good!&lt;/a&gt; which had previously sat on my bookshelf unread for a long time.&lt;/p&gt;&#xA;&lt;p&gt;Probably one of the main reasons I didn&amp;rsquo;t approach it was that Haskell has a reputation for being a difficult language. I still think that reputation is pretty well earned, but more than anything, mainly because its such a &lt;em&gt;big&lt;/em&gt; language. There&amp;rsquo;s a lot in Haskell, and it has a pretty complex type system. As a digression, I think this is what makes Rust famously difficult to pick up too. Rust doesn&amp;rsquo;t have very many &amp;ldquo;gotchas&amp;rdquo; compared to other languages, but that doesn&amp;rsquo;t stop the fact that there&amp;rsquo;s &lt;em&gt;a lot of completely new concepts&lt;/em&gt; you&amp;rsquo;ll need to learn in order to pick it up.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Restricted Pandas</title>
				<link>https://benrutter.codeberg.page/site/posts/restricted-pandas/</link>
				<pubDate>Wed, 06 Dec 2023 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/restricted-pandas/</guid>
				<description>&lt;p&gt;Bemoaning the design of pandas isn&amp;rsquo;t a very hot take - the success of polars which seems to have kinda rocketed out of nowhere, is probably down, not by a small amount, to just how many people are currently using pandas, but want it to be &lt;em&gt;faster&lt;/em&gt; (always better right?) and also &lt;em&gt;more elegant&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m not gonna say to use pandas over polars or vice-versa, but I do think that if you&amp;rsquo;re going to use pandas, joining the cult of method chaining with a reduced feature set makes life a lot easier.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Running Dask in Databricks</title>
				<link>https://benrutter.codeberg.page/site/posts/running-dask-in-databricks/</link>
				<pubDate>Thu, 02 Nov 2023 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/running-dask-in-databricks/</guid>
				<description>&lt;p&gt;I should probably admit that there&amp;rsquo;s a bit of a contradiction between two thoughts that I have:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I really love spark&lt;/li&gt;&#xA;&lt;li&gt;I really hate spark&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Spark is one of the most powerful dataframe libraries on the planet. It can process multiple petabytes of data. But it&amp;rsquo;s also overkill and unwieldy for most jobs.&lt;/p&gt;&#xA;&lt;p&gt;For smaller datasets, tools like &lt;a href=&#34;https://pola.rs&#34;&gt;Polars&lt;/a&gt; or &lt;a href=&#34;https://duckdb.org&#34;&gt;Duckdb&lt;/a&gt; or pretty awesome - but for teams that &lt;em&gt;sometimes&lt;/em&gt; deal with big datasets (but mostly don&amp;rsquo;t) they pose a problem. Namely, do you:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Coding Virtues</title>
				<link>https://benrutter.codeberg.page/site/posts/coding-virtues/</link>
				<pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/coding-virtues/</guid>
				<description>&lt;p&gt;I have a pretty unusual and specific guilty pleasure. Well actually I have an entire music taste based on that premise. More specifically though, I have one that relates to programming: &lt;em&gt;clean coding&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;By that, I don&amp;rsquo;t mean that all my code is spotless or beautiful or anything, but some part of my brain really enjoys reading about clean code. I have a neat bookshelf of books on programming, with a healthy dose of books like &lt;strong&gt;Uncle Bob&amp;rsquo;s Clean Code&lt;/strong&gt;, &lt;strong&gt;Fowler&amp;rsquo;s Refactoring&lt;/strong&gt; and plenty more 90s joys that promised me they where going to solve all the problems I make for myself when writing programs. Actually, if I&amp;rsquo;m honest, I think it&amp;rsquo;s less about my own code, and more about fodder for when I don&amp;rsquo;t like something. Saying &amp;ldquo;I don&amp;rsquo;t like this&amp;rdquo; is rarely accepted, and never helpful, but somewhere along the way &amp;ldquo;this is a code smell&amp;rdquo; has become cannon.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Reinventing the Wheel</title>
				<link>https://benrutter.codeberg.page/site/posts/reinventing-the-wheel/</link>
				<pubDate>Fri, 25 Aug 2023 00:00:00 +0000</pubDate>
				<guid>https://benrutter.codeberg.page/site/posts/reinventing-the-wheel/</guid>
				<description>&lt;p&gt;Good news if you work in software - impress your friends and colleagues with these magnificent sentences!&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;Have we thought about scalability?&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;Let&amp;rsquo;s stop and think about what problem we&amp;rsquo;re actually trying to solve&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;We don&amp;rsquo;t need to reinvent the wheel&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You can say these at any point, in any meeting, without considering context and people will nod in agreement, and think you&amp;rsquo;re very clever. It&amp;rsquo;s not without good reason: scalability is normally important (though probably not quite as much as people think); it&amp;rsquo;s never a bad idea to refocus your thoughts and make sure haven&amp;rsquo;t lost sight of the task at hand; and if reinventing the wheel was a good idea, then step one of every project would involve writing the linux kernel.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
