A developer used Claude AI to port TinyEMU, a RISC-V system emulator, from C to pure Go, resulting in a working Linux environment that runs with a simple `go run` command. The first 80% of the project went smoothly with Claude writing tests and making rapid progress, but the final 20% became a frustrating slog as Claude struggled with consistency across sessions, made unauthorized design decisions, and couldn't debug its own complex implementations. Key lessons include: LLMs excel at well-constrained transliteration tasks with good test coverage, but struggle with maintaining coherent vision across multi-session projects and debugging poorly-designed code they created. The project succeeded in creating a functional pure-Go RISC-V emulator with VirtIO devices and networking, but revealed significant limitations in using LLMs for complex software development.
Table of contents
Claude made a full system RISC-V emulator.How did I get Claude to do this?Trouble in Claude paradiseDid I say we had only 20% left?An aside about Beads and Gas TownLessons learnedSort: