Engineering Articles
Content about software engineering, and how to build maintainable teams and systems.
How to Debug Code You Didn’t Write (your AI did)
AI-generated code looks great in the diff and breaks on the first edge case. Here’s how to debug JavaScript you didn’t write without reverse-engineering someone else’s bad assumptions.Todd H. Gardner
February 26, 2026Who Watches the Vibe Coder?
AI is shipping JavaScript faster than humans can review it. And a lot of it is “looks fine to me” code that explodes in production. You can’t code review vibes, so you need production visibility.Todd H. Gardner
February 19, 2026AI Wrote Your Bugs, AI Will Fix Your Bugs
GitHub Copilot wrote it. ChatGPT reviewed it. And now TrackJS's AI Debugger will fix it. Welcome to 2025, where humans are just the middleware between AIs. Introducing the world's first Vibe Debugger for your vibe-coded JavaScript.Todd H. Gardner
September 10, 2025How to Monitor JavaScript Memory Leaks in Production
JavaScript memory leaks are like that friend who never leaves the party. While most advice says 'just use Chrome DevTools,' your users aren't debugging for you. Learn how to catch memory leaks in production using performance.memory (despite it being deprecated) and track real symptoms of memory b...Todd H. Gardner
July 22, 2025Hard-Won Lessons Building Maintainable Web Applications
15 hard-won lessons from 15 years building web apps: write as little JavaScript as possible, use progressive enhancement, monitor everything, and keep it simple. Most valuable apps are under 10,000 lines of code - complexity kills maintainability.Todd H. Gardner
October 06, 2020What is Developer Time Worth?
Developers often undervalue their time, saying "I could build that" about tools like TrackJS. With web developers earning $56-1500/hour, building your own monitoring tool costs $9,000+ in time for a worse version of a $100 product. Focus your precious 2,150 working weeks on creating real value, n...Todd H. Gardner
October 15, 20193 Tips to Reduce JavaScript Size
Three strategies to reduce JavaScript bloat: Use less JavaScript by extracting only needed code from libraries or using CSS-only solutions, load scripts conditionally per page with async bundling, and optimize delivery through combining files, enabling HTTP/2, and bundling external libraries via ...Todd H. Gardner
September 03, 2019How to Correctly Wrap a JavaScript Function
Master JavaScript function wrapping to add instrumentation or modify external libraries without changing source code. Handle arguments with apply(this, arguments), preserve function names and properties, use try/catch for error handling, and maintain the original function's arity for professional...Todd H. Gardner
August 27, 2019Separate Your Monitoring From Infrastructure
Separate your monitoring from your primary infrastructure to avoid dangerous blind spots. Cloud providers' internal monitoring fails when their infrastructure fails, leaving you debugging outages without visibility. TrackJS hosts on dedicated hardware separate from major cloud providers for true ...Todd H. Gardner
July 30, 2019When to Fix Your JavaScript Errors
Cut through web "background radiation" with strategic JavaScript error monitoring: ignore known noisy errors, set up targeted alerts (new/trending/rate/daily), focus on user impact and critical pages, track versions for releases, and use status filtering to manage bug workflows effectively.Todd H. Gardner
May 30, 2019Building TrackJS Filters: React without the SPA
TrackJS built React components within their existing server-rendered PJAX architecture using "dirty tricks" - mounting/unmounting components on page loads and creating a custom singleton FilterStore instead of Redux. They chose larger class components over micro-components and traditional CSS ove...Eric Brandes
May 21, 2019Site Search with JavaScript - Part 2
Learn to enhance client-side JavaScript search with intelligent snippets that show search terms in context and automatic highlighting on result pages. Uses simple DOM manipulation to create relevant 280-character previews and scroll users directly to highlighted matches without server-side code.Todd H. Gardner
March 31, 2019You Own Your Dependencies
The event-stream NPM malware incident exposes JavaScript's dependency crisis: 418 packages for a simple React app versus 40 for a massive .NET application. The culture of micropackages, automatic upgrades with ^ operators, and anonymous maintainers creates security nightmares compared to vendorin...Eric Brandes
December 05, 2018Moving to Mailgun
TrackJS switched from failing Mandrill to Mailgun after years of increasing email delivery problems. Key lessons: make failures visible through chat alerts, avoid abstractions until you need them, and sometimes big changes become unavoidable when dependencies deteriorate.Eric Brandes
October 09, 2018Thriving Small
Small teams outperform large ones through better communication, shared incentives, and forced prioritization. Growing employees creates expensive overhead and specialized silos. Success isn't about headcount - it's about building sustainable, profitable products with minimal maintenance needs.Todd H. Gardner
September 25, 2018Adding Value to Software Development
Real business value comes from choosing boring, proven technology over exciting new frameworks. The best code is no code - sometimes waiting solves problems automatically. Every line written has maintenance costs, so prioritize shipping features over perfect abstractions and endless refactoring.Eric Brandes
September 13, 2018The Siren Song of Component Libraries
UI component libraries sound perfect for large teams but become nightmares of competing requirements, compatibility issues, and feature bloat. Skip the complexity - use documented style guides with colors and fonts instead. Developers love spending 40 hours on "fun" work to avoid 20 minutes of bo...Eric Brandes
August 21, 2018Impermanent UIs: the Fleeting Frontend
Frontend development has become needlessly complex with frameworks requiring massive toolchains for apps destined to be rewritten every 2-3 years. Instead of building cathedrals, focus on speed-to-market with simpler solutions that deliver value quickly.Eric Brandes
August 07, 2018Backwards Compatibility
Eric Brandes argues modern JavaScript frameworks abandon backwards compatibility unlike the web's foundational success. While jQuery maintains stable APIs for years, Angular breaks compatibility every 6 months, creating developer fatigue and wasted money on constant upgrades.Eric Brandes
July 23, 2018Learning from GitLab: Making Production Obvious
Learn from GitLab's outage by making production environments visually obvious. TrackJS shares Ansible snippets to turn Linux command prompts and Windows UI chrome bright red in production, preventing dangerous "wrong server" mistakes.Jordan Griffin
March 27, 2017Highly-Effective JavaScript Developers by Jon Mills
Jonathan Mills delivers practical JavaScript effectiveness tips at NDC Oslo, covering debugging, testing, and maintainable code practices. Perfect for developers wanting to level up their JS skills, whether it's their primary language or not.Todd H. Gardner
July 12, 2016Monitoring for Unhandled Promise Rejections
Unhandled promise rejections silently break applications without triggering traditional error handlers. Learn how modern browsers now provide standardized events to catch these elusive errors and why proper promise error handling is crucial for robust applications.Eric Brandes
June 20, 2016Fast and Resilient Web Apps by Ilya Grigorik
Ilya Grigorik's Google I/O talk reveals shocking mobile Chrome network failure statistics, emphasizing the critical need for resilient web applications. Essential viewing for understanding real-world performance challenges and planning better user experiences when networks fail.Todd H. Gardner
May 25, 2016The Dangers of Loading External JavaScript
External JavaScript loading can fail catastrophically, breaking functionality and user experience. Learn why mobile networks cause third-party script failures and discover simple defensive coding techniques to gracefully handle missing dependencies and protect your applications.Todd H. Gardner
April 25, 2016Outages and Our Way Forward
TrackJS has experienced unacceptable infrastructure problems due to Azure instability. We're migrating to dedicated hardware with automated infrastructure to improve availability and performance in the coming weeks.Todd H. Gardner
April 29, 2015Todd Gardner from TrackJS on STL Code Cast Show
TrackJS co-founder Todd Gardner joins the STL Code Cast to discuss JavaScript error monitoring, the evolution of web development, native app trends, and surprisingly deep thoughts on building with Legos.Todd H. Gardner
October 06, 2014