Learning Rust For Embedded Systems
Rust eliminates whole classes of memory and concurrency bugs, making it a compelling choice for embedded projects, and the author recommends it for the VolksEEG project after a rapid evaluation. The post connects Rust fundamentals such as ownership and borrowing, RAII, traits, and unsafe blocks to familiar embedded patterns. It also provides a curated on-ramp of videos, books, and tools like Cargo, RTIC, and probe-rs to get hands-on quickly.
Six Software Design Tools
Software design need not be mysterious, these six practical tools give a disciplined way to shape readable, testable, and maintainable code. The post walks through naming (DAMP), duplication control (DRY), complexity metrics (MCC), SOLID principles, API layering, and test-driven development, showing how each idea applies across languages and embedded systems. Use them as checklists for code reviews and design thinking.
VolksEEG Project: Initial Hardware Architecture
The VolksEEG prototype pairs an Adafruit Feather nRF52840 Sense MCU with an ADS1299 analog front end, organized into non-isolated and isolated domains to protect patients. The post explains why isolation is required, which chips bridge the domains, and why simple, high-level power and signal diagrams help clarify the KiCad schematics for engineers and reviewers.
Introducing The VolksEEG Project
VolksEEG is an open-source effort to build an FDA-cleared clinical EEG and publish every design so others can manufacture it. The volunteer-driven project centers on the TI ADS1299 8-channel, 24-bit biopotential ADC and combines medical and electrical engineering expertise to confront regulatory, safety, and usability challenges. This blog series will document technical decisions, isolation and safety concerns, and ways engineers can contribute.
Video-Based STEM Embedded Systems Curriculum, Part 2
Part 2 delivers three ready-to-run lesson plans for a video-based STEM embedded course, starting with Arduino hands-on projects using an Elegoo UNO starter kit and Bryan Vines video walkthroughs that explain the code. It then teaches Fritzing for pictorial and schematic circuit drawings, followed by Collin Cunningham videos that cover resistors, capacitors, transistors, schematics, and other core components. The sequence stresses design, draw, build, test to keep students engaged.
Video-Based STEM Embedded Systems Curriculum, Part 1
This curriculum shows how to teach introductory embedded systems using free online videos and low-cost kits, suitable for middle-school, high-school, college, or adult learners. It packages curated educator recommendations, a per-student equipment and book list, essential free software, and core lesson topics like Arduino, MicroPython, Kicad board design, soldering, and RTOS basics. The approach stresses hands-on labs, safety, backups, mentorship, and adapting to local budgets.
Review: Prototype to Product
Alan Cohen's Prototype to Product is a practical systems engineering playbook for anyone taking an embedded idea to market. The review emphasizes uncovering surprises early, disciplined planning, and cross-discipline collaboration across electrical, mechanical, software, and manufacturing domains. It highlights concrete topics such as prototyping, DFM/DFA, staged testing, and regulatory considerations that help avoid costly late-stage rework.
Learning From Engineering Failures
Engineering failures are the best teachers when you study them with curiosity and rigor. This post gathers the author's approach and curated resources for learning from incidents, with an emphasis on treating human error as a symptom of layered systemic problems rather than the root cause. Read on for practical guidance, longtime sources like Risks Digest, and a mindset: trust nothing, and verify.
Acceptance Tests vs. TDD
Writing the tests in a Jira ticket is not the same as doing TDD, this post explains why. It separates acceptance tests, which define business completeness and are written up-front by the customer, from TDD unit tests, which developers write incrementally as a design and feedback tool. Readable advice covers test speed, avoiding brittle tests, and how both test types fit into CI and maintainable embedded development.
My Guiding Principles As An Engineer
An embedded-systems veteran distills 40 years of experience into practical guiding principles for engineers. The post mixes classic quotes with hard-earned aphorisms focused on testing, instrumentation, planning, and integrity, showing how persistence, preparation, and evidence-based thinking prevent mistakes. Read it for concise, actionable habits you can apply to firmware, hardware-software integration, and team practices.
Working With ESP-C3-32S-Kit Dev Board
This hands-on guide walks through setting up the ESP-C3-32S-Kit with ESP-IDF, from installing the toolchain to flashing and monitoring a hello-world example. It shows JTAG debugging with OpenOCD and GDB, how to use the NimBLE BLE stack for peripheral and central roles, and how to capture and filter BLE traffic with a Nordic sniffer and Wireshark so you can inspect pairing and connection behavior.
Video-Based STEM Embedded Systems Curriculum, Part 1
This curriculum shows how to teach introductory embedded systems using free online videos and low-cost kits, suitable for middle-school, high-school, college, or adult learners. It packages curated educator recommendations, a per-student equipment and book list, essential free software, and core lesson topics like Arduino, MicroPython, Kicad board design, soldering, and RTOS basics. The approach stresses hands-on labs, safety, backups, mentorship, and adapting to local budgets.
Six Software Design Tools
Software design need not be mysterious, these six practical tools give a disciplined way to shape readable, testable, and maintainable code. The post walks through naming (DAMP), duplication control (DRY), complexity metrics (MCC), SOLID principles, API layering, and test-driven development, showing how each idea applies across languages and embedded systems. Use them as checklists for code reviews and design thinking.
Review: Modern Software Engineering
Long-lived branches, manual releases, and slow feedback waste engineering time. This review of three Dave Farley books distills a practical playbook: continuous delivery pipelines, trunk-based development, and disciplined TDD to keep trunk always releasable. It shows how fast, automated feedback at every stage shrinks cycle time, reduces merge pain, and makes teams far more productive.
Dumb Embedded System Mistakes: Running The Wrong Code
Running the wrong firmware on a board can waste hours. This post shows a practical marking strategy for embedded Linux that embeds searchable proof-of-life strings into kernel, rootfs, overlay, and application code. It walks through choosing early-boot log points, using compile-time timestamps, and a small shell script to set, find, and clear marks so you can verify builds before flashing.
VolksEEG: Rust Development On Adafruit nRF52840 Feather Express
Setting up Rust embedded development on an Adafruit Feather nRF52840 Express inside a VS Code devcontainer can save time, but the toolchain has a few gotchas. This post walks through using the VolksEEG prototype echo-server to verify the USB serial path, configuring probe-rs with J-Link and OpenOCD for on-chip debugging, and diagnosing a container build error fixed by adding libudev-dev. Expect step-by-step commands and troubleshooting tips.
Absolute Beginner's Guide To Getting Started With Raspberry Pi
Getting started with Raspberry Pi can feel overwhelming. This guide strips the noise and shows the simplest path from unboxing to a working desktop. It recommends buying a preloaded NOOBS microSD to avoid imaging hassles, lists exact parts and suppliers, and walks through booting, recovery, and making a backup. If you want embedded electronics it also lists starter parts and ESD safety tips.
Simple Automated Log Processing
You don't need heavy tools to make sense of megabytes of embedded logs. This post shows a practical bash script that trims noisy serial and semihosting output, samples hourly heap-profile lines, and converts them into a CSV ready for graphing. It gives a simple, adaptable pattern you can reuse to spot memory leaks or triage recurring log signatures quickly.
Review: Prototype to Product
Alan Cohen's Prototype to Product is a practical systems engineering playbook for anyone taking an embedded idea to market. The review emphasizes uncovering surprises early, disciplined planning, and cross-discipline collaboration across electrical, mechanical, software, and manufacturing domains. It highlights concrete topics such as prototyping, DFM/DFA, staged testing, and regulatory considerations that help avoid costly late-stage rework.
Video-Based STEM Embedded Systems Curriculum, Part 2
Part 2 delivers three ready-to-run lesson plans for a video-based STEM embedded course, starting with Arduino hands-on projects using an Elegoo UNO starter kit and Bryan Vines video walkthroughs that explain the code. It then teaches Fritzing for pictorial and schematic circuit drawings, followed by Collin Cunningham videos that cover resistors, capacitors, transistors, schematics, and other core components. The sequence stresses design, draw, build, test to keep students engaged.
Learning A New Microcontroller
Learning a new microcontroller becomes manageable with a repeatable, stepwise process that focuses on common peripherals, tools, and example programs. This post lays out hands-on exercises from blinky and UART echoes through I2C/SPI, PWM and ADC to DMA and RTOS variations, and shows how to evolve prototype code into reusable HAL and OSAL layers. Practical tips cover hardware setup, logic analyzers, and keeping an engineering notebook.
Simple Automated Log Processing
You don't need heavy tools to make sense of megabytes of embedded logs. This post shows a practical bash script that trims noisy serial and semihosting output, samples hourly heap-profile lines, and converts them into a CSV ready for graphing. It gives a simple, adaptable pattern you can reuse to spot memory leaks or triage recurring log signatures quickly.
Some Embedded System Software Design Resources
Embedded systems span many architectures and run-times, so there is no single definitive resource. This curated list brings together practical embedded-focused books by Elecia White and Jacob Beningo, general design guidance from Robert Martin, and a TDD primer by James W. Grenning, plus concrete advice on BDD-style TDD and off-target testing. Skim the list in a day, then try the techniques hands-on.
Dumb Embedded System Mistakes: Running The Wrong Code
Running the wrong firmware on a board can waste hours. This post shows a practical marking strategy for embedded Linux that embeds searchable proof-of-life strings into kernel, rootfs, overlay, and application code. It walks through choosing early-boot log points, using compile-time timestamps, and a small shell script to set, find, and clear marks so you can verify builds before flashing.
Acceptance Tests vs. TDD
Writing the tests in a Jira ticket is not the same as doing TDD, this post explains why. It separates acceptance tests, which define business completeness and are written up-front by the customer, from TDD unit tests, which developers write incrementally as a design and feedback tool. Readable advice covers test speed, avoiding brittle tests, and how both test types fit into CI and maintainable embedded development.
Six Software Design Tools
Software design need not be mysterious, these six practical tools give a disciplined way to shape readable, testable, and maintainable code. The post walks through naming (DAMP), duplication control (DRY), complexity metrics (MCC), SOLID principles, API layering, and test-driven development, showing how each idea applies across languages and embedded systems. Use them as checklists for code reviews and design thinking.
VolksEEG: Rust Development On Adafruit nRF52840 Feather Express
Setting up Rust embedded development on an Adafruit Feather nRF52840 Express inside a VS Code devcontainer can save time, but the toolchain has a few gotchas. This post walks through using the VolksEEG prototype echo-server to verify the USB serial path, configuring probe-rs with J-Link and OpenOCD for on-chip debugging, and diagnosing a container build error fixed by adding libudev-dev. Expect step-by-step commands and troubleshooting tips.
Video-Based STEM Embedded Systems Curriculum, Part 1
This curriculum shows how to teach introductory embedded systems using free online videos and low-cost kits, suitable for middle-school, high-school, college, or adult learners. It packages curated educator recommendations, a per-student equipment and book list, essential free software, and core lesson topics like Arduino, MicroPython, Kicad board design, soldering, and RTOS basics. The approach stresses hands-on labs, safety, backups, mentorship, and adapting to local budgets.
Review: Modern Software Engineering
Long-lived branches, manual releases, and slow feedback waste engineering time. This review of three Dave Farley books distills a practical playbook: continuous delivery pipelines, trunk-based development, and disciplined TDD to keep trunk always releasable. It shows how fast, automated feedback at every stage shrinks cycle time, reduces merge pain, and makes teams far more productive.
The Self-Directed Virtual Internship
Summer internships may be gone, but your career momentum does not have to be. This post shows how to design a self-directed, unpaid virtual internship in embedded systems, with concrete options: project-based builds, tutorials, reports, or open-source contributions. Follow the one-page plan approach, treat it like a real remote job, and produce demonstrable deliverables to show employers.







