<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nick Perkins</title>
    <link>https://nickperkins.au/author/nick-perkins/</link>
    <description>Recent content on Nick Perkins</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 07 Mar 2026 10:00:00 +1000</lastBuildDate>
    <atom:link href="https://nickperkins.au/author/nick-perkins/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The Testing Pyramid Still Matters (Even When AI Wrote Your Tests)</title>
      <link>https://nickperkins.au/article/testing-pyramid-ai-development/</link>
      <pubDate>Sat, 07 Mar 2026 10:00:00 +1000</pubDate>
      <guid>https://nickperkins.au/article/testing-pyramid-ai-development/</guid>
      <description>I&amp;rsquo;ve been spending a lot of time in agentic AI workflows lately. Describe a feature, the agent writes the code, the tests, and the PR. It&amp;rsquo;s genuinely impressive. And the test suites are taking fifteen minutes to run, full of integration tests that didn&amp;rsquo;t need to be integration tests.&#xA;The testing pyramid didn&amp;rsquo;t become irrelevant just because AI wrote the tests.&#xA;The problem with AI and test placement AI agents are enthusiastic testers.</description>
    </item>
    <item>
      <title>AI and the Human Factor - My Observations</title>
      <link>https://nickperkins.au/article/ai-the-human-factor/</link>
      <pubDate>Wed, 20 Aug 2025 10:00:00 +1000</pubDate>
      <guid>https://nickperkins.au/article/ai-the-human-factor/</guid>
      <description>Over the last year, I&amp;rsquo;ve been watching how people use AI coding tools. GitHub Copilot, ChatGPT, Claude - everyone&amp;rsquo;s got access to them now. But the results? Completely different depending on who&amp;rsquo;s using them.&#xA;Here&amp;rsquo;s what I&amp;rsquo;ve noticed: the engineers who were already good are using AI to get even better. The ones who struggled before? They&amp;rsquo;re producing questionable code at an incredible rate now.&#xA;AI just amplifies what you already are AI tools can be amazing productivity boosters.</description>
    </item>
    <item>
      <title>GitHub Enterprise Reality Check: A DevOps Engineer&#39;s Perspective</title>
      <link>https://nickperkins.au/article/github-enterprise-reality-check/</link>
      <pubDate>Fri, 25 Jul 2025 14:30:00 +1000</pubDate>
      <guid>https://nickperkins.au/article/github-enterprise-reality-check/</guid>
      <description>Over the past couple of years, I&amp;rsquo;ve been working extensively with GitHub Enterprise in large organisational settings. While GitHub has built an exceptional developer experience and continues to ship features at an impressive pace, the reality is that GitHub Enterprise still has significant gaps when it comes to enterprise-scale operations. Let me share what I&amp;rsquo;ve discovered about the current state of GitHub Enterprise from a platform engineering perspective.&#xA;Photo by James Harrison on Unsplash The Repository-Centric Challenge GitHub&amp;rsquo;s architecture is fundamentally repository-focused, which works brilliantly for individual projects and small teams.</description>
    </item>
    <item>
      <title>Building Interactive MCP Tools with Elicitations: A Practical Guide</title>
      <link>https://nickperkins.au/code/mcp-elicitations-interactive-tools/</link>
      <pubDate>Fri, 11 Jul 2025 22:00:00 +1000</pubDate>
      <guid>https://nickperkins.au/code/mcp-elicitations-interactive-tools/</guid>
      <description>The Model Context Protocol (MCP) is revolutionising how we build AI tools, but a powerful new features recently added to the protocol will be a game changer: elicitations. These enable your MCP tools to have interactive conversations with users, gathering input dynamically rather than requiring all parameters upfront. Let me show you how to build engaging, interactive MCP tools using a practical ice cream topping recommender as our example.&#xA;What Are MCP Elicitations?</description>
    </item>
    <item>
      <title>Failure MUST be an option for innovation</title>
      <link>https://nickperkins.au/article/failure-must-be-an-option/</link>
      <pubDate>Fri, 17 Jan 2025 17:48:50 +1000</pubDate>
      <guid>https://nickperkins.au/article/failure-must-be-an-option/</guid>
      <description>This week I hosted a brown bag session at work where I explored the idea that failure isn’t something to be avoided at all costs but must be a safe option for software engineering teams. The concept of failure often carries a negative connotation. However, embracing failure as an option can foster an environment of learning, innovation, and psychological safety. Let’s explore this by looking at the benefits this shift in mindset can bring, and the elements required to create a culture where failure is seen as a stepping stone to success.</description>
    </item>
    <item>
      <title>ORAS for Configuration Management</title>
      <link>https://nickperkins.au/code/oras-for-configuration-management/</link>
      <pubDate>Sat, 29 Jun 2024 18:00:00 +1000</pubDate>
      <guid>https://nickperkins.au/code/oras-for-configuration-management/</guid>
      <description>A challenge for any engineering team is handling configuration management in a secure and efficient way. Recently, I&amp;rsquo;ve explored using ORAS (OCI Registry As Storage), a tool which enhances OCI (Ope Container Initiative) registries by enabling them to store various artifacts, not just container images.&#xA;What is ORAS? ORAS is an open source project which builds tools and libraries to enable using OCI registries to store any type of artifact, not just container images.</description>
    </item>
    <item>
      <title>Silver Linings</title>
      <link>https://nickperkins.au/quote/silver-linings/</link>
      <pubDate>Fri, 21 Jun 2024 21:41:12 +1000</pubDate>
      <guid>https://nickperkins.au/quote/silver-linings/</guid>
      <description>No matter how you&amp;rsquo;re feeling today, even the darkest clouds have silver linings.&#xA;If you are struggling, reach out. You&amp;rsquo;re not a burden, I promise.</description>
    </item>
    <item>
      <title>Managing a Motorsport Club - My Initial Thoughts</title>
      <link>https://nickperkins.au/article/managing-a-motorsport-club/</link>
      <pubDate>Mon, 05 Feb 2024 19:43:46 +1000</pubDate>
      <guid>https://nickperkins.au/article/managing-a-motorsport-club/</guid>
      <description>Last year, I decided to run for a position on the management committee of the motorsport club I&amp;rsquo;m a member of. It has been eye-opening to see what goes on to run a club with around 100 members.&#xA;Here&amp;rsquo;s a few things I&amp;rsquo;ve learned over the last 9 months.&#xA;It&amp;rsquo;s a thankless task You&amp;rsquo;re damned if you do, and you&amp;rsquo;re damned if you don&amp;rsquo;t. You won&amp;rsquo;t keep everyone happy, and you just have to try and do the best job you can do.</description>
    </item>
    <item>
      <title>Motorsport Officiating</title>
      <link>https://nickperkins.au/article/motorsport-officiating/</link>
      <pubDate>Tue, 15 Aug 2023 11:07:46 +1000</pubDate>
      <guid>https://nickperkins.au/article/motorsport-officiating/</guid>
      <description>A part of my life that I haven&amp;rsquo;t written about before is my volunteer motorsport officiating. I&amp;rsquo;ve loved motorsport for as long as I can remember. Some of my earliest memories are watching the Bathurst 1000 or the Formula 1 Australian Grand Prix from Adelaide on television. My parents were not motorsport nuts, but I did go to the Gold Coast Indy 300 in the early 1990s. We would often drive past Surfers Paradise International Raceway and the little Go-Kart track there, but we were always going somewhere else.</description>
    </item>
    <item>
      <title>A simple static blog comments system using Cloudflare Workers and D1</title>
      <link>https://nickperkins.au/code/comment-api-cloudflare-d1/</link>
      <pubDate>Wed, 12 Apr 2023 09:45:41 +1000</pubDate>
      <guid>https://nickperkins.au/code/comment-api-cloudflare-d1/</guid>
      <description>I&amp;rsquo;ve spent the last couple of weeks off work, which has given me time to tinker with some different tech. For starters, I migrated this blog over to Hugo, a static site generated written in go. I&amp;rsquo;ve never had comments on this version of my blog, but I wondered how difficult it might be to roll my own system using Cloudflare Workers?&#xA;This seemed like a good opportunity to play with one of Cloudflare&amp;rsquo;s newest offerings, D1.</description>
    </item>
    <item>
      <title>Infrastructure as code with Terraform</title>
      <link>https://nickperkins.au/code/infrastructure-as-code/</link>
      <pubDate>Sun, 18 Apr 2021 12:53:08 +1000</pubDate>
      <guid>https://nickperkins.au/code/infrastructure-as-code/</guid>
      <description>Over the last couple of months I&amp;rsquo;ve been working on a project for a containerised orchestration platform using Infrastructure as Code. This has meant I&amp;rsquo;ve spent most of my time working with Terraform.&#xA;What is Terraform? I could write a couple of paragraphs about what Terraform is and what it does, but I think they put it best:&#xA;Terraform is an open-source infrastructure as code software tool that provides a consistent CLI workflow to manage hundreds of cloud services.</description>
    </item>
    <item>
      <title>Using pyodbc in AWS Lambda functions</title>
      <link>https://nickperkins.au/code/lamda-pyodbc/</link>
      <pubDate>Sun, 21 Jul 2019 12:57:05 +1000</pubDate>
      <guid>https://nickperkins.au/code/lamda-pyodbc/</guid>
      <description>This week I was working on an AWS Lambda function that needed to read and write from a legacy Microsoft SQL database. It&amp;rsquo;s written using the AWS Chalice framework and in local testing everything looked great. Not so much when we needed to deploy it to AWS for testing.&#xA;Why? Most of the time that you include a python package for use in a lambda function, Chalice is able to package that into the deployment, and you&amp;rsquo;re good to go.</description>
    </item>
  </channel>
</rss>
