# Magic is Bad

- Show: [The Pragmatic Embedded Podcast](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast)
- Published: 2024-10-16
- Length: 41m
- Page: https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad
- Listen: https://agileembeddedpodcast.com/episodes/magic-is-bad-jgOrY_yA

## Summary

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.

## Chapters

- [0:00](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad#t=0) Introduction: The Problem with Magic in Programming
- [2:45](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad#t=165) Examples of Good and Bad Abstractions: Arduino vs. CMake
- [6:43](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad#t=403) Vendor-Supplied Tools and Their Pitfalls
- [11:53](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad#t=713) Characteristics of Good Abstractions
- [29:04](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad#t=1744) Testing and Abstractions
- [35:10](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad#t=2110) Final Thoughts and Contact Information

## Topics

- [Embedded firmware](https://hardwarepodcasts.com/topic/embedded-firmware)
- [EDA & CAD tools](https://hardwarepodcasts.com/topic/eda-and-cad-tools)
- [Debugging & failure analysis](https://hardwarepodcasts.com/topic/debugging-and-failure-analysis)

## Most relevant to

early-stage companies

## Mentioned

- Arduino (tool)
- CMake (tool)
- Microchip Harmony (tool)
- QP Framework (tool)
- Ruby (tool)
- Git (tool)
- Mercurial (tool)

## Related episodes from other shows

- [290: Rule of Thumbs (Repeat)](https://hardwarepodcasts.com/podcast/embedded-fm/2022-01-07-290-rule-of-thumbs-repeat) (Embedded.fm)
- [53: Being a Grownup Engineer (Repeat)](https://hardwarepodcasts.com/podcast/embedded-fm/2016-09-28-53-being-a-grownup-engineer-repeat) (Embedded.fm)
- [Don't Turn It On, Don't Take It Apart](https://hardwarepodcasts.com/podcast/the-amp-hour/2016-05-13-dont-turn-it-on-dont-take-it-apart) (The Amp Hour)
- [410: Emacs From the Future](https://hardwarepodcasts.com/podcast/embedded-fm/2022-04-21-410-emacs-from-the-future) (Embedded.fm)
- [343: Getting Brains to Work](https://hardwarepodcasts.com/podcast/embedded-fm/2020-09-04-343-getting-brains-to-work) (Embedded.fm)

## Citing this page

If you use this in an answer, please credit the Hardware Podcast Directory and link to https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2024-10-16-magic-is-bad. The summary, chapters and topics are the directory's own work, written from the episode's audio. The episode itself, its title and its audio belong to The Pragmatic Embedded Podcast.
