#026 - Metrics Dashboards to the Rescue
Jacob Beningo concludes his embedded software modernization framework series by discussing the establishment of metrics scoreboards for embedded systems development. He explores various metrics categories including code quality, performance, and security, with a deep dive into cyclomatic complexity as a powerful but underutilized metric among embedded developers.Key Takeaways:• Metrics scoreboards provide visibility into quality, predictability, and improvement opportunities in embedded development• Things that get measured get managed - tracking metrics helps identify root causes of development problems• Avoid vanity metrics like commit frequency; focus on metrics aligned with project goals• Cyclomatic complexity measures independent paths through functions and should stay below 10 for maintainable code• Seven key metrics categories: code quality, reliability/safety, testing, performance, resource utilization, process/productivity, and security• AI tools can significantly simplify dashboard creation and metrics analysis automation• Code coverage is valuable but can be gamed - ensure tests actually validate functionality, not just execute code• Compiler warnings should be eliminated or documented; aim for zero warnings in production code• Metrics trends are more important than point-in-time values for identifying code quality decay• Modern tools like Segger SystemView and Percepio Tracealyzer enable real-time performance metrics collection
#025 - Modernize Your Embedded System with AI / ML
Jacob Beningo explores how artificial intelligence and machine learning can modernize embedded systems development, sharing practical examples and dispelling myths about AI's applicability to embedded development. He demonstrates how AI can accelerate development workflows, from requirements gathering to code generation, while emphasizing an iterative, agile approach rather than fully autonomous AI development.Key Takeaways:• AI can provide 2x performance improvements for embedded development teams through automation and assistance• Use AI iteratively in small problem spaces rather than attempting fully autonomous agentic workflows• Create specialized AI tools for specific embedded systems domain areas like requirements gathering and code reviews• AI can help reduce debugging time, which typically consumes 20-40% of development effort• Machine learning inference can run effectively on resource-constrained 16-bit microcontrollers• Teams ignoring AI adoption risk being left behind as the technology becomes mainstream in embedded development• Focus on identifying repetitive daily tasks that can benefit from AI automation• Modern microcontrollers with neural processing units enable sophisticated on-chip machine learning applications• AI works best as a productivity multiplier rather than a replacement for embedded developers• Start with low-hanging fruit like debugging assistance and code review automation
#024 - Simulating Embedded Systems
In this episode, Jacob explores simulation for embedded systems as the seventh step in modernizing embedded development. He discusses functional simulation, on-chip simulation, and software architecture simulation, demonstrating how proper abstraction enables developers to validate code before hardware is available. Jacob provides a practical demonstration of simulating a push button module with debouncing algorithms, showing how modern software architecture can dramatically improve embedded system development workflows.Key Takeaways:• Functional simulation allows embedded developers to validate code without physical hardware by abstracting low-level hardware dependencies• Modern embedded architecture should decouple application code from hardware using zero-cost or low-cost abstractions• Push button debouncing serves as an excellent example for learning simulation techniques that every embedded engineer can relate to• On-chip simulation tools like QEMU and Renode can simulate processor-level instructions but may be incomplete for microcontroller peripherals• State machine simulation enables visual validation of system behavior before code deployment• AI tools can now rapidly generate simulation code, making functional simulation more accessible than ever• Socket communication provides deterministic and fast data exchange for functional simulation environments• Start simple with side projects like weather stations or button modules to learn simulation techniques• Legacy systems can be gradually refactored to support simulation by decoupling high-risk areas from hardware dependencies• Simulation enables faster development cycles and reduces dependency on hardware availability during early development phases
#023 - Modernization Embedded Systems with Test-Driven Development
In this episode, embedded systems expert Jacob Beningo explores test-driven development (TDD) as the fourth step to modernize embedded software development. He addresses common misconceptions that TDD doesn't work for embedded developers, demonstrates how proper software architecture enables effective testing, and explains the mental shift required to write tests before production code for higher quality, more reliable embedded systems.Key Takeaways:• Test-driven development requires writing tests first, then production code to make tests pass, which feels counterintuitive initially but improves over time• Properly architected embedded software with decoupled hardware layers makes TDD highly effective for application code• The mental adjustment to TDD takes several weeks but results in faster overall development and higher code quality• TDD provides immediate feedback when changes break existing functionality through regression testing• Multiple testing types are available: unit, integration, system, regression, performance, and user acceptance testing• System-level TDD can drive development from user requirements down to individual components• AI tools can accelerate TDD processes while maintaining rigorous testing standards• A simple push button module can require 98 tests and 4,000 checks for complete validation• 100% test coverage is a worthy goal but doesn't guarantee bug-free code• TDD initially feels slower but dramatically reduces debugging time and improves long-term development velocity
#022 - 2026 Embedded Systems Trends
Embedded systems expert Jacob Beningo explores five major industry trends for 2026, focusing on how AI-assisted development, security requirements, and platform-based engineering are reshaping embedded software development. This comprehensive analysis covers emerging technologies and methodologies that microcontroller-based system developers need to understand to stay competitive in the evolving embedded systems landscape.Key Takeaways:• Use AI to create custom development tools rather than just copying code, potentially saving months of development time annually• Security is no longer optional due to regulations like CRA - threat modeling and secure boot processes are now requirements• Platform-based engineering is driving adoption of modern tools like CMake, VS Code, and Zephyr RTOS across silicon vendors• C++ continues gradual adoption in embedded systems, growing from 3% to 30% market share over 20 years while C remains dominant• Functional simulation techniques can reduce debugging time by 50%, saving significant development resources when combined with AI tools• Edge AI and tiny ML are poised for resurgence as microcontrollers gain more compute power and specialized processing units• DevOps adoption varies widely, with basic Git and compilation pipelines being minimum requirements for modern development• West manifest tools are becoming important for managing complex multi-repository platform projects• AI should enhance expertise rather than replace fundamental embedded systems knowledge and skills• Copy-paste culture threatens to erode deep embedded systems expertise needed for solving complex hardware-software integration issues