#608 – January 12, 2025
You can’t practice it beforehand
Mistakes engineers make in large established codebases
7 minutes by Sean Goedecke
Sean discusses best practices for working with large, established codebases. He emphasizes that maintaining consistency with existing code patterns is crucial, even if they seem suboptimal. He argues that mastering work in large codebases is essential since they typically generate most of a company's value, and splitting them into smaller services requires deep understanding of the existing system.
Quality-first AI code generation to help busy devs write, test and review code
sponsored by Qodo
Qodo is a quality-first generative AI coding platform that helps developers write, test, and review code within IDE and Git. It offers automated code reviews, contextual suggestions, and comprehensive test generation, ensuring robust, reliable software. Seamless integration maintains high standards of code quality and integrity throughout development.
Canva Outage: A tale of saturation and resilience
16 minutes by Lorin Hochstein
In this article, Lorin explores how a deployment of new JavaScript assets triggered a major outage at Canva when a stale Cloudflare routing rule caused high latency for Asian users, resulting in 270,000+ simultaneous requests being synchronized.
Agents
41 minutes by Chip Huyen
Intelligent agents are considered by many to be the ultimate goal of AI. This article explores AI agents, defined as systems that can perceive their environment and act upon it using tools. The success of an agent depends on its tool inventory and its planning capabilities. Chip emphasizes that while agents represent a novel application of AI, they build upon established concepts like self-critique and chain-of-thought prompting, and their adoption is inevitable as tool access significantly enhances model capabilities.
How I program with LLMs
23 minutes by David Crawshaw
David talks about his experience using Large Language Models in daily coding work. He identifies three main ways he uses LLMs: autocomplete for routine typing, search for technical questions, and chat-driven programming for generating code drafts.
Levels of Defensiveness
8 minutes by Marc G. Gauthier
In this article Marc discusses the concept of defensive programming to achieve stable production systems. He uses a practical example of parsing time strings to demonstrate various defensive coding approaches, from basic error handling to more sophisticated strategies like logging, using default values, and data correction. The main goal is to prevent system crashes while maintaining visibility into potential issues through proper logging and monitoring.
And we'll wrap up with a bonus book today:
The Programmer's Brain by Felienne Hermans