Home > Speakers >

Steve Branam

Steve Branam is a software engineer with 40 years of experience. He has worked on several IoT projects, on both device and server side, as well as video and audio streaming systems, network routers, and storage arrays. He enjoys learning new things and sharing what he has learned with others. He's a firm believer in see one, do one, teach one.

Example of BDD Style TDD For Embedded System Software

Status: Available Now

Based on the blog post https://www.embeddedrelated.com/showarticle/1544.php and repo "Bit-Banged Async Serial Output And Disciplined Engineering" and under the aegis of Dojo Five, this session walks through a practical example of using the Behavior-Driven Development style to perform Test-Driven Development to develop an embedded system software module.

BDD adds several advantages to TDD:

  1. It results in an executable specification of a module that is understandable by both technical and non-technical stakeholders. This makes it easier to understand by all parties, and easier for them to specify additional behavior.
  2. Because of its emphasis on behavior, it guides the developer to test to interface, not internals. This minimizes the risk of creating brittle tests. That minimizes the need for test maintenance when doing production code maintenance: changing the internals doesn't create a mass of failing tests.
  3. It focuses on one aspect of behavior at a time. This ensures that tests only test one thing at a time, keeping them simple. When a test fails, it's clear what failed and what should have happened. That makes isolating and fixing the problem faster.
  4. It avoids code bloat and untested code, since every bit of production code is there because a behavioral test required it.

This additional layer of discipline makes TDD even more effective for both immediate development and long-term maintenance. It's easily applied to embedded systems modules to enable off-target testing, resulting in known-good components. It works equally as well when you start with a well-defined idea of what the module internals will be and when you only have a vague idea.

Go to Session


Live Q&A - Example of BDD Style TDD For Embedded System Software

Status: Available Now

Live Q&A with Steve Branam for the talk titled Example of BDD Style TDD For Embedded System Software

Go to Session


Learning Rust For Embedded Systems

Status: Available Now

This will cover my experience learning to work in Rust for embedded systems. This is from working as a volunteer firmware developer on the VolksEEG open source/open hardware project. Most of my experience is with C and C++, and this is my first project using Rust. I'll cover the resources I've used to learn both general Rust and the specifics of Rust on embedded systems, as well as the challenges I've run into. Rust eliminates several classes of problems that typically occur with other languages, but in order to do so it follows some different language philosophies and rules.

Go to Session


Live Q&A - Learning Rust For Embedded Systems

Status: Available Now

Live Q&A with Steve Branam for the talk titled Learning Rust For Embedded Systems

Go to Session


IoT Fault Lines (2020)

Status: Available Now

Steve will outline the fault lines in the elements of the IoT triad: the embedded devices, the frontend user applications, and the backend server applications.

These fault lines are a common source of problems during development, testing, deployment, operation, and maintenance of IoT products. The goal of the presentation is to heighten awareness of them to avoid nasty surprises, and present some strategies for managing and mitigating them.

Go to Session