RSSAmplifier

Blog

Lyndon Codes

Lyndon Armitage's blog

lyndon.codesRSS feed ↗79 posts

Latest posts

AI Coding Thoughts 2026

Recently a video popped up in my feed about a developer’s experience of coding with AI and why they were done with it. I found it interesting and began writing a comment to respond to it, only to realise it became rather long. So I thought I’d expand it into a blog post about my thoughts on coding with AI, LLM-based agents etc.

Issac Asimov AI Short Story Recommendation

I’ve recently been rereading short stories from The Complete Robot by Issac Asimov. I’m particularly fond of the Powell and Donovan stories and the Susan Calvin stories. It was while rereading “Galley Slave” that I realised the monologue at the end of the story by the professor was quite prescient to our modern AI and Large Language Model world.

Avoiding LLM Model Collapse

Large Language Models (LLMs, and what is currently being called AI) are incredibly divisive right now. On one side you have those hyping them up as a small step from ushering in the singularity . And on the other side those who think they’re a colossal waste of electricity and water, that all they produce is “slop”, and they’re going to take away everyone’s jobs. As with most things in life, the…

Toying with AI: Model Context Protocol

Model Context Protocol or MCP, is quickly being adopted as a standard for extending Large Language Model (LLM) based AI functionality. But what is it? By the end of this post I hope to have explained the main concepts of MCP and have built a simple Dice Rolling MCP Server.

Toying with AI: RPG Party Members

With the rise of Large Language Models (LLMs), I’ve been spending some of my free time experimenting with them. I’ve mainly been interested in seeing what can be built with them, getting to grips in general with how they work, and practicing how to best use them.

Efficient reading and writing with AWS S3

Back in January 2024 I wrote a post about efficiently writing to S3 in Python that has become relatively popular on this blog (thanks to GoatCounter for revealing this.) So I thought I’d take a broader look at the most efficient ways to read and write from S3 with special attention paid to AWS Lambdas and resource-constrained containers in general.

DeepSeek Scaremongering

Recently I stumbled upon a post about the Chinese developed Large Language Model (LLM) DeepSeek on LinkedIn that I wanted to address. Specifically the post was scaremongering about security concerns with wide adoption and use of the DeepSeek model.

Moving from Packer to Lazy.nvim

Previously I mentioned that I use NeoVim as my editor of choice and updated to using Packer as a plugin manager. At the end of January 2025 I decided to finally migrate away from the unmaintained Packer project to Lazy.nvim .

Advent of Code 2024: Summary of Days 13 to 16

This page serves as the third and final part of a summary of my experience with Advent of Code 2024 . As is normal with December, work and personal commitments got in the way of completing Advent of Code 2024, so this post only covers days 13 to 16, and has been written quite some time into 2025.

Advent of Code 2024: Summary of Days 7 to 12

This page serves as the second part of a summary of my experience with Advent of Code 2024 , covering days 7 to 12. For the first 6 days see my previous post .

Adding Privacy Friendly tracking to my Blog

I’ve recently caved into the idea of adding some tracking onto my blog, but rather than cave completely to the likes of Google Analytics, I’ve opted to investigate some minimal, privacy friendly tracking solutions.

Advent of Code 2024: Summary of Days 1 to 6

This page serves as the first part of a summary of my experience with Advent of Code 2024 . A mentioned in my original post , I decided against forcing myself to learn another programming language as well as opted not to post an article for each challenge.

Advent of Code 2024

It’s come again, Advent of Code 2024 . I don’t think I have ever fully finished one of these, I probably came close in one of the earlier ones during the 2010’s.

Data Engineering the Right to Erasure

GDPR and specifically, the Right to Erasure (aka ‘right to be forgotten’) are tough nuts to crack in the world of Data. Given our predilection to data hoarding the requirements to be able to erase user information in a timely manner can prove difficult when you have a huge data estate.

What is Premature Optimisation?

As programmers we’re often taught to take certain things for granted, when it comes to performance. Likewise, we often throw around the Sir Tony Hoare quote, made famous by Donald Knuth: “Premature optimisation is the root of all evil.” But what is premature optimisation?

Fixing a bug in S3 Object listing in Scala

This is a quick tip from a blunder I made when writing some Scala code using the AWS S3 object listing API . Hopefully it will save someone else from making the same mistake and show how important it is to have good tests, a clear API and the literacy skills to read it.

Efficiently writing to S3 in Python

Before Christmas 2023 we ran into an issue with one of our simpler data ingests at work. An AWS Lambda , written in Python that queried an API, transformed the results, and landed them in Amazon S3 as JSON (gzipped JSON Lines files to be specific), started to fail.

AdventOfRust 2023

So it’s two weeks into 2023’s Advent of Code and I have a confession to make. I’ve been using it to learn Rust .

AdventOfCode 2023

It’s that time of year again. Time to commit to participating in AdventOfCode 2023 only to not finish it. In seriousness, I’ve tried to finish for a few years but always find other commitments get in the way. Nevertheless, I am going to be doing Advent of Code 2023!

Refreshing my NeoVim Installation

As I mentioned many moons ago, I use the text editor Vim as one of my daily drivers. To be precise I actually use NeoVim . Recently I have decided to clean up my configuration files and I plan on documenting that adventure here.

Gemini Search Engine Part 1a: Crawling

In this post I will go into the first part of building my Gemini Search Engine WhichFire : Crawling/Spidering.

I Don't Like Mocks

I don’t like software Mocks or Mocking frameworks in general. In my experience they don’t really help when it comes to testing software, at least the kind I work on, and the frameworks themselves are a nightmare to deal with.

Creating a Gemini Search Engine

This is the first post in a series about creating a search engine for the Gemini internet technology . In it, we will briefly discuss what Gemini is and the basics of creating a Search Engine.

Fixing a Kernel Panic after a Manjaro Update

This morning I ran into a major issue with my Manjaro Linux install. After an update and a reboot I was faced with this error (cut for brevity):

Interfaces & Impetuous Defaults

A little bit of a cryptic title but bear with me, this is a post about how when you build an interface, or any code really, you should consider the effect of your decisions.

Cancer Research UK London Winter Run 2023

Mindhammer: 24hr Warhammer Building & Painting Stream

groupBy, groupByKey, and windowing in Spark

Recently at work I encountered a Spark job that had begun to intermittently fail after a long period of successes. Debugging Spark jobs is a skill in and of itself that I will touch on it lightly here, but in my evaluation of this job I found that:

Wordle Solver in Scala

With the basic Scala implementation of Wordle out of the way in my last post I thought it might be a fun activity to create a Wordle solver/helper in a similar way. I like to avoid using such things on real world puzzles as they suck the fun out of them but writing them and testing them is fun in and of itself, so lets get started.

Wordle in Scala

The game Wordle seems to have come out of nowhere in recent months and become a favourite among many. In this post I will show how you can make a game similar to Wordle in Scala.

Software Activism & NPM

Recently there’s been an outpouring of software activists or, as some call them, hacktivists, protesting the war between Russia and Ukraine. One of these people, a man by the name of Brandon Nozaki Miller , decided to introduce malware into a popular Node.js library known as node-ipc .

Security & Vampirism: Don't Invite Them in

In an old talk by Kevlin Henley he made an observation on an effective programming habit through the use of a vampire analogy . The analogy went something like this:

Book Series: Mistborn

Recently I finished reading the Mistborn book series by Brandon Sanderson , a fantasy series set in his Cosmere setting. This is a brief review of that series.

Bash Scripting Adventure: Deleting tables from AWS Glue

Recently, I was tasked with deleting a load of extraneous tables that made their way into one of our AWS Glue Catalogs. These tables were causing a major issue by virtue of a fact that there were 15,000+ of them. To solve this problem I applied a bit of Bash scripting that I thought I’d share.

Nonograms Part 3

In my last 2 posts I was working on a way to processes Nonograms in Scala. In the first I outlined what they were and a file format to store them in. In the second I showed my code in Scala to represent them and parse them from the file format I defined. In this post I will continue on with code to write out the file format and render them.

New Keyboard

Recently I received the final parts a new keyboard and I felt like sharing!

Nonograms Part 2

In my previous post I described what a Nonogram was and crafted a file format to use for representing a Nonogram and any clues/hints associated with it. In this post I intend to go through the steps of building software to read, write and display Nonograms in the decided format.

Nonograms Part 1

I love Nonograms ! As a puzzle I find them very relaxing and meditative. They scratch the same itch as Sudokus for me with less mathematical thinking.

Iterative Improvement

It is a tendency among many people to perfect something before they think of ever releasing it or showing it to anyone else. Often you might label these people perfectionists, and they exist in all spheres of life, from programming to writing to art. There is a big problem with being a perfectionist and thats that you hardly ever release anything!

Useful Linux Programs

Having been using Linux exclusively as my operating system for development for quite some time now I thought it was time to catalog some of the useful commands and programs I use in the terminal on an almost daily basis.

Copying Photos off of Android using ADB

Last night I was struck by a mini disaster! My phone had run out space due to the amount of photographs I have taken over the last few years! Annoyed at the sudden disruption to my phones operation I went to work trying to delete old photos and back them up.

Sending EBooks to Kindle from the Terminal

Just a quick post sharing a simple bash script for sending your EBooks to your Kindle via email (using msmtp and mutt).

i3-shortcuts

Recently I wrote a very quick C program to parse my i3 configuration file and output the bound keys within. This was to help jog my memory of the various keys I have set in my configuration file beyond the common ones.

A Paranoid Home Network

Digging through some old notes I stumbled upon the diagram I made when planning my home network during my last move. I had decided to take a little paranoid approach to my networking.

Raylib and C

Recently I wanted to refresh my C programming skills and was on the lookout for a library or framework for getting graphics onto the screen while doing so and I stumbled upon the Raylib library. It suited the bill perfectly.

Disabling Comments

So in my last post I lamented that I was getting only spam comments on my blog after updating it with Staticman to enable comments so today I have decided to disable comments altogether.

Comments Update

Since 2021/02/27 my blog has had comments enabled courtesy of Staticman. Unfortunately it seems that the only comments I get are spam so I am torn as to whether to continue enabling comments or to remove them.

Centering mouse in the Active Window

This is just a quick post on how to centre your mouse in the currently selected window on Linux.

vim is Powerful

The text editor vim is really quite powerful! I am always surprised by how much so!

Migrating from offlineimap to isync

Recently I have been experimenting with the terminal email client mutt ( neomutt to be specific) in preparation for setting up my own email server (I want to stop being over reliant on GMail). Initially I stumbled upon offlineimap as a way of downloading and syncing mail from an IMAP server, but as it turns out it is built in Python 2 and considered a bit obsolete and slow by many. So after some…