Posts

DEBS 2026: DuneCP, an event-driven control plane for DuneSQL

I recently gave a keynote at DEBS 2026 about the work we did at Dune during the first half of 2026. The talk was about DuneCP, an event-driven control plane for DuneSQL. The problem was a missing center. Several areas of operating and maintaining DuneSQL had no shared control plane. The work accumulated in separate services and, too often, in “just another cron job.” Operations are part of the system The point I most wanted to make was broader than DuneCP:

Testing LLMs is hard, doubly hard when the testplan and code are vibecoded

Part 4/6 — Part 6 ← Part 5 ← Part 4 ← Part 3 ← Part 2 ← Part 1 May 2026 — co-authored with Gemma 4 A note on the voice. Look how different this post reads from the ones before it. That is the experiment: I let Gemma 4 drive the whole thing and gave it a much lighter review than Part 1 or Part 2 got. It produced a very bland, robotic post.

Gemma 4 vs Qwen3.5: benchmarking quantized local LLMs on Go coding

April 20261 Part 3/6 — Part 6 ← Part 5 ← Part 4 ← Part 3 ← Part 2 ← Part 1 This post is an experiment. What you are reading is an LLM agent story-telling the following real story back to me: I wanted to evaluate the quality impact of Q4 vs Q5 vs Q6 quantization, using a simple one-shot test and evaluation harness. I experimented with “vibecoding” that test harness, to run evaluation tests across the LLMs small enough to run on a laptop.

WHY Are Local LLMs So Slow On My Framework 13 AMD Strix Point

February 2026 – co-authored with Claude Opus 4.6. Part 2/6 — Part 6 ← Part 5 ← Part 4 ← Part 3 ← Part 2 ← Part 1 Yes, the title is clickbaity :>. Veritasium has a great video about why clickbait is unreasonably effective and I’ve been dying to try it on a technical post. The irony is that the actual content is the opposite of clickbait – every claim backed by a shell command, every number derived from first principles.

I benchmarked 8 local LLMs writing Go on my Framework 13 AMD Strix Point

Part 1/6 — Part 6 ← Part 5 ← Part 4 ← Part 3 ← Part 2 ← Part 1 This experiment is trying to use an LLM to write a blogpost in my own voice. This was directed by me, written mostly by Opus but I did proofread and edit (but not deep edits). This note was added later, after having multiple parts out and as a disclaimer that my voice is not truly captured, preserving it as part of the story.

EVM Foundations — a 7-day study guide

Goal: build solid mental models of EVM execution, storage, state, and gas—validated by small, real traces on your node. Prereqs (install any you’re missing) Geth (or your node with debug/trace APIs): https://geth.ethereum.org/ Foundry (cast/forge): https://book.getfoundry.sh/ Solidity compiler (solc): https://docs.soliditylang.org/en/latest/installing-solidity.html Day 1 — Big-picture EVM & “living spec” Read EVM overview: https://ethereum.org/en/developers/docs/evm/ Execution-specs (EELS) README: https://github.com/ethereum/execution-specs Keep these open while learning: Opcodes (reference): https://ethereum.org/en/developers/docs/evm/opcodes/ Opcodes (interactive, gas, traces): https://www.evm.codes/ Output

How we’ve improved Dune API using DuckDB

At Dune, we value our customers’ feedback and are committed to continuously improving our services. This is the story of how a simple, prioritized feature request for DuneAPI —supporting query result pagination for larger results—evolved into a comprehensive improvement involving the adoption of DuckDB at Dune. We’ve learned a lot during this journey and are excited to share our experiences and the new functionalities we’ve been building. Motivation & Context The journey began with user feedback and a repeated feature request: “Dune API doesn’t support pagination, and the maximum size of query results is limited (~1GB).
 

Miguel Filipe

Tech Lead @ Dune. Distributed systems, local LLMs, self-hosting. Lisbon.