Hi, I'm Josh. I'm a Principal Engineer at Journey.
The Tech Lead Trap March 3, 2026
Inheriting a Struggling Team February 27, 2026
Giving Hard Feedback February 24, 2026
Making Technical Decisions Stick February 20, 2026
Scope Creep and How to Fight It February 17, 2026
Sentry AI Tracing with Laravel's AI SDK February 14, 2026
When to Say No February 13, 2026
Managing Up February 10, 2026
Working with Designers February 6, 2026
Working with Product Managers February 3, 2026
Running Effective 1:1s as a Tech Lead January 30, 2026
Balancing Coding and Leading January 27, 2026
Your First 90 Days as Tech Lead January 23, 2026
What is a Tech Lead? January 20, 2026
Serving Markdown for AI Agents January 19, 2026
Building AI Agents with the Claude Agent SDK January 13, 2026
What is an AI Agent? January 8, 2026
Building Production-Grade Real-Time AI Voice Conversations January 6, 2026
Sentry AI Tracing for OpenAI in Laravel January 2, 2026
Eval Testing LLMs in PHPUnit December 24, 2025
Using Hill Charts for Progress Tracking December 11, 2025
Four Questions I Answer Every Week November 28, 2025
The Local Optimisation Trap October 27, 2025
Judgement October 22, 2025
Why Less Is More September 17, 2025
Shaping Team Boundaries for Flow September 1, 2025
Navigating Flight Levels August 25, 2025
Building an AI Application: Lessons from Lenny's Vault August 22, 2025
Liability Mapping your Tech Debt August 18, 2025
Getting in the Room at a Remote Company August 11, 2025
Four Pillars of Engineering Leadership August 9, 2025
Estimation, Pragmatism, and the Real World July 28, 2025
Making Impossible States Impossible July 21, 2025
Cycle Time Isn't Your North Star July 14, 2025
Culture Follows Incentives July 11, 2025
Product Engineers July 7, 2025
Build vs Buy vs Run July 2, 2025
Thoughts on GitHub Copilot July 1, 2025
Reconsidering Tech Debt June 30, 2025
Engineering Toil - Seeing the Unseen Work June 23, 2025
Choose Boring Tech June 19, 2025
From Scepticism to Collaboration with LLMs June 17, 2025
Don't Improve Coordination, Eliminate It June 11, 2025
Optimising teams through the Theory of Constraints June 9, 2025
Improve LLM prompts using LLMs June 2, 2025
Doing Leveraged Work May 31, 2025
Finding Your Place: Pioneers, Settlers, and Town Planners February 12, 2025
Stuff I learned at cinch February 19, 2024
Notes on An Elegant Puzzle January 24, 2021
Notes on A Manager's Path January 10, 2021
Managing Software Projects December 1, 2020
How to quickly plan and estimate an MVP September 19, 2020
Using Terraform to build Twilio TaskRouter Infrastructure May 3, 2020
Elm JSON Decoders September 17, 2017
Using elm-form-validate July 3, 2017
Global query parameters with Ember June 10, 2017
Using the JSON API spec in a Laravel API March 1, 2016
Immutable and namespaced CSS made easy February 2, 2016
React Native & continuous deployment November 3, 2015
Lessons learned from building an app with React.js October 12, 2015