Modern AI systems have reached a level of internal complexity where manual human debugging is no longer tractable. When an automated SRE tool like incident.io runs an investigation, it triggers hundreds of telemetry queries across logs, metrics, and traces. Founding engineer Lawrence Jones argues that when these systems fail, the resulting trace data is too vast for a human to parse. The solution isn't better UIs, but building internal tools specifically designed for Claude Code and other coding agents. CLI tools bridge the agent context gap Evals are essentially unit tests for prompts. At incident.io, these are stored in YAML files alongside Go code. However, as an AI system matures, these files often grow into multi-megabyte behemoths that exceed the context window of most LLMs. To solve this, the team built a specialized CLI called `eval-tool`. This allows a coding agent to query, edit, and append test cases without needing to ingest the entire file. This enables a robust red-green development cycle where an agent can programmatically verify that a prompt fix doesn't break existing behaviors. File systems outperform custom debug UIs While traditional dashboards help humans visualize traces, they are often useless for AI agents. The team discovered a massive unlock by serializing complex UI debugging views into downloadable, self-documenting file systems. By dropping these directories into a sandbox with Claude Code, the agent can use standard tools like `grep` to navigate the hierarchy of prompts and tool calls. ```bash Example agent workflow for debugging a failed trace $ eval-tool get-case --id "incident-123" $ claude-code "Analyze why the RCA in ./traces/123/ failed. Fix the prompt in ./prompts/analysis.go" ``` Parallel analysis at fleet scale When tracking systemic performance across hundreds of customer accounts, individual debugging isn't enough. The team utilizes a "scrapbook" repository that runs 25 agents in parallel. Each agent performs a deep-dive analysis on a single investigation, storing its findings in Markdown files. A secondary clustering stage then aggregates these findings to identify cohort-level failure patterns. This structured pipeline transforms raw telemetry into actionable engineering tasks, allowing developers to focus on architectural fixes rather than data mining. Tips for building agent-friendly internals To replicate this success, prioritize plain-text formats over proprietary UIs. Use ASCII representations for complex traces to make them readable for LLMs. Finally, treat your internal runbooks as code; by defining analysis steps in structured Markdown, you provide the necessary guardrails for agents to perform repeatable, reliable work.
Go
Products
Apr 2019 • 1 videos
High activity month for Go. Chris Williamson among the most active voices, with 1 videos across 1 sources.
Jun 2021 • 1 videos
High activity month for Go. ArjanCodes among the most active voices, with 1 videos across 1 sources.
Nov 2024 • 1 videos
High activity month for Go. ArjanCodes among the most active voices, with 1 videos across 1 sources.
Aug 2025 • 1 videos
High activity month for Go. Laravel among the most active voices, with 1 videos across 1 sources.
Oct 2025 • 1 videos
High activity month for Go. Laravel among the most active voices, with 1 videos across 1 sources.
Dec 2025 • 1 videos
High activity month for Go. Laravel among the most active voices, with 1 videos across 1 sources.
Feb 2026 • 1 videos
High activity month for Go. Laravel Daily among the most active voices, with 1 videos across 1 sources.
May 2026 • 1 videos
High activity month for Go. AI Engineer among the most active voices, with 1 videos across 1 sources.
- May 17, 2026
- Feb 21, 2026
- Dec 8, 2025
- Oct 11, 2025
- Aug 21, 2025
Overview Choosing an interface for service communication defines how your distributed system handles data, latency, and scaling. While REST remains the industry standard for its simplicity and human-readable JSON payloads, gRPC introduces a service-oriented approach designed for high-performance internal communication. It moves away from resource-based entities and toward Remote Procedure Calls, allowing systems to execute functions across network boundaries as if they were local calls. Prerequisites To implement these patterns, you should understand HTTP methods (GET, POST, etc.) and basic API design. Familiarity with Python or Go is necessary for the server-side implementation, while a grasp of JavaScript helps in understanding client-side proxy requirements. Key Libraries & Tools - Protocol Buffers: The Interface Description Language (IDL) used by gRPC for defining service contracts. - protoc: The core compiler that generates language-specific code from `.proto` files. - grpcio: The standard Python library for implementing gRPC servers and clients. - FastAPI: A high-performance Python framework often used for building REST interfaces. - SQLAlchemy: An ORM used here to manage the SQLite database backend. Code Walkthrough: Defining the Contract In gRPC, the source of truth is the `.proto` file. This replaces the loose documentation of REST with a strict, compiled contract. ```protobuf syntax = "proto3"; service AnalyticsService { rpc LogView (LogViewRequest) returns (LogViewResponse) {} } message LogViewRequest { string video_name = 1; } message LogViewResponse { bool success = 1; } ``` This snippet defines an `AnalyticsService` with a single method, `LogView`. Unlike REST, where you might send a POST request to `/logs`, here you call a specific procedure. The numbers assigned to fields (e.g., `= 1`) are field tags used in the binary encoding, making the payload significantly smaller and faster to parse than JSON. To turn this into usable Python code, you use the protoc compiler: ```bash python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. analytics.proto ``` Syntax Notes and Conventions gRPC enforces strict typing and encapsulation. However, the generated Python code often lacks modern type annotations, which can frustrate developers accustomed to FastAPI's type-hinting strengths. REST relies on HTTP verbs to define intent, while gRPC uses named procedures, promoting a functional, service-oriented mindset. Practical Examples - **Microservices**: Use gRPC for low-latency communication between internal services written in different languages. - **Real-time Data**: gRPC supports bidirectional streaming, making it ideal for IoT or chat applications where REST long-polling would be inefficient. Tips & Gotchas Browser support is a major hurdle. Browsers currently favor HTTP/1.1, but gRPC requires HTTP/2. If you use gRPC for web clients, you must implement a proxy like Envoy or use the grpc-web library. For external public APIs, stick to REST; the human-readability and ease of testing with tools like `curl` outweigh the marginal performance gains of binary protocols in most public-facing scenarios.
Nov 29, 2024Refocusing on Pythonic Design Software architecture remains a language-agnostic discipline, yet developer engagement often hinges on the familiarity of the syntax used to illustrate it. A pivot toward Python as the primary vehicle for teaching design patterns reflects a commitment to where the audience actually lives. While languages like TypeScript or Go offer unique perspectives on encapsulation and structure, the data shows that Python provides the most effective bridge for learners. This isn't a narrowing of scope, but a consolidation of impact. Future lessons will still draw comparisons across the ecosystem, but the core implementation will stay firmly rooted in Python to ensure maximum accessibility. The Professional Toolchain: Pylint, Mypy, and Black Code quality in an educational context isn't just about logic; it's about setting a standard that students can bring into production environments. To achieve this, a rigorous toolchain is now mandatory. Pylint serves as the primary defense against non-standard style and potential bugs. By integrating Mypy, the content moves toward a more robust, type-checked approach, eliminating common errors in variable handling. Finally, Black brings an opinionated, uncompromising formatting style similar to the Prettier tool in the JavaScript world. This ensures that every code snippet is clean, readable, and ready for real-world application without style-related friction. Community-Driven Code Review Even the most experienced developers benefit from an extra pair of eyes. Moving forward, code examples will undergo a peer-review process involving experts from the Discord community before they ever reach the screen. This human-centric approach complements the automated tools, ensuring that educational examples are not only syntactically correct but also architecturally sound. This collaborative layer aims to push the quality of instruction to a professional level, mirroring the open-source contribution workflows used in industry-leading projects. Expanding the Dialogue via Podcasts A new podcast initiative will bridge the gap between academic design principles and their industrial application. By interviewing experts like Siebert Siebel from Blender, the conversation moves into the messy, high-stakes world of large-scale open-source software. These discussions will explore how design decisions made years ago impact the maintainability of massive tools today. This multi-format approach—combining deep-dive videos with long-form audio—provides a holistic view of what it truly means to be a software architect in the modern era.
Jun 4, 2021The hum of a Newcastle coffee shop often serves as the backdrop for the most profound, albeit chaotic, realizations about how we navigate our modern world. Dr. Elena Santos here, and I want to take you on a journey through a conversation that recently unfolded between friends Chris Williamson, Jonny, and Yusef. It started with simple tales of travel and ended in a deep exploration of the human condition, from our obsession with optimization to the terrifying efficiency of artificial intelligence. Life, as they reminded me, is rarely a straight line. It is a series of zig-zags, mispronounced words at a Greggs counter, and the occasional realization that we are trying to solve internal problems with external bandages. The Roman Mirror: Presence vs. Digital Distraction When Chris landed in Rome, he didn't just find ancient ruins and exceptional espresso; he found a mirror reflecting our modern anxiety. He made a radical choice to go phone-free, attempting to navigate the labyrinthine streets of Italy like an old-school traveler. But the rising action of his story reveals our deep-seated reliance on digital crutches. Without a GPS, he immediately walked the wrong direction out of the train station. It’s a perfect metaphor for the modern psyche: we have outsourced our intuition to an algorithm. In a small cafe near St. Peter's Basilica, Chris sat staring out the window, mesmerized by the history. He was so detached from the physical moment that he spent several minutes stirring his coffee until he realized he had sloshed the entire espresso across the counter and onto several sandwiches. The Italian owner’s reaction—a silent, head-in-hands gesture of "Italian fury"—captures the essence of the clash between our distracted minds and the vibrant, physical reality of the present. We are often so busy trying to capture the "vibe" or find the "right" direction that we miss the coffee spilling in front of us. This is the first step in resilience: acknowledging that we are often the ones creating our own mess by failing to be truly present. The Optimization Trap and the Search for Shortcuts As the conversation shifted back to the UK, a darker theme emerged: our culture’s desperate need for shortcuts. Whether it’s Yusef watching his brother struggle to find a halal, hot snack at Greggs or the broader discussion of the Big Pharma documentary Prescription Thugs, the pattern is clear. We want the result without the process. We want the heat of the pizza without the wait, and we want the mental clarity of a monk without the meditation. The climax of this realization hit when discussing the over-medication of children in America. We see ten-year-olds with five different diagnoses, on five different medications, effectively acting as chemical experiments. This is the ultimate "hacker" mindset gone wrong. Instead of investigating the environment, the diet, the sleep, or the family dynamics, we throw a pill at the symptom. In my practice, I call this "pouring fuel on a fire that is barely burning." We are trying to optimize systems that are fundamentally broken at the foundational level. You cannot "hack" your way out of a life that lacks basic stability, just as you cannot take a Xanax to solve the underlying anxiety of a flight if you haven't addressed why your mind perceives the journey as a threat in the first place. The Deep Work Dilemma: Moving Fast in the Wrong Direction There is a peculiar liberation in the realization that you cannot accelerate certain processes. The group touched upon Cal Newport's Deep Work and James Clear's Atomic Habits. These texts serve as a cold shower for the "productivity porn" enthusiasts. Many of us spend our time building complex spreadsheets or taking nootropics to feel productive, while actually avoiding the hard, focused work required to move the needle. Jonny shared a story about a man who followed him through a car park, a situation that felt like a looming threat. It turned out the man was just a fan who wanted to give him a protein bar. The frame shift was instantaneous. Our perception of reality is entirely dictated by the lens through which we view it. If we view productivity as a race, we will always feel behind. If we view it as a trajectory, as James Clear suggests, the anxiety of "not being there yet" vanishes. Complaining that you haven't arrived at your destination while you are still driving in the right direction is a form of mental self-sabotage. The lesson here is simple: stop trying to make the car go faster and just keep your hands on the wheel. The Rise of the Machine and the End of Intuition The most sobering part of the discussion revolved around the Netflix documentary Alphago. For years, the board game Go was considered the final frontier of human intuition. With more permutations than there are atoms in the universe, it was thought that a machine could never master it. Then came Alphago Zero, an AI that taught itself the game from scratch in four days and beat the world champion 100 to zero. This is the resolution of our current era: the machines are winning the game of logic and pattern recognition. If we try to compete with them on those grounds—by being more "efficient," more "optimized," or more "robotic"—we will lose. Our value lies in our "human-ness," our ability to spill coffee in Rome, to have a moral wrestling match over a sausage roll, and to feel the uncomfortable weight of an emotion without immediately reaching for a chemical exit. Resilience isn't about becoming an algorithm; it's about leaning into the beautifully messy, inefficient, and deeply felt experience of being alive. We must choose our trajectory with intention, even if we walk the wrong way out of the station at first.
Apr 8, 2019