<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Ian McNaughton</title>
    <link rel="self" type="application/atom+xml" href="https://ianmcnaughton.net/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://ianmcnaughton.net"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-05-18T00:00:00+00:00</updated>
    <id>https://ianmcnaughton.net/atom.xml</id>
    <entry xml:lang="en">
        <title>Software Development in the AI Age</title>
        <published>2026-05-18T00:00:00+00:00</published>
        <updated>2026-05-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://ianmcnaughton.net/blog/software-development-in-the-ai-age/"/>
        <id>https://ianmcnaughton.net/blog/software-development-in-the-ai-age/</id>
        
        <content type="html" xml:base="https://ianmcnaughton.net/blog/software-development-in-the-ai-age/">&lt;p&gt;LinkedIn has never been my favorite site on the web. I get the impression I am not the intended audience for most of
what comes across my feed. The majority of it is focused around AI&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, either in a positive or negative light. These
articles feel like they could be for me, they touch a subject I work with daily now. Promoting the use of
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.aihero.dev&#x2F;getting-started-with-ralph&quot;&gt;Ralph loops&lt;&#x2F;a&gt;, or tales of deleted databases by rogue agents. Yet I
struggle to extract value out of the majority of these posts.&lt;&#x2F;p&gt;
&lt;p&gt;Now I will be the first to admit that I have not set up a Ralph loop. The few times I have thrown any sort of caution
to the wind and given the model free rein over a project, I have never been happy with the results. So when the CEO
of a three person company brags about their Anthropic bill, saying they have never been so proud, I have a hard time
relating. Then again, I get the impression I am not the intended audience. However, there is something to discuss here.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-does-software-development-look-like-in-the-ai-age&quot;&gt;What Does Software Development Look Like in the AI Age?&lt;&#x2F;h2&gt;
&lt;p&gt;The entire industry seems to be on the edge of its seat awaiting the answer to this question right now. I know my day to
day has forever changed. Yeah, I can burn up my allotment of tokens in a session, but I still keep a tight wrap on what
I allow Claude to have access to and modify. My outputs are nowhere near as impressive as the product claims I see
flaunted around LinkedIn. Am I falling behind by sticking to the lessons of
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;Clean-Code-Handbook-Software-Craftsmanship&#x2F;dp&#x2F;0132350882&quot;&gt;Clean Code&lt;&#x2F;a&gt; &amp;amp;
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.amazon.com&#x2F;Pragmatic-Programmer-journey-mastery-Anniversary&#x2F;dp&#x2F;0135957052&quot;&gt;The Pragmatic Programmer&lt;&#x2F;a&gt;?
Did the vibe coded project bring in enough revenue to cover its token bill? Will either of us be able to fix a bug or
extend the feature set in a timely manner?&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;There are many ways to skin the cat, but in the end working code wins.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;An old professor of mine said something like that in an entry level programming class I once took. It&#x27;s been some time,
and I don&#x27;t remember the exact quote, but he used that for an explanation of not reading our code and only verifying
the inputs and outputs of any assignment he gave. Yes, we can debate if this is a good style of teaching or not, but the
point I think he was trying to make is something I had a hard time coming to terms with in my younger years. Your users
don&#x27;t care what your code looks like. They care about how they interact with the feature and how the feature interacts
with them.&lt;&#x2F;p&gt;
&lt;p&gt;If the website takes forever to load, it&#x27;s a bad website. If the app crashes or the button you&#x27;re about to press jumps
away only to be replaced by an ad, it&#x27;s a bad app. If the user can easily enter the required info and get a good result
back, it&#x27;s good software. Nobody is worried about how well you followed &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;SOLID&quot;&gt;SOLID&lt;&#x2F;a&gt;
principles or if you’re using an O(n&lt;sup&gt;2&lt;&#x2F;sup&gt;) algorithm where an O(n log n) version exists. Did it do the thing? Was
it a nuance to work with? Will I get a letter in the mail saying I have 6 months of free credit monitoring because of a
data leak?&lt;&#x2F;p&gt;
&lt;p&gt;There is an argument to be made that this is all that matters when it comes to software, I think it&#x27;s easy to forget
that none of these ideas are new.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-was-i-doing-before-llm-s-and-ai&quot;&gt;What was I doing before LLM&#x27;s and AI?&lt;&#x2F;h2&gt;
&lt;p&gt;Obviously, writing code to solve tasks, yes, but not entirely. Reflecting on things, I can come up with a list of items
I would do as a developer, but they all relate to a common theme, &lt;strong&gt;maintain the codebase&lt;&#x2F;strong&gt;. When working with the code,
either directly or by review of others code. The goal here was to reduce unnecessary complexity in the structure and
implementation, so it was easier to understand, and by proxy, easier to modify.&lt;&#x2F;p&gt;
&lt;p&gt;Dismantling ambiguous tasks was another large aspect of work. Most features originate as high-level ideas. &lt;em&gt;The user
should be able to download a report of activity.&lt;&#x2F;em&gt; Or something similar. What data goes into that report, how to access
that data, where to store the results and in what format. This sounds unique, but it is rooted in maintaining the code
base. The better a feature is understood, the easier I can design the code to achieve said feature, the easier it is
to understand and update later if needed.&lt;&#x2F;p&gt;
&lt;p&gt;Bugs would need to be identified and squashed. Sometimes the issue is straightforward, the app needs to not crash on
invalid input. Sometimes the issues are complex and require more depth, the user is not getting the correct data. Either
way, identifying where the issue is taking place and fixing it in code is a common task. If the code is easy to
understand, it&#x27;s generally easier to identify where an issue is taking place, and ensure you don&#x27;t break other features
in the process.&lt;&#x2F;p&gt;
&lt;p&gt;Even soft skills like mentoring others or conducting interviews are directly tied to the theme as well. Helping others
understand how valuable it is to keep a clean codebase and mentoring others on how to do so necessary in larger
projects where you are not the only contributor.&lt;&#x2F;p&gt;
&lt;p&gt;So what did I do before AI, I maintained the code to make a working product. To make a system that just worked.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ai-is-a-tool-it-s-your-responsibility-to-use-it-properly-yada-yada-yada&quot;&gt;AI is a tool it&#x27;s your responsibility to use it properly, yada yada yada...&lt;&#x2F;h2&gt;
&lt;p&gt;Ok, but what does this mean for software developers? Yes, anyone can have code written for them now, and there&#x27;s a good
chance it will be slop, maintainable only via excessive token use and many Ralph loop iterations. At least when
maintained by those who do not focus more on the code and only on the results. Yes, we are going to see a lot of
half-baked ideas in a semi-working state, and probably get more mail for free credit monitoring from poorly designed
systems.&lt;&#x2F;p&gt;
&lt;p&gt;I think it&#x27;s safe to say that as long as companies like Anthropic are still hiring engineers instead of replacing them
with product owners, experienced developers will still matter. If the system could be treated as an absolute black box
where the internals did not need to be monitored, companies on the forefront would be hiring those who guide the
product, not who maintain it.&lt;&#x2F;p&gt;
&lt;p&gt;I think it&#x27;s also safe to say that we are in a state of refinement for LLM&#x27;s, and that on the chart of ability over time
LLM&#x27;s are taking more of a &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Sigmoid_function&quot;&gt;sigmoid shape&lt;&#x2F;a&gt; than an
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Exponential_function&quot;&gt;exponential curve&lt;&#x2F;a&gt;. Much like how cars today are still four wheels
on the ground and get you from point A to point B, just like they were 100 years ago. They have simply been refined,
safety features have been added, creature comforts are in place, and bluetooth has taken over the CD player. The roots
are the same, the polish is where you find the improvements. I believe LLM&#x27;s and AI will follow a similar path.&lt;&#x2F;p&gt;
&lt;p&gt;All to say, I don&#x27;t think the role of the developer is going away, changing yes, but going extinct, I sure hope not.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;oh-magic-8-ball-what-will-my-job-look-like-in-a-year&quot;&gt;Oh, Magic 8 Ball, What will my job look like in a year?&lt;&#x2F;h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Reply hazy, try again&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Amazing, well, I don&#x27;t know what I expected.&lt;&#x2F;p&gt;
&lt;p&gt;If I had to take an educated guess at what the future holds.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;dev-teams-will-be-asked-to-take-on-and-productionize-ai-created-proof-of-concepts&quot;&gt;Dev teams will be asked to take on and &quot;productionize&quot; AI created Proof of Concepts&lt;&#x2F;h3&gt;
&lt;p&gt;Honestly, this does not thrill me. Maybe I am to use to the old ways, but I would rather discuss requirements and
expectations than try to extract them from code. Please, I would urge you, if you are in a position where you are
creating such a proof of concept, paired program with a dev while you do. I volunteer as a tribute if you need somebody.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;products-are-going-to-get-a-bit-sloppy&quot;&gt;Products are going to get a bit sloppy&lt;&#x2F;h3&gt;
&lt;p&gt;Much like the internet of the 90&#x27;s and early 00&#x27;s. We are going to see some things. What is the code equivalent of
dancing Michael Jackson GIFs and marquee text? I don&#x27;t know, but I think we are all about to find out whether we like
it or not. Be ready to set up credit monitoring.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;products-that-enable-people-to-go-to-market-will-explode&quot;&gt;Products that enable people to go to market will explode&lt;&#x2F;h3&gt;
&lt;p&gt;When anyone can create something, they will need a way to ship it. Systems that make this easier for non-technical
people will eat this up in attempts to get their idea out there.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;linkedin-will-still-not-be-much-use-for-me&quot;&gt;LinkedIn will still not be much use for me&lt;&#x2F;h3&gt;
&lt;p&gt;The number of posts bragging about something I find less than impressive will increase, but getting back to it, I don&#x27;t
think I&#x27;m the intended audience. I&#x27;ll bet this is more about enticing investors than users.&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;I have to get this off my chest, I can&#x27;t stand the vocabulary of AI. What I have known as AI is now AGI or
artificial &lt;em&gt;general&lt;&#x2F;em&gt; intelligence. Yes, I understand that LLM&#x27;s can pass the turing test, so there is an argument to be
made, but I feel the marketing department took what was understood in the community and twisted it for public use.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>It&#x27;s just some html and css, how hard can it be?</title>
        <published>2026-04-26T00:00:00+00:00</published>
        <updated>2026-04-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://ianmcnaughton.net/blog/simple-project-complex-solutions/"/>
        <id>https://ianmcnaughton.net/blog/simple-project-complex-solutions/</id>
        
        <content type="html" xml:base="https://ianmcnaughton.net/blog/simple-project-complex-solutions/">&lt;p&gt;Well, first I suppose we should go around the room and introduce ourselves. I&#x27;ll start...&lt;&#x2F;p&gt;
&lt;p&gt;My name is Ian McNaughton, I have been a software dev for a number of years now professionally, mostly in the webspace, with a good focus on back end tech.
Someplace between the UI and the database is where I am most comfortable, but I can hold my own on either edge.&lt;&#x2F;p&gt;
&lt;p&gt;A fun fact about me is I can spend days researching how best to host a simple static site before creating any content for said site.
So I&#x27;m forcing the matter and writing this while nothing else is in any kind of state to ship.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;when-in-doubt-let-the-requirements-guide-you&quot;&gt;When in doubt, let the requirements guide you&lt;&#x2F;h2&gt;
&lt;p&gt;What&#x27;s my mvp here? I know this will be a static website, using the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt; build tool to compile Markdown files into HTML.
A domain, sure, that&#x27;s easy enough, whatever. I need something to serve these pages up. Ah, here we go, now we learn just how
quickly a simple idea can fly off the rails.&lt;&#x2F;p&gt;
&lt;p&gt;Just a quick scan of the things, I see a number of different options.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;A public AWS S3 bucket.&lt;&#x2F;li&gt;
&lt;li&gt;A private S3 bucket with CloudFront on top.&lt;&#x2F;li&gt;
&lt;li&gt;AWS has its own product for this use case named Amplify.&lt;&#x2F;li&gt;
&lt;li&gt;Brewing and managing everything myself by renting out an EC2 server.&lt;&#x2F;li&gt;
&lt;li&gt;I could probably dockerize this entire site and host it in any number of container hosts.&lt;&#x2F;li&gt;
&lt;li&gt;GitHub pages.&lt;&#x2F;li&gt;
&lt;li&gt;Cloudflare.&lt;&#x2F;li&gt;
&lt;li&gt;Netlify.&lt;&#x2F;li&gt;
&lt;li&gt;The list goes on.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Wait wait wait, I just want to host some files. This should not be so hard. Well, I guess it does not have to be if I use a service,
but that&#x27;s just more accounts, more payments, more complexity. Ahh, wait; what&#x27;s that quote I love so much?&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Let&#x27;s try to keep things simple.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ok-let-s-weigh-the-options&quot;&gt;Ok, Let&#x27;s weigh the options&lt;&#x2F;h2&gt;
&lt;p&gt;A Public S3 bucket Super simple, slap the code in a repo, set up a workflow to build the site, and replace the content in a bucket. Point
a domain at the thing and you&#x27;re golden. Right? You would think, but there is no HTTPS. Honesty, I don&#x27;t even know if this
is valid for this content. This site has no login, there&#x27;s no dynamically generated content to hide. Everyone will be served the same
bytes, but browsers will bully me if I skip out and just have HTTP, that S is doing a lot of work, and I cant bring myself to go without it.
It goes against every fiber of my being. Encrypt your sites.&lt;&#x2F;p&gt;
&lt;p&gt;CloudFront gets me HTTPS, sure, but if there was ever an overengineered system, this might be it. A global CDN, for this? I&#x27;m yelling at clouds here
&lt;sub&gt; digital clouds, but clouds nonetheless&lt;&#x2F;sub&gt;, not running a SaaS company.&lt;&#x2F;p&gt;
&lt;p&gt;AWS Amplify just feels like the previous option, only they set up the configs for CloudFront for you. Also, I&#x27;m sure they
charge more for this, I&#x27;ll learn the ecosystem to save a buck or two.&lt;&#x2F;p&gt;
&lt;p&gt;GCP &amp;amp; Azure is just more of the above.&lt;&#x2F;p&gt;
&lt;p&gt;Renting the smallest EC2 space I can get, rigging it up with nginx and &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;letsencrypt.org&#x2F;&quot;&gt;letsencrypt.org&lt;&#x2F;a&gt; has some real draw to it.
I have done this in the past, I can do it again, It&#x27;s probably the simplest solution of all these options. Maybe 20 bucks a year to run
plus the cost of the domain. Ugh, this might be an option, but there has to be a better way, right? Do I really need a dedicated machine to host this?&lt;&#x2F;p&gt;
&lt;p&gt;Well, just containerize it and... No, let me stop you right there, just no. Not at this scale.&lt;&#x2F;p&gt;
&lt;p&gt;GitHub Pages sounds like a great option then, right? This makes sense, but as I edit this, there &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.githubstatus.com&#x2F;&quot;&gt;recovering from another incident&lt;&#x2F;a&gt;&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;, not to mention
this is meant more for documentation of a project and not some random blog. Eh, you could make the argument, but I feel like
there should be a better option.&lt;&#x2F;p&gt;
&lt;p&gt;That leaves services like Netlify, and for whatever reason, I just can&#x27;t. I don&#x27;t know if it&#x27;s the extra account I&#x27;ll have to sign up
or if it&#x27;s the pride in knowing I could self-host this if I could talk my ISP into giving me a static IP. But I just can&#x27;t.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;so-what-s-a-dev-to-do&quot;&gt;So what&#x27;s a dev to do?&lt;&#x2F;h2&gt;
&lt;p&gt;Honestly, I&#x27;ll probably go with GitHub pages&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#2&quot;&gt;2&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;. Yeah, I could tell myself, &quot;Oh, it will be a good experience to learn how to configure AWS correctly!&quot;
But at the end of the day, I should be spending more time making content than worrying about how to host it.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;wait-what-were-we-doing&quot;&gt;Wait what were we doing?&lt;&#x2F;h2&gt;
&lt;p&gt;Hang on, let me close all these tabs and compose myself.&lt;&#x2F;p&gt;
&lt;p&gt;Hi, I&#x27;m Ian, I write code! And despite what you just read, I truly enjoy mucking around in these sorts of things. From
the basics like static site hosting, to trying to implement the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Chain_rule&quot;&gt;chain rule&lt;&#x2F;a&gt;
for a home-brewed Neural Network, this is where I love to spend my time.&lt;&#x2F;p&gt;
&lt;p&gt;Alright, who&#x27;s next? Introduce yourself. Shoot me an Email, buy me a coffee, let&#x27;s talk code!&lt;&#x2F;p&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;It&#x27;s to the point where they have put out a statement. &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.blog&#x2F;news-insights&#x2F;company-news&#x2F;an-update-on-github-availability&#x2F;&quot;&gt;https:&#x2F;&#x2F;github.blog&#x2F;news-insights&#x2F;company-news&#x2F;an-update-on-github-availability&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;2&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;2&lt;&#x2F;sup&gt;
&lt;p&gt;I decided to use AWS Amplify and give that a shot.&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
</feed>
