Using DSPy to evaluate and improve Datasette Agent's SQL system prompts

Simon Willison · 2026-07-02 · 2 min read

Willison used DSPy to systematically evaluate and optimize the system prompts in Datasette Agent's SQL query feature by running DSPy agents against real tool implementations with a gold-standard test dataset, uncovering concrete prompt flaws like schema listings that omit column names causing the LLM to guess column names and fall into error-retry loops. This matters because it demonstrates a practical, automated eval harness for prompt engineering that goes beyond vibe-checking — using measurable metrics against live tool execution to find and fix specific failure modes in production AI agent prompts.

Understand to participate

Simon Willison · 2026-07-02 · 2 min read

Geoffrey Litt argues that when collaborating with AI coding agents, you must maintain genuine understanding of the code being generated rather than blindly accepting changes, because cognitive drift from how your codebase actually works limits your ability to guide the agent effectively on future decisions. For a senior engineer, this matters because it reframes a growing practical risk: the more you delegate to agents without staying mentally current, the less capable you become of steering the work, which quietly erodes the judgment and fluency that make senior-level contribution valuable in the first place.

The #dangerous #AI #bugis the one that passesthe test #agenticengineering #software

Agentic Engineering · 2026-07-01

This video emphasizes that a dangerous AI bug is one that passes tests, highlighting a critical issue in Agentic Engineering where AI-generated code, while compilable and test-passing, can be fundamentally flawed in ways an experienced engineer would immediately recognize. This shifts the engineering skill from writing code to safeguarding systems from plausible nonsense, increasing the cost of lacking fundamental understanding. The core message is that AI, particularly agentic systems, elevates the importance of deep engineering knowledge and critical thinking over rote coding, as it can produce highly convincing yet incorrect solutions.

Knowledge Priming

Martin Fowler · 2026-02-24 · 13 min read

TLDR: AI coding assistants fail not because they lack capability, but because they lack project context — they default to "average internet code" that's syntactically correct but wrong for your codebase. The fix is to treat project context (architecture decisions, conventions, version-specific patterns, code examples) as versioned infrastructure files that you load into the AI's context window before every session. This manual RAG approach works mechanistically: high-signal project-specific tokens outcompete generic training-data patterns in the attention mechanism, steering generation toward code that actually fits.

Bliki: Agentic Email

Martin Fowler · 2026-02-17 · 3 min read

TLDR: Giving an LLM agent full access to your email is dangerous right now because it hits all three of Simon Willison's "Lethal Trifecta" conditions simultaneously: untrusted input, sensitive data, and external communication capability — making it trivially exploitable via prompt injection. A safer but limited alternative is read-only agent access with no internet connectivity, forcing human review of all drafted actions. The absence of publicized breaches so far shouldn't be mistaken for safety.

Is It Time To Version Observability? (Signs Point To Yes)

Charity Majors · 2024-08-07 · 18 min read

TLDR: The "three pillars" framing (metrics, logs, traces) that dominates the industry is fundamentally limited because it pre-aggregates data at write time, destroying context and making high-cardinality debugging impossible. A versioning distinction — O11y 1.0 (siloed metrics/logs/traces) vs O11y 2.0 (arbitrarily-wide structured events queried at read time) — cuts through the semantic confusion and names a real, breaking architectural incompatibility. The shift to 2.0 isn't just tooling preference; it's the difference between eyeballing graph shapes and actually knowing what happened when a specific deploy hit a specific subset of users.

The Cost Crisis in Observability Tooling

Charity Majors · 2024-01-24 · 13 min read

TLDR: The core problem with observability tooling isn't just rising prices — it's that costs scale inversely with value. Organizations end up paying to store essentially the same telemetry data 5-10x over across siloed metrics, logs, traces, APM, RUM, and other tools, while each individual tool remains too limited to answer arbitrary questions on its own. The structural fix is moving toward wide structured events (canonical log lines) that capture full request context once, enabling high-cardinality queries without write amplification — rather than continuing to layer more specialized tools on top of each other.

You Don't Get to Create Anything

Kent Beck · 2026-06-03 · 1 min read

Randy Shoup and Kent Beck explore why experienced engineers have an intrinsic drive to build things rather than just document or manage ideas, and how Jevons paradox suggests that cheaper AI-assisted cognition will likely increase rather than decrease the demand for real engineering work. This matters because it reframes the "AI will replace engineers" anxiety — the same way cheaper computation created more software, cheaper thinking may create more problems worth solving, not fewer jobs for people who need to make things.

Genie Sessions: Run, Right, and Fast for the Adaptive Radix Tree

Kent Beck · 2026-05-02 · 1 min read

Kent Beck applies his classic "make it run, make it right, make it fast" progression to implementing an Adaptive Radix Tree using AI-assisted coding (his "Genie" workflow). This matters because it demonstrates a disciplined methodology for tackling a non-trivial data structure with AI tooling, showing how to maintain engineering rigor — correctness before optimization — even when code generation is involved.

Higher Value Tools

Thorsten Ball · 2017-02-08 · 2 min read

Parsing is the core skill underlying compilers, DSLs, query languages, and most other high-leverage developer tools, and learning to write a parser unlocks the ability to build that entire category of software. For a senior engineer, this matters because parsing proficiency is a force multiplier — it expands the solution space you can operate in, enabling you to create custom languages, tooling, and abstractions rather than being constrained by existing ones.