AI loops: who pays for the tokens?
Jack Franklin |
A recent trend in AI has become this idea of "loops". Rather than you doing
prompting and working with the AI to design and implement, you instead give it a
higher level goal and let it roll. You build a system to let the AI make
decisions, build and verify its work, all with the aim of completing ... read more
ai-review: reviewing AI code before it lands
Jack Franklin |
Over the years I have become very comfortable as a developer who spends most of
his time in the terminal. I've spent far too long tweaking my
dotfiles to make things just how I
like, and I have been a Vim/Neovim user for the best part of fifteen years.
This trend has continued into the AI era. I've... read more
Tracking feedback with Claude Code
Jack Franklin |
I've been using Claude Code as a pair programmer, debugger, and feedback collector
while I playtest my game, OnTrack. The
setup has worked so well that I ended up building a small custom skill to make
it scale and in this post I'll take you through how it works.
(That last DevBlog was in 2024 (!),... read more
Using AirPod Pros 3 with Android
Jack Franklin |
I wear headphones a lot and I like the option of wearing over-ear and in-ear
headphones at any one time; I find that I prefer my over-ear for deep work
sessions but in-ear are much easier for video calls or casual listening as I'm
cooking dinner, walking the dog or on the train to the office.
One t... read more
Augmented engineering: learnings of an AI skeptic
Jack Franklin |
Since ChatGPT burst onto the scene in November 2022 it and its competitors have
taken software development by storm. We've seen companies
go all in on AI
and set expectations that new hires will only be prioritised if AI can't do
the job. This has caused a general level of anxiety amongst software ... read more
Goals for 2025
Jack Franklin |
As 2024 comes to a close, I wanted to take a moment to reflect on what has been
the most incredible and challenging year of my life. In January our child Leo
was born and our lifes as we knew them were changed forever. There is plenty to
be written on the highs and lows of being new parents and wit... read more
TypeScript enums and falsy values
Jack Franklin |
I recently lost an evening to debugging a subtle issue which highlights a
potential pitfall in the interaction between TypeScript enums and "falsy" values
in JavaScript. Let’s look at a scenario that illustrates this problem:
Spot the Bug
Consider the following code where a function returns either ... read more
performance.wow() 2024
Jack Franklin |
As I write this blog post I am sat in an AirBnB in Utrecht reflecting on two
incredibly inspiring days at performance.now() 2024. I
was not only fortunate to attend but to be asked to talk, and it was a real
privilege to get the chance to update the attendees on all our recent work
updating the per... read more
OnTrack devlog 1
Jack Franklin |
If you were to look at my Steam library you would see that most of my games are
strategy and logistics based (think Factorio) but with a healthy dose of
transport methods and networks (think Transport Fever 2 and OpenTTD).
I've always wanted a very specific, niche game focusing on building passenge... read more
Exhaustive branch checks with TypeScript
Jack Franklin |
It's very common when working with TypeScript that you will have a type that
declares a list of values, such as an enum or union type:
enum SupportedColour1 {RED,YELLOW,BLUE,}type SupportedColour2 = 'RED' | 'YELLOW' | 'BLUE'
And then you will often have functions that need to run differently or ret... read more
