TinyComputers.io

Sponsors

More Articles

The Config Language That Was Already There: A Ballistics REPL Written in Lattice

Every serious calculator eventually grows a configuration language — YAML, TOML, a bespoke parser — and then grows the loop of frustration that comes with it. This is what happened when I refused to write that layer, and instead made an existing programming language do the job: a stateful ballistics laboratory written entirely in Lattice, driving a Rust solver over a process boundary, with no native extension and no C ABI. A case study in what you get when the scripting language and the config language are the same language.

The Bullet Doesn't Go Where You Point It

A bullet fired at a target a thousand yards away does not travel in the direction you aimed it. It falls thirty feet, drifts a foot sideways from its own spin, and gets nudged by the rotation of the Earth. This is a piece about the Rust engine I wrote to predict all of that — how you test physics when you have no oracle, why the hard bugs were never in the equations, and the one problem worth charging for: solving ballistics backwards.

FriendlyElec NanoPC-T6N Review: The Fastest Board on My Bench, and the Benchmark That Outgrew Itself

Hands-on review of the FriendlyElec NanoPC-T6N, a Rockchip RK3588 SBC with 16 GB RAM, dual 2.5GbE, and a 6 TOPS NPU running Debian 13 on FriendlyELEC's BSP. It posts the fastest ARM compile time on my bench (52.55s), pushes 2.19 GB/s of AES-128-GCM, and never throttles - peaking at 56.4C under sustained eight-core load. Also the story of why my standard benchmark stopped being comparable to its own history, and what the microSD it shipped booting from is costing it.

Four Partitions and a Borrowed Bootloader: NetBSD on the Milk-V Mars

NetBSD now runs on my Milk-V Mars: 28 GB root filesystem, gigabit Ethernet at 0.0% packet loss, SSH like any other machine on the shelf. It is the only documented NetBSD Mars I'm aware of, and getting there took a weekend of archaeology: a vendor bootloader whose advertised boot logic is dead code, a QEMU time machine built from Debian's snapshot archive, an SD card doubling as a flight recorder, a serial console that demolished every blind theory in ten minutes, a kernel panic caught with full backtrace, and a filesystem-corruption incident I caused myself by "fixing" a safety mechanism I hadn't understood. The final fix for the whole device-tree saga is one line in a U-Boot defconfig. The whole build is scripted and reproducible; a flashable image is next.

Banana Pi BPI-R4 Pro Review: A 10-Gigabit Router Board I Put to Work as a Bastion

Hands-on review of the Banana Pi BPI-R4 Pro, a MediaTek MT7988A (Filogic 880) router board with quad Cortex-A73, dual 10GbE, and 8GB RAM running OpenWRT. Benchmarked for what a router actually does - CoreMark 9533/37952, ~1 GB/s hardware AES, GbE line-rate networking, 50C under load - and deployed as a real SSH bastion and nginx reverse proxy. A different animal from a compute SBC, reviewed as one.

Nothing Was Using the Cores: Three Idle Arm64 Boards, One HA k3s Cluster, and a BSD Build Farm

I had three small Arm64 boards on a shelf, each doing one modest thing and idling the rest of the time — an Orange Pi 5 Max running an occasional local LLM, two Raspberry Pi–class machines mostly serving a web page. Between them they had sixteen cores, forty gigabytes of RAM, and four terabytes of NVMe, and almost none of it was doing anything at any given moment. This is the story of resisting the urge to buy two more boards into a memory shortage, and instead turning that idle majority into a real three-node HA k3s cluster with embedded etcd, then teaching it to do the job the boxes had quietly been built for all along — compiling native FreeBSD, OpenBSD, and NetBSD Arm64 binaries — and the small pile of gotchas that stood between "three SBCs" and "a build farm," from a big.LITTLE crash loop to golden images that turned out to be live disks. And then everything else the reclaimed capacity paid for.

Topics

Reading Series

Written by Alex Jokela Software engineer by trade, tinkerer by nature, single-board computer hoarder by choice. More about me →