and Open Source 🐍 Creator of Flask, Jinja2 and many other widely-used OSS projects 🔧 Decade at Sentry - first engineer, had hands in a lot of things 🎤 Conference Speaker - sharing knowledge about engineering and life 🤖 AI Programming Explorer - currently diving deep into agentic development About Me
actively participate in the coding process: 🤖 AI-Powered Assistance - Intelligent agents that understand context and intent 🔄 Interactive Development - Real-time collaboration between human and AI 🎯 Task-Oriented - Agents that can complete complex, multi-step programming tasks 🧠 Context Awareness - Understanding of codebase structure, patterns, and conventions Instead of just suggesting code, agents actively participate in planning, implementing, and refining solutions. What is Agentic Coding?
models trained specifically for tool usage Claude Code - Demonstrated what’s possible with AI-powered development Explosive Growth - Everyone is now building their own Claude Code-inspired agents Claude Max Subscription - a flat fee of $100/$200 per month Anthropic went all in on programming agents and we all followed. Why is this a thing all the sudden?
on Claude Code with --dangerously-skip-permissions , aka yolo mode the role of the editor - with Claude Code you review, you program much less a stepping stone - long term maybe background agents are the destination, we are not there How does it compare to Cursor’s agents and background agents? Agents: don’t go for as long as Claude Code is Background agents: are a bit too separate (in the cloud), make it harder to optimize and review ` ` Cursor vs Claude Code
AI coding assistant platform OpenAI’s Codex - The original AI coding model Gemini CLI - Google’s command-line AI assistant and many more… What Tools Exist Today?
ask it to setup and debug CI for me I ask it to configure my machine for me I ask it to create and use small tools for me I ask it to browse the internet for me I used Claude Code to create this very presentation Claude Code has become my intelligent command line that understands context and can perform complex multi-step operations. I use Claude Code as my Terminal
Python, … Prefer low ecosystem churn - Stable foundations work best for agent-assisted development Long function names beat namespaces - agents are good, but don’t make them depend on the LSP For existing code bases, start simple and find ways to wedge yourself in: Invest into your dev environment! Centralize logging and observability 1. Language and Ecosystem Choice
for agent iteration Prioritize logging and observability - Agents need to understand what’s happening Protect tools against potential misuse - Defensive programming Enable quick tool creation and execution - Reduce friction Just tell Claude where it should place bespoke tools! 2. Tool and Workflow Principles
is useful for things like playwright (remote control browsers) Too much MCP causes faster context rot and rarely works better than command line tools For coding agents, I encourage not to use MCP I get better results creating bespoke tools and run them than to use MCP tools. 2a. MCP
it tools to effectively navigate the code base Provide ways to tail the last 20 lines of combined logs A CLAUDE.md that’s too long is not helpful Consider using sub tasks / sub agents to conserve context When you need to /compact you lost ` ` ` ` 3. Conserve Context
get confused if the change broke the environment of it came pre-broken Tools that provide noisy output negatively contribute to context rot Backtracking even when corrected rots the context badly Cool shit: test caching in go Uncool shit: rust’s test runner does not error when a null-selection was made (accidentally assumes stuff passed) 4. Enable Forward Progress
logs + everything else patch console.log in the browser -> forward to server via API call All output streams flow to a single, tailable log file Give it a way to log out SQL too! Provide a make tail-logs command for easy access ` ` ` ` # Example make tail-logs # Shows last 50 lines, follows new output Tip 1: Unified Logging
processes work together Explain startup order and dependencies Provide clear process status commands Make it obvious which processes need to be running Don’t make the agent guess how your distributed system works. Tip 2: Multi-Process Guidance
for synchronization points Provide health check endpoints Create "wait-for-ready" commands Make async operations observable Tell the agent it can do that, and it will happily write sync points into the code to debug. from .agentsupport import reached reached(point="event-preprocessing-done") make await POINT=event-preprocessing-done # Block until reached or timeout Tip 3: Synchronization Points
Sometimes your shit only breaks in CI. Give it access to GitHub! Use gh CLI for pull requests and issues Let it create branches and PRs directly, let it ` ` Tip 4: CI Debugging Access
needs to summarize Why? Because Gemini has more context (but it sucks at tooling) * When analyzing large codebases or multiple files that might exceed context limits, use the Gemini CLI with its massive context window. * Use gemini -p when: - Analyzing entire codebases or large directories - Comparing multiple large files - Need to understand project-wide patterns or architecture - Checking for the presence of certain coding patterns across the entire codebase Examples: gemini -p "@src/main.py Explain this file's purpose and structure" gemini -p "@src/ Summarize the architecture of this codebase" gemini -p "@src/ Are there any React hooks that handle WebSocket connections? List them with file paths" Use Agent 1 with Agent 2
download it and put into my presentation: I want a new slide at the end that embeds the video from this page. we might have to download it first: https://www.reddit.com/r/cursor/comments/1lmhm5x/idk_how_you_guys_are_using_claude_code_but_im/ Scraped Videos
Have a profile that’s signed in It will gladly do the laborous task for you from finding price, to writing description. Just put the pictures somewhere and tell it to do the rest Sell Shit on The Internet