Skip to content

Published work

What I've shared.

I write about building software, training for HYROX, and the moments where those two parts of my life overlap. Each post opens where I originally published it.

Updated 19 Aug 2026 · NZ time

AI-Native Software Leadership

Building software, leading teams, and putting AI to work.

8 posts

  1. Instagram

    Last year I used 21.9B AI tokens across 44,981 agent messages. My first 31 days with Codex used 15.3B. The surprise was how uneven it was. I only coded hard one or two days most weeks. A few deep sessions carried most of the usage. I was h…

    11 Aug 2026

  2. X

    We run a lot of A/B tests at work. Most fail. That is fine. A winning test on an upgrade flow with almost no traffic can matter less than a small lift where users actually drop out. The trick is rarely the point. Finding the bottleneck is.

    11 Aug 2026

  3. LinkedIn

    The files were gone. The WSL virtual disk was still 545 GiB. This is the sanitized script that compacted it.

    10 Aug 2026

  4. LinkedIn

    It has become much easier to put a lot of AI tokens to work. Last year, I used 21.9 billion tokens across 44,981 agent messages in Cursor. In my first 31 days with Codex, I used 15.3 billion. My busiest day used 2.7 billion. That is 70% of…

    5 Aug 2026

  5. LinkedIn

    Lumin is the best place to work and get really good with AI. We will train you and also pay for your token habit Although I wouldn’t mind a 2026 Mustang Max Ferguson

    23 Jul 2026

  6. LinkedIn

    When I was learning to code, I had a habit. I would get something working, then stop and hunt for a cleaner way to do the same job. In Python that often meant swapping a loop for a map. Nothing made me do it. The code already ran. I rewrot…

    8 Jul 2026

  7. LinkedIn

    Last year I gave myself one rule. I would not write code by hand. Whatever I built, I built with AI. The rule fit in one sentence. Keeping it was the hard part. For months the work was slow. The old way would have been faster right then, a…

    7 Jul 2026

  8. LinkedIn

    The first thing my AI does each morning is read my Slack and Notion and build my to-do list, sorted against our OKRs. Dull work. Work I already did by hand. That is the whole point. I point AI at work I already understand. A second one rea…

    2 Jul 2026

Training to Compete

The work, setbacks, and decisions behind the HYROX build.

2 posts

  1. Threads

    When I was in a university athlete programme, I asked my trainer about protein. I had already trained on structured programmes for about 10 years. Some of the athletes competed internationally. I expected a detailed answer. He said most pe…

    11 Aug 2026

  2. LinkedIn

    I thought I was training 8 to 10 hours a week for HYROX. The logs said four. Eight to ten was the plan. I had only hit 10 hours once in the last two or three months. Most weeks were closer to 6 to 8. After an injury in July, the last month…

    11 Aug 2026

The Crossover

Real moments where software leadership and training overlap.

4 posts

  1. LinkedIn

    The hard part of leadership is knowing what I fall back on when a decision gets messy. Watching the HYROX World Champs made that obvious. Some athletes had a great race. Some fell apart. The ones who struggled mostly had the same problem:…

    6 Jul 2026

  2. LinkedIn

    I set a HYROX training plan a few weeks ago. Run these days, lift those, easy work between. Then I stopped thinking about it and just followed it. A few weeks in, the sessions hold. I do not wake up motivated most mornings. The plan carrie…

    5 Jul 2026

  3. LinkedIn

    I pulled my hamstring a few days ago, mid training block. So I eased off, which I had not planned to do. The forced rest gave me room to look at the last few months instead of just the next session. Day to day, none of it feels like progre…

    4 Jul 2026

  4. LinkedIn

    For a couple of weeks before I picked up an injury, my hamstrings were tight every session. Not sore. Just tight. I read it as stiffness and kept training. That tightness was the warning. The muscle was overloaded, so my body clamped down…

    3 Jul 2026

Uncategorised

Published posts that have not been assigned a pillar yet.

54 posts

  1. Threads

    I trust an AI workflow more when the work gets a second pass. After the first agent finishes, I give another agent the output and a clear standard to check it against.

    18 Aug 2026

  2. Threads

    The phone has become where I check in on work already running. I start a task, leave it running, then return to see the result. I probably use Codex more there than on my computer.

    18 Aug 2026

  3. LinkedIn

    Unsurprisingly, AI adoption did not lead to mass unemployment

    18 Aug 2026

  4. Threads

    I am trying to measure my content work without pretending the numbers know more than they do. Hours spent tell me very little. Posts published count the reps, but not the quality. At this scale, views are noisy. For now, I can measure whet…

    17 Aug 2026

  5. X

    Before difficult work or training, I have started replacing "this will be hard" with "this will be fun." It puts me in a better frame before the hard part starts.

    17 Aug 2026

  6. Threads

    I had put my training at close to ten hours a week in my head. The logs mostly showed four to six. The tracking works for me because it happens in the background.

    17 Aug 2026

  7. X

    I prefer counting work done to time spent on a task. Writing a number of posts feels more motivating than staring at a screen for an hour. Time expands for me. I stare at a screen. Counting reps or work done does not measure quality. Neith…

    17 Aug 2026

  8. Threads

    A feature used again and again can be good news. It can also mean someone is stuck in the workflow. The count does not settle it. I still need to know what they were trying to do.

    17 Aug 2026

  9. X

    Background tracking gave me a number I would not have chosen. I thought I was training close to ten hours a week. The logs mostly showed four to six. https://t.co/1uEOiHlJsp

    17 Aug 2026

  10. Threads

    I gained and lost about a kilogram in a day. It was unlikely to be a kilogram of fat. That is the annoying thing about noisy metrics. The number is real, but its explanation is not inside it. Revenue can behave the same way. A movement can…

    17 Aug 2026

  11. X

    Customer feedback can break an assumption I was carrying. The events did not change. My explanation did. That is why I treat analytics as a prompt to ask what the customer was trying to do.

    17 Aug 2026

  12. Threads

    I am bad at judging a run from inside the run. A session can feel awful while the metrics are good. An easy one can look worse than I expected. I do not measure because I enjoy structure. I measure because my memory and mood are not very r…

    17 Aug 2026

  13. X

    When I assess AI risk for a software business, I split it in two. Could the customer move the task to an LLM? Could AI change how they find the product? Those are different threats. They need different answers.

    17 Aug 2026

  14. LinkedIn

    Opening Codex on my phone took about five minutes, when it loaded at all. I had more than 6 GB of local chat history. I think the mobile app was trying to load the whole backlog. After I archived the old chats, it took about 20 seconds on…

    17 Aug 2026

  15. Threads

    I avoided programming papers at university because I thought I was not logical enough. Eventually I tried programming. It was fun. I got kind of good at it. That assumption had been limiting me.

    16 Aug 2026

  16. X

    I expected structured strength work to disrupt my running. Across 37 Apple Watch VO2 max estimates from 1 June to 15 August, the trend kept rising through eight logged strength sessions. They are estimates, but the disruption I expected is…

    16 Aug 2026

  17. Threads

    Joe and I were talking about athlete-first training. Average advice gets me to a starting point. It does not tell me what fits the person in front of me. I need to account for the risk before I bend a rule in training or business.

    16 Aug 2026

  18. X

    The average rule can be a useful starting point. It may still be wrong for the athlete or business in front of me. When I break it, I need to understand the risk I am taking.

    16 Aug 2026

  19. Threads

    I have four Gmail accounts that open email in different ways, even though I never chose different settings. My original Instagram account showed no ads for ten years. A new account showed an ad. I suspect the old account was in a holdout.…

    16 Aug 2026

  20. X

    I asked a trainer in my university athlete programme about protein. He said most people would improve by turning up, lifting and going home. So in this case, the basic session mattered more than detailed optimisation.

    16 Aug 2026

  21. Threads

    I track food without weighing every ingredient. It is not exact, but it is enough to show which meals carry more calories or fat than I thought. I would quit if perfect data were the price of useful data.

    16 Aug 2026

  22. X

    I thought I was not logical enough for programming, so I avoided the papers. Then I tried it. It was fun, and I got kind of good at it.

    16 Aug 2026

  23. Threads

    I remembered my running improving in four or five breakthroughs. The chart looks almost boring. It rises steadily across messy weeks, an injury, and the start of strength work. I seem to remember the dramatic moments and miss the quiet acc…

    16 Aug 2026

  24. X

    Repeated tool use is an observation, not an answer. It might mean a feature is useful. It might mean someone is trying to get past it. Understanding the intent matters more than celebrating the count.

    16 Aug 2026

  25. Threads

    I've started replacing "this will be hard" with "this will be fun." It's a cliche, I know. But I perform better when I bring a positive frame to difficult work and training. Sometimes the pain cave is a fun place to be.

    16 Aug 2026

  26. Threads

    The numbers are small. LinkedIn moved from 1,138 to 1,145. X stayed at 52. Threads and Instagram are both at 0. I am fine with that. I am building the habit first and using the reps to test different kinds of content. I expect plenty of po…

    16 Aug 2026

  27. X

    Early follower counts: LinkedIn: 1,138 to 1,145 X: 52 to 52 Threads: 0 Instagram: 0 My focus now is building the publishing habit and testing different kinds of real content. Once I have enough signal, I will do more of what works.

    16 Aug 2026

  28. Threads

    We run a pretty comprehensive A/B testing program at Lumin. Some tests win. Some lose. Most fail. The tempting bit is the clean story after a win. A button changes colour. A number moves. I care more about the question before it: where are…

    16 Aug 2026

  29. X

    I measure lots of things because I am bad at judging my own performance. A run can feel bad while the metrics are high. Or it can feel easy while the metrics say otherwise. I do not measure because I enjoy structure. I measure because it h…

    16 Aug 2026

  30. Threads

    I remember how hard the first podcast episode at Lumin felt. It was new, awkward, and probably not very good. We are seven or eight episodes in now. It feels much easier. I cannot measure the quality as neatly as a run. I just know the nex…

    16 Aug 2026

  31. X

    First time doing something is always the hardest and gives the worst result The first podcast episode was the hardest one I have done. It was probably the worst too. 7 or 8 episodes later, it feels much easier

    16 Aug 2026

  32. Threads

    After a bad week, I can find it hard to commit to doing it again next week. After a good week, I want to add more training and more work. I am trying to catch both moods before they plan the next week for me.

    16 Aug 2026

  33. X

    A bad week makes me question the plan. A good week makes me want to add more to it. Neither feeling is especially useful. I'm trying to let the next week look like the plan, not a reaction to the last one.

    16 Aug 2026

  34. LinkedIn

    I am testing a publishing routine across LinkedIn, X, Threads and Instagram. The early results are modest. From 4 to 11 August, LinkedIn moved from 1,138 to 1,145 followers. X stayed at 52. Threads and Instagram are both at 0. I am fine wi…

    16 Aug 2026

  35. X

    I get weak answers from an LLM for the same reason I get weak business advice: missing context. A broad claim like "SaaS is dead" says little about one company. I need to know how its customers find it, what job they do, and which behaviou…

    15 Aug 2026

  36. X

    Product analytics tells me what someone did. The hard part is working out what they meant to do. Repeated use may be engagement. It can also mean a feature got in the way. AI agents and people both struggle here. The intent behind the beha…

    15 Aug 2026

  37. X

    I thought I was training 8 to 10 hours a week. My logs told a messier story. Across 12 complete weeks, I hit that range once. Two July weeks fell below four hours. I track the big things because my memory is a generous accountant. https://…

    15 Aug 2026

  38. LinkedIn

    Lumin is somewhere you can do your life’s best work We also have very generous ai usage and support for anyone who wants to get really good with new ways of working

    15 Aug 2026

  39. X

    I saw my first Instagram ad this week after ten years on the app. I made a new account because I heard Instagram had ads and wanted to see some. My old account seems to be in a holdout group, giving Meta a baseline for how ads affect engag…

    15 Aug 2026

  40. Threads

    I am happy to let AI build my task list each morning. I know what good looks like, and I can catch it when a passing Slack mention turns into work I never agreed to own. Visual design is harder. Sometimes I know I dislike the result but ca…

    15 Aug 2026

  41. X

    My weight dropped 1.4 kg between 9 and 10 June. Losing 1 kg of fat takes roughly a 7,700 kcal deficit. I had not done that. The scale had moved faster than fat can. Revenue is noisy too. I need the underlying mechanics to tell if a change…

    15 Aug 2026

  42. X

    I hand AI more work when I know the job well enough to check it. It's too hard to verify and trust if I don't know the domain. Task lists: I can trace bad calls back to Slack. Visual design: I often know I dislike the result, but not why.…

    15 Aug 2026

  43. X

    I have four Gmail accounts. They are all different. One opens email in a preview. Another opens it full screen. I never chose those settings. It is a glimpse of A/B testing at scale: keep people in stable cohorts, then let them change the…

    15 Aug 2026

  44. LinkedIn

    I let AI build my task list each morning. I keep it on a short leash with visual design. I know the task-list job well enough to check the result. I can trace each task back to a Slack message. I can spot when the tool turns a passing ment…

    15 Aug 2026

  45. Threads

    I keep seeing "SaaS is dead." I still cannot work out what decision that sentence is meant to help me make. If customers find a product through search, AI may change distribution before it changes the task inside the product. I need the bo…

    14 Aug 2026

  46. X

    HYROX plan: I set it once and follow it for weeks. Work plan: I can rethink it by Thursday. Sometimes I adapt because work changes faster. Sometimes I keep my options open before one plan has enough time to teach me anything.

    14 Aug 2026

  47. LinkedIn

    I followed my HYROX plan for weeks without renegotiating it every morning. At work, I do the opposite. When I want to improve something or push a piece of work through, I keep adjusting the plan. I react to the week. By Thursday I can be t…

    14 Aug 2026

  48. Threads

    For two weeks before I hurt my hamstring, it felt tight every session. I kept reading it as stiffness and trained through it. In hindsight, that was the warning. I am very good at understanding a signal once it has become an injury. I stil…

    13 Aug 2026

  49. X

    I learned to code by getting something working, then rewriting it for fun. The useful part was the feedback loop. Code runs or breaks. I knew quickly whether the next version was better. When I learn something new now, I first look for whe…

    13 Aug 2026

  50. LinkedIn

    I gave myself one rule last year: I would not write code by hand. At first, it made me slower. The old way was right there, and I knew it worked. The new loop had quick feedback. The code ran or it broke. I could see where the prompt, cont…

    13 Aug 2026

  51. Threads

    Most mornings I use AI to read Slack and build my task list. The clear bits are easy: work assigned to me and things I said I would do. Then there is Slack's grey area. A mention is not always an assignment. A useful thread does not always…

    12 Aug 2026

  52. Instagram

    I am training for sub-60 Pro HYROX alongside a full-time software job. My plan said 8 to 10 training hours a week. The log says I got there once in the last 13 weeks. The latest complete week was 4.5 hours. July included an injury, so the…

    12 Aug 2026

  53. X

    I made an AI skill to prepare for meetings from Slack. The bit I care about most is where the available context runs out. It marks the gap instead of guessing. I still read the sources and decide what matters in the room. https://t.co/Mlg6…

    12 Aug 2026

  54. LinkedIn

    AI-native product leadership and the public pursuit of a sub-60 Pro HYROX.

    12 Aug 2026