Tag
#ai
31 entries across blog, tutorials, videos, podcasts, and code.
- Blog
Reading a Codebase Like a Migration Engineer: Inside Swordfish's Code Explorer
You wouldn't renovate a house you've never walked through. So why migrate a codebase you've never mapped?
- Tutorial
Migrating the Code, Not Just the Schema: One App, End-to-End
The capstone: take one sample app through the full funnel — assess, review findings, edit a recommendation, hand a scoped prompt to your copilot, diff the .new files, test.
- Blog
Security for a Tool That Reads Your Entire Codebase
A migration tool needs to read all of your proprietary source. That should make you suspicious — and it should shape how the tool is built.
- Blog
Engineering War Story: The Day We Found Our Rescan Could Eat Your Findings
A confession about a bug in our own tool, and the two database quirks that made fixing it harder than it looked.
- Blog
Why "Lift and Shift" Is a Lie for Heterogeneous Migrations
The phrase was invented for moving the same database to new hardware. Using it for Oracle-to-Postgres is how budgets die.
- Blog
Drowning in 20,000 Findings: Designing for Signal, Not Noise
A wall of 20,000 red rows isn't an assessment. It's a really thorough way to make a developer close the tab.
- Blog
Finding the SQL Nobody Knows They Have
You grepped for `SELECT` and found 200 queries. There are 1,400. This post is about the other 1,200.
- Blog
Assess, Don't Automate: The Migration ROI Most Tools Get Wrong
"90% automated" is a great pitch and a terrible plan, and the gap between them is where your migration actually lives.
- Blog
Right-Sized AI: Why You Don't Need GPT-5 to Migrate a Stored Procedure
The reflex to reach for the biggest model is expensive, often unnecessary, and sometimes flatly disqualifying.
- Blog
We Don't Apply Changes For You — On Purpose
Every other tool is racing toward "full autonomy." We built the brakes in, and I'd make the same call again.
- Blog
How I Built a 100-Check Postgres Tool With an AI Harness (and What the Reviews Caught)
Building a 100-check Postgres tool with an AI agent: spec, plan, a fresh subagent per task, adversarial review — and the five real bugs the reviews caught.
- Blog
The Schema Is the Easy Part: A Field Guide to Behavioral Traps
A catalog of the migrations that pass every test, ship clean, and quietly corrupt your data three weeks later.
- Tutorial
Sybase → PostgreSQL: A Worked Example
A worked Sybase to PostgreSQL example: the shared T-SQL heritage with SQL Server, its own quirks, and where name-level introspection and dump-parsing take over.
- Blog
Heuristics vs LLMs: It's a Division of Labor, Not a Cage Match
It is not heuristics versus LLMs — it is a division of labor. Heuristics own the facts, the LLM owns the judgment, and a cheap check keeps it honest.
- Blog
Why We Run Multiple LLMs (and Make Them Argue)
One model gives you one confident answer. The problem is "confident" and "correct" aren't the same word.
- Tutorial
DB2 → PostgreSQL: A Worked Example
A worked DB2 to PostgreSQL example: FETCH FIRST n ROWS ONLY, SYSIBM.SYSDUMMY1, VALUES quirks, identity columns, and SQL/PL to PL/pgSQL patterns.
- Blog
Stop Re-Asking the LLM the Same Question
Incremental distillation: hash the inputs, skip unchanged checks, and cut ~64% of LLM calls on an unchanged re-run — with an honest note on what is not gated yet.
- Tutorial
Tutorial 3 — Memory & Cost: Stop Re-Diagnosing (and Re-Paying for) the Same Problems
Add cross-run memory and incremental skipping so the tool stops re-diagnosing the same issues and an unchanged re-run costs a fraction of the first.
- Blog
Heuristics + AI: Why Deterministic Rules Come First
The cheapest, most accurate part of Swordfish doesn't use AI at all. That's not an accident.
- Tutorial
SQL Server → PostgreSQL: A Worked Example
A worked SQL Server to PostgreSQL example: TOP, IDENTITY, GETDATE/ISNULL/LEN, bracket identifiers, MERGE, and READ UNCOMMITTED habits.
- Blog
Teaching an Audit Tool to Remember
Cross-audit lineage and supersession: immutable history, and the what-changed-since-last-time report a returning user actually wants.
- Tutorial
Tutorial 2 — Build an LLM-as-Judge: Catching Hallucinations Before They Ship
Build the LLM-as-judge verification layer: a cheap deterministic grounding check plus a multi-model consensus vote — including the substring-grounding bug in its natural habitat.
- Blog
The Stuff That Isn't in the Code: Inferred Knowledge and Why Migrations Lose It
Your application knows things it never wrote down. The migration is where it forgets.
- Tutorial
MySQL → PostgreSQL: A Worked Example
A worked MySQL to PostgreSQL example: AUTO_INCREMENT, backtick identifiers, ENUM, ON DUPLICATE KEY, GROUP BY ordering, and the dump-to-PG rewrite path.
- Blog
Cheap Checks Before Expensive Ones: The Two-Part Judge Pattern
The two-part judge pattern in ~40 lines: a deterministic filter first, multi-model consensus second. It generalizes to RAG, extraction, and code review.
- Tutorial
Tutorial 1 — Foundations: Structured Output + a Multi-Provider LLM Harness
Replace free-form LLM prose with structured Finding objects over a multi-provider harness — the checkable spine the rest of the build depends on.
- Blog
Swordfish: A Harness for Your Copilot, Not Migration-in-a-Box
We're not trying to replace your LLM. We're trying to make it stop guessing.
- Tutorial
Oracle → PostgreSQL: A Worked Example
A worked Oracle to PostgreSQL example: the constructs Swordfish flags most (CONNECT BY, ROWNUM, NVL, packages), the recommended PG/EPAS change, and the human-review step.
- Blog
I Asked an LLM to Diagnose My Database. Then I Asked Another LLM if It Was Lying.
The origin story of the judge: the model invented a shared_buffers value. The fix was not a bigger model — it was cheap grounding plus a second-opinion jury.
- Tutorial
Tutorial 0 — We Vibe-Coded a Database Doctor. Does It Actually Work?
We vibe-coded a 100-point Postgres health check. Does it actually work? The quickstart, the two engines, and an honest gut-check of where the naive version fails.
- Blog
Why Database Migrations Are a Developer Problem
The schema is the easy part. The code is where migrations go to die.