Sitemap

Engineering that ships. Production war stories, anti-patterns, real-world comparisons, and the gap between marketing slides and on-call reality. System design, infra, Go, Rust. Biweekly deep dives. No tutorials, no hype.

Member-only story

IoT
Technology
Rust
Golang
Embedded Systems

TinyGo or no_std? Picking Embedded Paths That Scale

10 min readNov 30, 2025

Press enter or click to view image in full size
The choice between TinyGo and no_std Rust isn’t philosophical — it’s about what fits in 64KB and what happens when you run out of stack at runtime.

I spent three weeks debugging a sensor node that would crash every 47 hours. Not 48, not randomly — exactly 47 hours. The device read temperature data, sent it over LoRa, then went back to sleep. Simple, right?

Except I’d written it in TinyGo because “Go is easier,” and somewhere in that convenience, I’d introduced something worse than a leak — allocation churn that TinyGo’s non-moving mark-sweep collector couldn’t compact. Every sensor reading cycle allocated 200 bytes somewhere in that 256KB heap. The GC would dutifully mark and sweep, reclaim most of it, but those 40-byte fragmentation gaps? They just… stayed. Like debris after a flood that never quite drains.

Do the math with me here: 42,000 cycles over 47 hours, 200 bytes each. That’s 8.4MB of allocations churned through a 256KB space. The GC was working perfectly — it just couldn’t move things around to fill those gaps. Not a traditional memory leak. Something more insidious.

That failure taught me something I wish I’d learned earlier: embedded isn’t just “small…

Create an account to read the full story.

The author made this story available to Medium members only.
If you’re new to Medium, create a new account to read this story on us.

Or, continue in mobile web
Already have an account? Sign in

Beyond Localhost

Published in Beyond Localhost

Engineering that ships. Production war stories, anti-patterns, real-world comparisons, and the gap between marketing slides and on-call reality. System design, infra, Go, Rust. Biweekly deep dives. No tutorials, no hype.

The Speed Engineer

Written by The Speed Engineer

I break things in production for a living. Sometimes on purpose. I write about what the incident reports leave out.

Responses (2)

To respond to this story,
get the free Medium app.

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Hello, have you tried embassy.dev for your USB data logger?

3

I believe that there is a new PR to fix that ver same fragmentation issue. Great article. Much appreciated