Magic is Bad

The Pragmatic Embedded Podcast · 16 Oct 2024 · 41m

What this episode covers

Hosts Jeff Gable and Luca Ingianni discuss the dangers of 'magic' in software abstractions, arguing that while tools like Arduino are useful for beginners, overly complex or opaque systems like CMake and vendor IDEs create long-term maintenance risks. They contrast these with good abstractions such as TCP sockets, Miro Samek's QP framework, and the 'data model pattern,' emphasizing that effective design prioritizes testability, composability, and transparency over reducing typing. The conversation highlights how 'magical' tools often fail when users hit their limits, leading to brittle code and increased project risk.

Most relevant to

early-stage companies

Topics

Mentioned

Tools
Arduino, CMake, Microchip Harmony, QP Framework, Ruby, Git, Mercurial

Other shows on the same ground, closest first.

  • Embedded.fm · 1h 13m

    290: Rule of Thumbs (Repeat)

    Phillip Johnston, founder of Embedded Artistry, discusses his embedded systems consulting firm and his educational website, highlighting his focus on firmware engineering, code reviews, and robust software design. He explains how his company helps early-stage startups and medium-sized companies transition from prototypes to production, often by addressing firmware bottlenecks and implementing better testing and abstraction strategies. The conversation covers specific technical challenges, including the limitations of standard C++ threading libraries on embedded RTOSs like FreeRTOS and ThreadX, and the importance of risk analysis in complex systems, using the Boeing 737 MAX crashes as a case study for systemic failure.

  • Embedded.fm · 1h 05m

    53: Being a Grownup Engineer (Repeat)

    Jack Ganssle, author of 'The Art of Designing Embedded Systems' and 'The Embedded Systems Dictionary', argues that embedded software development has failed to adopt true engineering discipline, relying on 'heroics' rather than process. He cites the Toyota unintended acceleration case, where Michael Barr identified 11,000 global variables, as evidence of the catastrophic costs of poor software practices. Ganssle advocates for rigorous requirements gathering, static analysis tools like LDRA and Spark, and metrics-driven benchmarking to reduce debugging time and improve code quality. He contrasts this disciplined approach with the 'hacker' and 'maker' cultures, emphasizing that safety-critical systems require proven processes rather than ad-hoc coding.

  • The Amp Hour · 1h 13m

    Don't Turn It On, Don't Take It Apart

    Dave Jones of EEV Blog and Chris Gammell of Contextual Electronics discuss the complexities of open-source hardware, specifically regarding Jones's new professional test equipment product and the tension between community expectations and manufacturer concerns. They analyze why engineers join startups like Ubeam despite knowing the technology is flawed, citing the allure of working with smart people and cool tech. The conversation also covers the practical challenges of using modules versus building from scratch, the pitfalls of CAD software ecosystems like KiCad and Altium, and the importance of complexity as a defensive moat against cloning.

  • Embedded.fm · 51m

    410: Emacs From the Future

    Elecia White and Christopher White discuss the painful process of migrating from a vendor IDE to a free GCC and VS Code toolchain, highlighting issues with brittle dependencies, Python version conflicts, and Windows ARM virtualization. They then shift to a pedagogical discussion on embedded interrupts, distinguishing ISRs from asserts and callbacks, and explaining concepts like weak symbols and vector tables to students. The episode concludes with community news, including a new book club, a panel on device observability, and updates on WSL USB support.

  • Embedded.fm · 55m

    343: Getting Brains to Work

    Hosts Elecia White and Christopher White discuss the show's new transcript availability, the technical details of using a Cricut Maker with SVG files, and the legal and technical risks of using the Arduino IDE for professional products. They also cover debugging strategies for intermittent bugs and share personal experiences with focus, motivation, and executive function challenges.

The summary, chapters and topics are generated from the episode’s audio by this directory, not written by The Pragmatic Embedded Podcast. The episode itself belongs to its publisher.