<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="/sheet.xsl"?><rss version="2.0"><channel><title>Jamie’s blog</title><description>Jamie's blog about software, startups, and swimming (and other things that don't alliterate).</description><item><title>How to secure your Cloudflare install (or other WAF)</title><link>https://jamie.ideasasylum.com/2026/10/24/how-to-secure-your-cloudflare-install</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;article class="letter h-entry" morss_own_score="9.680284191829484" morss_score="12.635591454399316"&gt;

&lt;p&gt;Cork, Ireland · &lt;a href="https://jamie.ideasasylum.com/2026/10/24/how-to-secure-your-cloudflare-install"&gt;&lt;time&gt;24 October 2026&lt;/time&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;How to secure your Cloudflare install (or other WAF)&lt;/h1&gt;

&lt;img src="https://jamie.ideasasylum.com/images/cloudflare-header-rule.png"&gt;
&lt;div class="prose e-content" morss_own_score="5.910614525139665" morss_score="60.78295495067158"&gt;&lt;p&gt;If you’re even tangentially responsible for running a server on the Internet, you’ll probably have heard the advice to put that server behind Cloudflare (or another web application firewall—other vendors exist like Fastly or Bunny). You’ll almost definitely have heard that advice in the last week 😅&lt;/p&gt;
&lt;p morss_own_score="7.0" morss_score="9.5"&gt;If you’re setting up Cloudflare, or someone else set it up, or you set it up a long time ago when you were less knowledgeable (hint: that’s me) then &lt;strong&gt;make sure you verify that all traffic hitting your origin server is actually coming through your CDN/WAF provider&lt;/strong&gt;. If you don’t do this, it’s trivial for an attacker to simply route around your firewall.&lt;/p&gt;
&lt;p&gt;Podia—like every server on the Internet—has been attacked by bots, scanners, scripts, DDoS attacks etc just about every hour for the past few years and Cloudflare has done a good job protecting us.&lt;/p&gt;
&lt;p&gt;But it turns out that past-me was dumb: I just pointed our DNS records to podia.herokuapp.com, turned on the orange cloud, and configured our WAF rules. This worked extremely well and we’ve been able to control and block attacks for years like this.&lt;/p&gt;
&lt;p&gt;However, did you know that an attacker can just &lt;code&gt;curl&lt;/code&gt; a request to your origin server (i.e., podia.herokuapp.com), with a &lt;code&gt;Host&lt;/code&gt; header for &lt;code&gt;app.podia.com&lt;/code&gt; and Heroku will accept it and route it to your app? Completely bypassing your WAF? 🤯&lt;/p&gt;
&lt;p&gt;Yeah, I didn’t either. Take a moment to breathe and collect your thoughts. Maybe check your own servers first and then read on…&lt;/p&gt;
&lt;h2&gt;Verifying all traffic comes through your WAF&lt;/h2&gt;
&lt;p&gt;There are more sophisticated methods to do this but let’s talk about the most basic and universal method for securing your traffic.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Set a secret value as a HTTP header in your CDN&lt;/li&gt;
&lt;li&gt;Verify that secret value in your app and drop any request without it&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That’s pretty simple! Though I reckon 90% of Cloudflare installs probably don’t do this. I’ve never heard anyone talk about this so this is my little PSA in case you too haven’t thought about it either.&lt;/p&gt;
&lt;p&gt;In Cloudflare, you create a request header transform rule&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jamie.ideasasylum.com/images/cloudflare-header-transform.png"&gt;&lt;/p&gt;
&lt;p&gt;and the rule will look like this&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jamie.ideasasylum.com/images/cloudflare-header-rule.png"&gt;&lt;/p&gt;
&lt;p&gt;If you want to get more sophisticated, consider&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;using a secure method of comparing the header value to eliminate timing attacks (&lt;a href="https://api.rubyonrails.org/classes/ActiveSupport/SecurityUtils.html#method-c-secure_compare"&gt;&lt;code&gt;secure_compare&lt;/code&gt; in Rails&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;logging the header before enforcing them, just to check you’ve got everything working correctly&lt;/li&gt;
&lt;li&gt;supporting multiple keys so you can rotate it in the future without any downtime&lt;/li&gt;
&lt;li&gt;removing the secret header before it hits your app code so it doesn’t leak into responses, errors, or logs etc.&lt;/li&gt;
&lt;li&gt;looking into making the server accessible only via a Cloudflare tunnel so it cannot be accessed via the open Internet. It’s good but quite sophisticated and you can’t do it with Heroku.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;One more thing…&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;X-Forwarded-Host&lt;/code&gt; header is a fairly common header but it can also be abused, especially if your application uses multiple domains or subdomains.&lt;/p&gt;
&lt;p&gt;Rails trusts this header if you call &lt;code&gt;request.host&lt;/code&gt; so an attacker can send a request to app.podia.com with &lt;code&gt;X-Forwarded-Host: another.podia.com&lt;/code&gt;, and Rails will treat the request as going to another.podia.com.&lt;/p&gt;
&lt;p&gt;The solution, once you’ve ensured all traffic is going through Cloudflare, is to remove any &lt;code&gt;X-Forwarded-Host&lt;/code&gt; headers from requests. The header can then still be set and used internally by your servers but you never trust it from outside. The rule is simple:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jamie.ideasasylum.com/images/cloudflare-forwarded-host-rule.png"&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/article&gt;
</ns0:encoded><pubDate>Sat, 24 Oct 2026 00:00:00 UTC</pubDate></item><item><title>The Point</title><link>https://jamie.ideasasylum.com/2026/08/19/the-point</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;article class="letter h-entry" morss_own_score="9.923615531508593" morss_score="12.919752041489275"&gt;

&lt;p&gt;Cork, Ireland · &lt;a href="https://jamie.ideasasylum.com/2026/08/19/the-point"&gt;&lt;time&gt;19 August 2026&lt;/time&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;The Point&lt;/h1&gt;

&lt;div class="prose e-content" morss_own_score="5.992273019961365" morss_score="105.20655873424708"&gt;&lt;p&gt;I’ve been struggling a bit with two seemingly contradictory views that I hold:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I hugely value AI-generated code, 3D models, and even mockups of my kitchen redecoration.&lt;/li&gt;
&lt;li&gt;I intensely dislike AI-generated posts, articles, documents, books, music, photos, films etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is my best effort at reconciling those views.&lt;/p&gt;
&lt;h2&gt;What is the point?&lt;/h2&gt;
&lt;p&gt;The point of software development is not code, and it was never about the code; it’s about the problems software can solve. Ultimately no one cares if your app is hand-written code artistically crafted, code generated by an AI, or 1000 hamsters in a trench coat. Does it work? Does it solve the problem? If so, no one cares about the intermediate steps.&lt;/p&gt;
&lt;p&gt;The wider world cares as much about the code developers write as developers care about the Java byte code, Ruby VM instructions, or compiled assembler generated by their tools.&lt;/p&gt;
&lt;p&gt;The point of generating some recent 3D models using AI was not the model itself. It really wasn’t even the eventual object that emerged from the 3D printer. The point was to solve the problem of connecting the cooker hood to the outlet pipe in the wall. Or solving the problem of how to mark out a larger 73mm hole around the existing 65mm holes for the downlights in the kitchen.&lt;/p&gt;
&lt;p&gt;The mockups ChatGPT produced for our new kitchen tiles were just an intermediate expression. They helped us decide which tiles to buy, how to lay them out, and ensure we were both on the same page. The mockup doesn’t replace the tiles and there was no advantage to us in having a graphic designer produce the same images (albeit to a higher fidelity).&lt;/p&gt;
&lt;p&gt;The code, the models, and the mockups were &lt;em&gt;not&lt;/em&gt; the point.&lt;/p&gt;
&lt;p&gt;On the other hand, I really don’t like AI-generated documents—&lt;a href="https://jamie.ideasasylum.com/2026/08/19/[https:/www.rickmanelius.com/p/aidr-ai-didnt-read](https:/www.rickmanelius.com/p/aidr-ai-didnt-read)"&gt;AI;DR&lt;/a&gt; is my new favourite slogan—because the writing &lt;em&gt;is&lt;/em&gt; the point.&lt;/p&gt;
&lt;p morss_own_score="7.0" morss_score="11.0"&gt;Over the last week I’ve written up two proposals at work; probably a few thousand words over ~2 days of work. The point of the work was not to have a document; the point was the thinking, the reflection, and &lt;em&gt;my&lt;/em&gt; opinion. I had Claude gather facts from various data sources and research some of the options, and it produced a very nice document full of callouts, comparison, and detailed charts. It’s document was longer and prettier than mine so in many respect a better document. But I did not send that document to people to review because Claude is not the CTO of Podia—I am. The existence of a project proposal document was not the point, expressing &lt;em&gt;my&lt;/em&gt; opinion on it was.&lt;/p&gt;
&lt;p&gt;Equally, I wrote a blog post over the weekend about how you can just build things now. I didn’t need that post to exist. The point was not that I needed to publish content on my blog over the weekend. The point was that I was really excited about the future of software development and I wanted to convey that feeling into the world. The words in Markdown were not the point, the feeling they conveyed &lt;em&gt;was&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;A few months back I discovered a track I really liked but from an artist I’d never heard of. I started investigating and, although they claimed a vocalist from another band was “involved”, I think it was all AI-generated. I felt repulsed and betrayed even though the track itself was enjoyable. Why? I’m not entirely sure but it contrasts heavily with The Pretty Reckless’ new album which I’m obsessively listened to on repeat for the past 6 weeks. That album is filled with new sounds, fun interludes, human stories and raw emotion. I’m thinking the musical notes were not the point; the human connection it creates it.&lt;/p&gt;
&lt;h2&gt;The rule of thumb&lt;/h2&gt;
&lt;p&gt;AI doesn’t create output with any human traits. If humans traits such as artistic expression, stories, opinions, lived experiences, emotions, connection are the point, then you cannot produce the same result with AI.&lt;/p&gt;
&lt;p&gt;If the output is purely a mechanical commodity, like code or 3D models, then it’s ripe for using AI to accelerate its production.&lt;/p&gt;
&lt;p&gt;Though that lens, you can evaluate many tasks for whether AI should be used to complete them:&lt;/p&gt;
&lt;ul morss_own_score="3.0" morss_score="12.0"&gt;
&lt;li&gt;Marketing copy: hell, no. You need to create a connection with your audience.&lt;/li&gt;
&lt;li&gt;Designing a small plastic part to hold some cable together: AI can generate this because the hand-designed nature of the model won’t improve the outcome.&lt;/li&gt;
&lt;li&gt;“What do you think about…”: NO! Don’t regurgitate what Claude says because I asked you to engage &lt;em&gt;your&lt;/em&gt; brain.&lt;/li&gt;
&lt;li&gt;Writing performance reviews for your team: you are negligent and insane if you consider this appropriate for a manager.&lt;/li&gt;
&lt;li&gt;Compiling performance data from your apps: yeah, it’s factual data that requires nothing from you (decisions on next steps are a human trait though)&lt;/li&gt;
&lt;li&gt;Writing a game about your cats walking wet paint across your kitchen floor: get Claude on the case because you’ve done the human creativity part and just need to mechanically produce the code to bring your imagination to life.&lt;/li&gt;
&lt;li&gt;Producing end of year accounts: I mean, ideally a spreadsheet does this but there’s certainly no inherent humanness required.&lt;/li&gt;
&lt;li&gt;Advising you on pensions and life assurance policies: yeah, you probably want a human who has some idea about the fears and worries around the impending prospect of old age.&lt;/li&gt;
&lt;li&gt;Writing a presentation: No, because I want to hear how you describe this idea not how ChatGPT would phrase it.&lt;/li&gt;
&lt;li&gt;Writing the description for a simple PR: honestly, I’m ok with AI writing this as it’s mostly just listing factual aspects about the change.&lt;/li&gt;
&lt;li&gt;Writing the description for a controversial PR: this is where I feel the need to step in and write some explanation myself because I’m trying to convince the reader it’s a good idea.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is why I’m very enthusiastic about the use of AI in software development but I think the predicted efficiency gains in general business work are impossible. Reports and proposals magicing themselves into existence is just AI-induced cargo culting. If you thought the Word documents and Powerpoint files &lt;em&gt;were&lt;/em&gt; the point, then you have misunderstood your business.&lt;/p&gt;
&lt;h2&gt;Friction is good, sometimes&lt;/h2&gt;
&lt;p morss_own_score="7.0" morss_score="11.0"&gt;A forklift truck is very good at lifting weights up and putting them down again—but I don’t drive one into the gym to do my deadlifts! Lifting the weights is &lt;em&gt;not&lt;/em&gt; the point of the gym; exercising my muscles &lt;em&gt;is&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;In that respect, it’s important to understand the point of a task: is it only to have the task done or are there other side-effects along the way we that are important?&lt;/p&gt;
&lt;p&gt;Often “the point” of a task is something with very high friction: Learning new skills, growing and maturing as a person, exercising, creating, and so on. When we reflect back on those moments in our lives, they were hard-won lessons involving significant time, risk, effort, and anguish. If someone had done the job for us, or solved the problem, or told us what to do, then we wouldn’t have grown as a person. Wouldn’t have learnt a new skill or discovered what we were capable of.&lt;/p&gt;
&lt;p&gt;But, be aware, not all high-friction activities are valuable.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;can&lt;/em&gt; walk the 6km into the town to buy groceries instead of taking the car but just because I’m working harder doesn’t mean I’m better. Maybe I could claim to be more virtuous or environmentally-friendly—and it would certainly improve my fitness—but there’s really no benefit to me completing this grocery shopping task on hard mode. The trade-off for my energy and time just doesn’t make any sense.&lt;/p&gt;
&lt;p&gt;Equally, I’m afraid there are no prizes for coding apps by hand. You &lt;em&gt;can&lt;/em&gt; code that app by hand, you could even do it in C or assembler, but you’d rather be missing the point if the eventual goal is simply to “solve this problem with software”. You can do it, just like you can knit a jumper or turn a wooden bowl, but there has to be another reason for playing on hard mode. Maybe you want the high-friction experience to learn a new skill or you enjoy solving programming problems like other people enjoy solving Sudokus. That’s a perfectly valid personal approach—though it’s not a smart business strategy.&lt;/p&gt;
&lt;h2&gt;Watermarking is good, actually&lt;/h2&gt;
&lt;p&gt;When you stick to these principles, I can only view watermarking of AI output as a good thing. When I’m using AI correctly to perform mechanical tasks that don’t require my me-ness, then the watermarking becomes just a statement of facts. Nothing to be ashamed about. Nothing to fear. No implied judgement. Simply a label of origin.&lt;/p&gt;
&lt;p&gt;When I write blog posts like this, straight from my head to my fingers typing into a Markdown editor, then having them validated as &lt;em&gt;not&lt;/em&gt; AI is a badge of approval. I’ll admit I’m worried about false-positives and people assuming my content is written by AI but then I guess this post serves as an expression of my beliefs.&lt;/p&gt;
&lt;p&gt;If you’re using using AI to pretend to express an opinion or emotion or some other human-ness, then I think it’s only fair that we can recognise the lie in the text. If a CEO was pitching the company on a major pivot for the year ahead, the staff need to believe in this change. They need to believe in the words, to trust the new direction. That’s a real human connection and if the text is labelled as being written by AI, then people can rightly feel deceived.&lt;/p&gt;
&lt;h2&gt;So, finally&lt;/h2&gt;
&lt;p&gt;Reserve your energy for tasks that deserve your human-ness. Don’t let AI take over where human attributes are required. Use AI to automate the production of commodity or intermediate artefacts that don’t benefit from being done by you.&lt;/p&gt;
&lt;p&gt;Remember that opting to work on “hard mode” is a choice that needs to be made by deciding why you need to do it the hard way. Simply working harder to code your app by hand is not virtuous if your business then fails as a result.&lt;/p&gt;
&lt;p&gt;When you stick this philosophy, there’s nothing to fear—and much to gain—from accurate and prevalent AI-watermarking.&lt;/p&gt;
&lt;/div&gt;
&lt;/article&gt;
</ns0:encoded><pubDate>Wed, 19 Aug 2026 00:00:00 UTC</pubDate></item><item><title>You can just build it</title><link>https://jamie.ideasasylum.com/2026/08/15/you-can-just-build-it</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;article class="letter h-entry" morss_own_score="9.877750611246944" morss_score="12.877750611246944"&gt;

&lt;p&gt;Cork, Ireland · &lt;a href="https://jamie.ideasasylum.com/2026/08/15/you-can-just-build-it"&gt;&lt;time&gt;15 August 2026&lt;/time&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;You can just build it&lt;/h1&gt;

&lt;div class="prose e-content" morss_own_score="6.0" morss_score="87.5"&gt;&lt;p&gt;Not enough software developers have understood the seismic change in the industry. That complex problem you’ve struggled with? That app idea you had? That trivial little utility you’ve always wanted but would have taken too much effort to build? That stupid game you thought of just a second ago as a joke?&lt;/p&gt;
&lt;h2&gt;You can just build it!&lt;/h2&gt;
&lt;p&gt;You don’t have to start a company. It’s not the beginning of an open source project. You don’t need to recruit anyone else to help. You don’t need to find users. You don’t need to sell it. You don’t need to market it. You don’t even need to spend time planning it.&lt;/p&gt;
&lt;p&gt;If you need software this afternoon, you can just magic it into existence in the morning.&lt;/p&gt;
&lt;p&gt;Building software has gone from an age of stonemasons slowly and painstakingly chipping away at blocks of granite, which an army of men needed to extract from the ground and transport to their location. Now we’re overseeing an IKEA factory that’s putting out useful, well-designed furniture at a price you can afford—and won’t be too upset when it breaks.&lt;/p&gt;
&lt;p&gt;Eh? Ok, that’s a rubbish analogy but I just don’t think I can really express how infinitely malleable software has become, for such little effort.&lt;/p&gt;
&lt;p&gt;I feel like software is now a tangible thing I can mould in my hands, fire I can conjure up out of thin air, dreams I can make real. I’m trying hard not to say I’m Neo in the Matrix discovering he can bend reality. Software is a material I can manipulate at my will. Technically that was always true but it’s now on a timescale that radically changes how I can use it.&lt;/p&gt;
&lt;p&gt;“I bet the code is a mess!”&lt;/p&gt;
&lt;p&gt;“Unmaintainable slop!”&lt;/p&gt;
&lt;p&gt;“Probably riddled with security issues”&lt;/p&gt;
&lt;p&gt;“What about the joy of software development?!”&lt;/p&gt;
&lt;p&gt;“More trash software flooding the market”&lt;/p&gt;
&lt;h2&gt;You are fundamentally misunderstanding the game I’m playing.&lt;/h2&gt;
&lt;p morss_own_score="7.0" morss_score="11.0"&gt;When I can code my dream software in a morning, to use it in the afternoon, I don’t need to concern myself with the traditional trappings of software development. I don’t have to worry about multiple users, performance, other devices except the ones I own, finding a market, accessibility, scalability, teams, social login, security, branding, settings—the complexity just disappears and I can solve &lt;em&gt;my&lt;/em&gt; &lt;em&gt;own&lt;/em&gt; problems. I don’t have to worry about how the code is structured and I certainly don’t have to worry about what anyone else is going to think about the code.&lt;/p&gt;
&lt;p&gt;And it’s far from trash I’m producing. If anything, I’d say my little projects are some of the best software I’ve produced in my 30+ years of writing software—probably because so many of my projects would have been left unfinished.&lt;/p&gt;
&lt;h2&gt;What did I do today to warrant this overly-enthusiastic post?&lt;/h2&gt;
&lt;p&gt;We’ve just replaced our kitchen and are putting the finishing touches to it and I needed to record the dimensions of the places that will be tiled, and calculate the area to estimate our costs. I also needed to record the dimensions of the windows so we can get estimates for new blinds.&lt;/p&gt;
&lt;p&gt;I could sketch this out on a paper notepad like a sane person. I could add the dimensions to a note on my phone, maybe with some photos. But what I really wanted, and have wanted for many years, is a small app on my phone that lets me annotate photos much like Cleanshot lets me do for screenshots on my laptop.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So I just built it.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Starting at 10:50, I gave Fable a 4-paragraph spec of the main features and how I wanted to use it. I gave it the choice of using Rails 8, which I know well, or Cloudflare Workers/R2/D1 which I’m a lot less familiar with. Ultimately we decided on Cloudflare. I made it a PWA instead of a native app because that’s perfectly acceptable to me.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;11:20:&lt;/strong&gt; Claude started building the app&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;12:00:&lt;/strong&gt; I had a local version to play with.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I had to go out to do a few jobs in the afternoon but picked it up again in the evening.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;4:30:&lt;/strong&gt; I had Claude Design build some mockups of the UI based on the initial app version.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4:45:&lt;/strong&gt; Claude was implementing the new designs in the app. 5:20 Deployed a fully functional version of the app.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5:55:&lt;/strong&gt; Testing on my phone revealed a few bugs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6:10:&lt;/strong&gt; Some adjustments to the measurement units to make them consistent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6:30:&lt;/strong&gt; Added some subtle animations to the menus&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6:36:&lt;/strong&gt; Added image caching&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;6:44:&lt;/strong&gt; Added collections feature&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was rarely fully engaged in building this app. Most of the time I was actually working in the kitchen smoothing the walls and preparing the surfaces for painting. I interacted with Claude mostly on my phone via Orca’s mobile client.&lt;/p&gt;
&lt;p&gt;So, for the curious, this is what it looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jamie.ideasasylum.com/images/imatate.jpeg"&gt;&lt;/p&gt;
&lt;p&gt;Where’s the link? Where’s the code? Where can you try it?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You’re still missing the point!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I built this software for me, not you. I don’t need you to use it and I don’t need bug reports and feature requests. I don’t need to change to accommodate your needs. It’s perfect just the way it is.&lt;/p&gt;
&lt;p&gt;You can just build your own things now. Whatever it is, whatever you need to solve a problem you have; you can just build it.&lt;/p&gt;
&lt;/div&gt;
&lt;/article&gt;
</ns0:encoded><pubDate>Sat, 15 Aug 2026 00:00:00 UTC</pubDate></item><item><title>SaaS is dead; long live SaaS!</title><link>https://jamie.ideasasylum.com/2026/06/20/saas-is-dead</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="prose e-content" morss_own_score="6.0" morss_score="231.5"&gt;&lt;p&gt;There is little doubt in my mind that AI coding models have fundamentally changed the nature of software development in 2026. But is the SaaS-pocalypse real? I think it kinda is, for some businesses.&lt;/p&gt;
&lt;h2&gt;A history lesson from an elder developer&lt;/h2&gt;
&lt;p&gt;I think it’s worth reflecting on what the original premise for Software-as-a-Service actually was.&lt;/p&gt;
&lt;p&gt;Back in the late 90’s/early-2000’s software was extremely difficult and expensive to produce. Businesses were ordering software for their staff from Microsoft in giant boxes of CDs and manuals, or consultants would fly in to install their database system on the machines in the server room, or you’d have custom software solutions developed by software houses, specifically tailored to your business.&lt;/p&gt;
&lt;p&gt;In 1998, I was one of those consultants. On one memorable occasion I flew over from Ireland to London with a CD of custom software for calculating bond yield curves in my jacket pocket. I arrived at Barings Bank by 9am only to discover they had a terminal version of Windows on which the installer wouldn’t run. With nothing to do, and no means of modifying the installer, I left the bank and by 10am I started exploring London for the day before my flight home. To me, nothing demonstrates the difficulty, expense, and waste of software delivery during that period than an enjoyable-but-unproductive day at London Zoo.&lt;/p&gt;
&lt;p&gt;And then the web happened. Specifically, businesses started to embrace the idea that we could deliver software over the Internet, through a web browser. That meant you could develop the software in one location, and deliver it to another location, all without shipping CDs, selling software in retail shops, or flying expensive people around the world to (not) install it.&lt;/p&gt;
&lt;p&gt;What’s more, you could sell this software to many more businesses which broadened the market for software because suddenly everyone could access it. And, as a software business, you could also take on the cost and responsibility for hosting the software because you were the experts after all. This also broadened the market for software because it could be sold to businesses without any IT expertise or in-house server room.&lt;/p&gt;
&lt;p&gt;This also brought about a new pricing structure: instead of selling the physical artefacts of the software in the form or disks or CDs for an expensive one-off purchase, you could now license the software for a small monthly payment to anyone in the world.&lt;/p&gt;
&lt;p&gt;The fundamental bargain at the heart of the SaaS revolution was this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Software is very expensive to produce, difficult to deliver, and out of reach for all but the largest businesses. What if, we instead of spending years developing a software product for a small sophisticated market at a high-price, we delivered software to a global market for a low monthly price.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That, in a nutshell, is the SaaS business model which has dominated the software industry for a quarter of a century.&lt;/p&gt;
&lt;p&gt;The model had trade-offs on both sides. In exchange for the lower price—which wouldn’t cover a fraction of the development costs—the software would not be customised to each client. It was designed to address the needs of the masses and, if you needed something different, there was hopefully a competitor in the new global market that would accommodate your requirements. Or the customer would just adapt to the available software.&lt;/p&gt;
&lt;p&gt;From the developer’s side, continuous updates were the bargain for keeping customers paying their monthly or annual subscriptions. So the software continuously evolved and added new features; proving its value to existing customers and seeking out new markets.&lt;/p&gt;
&lt;p&gt;Those software businesses also had to take on all the liability of hosting the software and it’s data—for thousands or millions of customers—providing the servers, maintaining the software, applying security updates, and all manner of other regulatory work.&lt;/p&gt;
&lt;p&gt;I mention all this because the vast majority of people in the software industry today were not in the industry in 2000. They did not experience ordering a floppy disk of software from a classified ad in a computer magazine. Or licence codes on CD boxes. Or running a SparcStation server under the receptionists desk because that’s the only machine compatible with the business-critical software she used.&lt;/p&gt;
&lt;p&gt;In short, most developers were professionally born into the era of SaaS and have never considered an alternative model. They have not even conceived that software could, or should, be sold in another way.&lt;/p&gt;
&lt;p&gt;It’s my belief that AI fundamentally alters the bargain upon which the SaaS model is predicated.&lt;/p&gt;
&lt;p&gt;We still believe software is hard to develop. So we believe it must be delivered to a large market to justify the effort. So we believe we need venture capital to fund the initial production of it. And we need to charge a monthly subscription to make this palatable to customers. And then we need to constantly ship new features to justify that subscription.&lt;/p&gt;
&lt;p&gt;I think that sounds like the rantings of a madmen and just doesn’t make sense in a world where software becomes &lt;del&gt;trivial&lt;/del&gt; vastly cheaper to produce.&lt;/p&gt;
&lt;h2&gt;AI changes the SaaS equation&lt;/h2&gt;
&lt;p&gt;Software is no longer (as) expensive to produce.&lt;/p&gt;
&lt;p&gt;We don’t need an army of developers to build it (I’d argue we never did) and the gap between a software idea and a working implementation of that idea is basically zero. We are entering a new golden age of software development, which promises a Cambrian explosion of software—and yes, that’s equally fascinating, empowering, and absolutely terrifying.&lt;/p&gt;
&lt;p&gt;We recently bought an electric car and had solar panels installed on the house and, as the Irish summer slowly got going, I started to wonder whether I should charge the car from the grid today or wait until tomorrow to charge it from the sun. It’s a trivial question, not much more than a customised weather forecast specifically looking at solar energy, and I could have tried to search for a suitable solution. I could, but I didn’t.&lt;/p&gt;
&lt;p&gt;All this occurred to me as I was going to bed one night and instead of using the App Store’s awful search, I just opened Claude Code on my phone and dictated three paragraphs of requirements to it. Then I brushed my teeth. By the time I was getting into bed, Claude had delivered a mobile-optimised web page that used open weather data for my current location, and calculated which days would be the best days to charge the car.&lt;/p&gt;
&lt;p&gt;I did not look at the code. I did not source the data. I have no intention of opening the app for anyone else. The only user is me and the only requirements are mine. There’s nothing to maintain, nothing to iterate on or improve. It was 10mins from “I wonder if…” to “I now have the solution”.&lt;/p&gt;
&lt;p&gt;And this story has been repeated over and over in my personal and professional life in 2026.&lt;/p&gt;
&lt;p&gt;I’ve always wanted an analytics solution for tracking my game stats on Star Realms but parsing the log files would be a bit of a pain in the neck. Sure, it would be a fun intellectual puzzle but I never found the energy for that outside of work. Instead I dropped a collection of the log files into Claude and told it to write a parser. Then I iterated with Claude to build a Rails app around that so I can paste in new logs and it would generate charts from each game to help me understand if my strategies were working. No logins. No multi-tenant hosting. No figuring out how to monetise it.&lt;/p&gt;
&lt;p&gt;I’ve built a workout tracker for rehab exercise because I couldn’t find anything simple enough for my needs. I even slapped passkeys on it just because &lt;em&gt;I&lt;/em&gt; wanted to.&lt;/p&gt;
&lt;p&gt;At work—where we’re using AI but not in the 🙈 vibe-coding sense—we’ve seen a 65% increase in the number of PRs shipped to production. We’ve attempted large database migrations in a few days which we’d put off for years. I’ve been able to re-engage with the codebase on a more meaningful level because my AI-partner can fit around my schedule of commitments, never forgets what we were working on, and is now at the level of a senior- or even staff-developer.&lt;/p&gt;
&lt;p&gt;I’ve loathed the Rails server output for years as the requests, queries, and log lines scroll past with nothing to distinguish them. You’d click a link in the browser and then spend ages hunting through the console output to find the relevant query your were looking for. So I built a UI to view the server logs individually, broken down by requests. All in, it probably took me 30mins to solve a visceral problem I’d had for over a decade, and then for good measure I threw in a TUI.&lt;/p&gt;
&lt;p&gt;I’ve written an in-house AI bot to triage and investigate new issues (which I’ll expand on in a different post because it’s &lt;em&gt;so&lt;/em&gt; good). This bot is the stuff I’ve dreamt about for years, which none of our vendors has delivered on, and which I coded up in a single 4hr session one morning. I’ve rewritten it a few times now, and iterated considerably on its features and tools, but it’s now an extremely important tool at Podia. It costs ~$250/mo to run and I’ve invested a few days of effort into building it over a few months. It’s a staggeringly useful tool—one which was literally priceless a few years ago because it couldn’t exist—and it’s now barely a blip on my effort register.&lt;/p&gt;
&lt;p&gt;I don’t want to pretend that AI makes software development completely free or trivial for anyone but it’s crystal clear to me that the cost and effort required has fallen dramatically. Solutions which were previously ruled out as too hard, too complex, or too niche are now possible.&lt;/p&gt;
&lt;p&gt;Perhaps you’re not quite ready to accept AI tools, and perhaps you don’t believe in the productivity gains I’ve seen. That’s ok but, just as a mental experiment, consider what it means for the SaaS model &lt;em&gt;if&lt;/em&gt; my premise that software is now much cheaper to produce is correct. Just consider it as a theoretical possibility…&lt;/p&gt;
&lt;h2&gt;Why would someone buy your software?&lt;/h2&gt;
&lt;p&gt;This is really where the SaaS-pocalypse concerns are coming from. In a world where software is cheap to produce, why would someone buy yours instead of building their own?&lt;/p&gt;
&lt;p&gt;And there’s definitely a lot of truth in that.&lt;/p&gt;
&lt;p&gt;In previous years, there was an opportunity for indie developers and small teams to spend a few months developing a web or mobile app and then sell that to customers. It might not have been a rocketship opportunity for VCs to fight over but it was definitely a viable means for solo developers to make a great living.&lt;/p&gt;
&lt;p&gt;As an aside: If you can replicate the software that a $100m company sells, you have &lt;em&gt;not&lt;/em&gt; created $100m of value in a weekend. You have, at best, destroyed $100m of value but mostly likely you haven’t understood the value of that business. That software you built is worth exactly zero to anyone else but you.&lt;/p&gt;
&lt;p&gt;That era of building a viable SaaS business in a few months is gone. I mean, it technically still exists today but only in the arbitrage sense that the rest of the world hasn’t yet caught on to how quickly and easily software can be built. It’ll be gone soon, I promise.&lt;/p&gt;
&lt;p&gt;If you could previously develop a new app in a few months, I can now build that by the end of the week—if not the end of the day. That’s especially because I don’t need to build any of the trappings of a multi-tenant app destined for the mass market. I can choose HTTP basic auth if it suits me. Or none at all. I might not worry about backups. I can host it alongside other internal apps with barely a glancing-thought towards scalability. I don’t need branding. Or marketing. Or billing. I can reuse internal design systems or let the AI run with whatever comes to its mind first.&lt;/p&gt;
&lt;p&gt;The sophistication of the software I’ll produce this way is much lower than what an indie dev might have written 2 years ago. It’s not the same product—mine isn’t even a product—but it’ll solve my problem equally well. I don’t have to build the same amount of software to solve my problem that you do to deliver a solution to everyone’s problems.&lt;/p&gt;
&lt;p&gt;After all, why would I rent your software for a monthly fee, which probably doesn’t do exactly what I want, in a way that I want it done, and inevitably does more than I actually need? Why would I adapt my processes to fit your software, when I can build my software to fit my processes? Why pay for a platform and only use 20% of its features? Why accept the constant changes and learning required because new features, or redesigns, are forced upon me? Why accept an infinitely flexible monster (go Jira), with all the inevitable trade-offs for usability and complexity, when I could have software that fits my team like a glove?&lt;/p&gt;
&lt;p&gt;Why should the local sign makers have to buy the same project management solution as a software company? Why should the small business selling electric gates use the same stock control system as a major retailer?&lt;/p&gt;
&lt;p&gt;I use those two examples because they are actual examples of conversations I had with local businesses about 15 years ago. At the time, both businesses had these problems and couldn’t find SaaS solutions to their business problems. They actually needed a custom software solution but couldn’t afford it. Perhaps they would have paid $5-10k for the solution but not the $100k+ it would have actually cost to build one.&lt;/p&gt;
&lt;p&gt;Today, I do think that equation has changed. I think if I talked to those businesses today we could engage in a successful project to build a custom solution for them—at a price they could afford, in weeks, not years.&lt;/p&gt;
&lt;p&gt;So it’s all gone, right? It’s all doom-and-gloom now in a post-AI world. Our jobs, businesses, and livelihoods are all inevitably going to fall to a single Anthropic subscription? The software industry is going to crash and burn?&lt;/p&gt;
&lt;p&gt;No, I don’t think so. Not all of it. Software itself has lost a lot of its value but not all software &lt;em&gt;businesses&lt;/em&gt; have.&lt;/p&gt;
&lt;h2&gt;What remains valuable&lt;/h2&gt;
&lt;p&gt;For the past 25 years, SaaS has been all about the &lt;em&gt;Software&lt;/em&gt;. The &lt;em&gt;software&lt;/em&gt; was hard to build, so the &lt;em&gt;software&lt;/em&gt; was valuable to sell, so the &lt;em&gt;software&lt;/em&gt; was the moat against competitors.&lt;/p&gt;
&lt;p&gt;SaaS of the next 25 years will be all about the &lt;em&gt;Service&lt;/em&gt;. It’s not about delivering &lt;em&gt;software&lt;/em&gt; as a service, it’s about figuring out what &lt;em&gt;service&lt;/em&gt; you can deliver through software. It’ll be how software enables you to deliver &lt;em&gt;something else&lt;/em&gt;: relationships, access, data, trust, expertise, or community.&lt;/p&gt;
&lt;p&gt;Given two competing software solutions, the winner will not be based on the feature set. These days you could take a competitors feature announcement and a few help docs, and ship that feature in your product in days or weeks. Hell, if you were so AI-pilled you’d have an agent monitoring competitor announcements and automatically implementing them in your own app (don’t do that; it’s dumb because…). Features aren’t a defence.&lt;/p&gt;
&lt;p&gt;The hedonic treadmill of constant feature development, and a constant pressure to broaden the app, just doesn’t have much value any more. More software is not solving more of an &lt;em&gt;individual&lt;/em&gt; user’s problems, it most likely just helping the app appeal to a broader market. And that’s a goal which serves the business, not any one customer.&lt;/p&gt;
&lt;p&gt;Since everyone needs a slightly different set of features, that inevitably broad set of features in SaaS apps comes at a cost: why is your customer paying $200/mo for an app but only using 20% of the features? At some point that’s going to look like bad value to them but, in a pre-AI world, they still couldn’t justify rebuilding it. In a post-AI world, the customer doesn’t need to replace your entire app, they only need to replace the 20% of the features they &lt;em&gt;actually&lt;/em&gt; use and that might only take a few days of effort.&lt;/p&gt;
&lt;p&gt;More software has not saved you: it’s just encouraged your customer to seek a streamlined alternative that fits their needs, and that alternative is now easier than ever to build yourself.&lt;/p&gt;
&lt;p&gt;What matters much more—and always did—is what features you &lt;em&gt;choose&lt;/em&gt; to ship, how you engage with your customers, and how you serve them. It’s all the non-software things which make a difference now.&lt;/p&gt;
&lt;p&gt;Here’s what I would bet on…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything that’s a true system of record:&lt;/strong&gt; If a business needs a single canonical place for their data, and you are that trusted party, you will remain valuable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything that provides access to a data source:&lt;/strong&gt; When software is cheap, owning the data is &lt;em&gt;more&lt;/em&gt; valuable. Think access to datasets, APIs, payments etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything that connects people and communities:&lt;/strong&gt; Relationships aren’t replaced by cheap software and, if anything, they become even more important.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything with a high regulatory burden:&lt;/strong&gt; payments, healthcare, personal data etc. The software might be cheap but the compliance isn’t and businesses will still pay to have those problems solved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything with a high complexity, low-risk tolerance, or niche domain knowledge:&lt;/strong&gt; Again, businesses aren’t really paying for the software any more, they are paying for the trust and expertise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything coupled to hardware:&lt;/strong&gt; software is cheap but hardware remains expensive so I’d expect this category to remain valuable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consultants + AI:&lt;/strong&gt; some think AI will kill consultancy but I think it’ll super-charge them: AI thrives in the hands of experts and withers in the hands of idiots. They are going to be transforming businesses, bringing vastly more software into the world than SaaS ever did. Consultingware 2.0?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Internal product teams:&lt;/strong&gt; I think there’s a huge opportunity for large Enterprises to develop internal tools for a fraction of the cost of the contracts they are currently paying. Small 4-person teams using AI can replace multi-million $ contracts and allow the business to operate the way it wants, free of annual contracts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything that agents use:&lt;/strong&gt; UI components, libraries, APIs, payments, harnesses, models, etc. It doesn’t matter half as much what UI you put on your app, as what UI your customers can build on your API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anything that gives trust in AI-generated code:&lt;/strong&gt; tools for hosting, debugging, reviewing, observability, monitoring, auditing, security, etc.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consumer apps:&lt;/strong&gt; whilst businesses will find software more within their reach to develop, I’m not convinced the average person will be coding their own accounting solution, email clients, games, fitness trackers, or reminders apps. That said, the consumer is usually high-investment and low-margin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Software without an agenda:&lt;/strong&gt; I could joke than many software startups barely displayed a money-making intention in the past but now we can genuinely build software with no plans for commercialisation—without even a plan to share it as open-source. Just build it to solve your own problems without concerning yourself with anyone else.&lt;/p&gt;
&lt;p&gt;It won’t be a dramatic “SaaS-pocalyse” but I do think it will be a restructuring of the software market and SaaS won’t be the default business model.&lt;/p&gt;
&lt;p&gt;Consumers will still mostly buy the software they current do, typically from app stores &amp;amp; marketplaces, small subscriptions, or via ad-supported models. Small/medium businesses will still buy some software but increasingly will build internally or subcontract out for custom solutions. I would expect large enterprises, who already have internal resources to develop and maintain software, will be the biggest beneficiaries with a lot more internal building &amp;amp; subcontracting, and a lot less buying.&lt;/p&gt;
&lt;/div&gt;
</ns0:encoded><pubDate>Sat, 20 Jun 2026 00:00:00 UTC</pubDate></item><item><title>Swimming review: 2025</title><link>https://jamie.ideasasylum.com/2025/12/31/swimming-review-2025</link><ns0:encoded xmlns:ns0="http://purl.org/rss/1.0/modules/content/">&lt;div class="prose e-content" morss_own_score="5.8194821208384715" morss_score="300.17707402739927"&gt;&lt;p&gt;This post probably is not for you. It’s the indulgent reflections of a middling mid-life swimmer who really needs to remember to be proud of himself and, if he doesn’t write all this down, he’s likely to forget he did any of it.&lt;/p&gt;
&lt;h2&gt;Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;First swim races/events in 10 years
    &lt;ul&gt;
&lt;li&gt;Gaelforce Trilogy (3.5km, 3.9km, 3.9km)&lt;/li&gt;
&lt;li&gt;Garnish Island (5km)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Personal bests set this year:
    &lt;ul&gt;
&lt;li&gt;800m&lt;/li&gt;
&lt;li&gt;1000m&lt;/li&gt;
&lt;li&gt;1500m&lt;/li&gt;
&lt;li&gt;Longest open water swim (5.6km)&lt;/li&gt;
&lt;li&gt;Longest swim (8km)&lt;/li&gt;
&lt;li&gt;Highest annual total (316,517m)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Shoulder injury: recovered&lt;/li&gt;
&lt;li&gt;Left ankle: recovered&lt;/li&gt;
&lt;li&gt;Right ankle: new injury!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Preamble&lt;/h2&gt;
&lt;p&gt;The start of my 2025 swimming really started in late-2024 and with an unlikely joint.&lt;/p&gt;
&lt;p&gt;I’d been having ankle problems for about 18 months and working with a physio and rehab exercises in the gym to fix it. I finally got a specialist consultant appointment, and another MRI, and was diagosed with osteoarthritis in the ankle joint. That wasn’t a surprise since it has two screws in it from a car accident. Before Christmas I had an injection of hyaluronic acid into the ankle so I had to rest for a week, and only light swimming.&lt;/p&gt;
&lt;p&gt;But none of that mattered because I’d also buggered up my right shoulder.&lt;/p&gt;
&lt;p&gt;I started 2025 sitting on the couch, unable to swim, and figuring out how best to protect my ankle. Logically, I thought, this was the best time to sign up for The Gaelforce Trilogy—three swims in river, lake, and sea between May and September. The only swim events I’ve ever done &lt;a href="https://jamie.ideasasylum.com/2015/05/scared-proud/"&gt;were 10 years ago&lt;/a&gt; and that was a 1km “paddle in the park” and the 2km Lee river swim. With a few clicks I’d just entered a 3.4km, 3.9km, and 3.9km race and I wasn’t sure if or when I’d be able to swim again.&lt;/p&gt;
&lt;h2&gt;January: Meh&lt;/h2&gt;
&lt;p&gt;It was a miserable month with almost no swimming. In it’s place was lots of physio on the shoulder, particularly dry-needling on the infraspinatus and lats. Infraspinatus is a nasty muscle to have dry-needled as the pain radiates over the shoulder and down the arm. Did not enjoy.&lt;/p&gt;
&lt;p&gt;I started doing some cardio sessions on the bike at the gym just to replace the swimming and keep me active. Also meh.&lt;/p&gt;
&lt;h2&gt;February: Slightly-less-but-still Meh&lt;/h2&gt;
&lt;p&gt;I got back to some light swimming, mostly drills like sculling and fists to build up the rotator cuff without tightening everything up again. Still doing lots of rehab work in the gym and at home.&lt;/p&gt;
&lt;p&gt;The number of exercise bands in the house multiplied.&lt;/p&gt;
&lt;h2&gt;March: I’m (slowly) back&lt;/h2&gt;
&lt;p&gt;I was finally back swimming around 2-2.5km sessions, without pushing it, and continuing all the physio and rehab work in the gym.&lt;/p&gt;
&lt;p&gt;I did a CSS test to determine my threshold pace which came out as 1:42/100m&lt;/p&gt;
&lt;h2&gt;April: Training hard&lt;/h2&gt;
&lt;p&gt;Things are starting to get serious with The Great River Swim only 6 weeks away. I needed to get out of the pool and into the open water but, even with some unseasonably warm weather, the sea was still freezing cold. I got in two short (&amp;lt;1km) swims during the month and that’s about 8 weeks earlier than I’d ever been in the sea. Having the race was a huge factor forcing me into the water much earlier, and much less comfortable, than ever before.&lt;/p&gt;
&lt;p&gt;I was swimming between 3-4 times per week, 2 sessions in the gym, and rehab exercises each day it felt like I was seriously training for the first time in my life. There was rarely an “off” day. Apparently, and this &lt;em&gt;still&lt;/em&gt; sounds ridiculous in my head, I need to think of myself as an “athlete” and prioritise fueling, training, and recovery accordingly.&lt;/p&gt;
&lt;p&gt;Got some new pool goggles: Arena Cobra Ultra Swipe. They really live up to their marketing hype of being anti-fog, which is a first for any goggle I’ve owned. Just wet the googles, swipe the inside with a finger, and hey-presto: no fog. That said, I tended to favour the Magic5 goggles for most swims as they are, by far, the most comfortable pairs I own.&lt;/p&gt;
&lt;h2&gt;May: The Great River Swim&lt;/h2&gt;
&lt;p&gt;The unseasonably warm weather had continued and we were treated to the best of Irish weather: blue skies, sunshine, and not too warm. We took the shuttle bus up to the starting point and the guy next to me asked how long I thought it would take me. I thought about 1:10 depending on the current. He replied, “oh, wow. You should have been in Wave 1 with the elite swimmers”. Um… what?&lt;/p&gt;
&lt;p&gt;The river was lower than usual and as we entered the water I looked around and started to wonder if maybe I was going to be faster than most of the wave. I moved up towards the front of the pack at the start line but there was still a fair number of people in front of me when the race started. I started swimming, filled with nervous adrenaline, but unfortunately some of the people in front of me hesitated or were waiting for more space. I kinda swam over one person and my elbow hit some part of another. Sorry. That was my first experience of the chaos of a swim start.&lt;/p&gt;
&lt;p&gt;I’d not swam in a river in a long time and I’d forgotten how easy it is: the current suited my long smooth stroke, the water was calm, and there was basically no navigation required. It was like swimming on rails, just following the meandering river from one corner to the next surrounded by reeds on either side.&lt;/p&gt;
&lt;p&gt;After a few minutes I’d cleared most of the other swimmers but there was maybe 3 ahead of me. One by one I started passing them out. And then I started passing out people from Wave 1 which had started 10 minutes before us. And some swimmers from, I think, the 12km event that had started hours earlier—they were looking pretty exhausted by that point.&lt;/p&gt;
&lt;p&gt;After maybe 1km, I noticed someone drafting on my feet but they weren’t touching my toes so, whatever, enjoy the free ride! Coming up to the bridge, which was the only real navigation required, I spotted the family on the bridge and gave them a quick wave then put my head down and lost the person on my toes. I managed a bit of a sprint for the finish and then struggled to actually get out!&lt;/p&gt;
&lt;p&gt;The random song for the day, by virtue of having these few lines stuck in my head for the entire swim:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gotta give a little something&lt;/p&gt;
&lt;p&gt;
Gotta take a little pain&lt;/p&gt;&lt;p&gt;
Gotta dig a little deeper&lt;/p&gt;&lt;p&gt;
We gotta keep the faith&lt;/p&gt;&lt;p&gt;
Hell or high water&lt;/p&gt;&lt;p&gt;
We didn’t come to lose&lt;/p&gt;&lt;p&gt;
—Eclipse, &lt;em&gt;We didn’t come to lose&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I finished the 3.5km course in 0:58:43: first in Wave 2, 10th place overall, and 2nd in my age group. A very good result for my first race! Though, upon reflection, most of the better swimmers were probably doing the 5.8km or 12km races. Something for next year, maybe.&lt;/p&gt;
&lt;p&gt;I was tired afterwards and my lats were pretty sore but otherwise I felt really good about it. There was a nice little festival atmosphere at the end and I enjoyed sitting on the grass afterwards having a picnic of Coke and fizzy jellies with the family. My daughter repeatedly told me how proud she was of me so that was good.&lt;/p&gt;
&lt;p&gt;After the swim I flew out for the company retreat in the US… and came back sick. Again. 😖&lt;/p&gt;
&lt;h2&gt;June: Mallorca&lt;/h2&gt;
&lt;p&gt;June kicked off with the SwimSmooth course in Mallorca. There’s really nothing more I need to add to &lt;a href="https://jamie.ideasasylum.com/2024/06/08/swim-smooth-mallorca-2024"&gt;my blog post about the experience in 2024&lt;/a&gt;. It was a different group of people but the experience was just a good, the 50m pool at the BEST Centre was as glorious as ever, the hotel was nicer, and the coaching just as valuable.&lt;/p&gt;
&lt;p&gt;I set a new CSS of 1:35/100m showing that the training I’d done for the river swim had paid off, but I then spent the week trying—and failing—to live up to it! 🥵&lt;/p&gt;
&lt;p&gt;I think I was still recovering from being sick but I completely died during one memorable pool session. I’d never experienced anything like that before: I was at the end of the pool, holding on, and I knew someone was talking to me but I couldn’t actually hear them or process the words. I ended that session early but it lives on in the SwimSmooth Guru app as &lt;a href="https://www.swimsmooth.guru/sessions/direct/8o3faZxPyjjNwZpzDAEy/4200"&gt;“Jamie’s Downfall”&lt;/a&gt;. I also remember leaving everything in the pool after some sprints and being destroyed afterwards. My shoulder injury also flaired up on another session but was mostly ok for the rest of the week.&lt;/p&gt;
&lt;p&gt;I left inspired after a conversation with Paul and I entered the only 5km swim left in the Irish 2025 swim calendar: Garnish Island. It was a swim I’d wanted to do for a while but it sells out quickly and I’d never had the confidence to enter the 5km distance. I had until mid-August to prepare.&lt;/p&gt;
&lt;p&gt;At the end of June I was back in Brighton for the Brighton Ruby conference and, of course, took advantage of the wonderful 50m Sea Lanes pool on the beachfront. I was a bit apprehensive about the Garnish Island swim so I decided to prove to myself that I could swim 5km by doing 10x 500m. Then I did it again the next day to prove to myself that I could do it when I was fatigued.&lt;/p&gt;
&lt;h2&gt;July: The Great Lake Swim&lt;/h2&gt;
&lt;p&gt;It was one of the hottest days of the year at Lough Derg for the Great Lake Swim, with the air temp around 30°C and the water 22°C.&lt;/p&gt;
&lt;p&gt;I swam the 3.9km distance in 1:06:46, placing 14th overall and 7th in my age group. I was pretty happy with that as it was at the faster end of my prediction. I also swam non-stop and, again, enjoyed passing lots of Wave 1 swimmers. After the first few hundred meters, I told myself that I wasn’t going to let anyone pass me—and I didn’t.&lt;/p&gt;
&lt;p&gt;I’m not really competitive but I do enjoy setting  challenges for myself even if that means using other people to do it. Another mental game I played was thinking of passing other swimmers as “taking caps” (though, of course, I’m not actually assaulting them). Anything to pass the time and make it interesting.&lt;/p&gt;
&lt;p&gt;There isn’t much room in my brain for thinking during a race. I’m just constantly iterating between sighting for the next buoy, looking out for other swimmers/kayakers etc, enjoying the view of the weeds and fish, repeat a line from a song, counting my strokes (for no reason), reminding myself to stay calm, to relax, and to keep my form.&lt;/p&gt;
&lt;p&gt;After around 2km my thumbs and index, middle, and ring fingers felt like they were wrapped in elastoplast: they felt big, slight pins &amp;amp; needles, and I couldn’t feel them well (but could still move them). They weren’t white. I could keep swimming but I had less feel for the water. It went away after a few minutes on shore. The same thing had started creeping in during the river swim and the 5km in the pool but it was more obvious now.&lt;/p&gt;
&lt;p&gt;I felt a bit flat afterwards. I didn’t have the high of the first swim and I didn’t have anything to really compare myself to. Was this a good time? I didn’t really have any external reference for was “good” looked like.&lt;/p&gt;
&lt;h2&gt;August: Garnish Island&lt;/h2&gt;
&lt;p&gt;August was about preparing for the Garnish Island swim and I kicked off my birthday with my longest open water swim: 5,600m around Myrtleville. I rarely plan things out and I never tell anyone what I’m attempting but I thought a really good long swim in the sea what give me some more confidence going into the Garnish Island swim.&lt;/p&gt;
&lt;p&gt;The birthday swim was also an opportunity to try something I’d never done before: feeding. Packed into a new donut tow float I had a Rice Krispy Square, Precision Fuel energy gels, and some ‘Zero’ electrolytes. I made a point of stopping after the second and third laps to feed even if I felt like I didn’t need it.&lt;/p&gt;
&lt;p&gt;My birthday also brought a new watch as a present! Hilary bought me a Garmin Forerunner 570 to replace my beloved-but-aging Garmin Swim 2. I was apprehensive because of the “Fore&lt;em&gt;runner&lt;/em&gt;” name but all the same swim functions were there and the buttons did the same thing so my muscle memory still worked. I also got lots more data like HRV, training readiness, training effect, better sleep data, ability to track strength workouts, water temperature, recovery time… and a lot more I don’t pay attention to. I highly recommend this watch for swimmers.&lt;/p&gt;
&lt;p&gt;And, most interestingly, I was finally able to install the SwimSmooth app on the watch to analyse my stroke. Sure enough, my top priority is to fix my straight-arm pull, particularly with the right arm.&lt;/p&gt;
&lt;p&gt;Glengarriff was packed on the day of the Garnish Island swim, as it is most weekends during the summer but now there were a few hundred swimmers &amp;amp; spectators there too. I left the family in town to get food and I took the shuttle bus to the starting point on my own. That felt kinda weird as they’d always been there to see me off in the previous races.&lt;/p&gt;
&lt;p&gt;The song on today’s mental jukebox in a 10 sec loop was &lt;a href="https://youtu.be/I3Fn4s3SsHc?si=jmSDth5jnhaujKj_"&gt;Halestorm’s &lt;em&gt;Everest&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It’s the shame, it’s the pain, something I can’t explain&lt;/p&gt;
&lt;p&gt;
It’s a noise, it’s a voice, and it screams in my brain&lt;/p&gt;&lt;p&gt;
It’s a curse, and it hurts, but I just keep going&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It’s a fairly simple course: out from the slip to the island, two counter-clockwise loops, and a straight swim back. I stuck to my plan of executing one lap of the island (~2.5km) and then stopping for a feed. I think I only stopped for about a minute and just had a quick drink but it was a revelation! Feeding (or, as I told the kayaker, my picnic) made me feel like I could swim… forever?! It was also a fun and varied swim: calm heading out, then a bit of chop, then we were practically surfing with the waves behind us, and finally back to a serene bit of water.&lt;/p&gt;
&lt;p&gt;My goggles started fogging up after about 100m so I had to flip onto my back, take them off, spit into them, rinse them, and pop them back on.&lt;/p&gt;
&lt;p&gt;Garnish was an event (not a race) so there was no official timings or positions but my watch timed it at 1:30.31 for the 5km. For what it’s worth, Strava had me at 4th for those that recorded it, and 7th best time for that route. I don’t put a lot of stock in that but I felt &lt;em&gt;really&lt;/em&gt; good.&lt;/p&gt;
&lt;p&gt;The 2km Myrtleville Swim, postponed from June, was cancelled again. I reckon the stars will never align for me to complete that one.&lt;/p&gt;
&lt;h2&gt;September: The Great Fjord Swim&lt;/h2&gt;
&lt;p&gt;After Garnish Island I stopped really worrying about the Killary Fjord swim. I’d just swum 5km and I’d done 3.9km back in July so this should be a walk in the park. Right?&lt;/p&gt;
&lt;p&gt;My preparation wasn’t great with a few weeks of low mood, low energy, and conference travel getting in the way of some long training swims. Mostly I managed 3km sessions.&lt;/p&gt;
&lt;p&gt;A week out from the swim, the weather forecast looked pretty wet &amp;amp; windy. With a westerly windy, it would mean the wind coming from behind us on the first leg, and into our faces on the return journey.&lt;/p&gt;
&lt;p&gt;My plan was just to start reasonably close to the front of the wave, use the first kilometre to get settled, then nice calm swimming with long strokes into the turn. Then I knew we’d be into the wind and the chop, and it would be a higher tempo fight on the way home.&lt;/p&gt;
&lt;p&gt;The forecast materialised as predicted with 25kph winds, gusting 45kph, funnelling straight down the fjord but, apart from a rain shower as we walked down to the start line, it stayed dry for the swim. We even got a lovely rainbow and some blinding sunshine on the swim out. Thankfully the organisers had changed the route from a looping rectangular course to a straight out-and-back, sticking close to the shore where it wasn’t quite as lumpy.&lt;/p&gt;
&lt;p&gt;Today’s song was &lt;a href="https://www.youtube.com/watch?v=GWTNGMAH500"&gt;The Pretty Reckless’ &lt;em&gt;For I am Death&lt;/em&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For I am death and I can feel&lt;/p&gt;
&lt;p&gt;
I got my hands upon the wheel&lt;/p&gt;&lt;p&gt;
I am not lost&lt;/p&gt;&lt;p&gt;
For I have found the only one&lt;/p&gt;&lt;p&gt;
Who put me down&lt;/p&gt;&lt;p&gt;
For I am death and I won’t break&lt;/p&gt;&lt;p&gt;
I got a life&lt;/p&gt;&lt;p&gt;
I’ve got to take&lt;/p&gt;&lt;p&gt;
When will it end, this sufferin’ of late?&lt;/p&gt;&lt;p&gt;
It was nice to know you&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You might have wondered what thoughts go through a swimmer’s head as it’s being pounded by waves for an hour and a half, but you probably didn’t expect this man in his 40’s, wrapped in neoprene, to be saying “for I am death… for I am death… for I am death” on repeat.&lt;/p&gt;
&lt;p&gt;Things mostly went as I thought they would: I started well and got ahead of the pack. When my goggles started leaking after about 100m, I rolled onto my back to fix them and there was a few people ahead and no one on my feet. Yes, the same thing that happened in Garnish Island. I think I need a better system of getting the goggles race-ready.&lt;/p&gt;
&lt;p&gt;I continued for what felt like foreverrrrrr. The only notable events on the outbound leg was nearly missing a buoy because it was positioned closer to shore and I was sighting on the next one, and my tow float being constantly blown forward and banging into my elbows. The wind might have been with us but it was a pretty frustrating experience because on every single recovery the tow float would be blown into my arm.&lt;/p&gt;
&lt;p&gt;I  decided that I’d take a quick break at the second turning buoy. My fingers were already numb and I knew it was going to be a slog on the way home. I took 40secs to have a pee (don’t judge!) and stretch out the arms then I headed into &lt;em&gt;it&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;“It” was choppy waves that constantly slammed into my head, dug into my arm, or left me catching thin air. I channelled all the videos of Darragh swimming around Ireland or Ross battling through immense storms around Iceland. Conditions weren’t that bad, it wasn’t as far, and I wasn’t that good, but the visualisation helped a lot.&lt;/p&gt;
&lt;p&gt;I staggered out, leaning on a volunteer for support after 1:29:18; 31st overall and 9th in my age group. My watch measured the course at 4.5km though and this seemed to be corroborated by a few others. The time and placings might not look as god but I think it was the most competitive race I’d done and the conditions were easily the worst I’d swam through.&lt;/p&gt;
&lt;h2&gt;October-December&lt;/h2&gt;
&lt;p&gt;Bleugh. I wasn’t feeling in love with swimming for October and November and, even though I was on sabbatical for a month, I swam less than usual.&lt;/p&gt;
&lt;p&gt;Then I hurt my achilles. My &lt;em&gt;other ankle&lt;/em&gt;. I started this year with a busted left ankle and finished it with a busted right ankle. Thank god I’m a swimmer and not a runner.&lt;/p&gt;
&lt;p&gt;I started the SwimSmooth 10 week CSS challenge for something to do. My CSS test came out a little slower (1:36/100m) than in Mallorca and I didn’t decrease the CSS pace each week as I was supposed to.&lt;/p&gt;
&lt;p&gt;I really enjoyed one of the sessions each week which had 800m of drills, 400m of 50m fast/slow/tempos, 8x100m at CSS pace, then some variation of 1000m at CSS (400/300/200/100, or 2x 500m etc). I became a lot more comfortable swimming at my threshold pace and by Christmas I was struggling to swim slow enough! Instead of 1:35/100 I’d be hitting 1:30, 1:32, 1:32, 1:32 (no, I was really trying to go slow on that one), 1:32 (wtf!), 1:34… though I still struggled with the pace on longer intervals and I definitely still struggled with the rest times.&lt;/p&gt;
&lt;p&gt;With the short fast/slows in that set, I started wondering how hard a 1:00/100m sprint is. It’s fucking &lt;em&gt;hard&lt;/em&gt; and I’m waaaaaaayyyyy off (about 1:20). Still, it’s kind of an interesting medium-term goal. A 20m pool isn’t ideal because you hardly get going before you’re turning again, and I don’t usually tumble turn (I can—I just don’t like it and I’m not fast at it). Oh, and I can’t dive in this pool. Anyway, I played around with sprinting a bit for fun and managed to hit a 1:00 pace for a single length (12 secs for the 20m) and 1:07 for two. It’s a milestone. Maybe I’ll do something with it next year.&lt;/p&gt;
&lt;p&gt;The pool was closing early on the 23rd December and I got it into my head to attempt a long swim which might help me decide on some goals for next year. Like, a &lt;em&gt;really&lt;/em&gt; long swim. I chose 8km as a &lt;em&gt;potentially&lt;/em&gt; achievable distance though it would be my longest swim ever. 2x 400m, 12x 600m, and 2h40m later I got it done. Interestingly, I swam it at an average 1:42/100m pace which was the threshold pace I started off with in March and I’d have struggled to maintain for much more than 1000m back then. I spent the rest of the day on the couch!&lt;/p&gt;
&lt;p&gt;Whilst writing this I also discovered that I was just 2km shy of my highest annual total so, yeah, you bet I got in the pool and claimed that PB too.&lt;/p&gt;
&lt;h2&gt;Inspiring swims of the year&lt;/h2&gt;
&lt;p&gt;Instagram is my drug of choice for swim content and there was a &lt;em&gt;ton&lt;/em&gt; of inspiring swims to enjoy this year.&lt;/p&gt;
&lt;p&gt;It was incredible to watch &lt;a href="https://www.swimeire.ie/"&gt;Darragh Morgan’s swim around Ireland&lt;/a&gt; and &lt;a href="https://swimswam.com/ross-edgley-swims-1000-miles-around-iceland/"&gt;Ross Edgley’s swim around Iceland&lt;/a&gt;. Absolutely insane overall distances, insane daily distances, insane sea conditions. Insane. Loved them.&lt;/p&gt;
&lt;p&gt;Brian Foster did &lt;a href="https://www.southernstar.ie/news/kinsale-teen-brian-sets-trio-of-world-records-4337467"&gt;a triple Fastnet Swim&lt;/a&gt;, breaking the record for the one-way swim, and then breaking the record for the two-way swim, and being the first to complete the triple. Also insane.&lt;/p&gt;
&lt;p&gt;We also had the Olympics! Watching Ireland’s Daniel Wiffen win the 800m was a source of national pride. Bobby Finke’s amazing 1500m final was stunning from the start. “Can he hold on? Can he? He fucking can!”—I loved it even as he was beating Wiffen. And then there’s Katie Ledecky: I can’t get enough of watching her dominate the 1500m.&lt;/p&gt;
&lt;p&gt;I saw &lt;a href="https://www.instagram.com/catherine.breed/?hl=en"&gt;Catherine Breed’s&lt;/a&gt; Faralon Islands swim, &lt;a href="https://www.instagram.com/sarahswims04/"&gt;Sarah Thomas&lt;/a&gt; just repping out daily 10km swims for practice, &lt;a href="https://www.youtube.com/watch?v=R1z8aWxuRcQ"&gt;Hector Pardoe swimming the three longest lakes in the UK in under 24hrs&lt;/a&gt;, and &lt;a href="https://www.instagram.com/amy.swims/?hl=en"&gt;Amy’s&lt;/a&gt; double Windamere.&lt;/p&gt;
&lt;p&gt;David from the SwimSmooth Mallorca camp did a &lt;em&gt;double&lt;/em&gt; crossing of Lake Geneva. Paul was an inspiration again, winning the Oceanman 10km in Dubai and &lt;a href="https://blog.swimsmooth.com/p/getting-better-with-age"&gt;showing what your 40’s can look like&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Next?&lt;/h2&gt;
&lt;p&gt;I think before I got into the water in Lanesborough I realised I might have under-estimated myself; by the time I got out I knew I had. I was a bit apprehensive about the 5km swim in Garnish but I quickly proved to myself I could do it. And the 3.9km swim at Killary proved I swim in tough conditions—though it was a real slog.&lt;/p&gt;
&lt;p&gt;As soon as the Gaelforce Trilogy was over, I started looking ahead to swims I could complete in 2026. I’m inspired by these massive swims I see other people doing but I’m also resolutely uninterested in cold water—I just don’t enjoy it or find it rewarding, or invigorating, or feel the need to prove myself according to “channel rules”. I have no intention of swimming the English Channel.&lt;/p&gt;
&lt;p&gt;I’d like to do a 10km swim (a marathon distance for the runners still reading this indulgant rubbish). Or, more precisely, I think I’m capable of swimming 10km and I’d like to have done it. The actual &lt;em&gt;doing&lt;/em&gt; of it isn’t likely to be pleasant.&lt;/p&gt;
&lt;p&gt;As of New Year’s Eve, I’m thinking of redo-ing the Gaelforce Trilogy but this time as 12km for the river swim, 3.9km for the lake (still the longest at that event), and the new 8km distance for the fjord. I think the river is doable though remembering the look of those 12km swimmers I passed adds a bit of reality to my optimism. The fjord makes me nervous if only because it’s 8km, straight West into the prevailing wind, which might be howling like this year.&lt;/p&gt;
&lt;p&gt;I’m not sure I want to travel for swim races. The UK is convenient, and has a lot of events, but the water conditions aren’t good and there’s a lot more expense and logistics. I’d also like to do an Ultraswim (33.3km over 4 days) but not sure I make the dates work or convince myself I have the endurance for it. Very tempting though.&lt;/p&gt;
&lt;h2&gt;Random Reflections&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Wave 2 is quite nice.&lt;/strong&gt; I enjoyed the less aggressive start line energy, relished the game of catching Wave 1 swimmers, and it was definitely easier having a constant stream of swimmers with their colourful tow floats to guide the way. That said, if I do it again next year I should be starting in Wave 1.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advice to paddlers:&lt;/strong&gt; don’t bother talking to a swimmer when they are swimming. We can’t hear a thing with the sound of the water and some people need to use ear plugs. Pointing your arm or paddle in the direction is far more effective. You’re really more like a sheepdog that uses it’s body, not its bark, to control the sheep. Ideally position yourself to the left or right of the swim route and use your presence to shepherd swimmers in the right direction—we’ll try to steer away from you and the closer you get, the more urgently we’ll move. Mostly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I’ve taught myself to celebrate like an Olympian.&lt;/strong&gt; It’s all too easy for me to complete a tough set, maybe set a new PB, and get out of the pool, sit in the sauna, get changed, leave, and mention it to no one. Instead, I’ve started celebrating like I’ve just won the Olympics: shouting “YES!!”, “Fuck, yeah”, punching the water etc. The pool isn’t usually busy so I’m not disrupting any one though I probably appear like a lunatic. I don’t care. No one else knows what I’m doing, no one else cares or understands what I might have achieved, but my body does and it deserves to &lt;em&gt;physically&lt;/em&gt; celebrate that achievement. It deserves more than just a mental nod of approval and slinking off home.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Songs for swims.&lt;/strong&gt; A single line of lyrics on repeat can get me through a swim so I have a curated playlist now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Feeding is great.&lt;/strong&gt; I need to do this more and it really opens up longer swims. There’s also a mindset change about not worrying about distance so much and thinking more about continuing for a certain &lt;em&gt;duration&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Numb fingers thing is annoying.&lt;/strong&gt; I think it could be Thorasic Outlet Syndrome (nerve restriction around the collarbone) and I’m going to investigate more in the new year to see if there are exercises I can do to reduce it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Coaching and strength training.&lt;/strong&gt; I’ve been swimming ~3 times a week for about 12 years but in-person coaching and strength training in the past 2 years has brought my swimming to a completely new level. Don’t sleep on it (I wish I didn’t).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comparison is the thief of joy.&lt;/strong&gt; I’m not as good as &lt;em&gt;many&lt;/em&gt; other swimmers and there’s plenty of opportunities to remind myself of that. On the other hand, I’m practically elite compared to the general population and I’m much much better than past-Jamie.&lt;/p&gt;
&lt;/div&gt;
</ns0:encoded><pubDate>Wed, 31 Dec 2025 00:00:00 UTC</pubDate></item></channel></rss>