RSSAmplifier

Blog

About me on jdamcd.blog

Recent content in About me on jdamcd.blog

jdamcd.blogRSS feed ↗23 posts

Latest posts

MCP by example

I’ve written about using AI coding tools to build various side projects. I decided to take a broader look at the ecosystem around the models, starting with Model Context Protocol . MCP is an open standard for connecting AI systems to external tools. The official docs describe it as USB-C for AI: a single protocol to connect any model with any tool. 
 We’ll cover each component of…

LED matrix arrivals

Arrivals is a Kotlin Multiplatform project for real-time public transit info. The most recent exploration was a Raspberry Pi driving an LCD . Now I’m going for character: a 128x32 dot-matrix board built from two chained LED panels, which feels like a miniature of the real thing. 
 
 If you’re interested in building this project, the README is comprehensive, so this post will…

Good vibes only

Google Trends suggests we’ve reached peak vibes. This is presumably down to “vibe coding” – a term coined by Andrej Karpathy a year ago. Like many others, I noticed a step change in the coding abilities of AI models in December 2025 with the combination of Claude Code and Opus 4.5. 
 
 LinkedIn is now awash with slopfluencer predictions about the death of software…

Raspberry Pi arrivals

Arrivals is an open source project for real-time public transit info. It’s also an exploration of weird Kotlin Multiplatform targets: a macOS menu bar app, a CLI, even a web widget on the landing page . 
 
 I added a simple desktop UI with Compose Multiplatform and used it to build a physical transit times display. Let’s walk through the build. 
 Hardware 
 The two key…

2025 b/w


 
 
 
 
 
 
 
 


2025 c


 
 
 


Inky stocks

I don’t obsess over day-to-day stock movements, but I do like to know what’s happening in the world when there’s market volatility. I built a low-power stock ticker display to stay informed passively rather than searching and scrolling. 
 
 The Raspberry Pi Zero is perfect for a quick build like this. It runs Linux, which enables rapid software iteration in high-level…

Navigating GTFS

I created a macOS status bar app to display public transit arrival times. It started life as a demo for Kotlin Multiplatform on the desktop, but I’ve ended up using it regularly to check the latest train times before my commute. The first iteration was essentially just a UI for the /StopPoint/:id/Arrivals endpoint of the Transport for London Unified API , meaning it was only useful if you…

2024 b/w


 
 
 
 
 
 
 
 


Leading in layers

Maslow’s hierarchy of needs models human motivation as a pyramid. Physical needs like food and water form the base, with several layers stacked up all the way to self-actualisation. Re-applying this pyramid to team needs is one of the simplest and most enduring frameworks I use as an engineering manager. 
 In my first management role, I found it hard to judge whether I was spending time…

Roadmaps are tools

Some teams consider their roadmaps to be immutable and unchallengeable. This usually leads to the roadmap becoming an object of deference or disdain. But a roadmap is just a tool. It’s useful for two things: 
 
 Expressing priorities : the presence or absence of projects on a roadmap should represent what you, your team, and your stakeholders agree is important. 
 Communicating…

EM onboarding

Onboarding engineering managers is nothing like onboarding software engineers. For one thing, the stakes are higher. An incoming manager can raise the ceiling on a team’s potential, or they can cause it to stall completely. 
 So how do we set them up for success? My default approach is to be prescriptive about what to focus on for the first 3 weeks to accelerate team immersion. After…

TfL arrivals

I commute to an office in central London a couple of times a week. Somehow I always arrive at the station just as my train is leaving. Transport for London have an open data API , so I thought it’d be fun to solve my problem by replicating the LED display from the station platform on my desktop. 
 
 I’ve also been interested in deploying Kotlin Multiplatform beyond the typical…

2023 b/w


 
 
 
 
 
 
 
 


2023 c


 
 
 


Code duplication

“Don’t Repeat Yourself” is perhaps the original adage in software development. We avoid duplicating code because it’s inefficient and it makes extra space for bugs and inconsistencies to creep into our apps. 
 Yet the most widely distributed apps in the world – the ones on our phones – have mostly been written twice. There are two Monzo apps, two Spotify apps, two…

Exploring KMM


 I wrote the original version of this post in 2020, just after Kotlin Multiplatform Mobile’s alpha release. It’s now in beta , so I’ve revisited the project to bring everything up to date. 
 
 Teams that ship mobile apps for Android and iOS duplicate a staggering amount of code. Two copies of the same business logic, API calls, and local storage. Cross-platform…

2022 b/w


 
 
 
 
 
 
 
 


2022 c


 
 
 


Release trains

Mobile apps under constant development are usually released on a fixed schedule. The release train has become common practice. It’s been used by every team I’ve worked on since around 2013. 
 Separately, continuous delivery is becoming a sensible default across swathes of the software industry. So why do mobile apps require a different approach? Let’s demystify the mobile…

Trunk-based mobile

Continuous integration is widely adopted in backend and web development. The core principles can be applied to mobile development too, but there are some specific challenges to consider. Let’s explore a model for developing mobile apps with a trunk-based version control workflow. This is based on practices I’ve seen work well in growing mobile teams at SoundCloud and Deliveroo. 
…

Sudoku retrospective

I started building a sudoku game for Android in 2012, and it continued as an intermittent side project over 8 years. I don’t have any plans to develop the app further, so I’ve released the source code before moving on to new projects. 
 Building 
 I’ve been developing Android apps ever since I got my HTC Hero in 2009, but 2012 was when Android development really got…

Sub-3

Chicago 
 The first 30K of my 2019 Chicago marathon was a breeze. I pasted a temporary tattoo with the splits for 3:05 on my forearm before leaving an airport hotel to board a train packed with other runners, all heading for the start line in Grant Park. 
 I got off to a confident start and almost subconsciously started pushing for a more ambitious sub-3 finish. I was running comfortable…