478: The Map Is Not the Territory

Jan Rychter joined us to talk about building a company, electronic components, and software design.

Jan is the founder and engineer at PartsBox.com. If you are interested in the meta-analysis of the data, check out his article on the Top Ten Hobby Parts and the Electronic Component Database

You can find out more about Jan through his website (jan.rychter.com), LinkedIn, or Mastodon.

Transcript

473: Math Is Not the Answer

Philip Koopman joined us to talk about how modulo 255 vs 256 makes a huge difference in checksum error detection, how to get the most out of your checksum or CRC, and why understanding how they work is worth the effort.

Philip has recently published Understanding Checksums and Cyclic Redundancy Checks. He’s better known for Better Embedded System Software as well as his two books about safety and autonomous vehicles:

Phil has many free video lectures with great visuals to go along with his books. He also has three(!) blogs:

Currently, Phil is a professor at Carnegie Mellon University (his page there). You can follow him on LinkedIn

Elecia read (and give 2.5 stars to) Symmetry: A Journey into the Patterns of Nature by Marcus du Sautoy: “Interesting but uneven, I kept reading to find out what horrible things math profs do to their children in the name of fun. Worth it when I finally got to a small section with Claude Shannon (and Richard Hamming). It didn’t help with this podcast but it was neat.”

Transcript

Nordic Semiconductor empowers wireless innovation, by providing hardware, software, tools and services that allow developers to create the IoT products of tomorrow. Learn more about Nordic Semiconductor at nordicsemi.com, check out the DevAcademy at academy.nordicsemi.com and interact with the Nordic Devzone community at devzone.nordicsemi.com.

466: Attacked by a Goose on the Way to the Office

Ralph Hempel spoke with us about the development of Lego Mindstorms from hacking the initial interface to running Debian Linux as well as programming Mindstorms in Python. Happy 25th birthday to Lego Mindstorms!

Pybricks is a MicroPython based coding environment that works across all Lego PoweredUp hubs and on the latest Mindstorms elements. The creators are David Lechner and Laurens Valk.

Ralph was the first person to boot a full Debian Linux distro on the brick, see EV3Dev, a Debian Linux for Lego Mindstorms EV3. 

BrickLink was originally a site for third party resellers of new and used Lego sets and elements. The site was purchased by the Lego Group a few years ago. It's still a great place to buy individual parts - for example a 4 port PoweredUp hub to run the new PyBricks on :-)

ReBrickable is a site dedicated to taking off-the-shelf Lego sets, and creating something new with the set. In particular see the MOCs Designed by LUCAMOCS, fantastic Technic vehicles as well as interesting designs for vehicle subsystems.

Yoshihito ISOGAWA - YouTube is an absolute genius at coming up with practical applications of new LEGO Elements. Ralph recommends his books as “awesome to read”.

LEGO uses 18 Cucumbers to build real Log House 

Ralph highly recommends Test Driven Development for Embedded C  by James Grenning (who has been on the show: 270: Broccoli is Good Too, 109: Resurrection of Extreme Programming, and 30: Eventually Lightning Strikes).

Origami Simulator and Elecia’s origami generating python code on github

Transcript

Nordic Semiconductor empowers wireless innovation, by providing hardware, software, tools and services that allow developers to create the IoT products of tomorrow. Learn more about Nordic Semiconductor at nordicsemi.com, check out the DevAcademy at academy.nordicsemi.com and interact with the Nordic Devzone community at devzone.nordicsemi.com.

463: Layers of Band-Aids

Kevin Lannen is an embedded systems engineer making powered wheelchairs safer. This sounded interesting to us.

Kevin works at LUCI Mobility (luci.com). Check out their tear jerker introduction video as well as technical description of over-the-air update concerns on smart wheelchairs. We also talked about the app that goes with the system: LUCI View.

You can find Kevin on Twitter (@kevlan) and LinkedIn.

Go Baby Go - The Adaptive Sports Connection

Transcript

Memfault is making software the most reliable part of the IoT with its device reliability platform that enables teams to be more proactive with remote debugging, monitoring and OTA update capabilities. Try Memfault's new sandbox demo at demo.memfault.com. Embedded.fm listeners receive 25% off their first-year contract with Memfault by booking a demo here: https://go.memfault.com/demo-request-embedded

462: Spontaneously High Performing

Marian Petre spoke to us about her research on how to make software developers better at developing software.

Marian is an Emeritus Professor of the School of Computing & Communications at the Open University in the United Kingdom. She also has a Wikipedia page

The short version of How Expert Programmers Think About Errors is on the NeverWorkInTheory.org page along with other talks about academic studies on software development topics.  

The longer version is a keynote from Strange Loop 2022: "Expert Software Developers' Approach to Error".

This concept as well as many others are summarized in Software Design Decoded: 66 Ways Experts Think (Mit Press) by Marian Petre and Andre van der Hoek (MIT Press, 2016). The book’s website provides an annotated bibliography. Marian has also co-written Software Designers in Action: A Human-Centric Look at Design Work.

She is current conducting inquiries into:

  • Code dreams: This research studies whether software developers dream about coding – and, if so, the nature of those dreams.  Following on from work on software developers’ mental imagery and cognitive processes during programming, this project investigates developers’ experience of coding in their dreams (whatever form that takes), and whether the content of such dreams provides insight into the developers’ design and problem solving.

  • Invisible work that adds value to software development: The notion of ‘invisible work’ – activity that adds value in software development but is often overlooked or undervalued by management and promotion processes – arose repeatedly in discussions at Strange Loop 2022.  Developers asked for evidence they could use to fuel conversations -- and potentially promote change -- in their organisations. This research aims to capture the main categories of ‘invisible work’ identified by developers (e.g., reducing technical debt; improving efficiency; addressing security; development of tools and resources; design discussions; …), and to gather concrete examples of the value that work adds to software.  

Transcript

460: I Don’t Care What Your Math Says

Author, engineer, manager, and professor, Dr. Greg Wilson joined Elecia to talk about teaching, science in computer science, ethics, and policy.

The request for curriculum that started the conversation was the Cost of Change, part of NeverWorkInTheory which summarizes scientific literature about software development. 

Greg is the founder of Software Carpentry, a site that creates curriculum for teaching software concepts (including data and library science). Software Carpentry has great lessons for those who want to learn about software, data, and library science. It is a great site if you are teaching, trying to get someone else to teach, learning, or looking for some guidance on how to do the above. Check out their reading list.

Greg’s site is The Third Bit. Here you can find his books including full copies of several of his books including The Architecture of Open Source Applications, Teaching Tech Together, and most recently Software Design by Example

Transcript

453: Too Dumb to Quit

Nathan Jones has been talking about building command line interfaces, good design practices in C, creating MCU boards, wielding the PIC of destiny, and going beyond Arduino. As we are too lazy to attend the conferences, we asked him to give us the highlights. 

Nathan is giving two conference talks at Crowd Supply’s Teardown 2023 June 23-24 in Portland, Oregon:

He spoke recently at the Embedded Online Conference about Object Oriented Programming (well, really good design practices). He has a related github repository so you can look at the examples for yourself. He also gave a workshop on creating a simple command line interface (another excellent github repo full of examples).

Probably the best place to start is his Embedded for Everyone Wiki where he collects all the bits and pieces you might want to know about getting into embedded systems.

Transcript

452: Numbers on Computers Are Weird

Julia Evans spoke with us about how computers compute. We discussed number representation including floating point as well as Julia’s extensive collection of ‘zines and comics.

Julia’s zines about debugging, managers, Linux commands, and more are available on WizardZines.com. If you want samples, check out the comics section. Also, the experiments (aka playgrounds) are great additions to the zines (and fun on their own), letting you explore without changing your own DNS or removing all the files from your root directory. If you want to check out numbers, look at memory-spy (or from other sites like https://float.exposed/ and https://integer.exposed/)

Julia also has a detailed blog on jvns.ca and active github repositories. She was on Embedded 141: Malevolent and Trying to Trick You.

Sponsorship of this episode by Volta Labs, an MIT spin-off that is developing a novel lab automation platform for genome sequencing. We raised $20 million as part of our Series-A funding and are hiring for several roles related to embedded software. All roles are full-time, 100% onsite in Boston, MA, and require the ability to thrive in an early-stage startup.

  • Senior Firmware Engineer - Design/develop/debug firmware for our instrument platform. Requires strong experience with RTOS, C/C++, ARM-based microcontrollers

  • Tech Lead, Instrument Software - Lead design/development of instrument control software. Requires prior experience as a tech lead and strong experience programming control systems in Python on Linux.

  • Tech Lead, Electrical and Embedded Systems - Lead design/development of electrical subsystems and firmware. Prior experience as a tech lead, strong experience with electrical design / bring-up, and integration between firmware and electromechanical systems.

Transcript

436: 20 GOTO 10

Chris Svec joined us to talk about kids programming and how well the Joel Test has held up.

Svec’s son (“The Kid”) developed an interest in programming by playing games. Most of his programming desires are around building games of his own. 

Any time we talk about kids and programming, Scratch comes up. It really is that neat and is The Kid approved. Some resources to get you started (actually, getting started is easy, you may want a book to do more than the basics):

Digipen.edu had two courses The Kid (and Svec) took. Both are free on YouTube:

Finally, in a shockingly unrelated twist, we talked about the Joel Test for determining the health of a software development organization. No determination was made on how good The Kid finds his current position.

Transcript

421: Paint the Iceberg Yellow

Chris Hobbs talks with Elecia about safety critical systems. Safety-critical systems keep humans alive. Writing software for these embedded systems carries a heavy responsibility. Engineers need to understand how to make code fail safely and how to reduce risks through good design and careful development. 

The book discussed was Embedded Software Development for Safety-Critical Systems by Chris Hobbs.

This discussion was originally for Classpert (where Elecia is teaching her Making Embedded Systems course) and the video is on Classpert’s YouTube if you want to see faces.

There were many terms with letters and numbers, here is a guide:

  • IEC 61508: Functional Safety of Electrical/Electronic/Programmable Electronic Safety-related Systems; relates to industrial systems and forms the foundation for many other standards 

  • ISO 26262: Road vehicles - Functional Safety; extends and specializes IEC 61508 for systems within cards

  • IEC 62304 specifies life cycle requirements for the development of medical software and software within medical devices. It has been adopted as national standards and therefore can be used as a benchmark to comply with regulatory requirements.

  • MISRA C: a set of software development guidelines for the C programming language 

  • DO178-C and DO178-B: Software Considerations in Airborne Systems and Equipment Certification are the primary documents by which the certification authorities such as FAA, EASA and Transport Canada approve all commercial software-based aerospace systems

  • ISO/IEC 29119: Software and systems engineering -- Software testing

  • ISO 14971:2019 Medical devices — Application of risk management to medical devices (this is the on that was mentioned as a set of useful guidelines for identifying and mitigating hazards during brainstorming)

  • IEC 62304:2006 Medical device software — Software life cycle processes

Transcript

413: Puppy-Like Glee

Chris and Elecia chat about practice, software quality, and empathy for seemingly unmotivated team members. 

Elecia is teaching another cohort of Making Embedded Systems in the fall, starting late August. There will be reminders between now and then but if you want to sign up, here is the page. The funny and odd music instruction video with the copy-and-paste method of composition.

Sign up for the newsletter!

Support us on Patreon!

Transcript

402: We Are a Lazy Species

Chris Svec of iRobot and Phillip Johnston of Embedded Artistry join Christopher and Elecia to talk about the hows and whys of estimating software schedules..

The article that started the discussion was Agile Otter’s Platitudes of Doom

You can participate in these sorts of discussions on the Embedded Slack Channel by supporting Embedded on Patreon

On Phillip’s Embedded Artistry Website you can find a library of courses, hundreds of free articles, and even more member's only content. Their current focus is developing two new courses: Designing Embedded Software for Change and Abstractions and Interfaces. There are also many great posts on planning and estimation.

Transcript

401: Oil and Water

Miro Samek joins us to discuss designing systems, state machines, and teaching courses.

Miro’s company is Quantum Leaps (state-machine.com) which provides commercial licensing for QP Real-Time Embedded Frameworks.  It is an open source project, the code can be found on github: github.com/QuantumLeaps/qpc 

One of the key concepts is an Active Object which aids in real-time system development, especially in the areas of state machines and concurrency. 

Miro’s (amazing) Modern Embedded System Programming series can be found on his YouTube channel

You can also find Miro on Twitter: @mirosamek

395: I Can No Longer Play Ping Pong

Tyler Hoffman joined us to talk about developing developer tools and how to drag your organization out of the stone age.

You can use GDB and Python together? Yes, yes you can. And it will change your debugging habits. (You can find many other great posts from Memfault’s Interrupt blog including one about Unit Testing Basics.) 

Tyler is a co-founder at Memfault (memfault.com), a company that works on IoT dashboards and embedded tools. On Twitter, Tyler is @ty_hoff and Memfault is @Memfault.

Control-R is a history search in shell commands (magical!). The fuzzy search tool discussed is FZF (probably even more magical!).

XKCD comic referenced: xkcd.com/1319 

Fitbit’s Tower of Terror Bug

390: Irresponsible At the Time

Tyler Hoffman joined us to discuss the issues associated with embedded devices at consumer scale. We talked about firmware update, device management, and remote diagnostics for millions of devices.

Tyler is a co-founder at Memfault (memfault.com), a company that works on IoT dashboards and embedded tools. (We will invite Tyler back to talk about embedded tools but someone was preparing a lecture on firmware update and device management.)

Tyler writes for Memfault’s Interrupt blog which has excellent advice including the mentioned article about Defensive Programming. You can also find him and Memfault on Twitter: @ty_hoff, @Memfault.

Elecia is teaching Making Embedded Systems at ClasspertX, a high-quality MOOC with video lectures, quizzes, exercises, synchronous discussions classes, and a portfolio-worthy final project. The alpha cohort starts in early November and the course will run again in Q1 2022.

379: Monstrous Cable Corporation

Tom Anderson (@tomacorp) joined us to talk about floating pins, ADCs, and teaching and learning things. Tom mentioned Horowitz and Hill’s Art of Electronics and the vintage books on TubeBooks.org.

Tom wrote about  JFETs and vacuum tubes and Power Supply Filter Design for PCBs. He recommended the TI app note on floating inputs and a power supply book: Modern DC-to-DC Switchmode Power Converter Circuits.

You can find more of Tom’s writing on Medium and the Tempo Automation blog.

Other books:

Other Vintage Books:

269: Ultra-Precise Death Ray (Repeat)

Alan Cohen (@proto2product) wrote a great book about taking an idea and making it into a product. We spoke with him about the development process and the eleven deadly sins of product development. We did not talk about ultra-precise death rays.

Books we discussed:

Alan mentioned writing software graphically with Enterprise Architect


370: This Is the Whey

Alvaro Prieto (@alvaroprieto) spoke with us about cheese, making, work, the reverse engineering podcast, weather, and motivation.

Alvaro is a host of the Unnamed Reverse Engineering podcast. Some of his favorite episodes include #41 with Samy Kamkar, #14 with Joe Grand, and #23 with Major Malfunction. (Jen Costillo co-hosts the show and has been on Embedded several times.)

Alvaro works at Sofar Ocean, making oceanic sensing platforms. He has a personal website linking to his other exploits.

We talked about some Embedded episodes as well:

Also, we’ve all really enjoyed the Disney’s Mandolorian.