And the experience building it with Claude Code:
I think software developers are going to continue to be gainfully employed for a long time if we can’t figure out how to encourage LLMs to prioritize simplicity.
The last 20% of a complex project is so friggin hard with Claude.
Lessons learned
First off, this Go library exists and works now, so Claude did something! It built a thing that didn’t exist that I wanted! So, that’s certainly the bottom line here. It’s tough to overstate this point.
But to also complain, this was an exercise in frustration in new and exciting ways. After letting this go a few weeks, I have found a codebase that ticks many boxes (good code coverage, many unit tests, lots of comments and documentation), but seems like it’s been developed by multiple separate raccoons in a trench coat and clearly not a person with one cohesive vision (Mo Bitar found the same thing). Maybe this would be less frustrating now that my expectations are more accurately calibrated. So perhaps this blog post can help you calibrate your expectations.
Running the emulator
~ ❯ go run github.com/jtolio/tinyemu-go/temubox/example@2c8151233c2d
OpenSBI v1.6
____ _____ ____ _____
/ __ \ / ____| _ \_ _|
| | | |_ __ ___ _ __ | (___ | |_) || |
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
| |__| | |_) | __/ | | |____) | |_) || |_
\____/| .__/ \___|_| |_|_____/|____/_____|
| |
|_|
Platform Name : ucbbar,riscvemu-bare
Platform Features : medeleg
Platform HART Count : 1
Platform IPI Device : aclint-mswi
Platform Timer Device : aclint-mtimer @ 10000000Hz
Platform Console Device : htif
Platform HSM Device : ---
Platform PMU Device : ---
Platform Reboot Device : htif
Platform Shutdown Device : htif
Platform Suspend Device : ---
Platform CPPC Device : ---
Firmware Base : 0x80000000
Firmware Size : 325 KB
Firmware RW Offset : 0x40000
Firmware RW Size : 69 KB
Firmware Heap Offset : 0x48000
Firmware Heap Size : 37 KB (total), 2 KB (reserved), 11 KB (used), 23 KB (free)
Firmware Scratch Size : 4096 B (total), 432 B (used), 3664 B (free)
Runtime SBI Version : 2.0
Standard SBI Extensions : time,rfnc,ipi,base,hsm,srst,pmu,dbcn,legacy
Experimental SBI Extensions : fwft,sse
Domain0 Name : root
Domain0 Boot HART : 0
Domain0 HARTs : 0*
Domain0 Region00 : 0x0000000040008000-0x0000000040008fff M: (I,R,W) S/U: (R,W)
Domain0 Region01 : 0x0000000080040000-0x000000008005ffff M: (R,W) S/U: ()
Domain0 Region02 : 0x0000000002080000-0x00000000020bffff M: (I,R,W) S/U: ()
Domain0 Region03 : 0x0000000080000000-0x000000008003ffff M: (R,X) S/U: ()
Domain0 Region04 : 0x0000000002000000-0x000000000207ffff M: (I,R,W) S/U: ()
Domain0 Region05 : 0x0000000040100000-0x00000000401fffff M: (I,R,W) S/U: (R,W)
Domain0 Region06 : 0x0000000040400000-0x00000000404fffff M: (I,R,W) S/U: (R,W)
Domain0 Region07 : 0x0000000040200000-0x00000000403fffff M: (I,R,W) S/U: (R,W)
Domain0 Region08 : 0x0000000000000000-0xffffffffffffffff M: () S/U: (R,W,X)
Domain0 Next Address : 0x0000000080200000
Domain0 Next Arg1 : 0x0000000082200000
Domain0 Next Mode : S-mode
Domain0 SysReset : yes
Domain0 SysSuspend : yes
Boot HART ID : 0
Boot HART Domain : root
Boot HART Priv Version : v1.10
Boot HART Base ISA : rv64imafdc
Boot HART ISA Extensions : zicntr
Boot HART PMP Count : 0
Boot HART PMP Granularity : 0 bits
Boot HART PMP Address Bits : 0
Boot HART MHPM Info : 0 (0x00000000)
Boot HART Debug Triggers : 0 triggers
Boot HART MIDELEG : 0x0000000000000222
Boot HART MEDELEG : 0x000000000000b109
loop: module loaded
virtio_blk virtio1: 1/0/0 default/read/poll queues
virtio_blk virtio1: [vda] 131072 512-byte logical blocks (67.1 MB/64.0 MiB)
mousedev: PS/2 mouse device common for all mice
Initializing XFRM netlink socket
NET: Registered PF_PACKET protocol family
9pnet: Installing 9P2000 support
Key type dns_resolver registered
debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers
clk: Disabling unused clocks
EXT4-fs (vda): mounted filesystem 8be5044d-47ec-4c28-8479-f40d24e9e91b r/w with ordered data mode. Quota mode: disabled.
VFS: Mounted root (ext4 filesystem) on device 254:0.
devtmpfs: mounted
Freeing unused kernel image (initmem) memory: 2148K
Run /sbin/init as init process
EXT4-fs (vda): re-mounted 8be5044d-47ec-4c28-8479-f40d24e9e91b r/w. Quota mode: disabled.
Saving 256 bits of non-creditable seed for next boot
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting network on eth0: udhcpc: started, v1.37.0
udhcpc: broadcasting discover
udhcpc: broadcasting select for 10.0.2.15, server 10.0.2.2
udhcpc: lease of 10.0.2.15 obtained from 10.0.2.2, lease time 86400
OK
Starting ifplugd for eth0: OK
Starting crond: OK
~ # df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 53989 7624 41779 15% /
devtmpfs 112644 0 112644 0% /dev
tmpfs 113720 0 113720 0% /dev/shm
tmpfs 113720 16 113704 0% /tmp
tmpfs 113720 16 113704 0% /run
~ # cat /proc/cpuinfo
processor : 0
hart : 0
isa : rv64imafdc_zicntr_zicsr_zifencei_zihpm
mmu : sv48
mvendorid : 0x0
marchid : 0x0
mimpid : 0x0
~ # cat /proc/version
Linux version 6.6.0 (jt@toolbx) (riscv64-buildroot-linux-musl-gcc.br_real (Buildroot -gf1259ab-dirty) 13.4.0, GNU ld (GNU Binutils) 2.43.1) #1 SMP Sun Jan 25 14:15:41 EST 2026
~ # poweroff
~ # Stopping crond: no /usr/sbin/crond found; none killed
FAIL
Stopping ifplugd for eth0: no /usr/sbin/ifplugd found; none killed
FAIL
Stopping network on eth0: OK
Stopping klogd: stopped /sbin/klogd (pid 45)
OK
Stopping syslogd: stopped /sbin/syslogd (pid 41)
OK
Seeding 256 bits without crediting
Saving 256 bits of non-creditable seed for next boot
umount: devtmpfs busy - remounted read-only
EXT4-fs (vda): re-mounted 8be5044d-47ec-4c28-8479-f40d24e9e91b ro. Quota mode: disabled.
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system poweroff
reboot: Power down
~ ❯