Insights from Writing an Embedded IoT App (Almost) Entirely in Rust

Today we have a guest post from Louis Thiery. Louis has spent many years building hardware and software for IoT devices ranging from agriculture to consumer electronics. He now develops IoT infrastructure at Helium. Helium is the largest public LPWAN in the US and is shipping now (Sept 2020) in Europe. You can contact him by email. …

Engineering Lessons I’ve Learned from Working at the Japanese Tea Garden

Since September 2017, I’ve been volunteering at the San Francisco Japanese Tea Garden in Golden Gate Park. I work with the head gardener, seasoned bonsai devotees, and a master gardener to prune trees, mend fences, beat back bamboo, pull weeds, catch koi fish, and clean ponds. These tasks may not seem relevant to engineering teams, …

Leveraging Our Build Systems to Support Portability

We’ve shared practical decoupling techniques and discussed lightweight abstractions that help us create portable firmware modules. These techniques help us create portable software, but they don’t prevent anyone directly using vendor SDKs and native OS function calls in portable modules. In this article we will share techniques that leverage build systems and repository structures to enforce loose coupling between firmware and …

Prototyping and Design for Change: Lightweight Architectural Strategies

Tom Anderson asked this excellent question in the Embedded.fm Slack group: Many designs start as feasibility investigations using Arduino and then move to a lower power or otherwise better embedded platform. Is there anything that these Arduino practitioners can do to make this transition easier? As we outlined in “Musings on the Tight Coupling Between …

Programmers: Let’s Study Source Code Classics

Contemporary programmers are lucky: we live in a world where historical and influential program source code is available for us to review. However, most programmers only learn and study the programs they have worked on themselves. We rarely take the time to study historical works, and programming courses don’t typically spend any time on the …