What we've been reading in November & December (2022)
Here are the articles, videos, and tools that we’ve been excited about this November & December. It’s a long list…happy new year!
We hope you enjoy these links, and we look forward to hearing what you’ve been reading in the comments or on the Interrupt Slack.
Articles & Learning
- 
    Memfault Panel - Building Firmware Teams in the Modern Era (Recording) 
 Phillip Johnston from Embedded Artistry, Kerry Scharfglass, Director of Device Software at Span, and I chatted about our experience working on and building out growing firmware organizations. If you are finding yourself leading a firmware or hardware team and trying to hire a number of engineers, listen in.
- 
    Memfault Webinar on Feb. 2nd - How to Monitor, Debug, and Update Infineon Devices with Memfault’s IoT Reliability Platform 
 Danny Watson, the Director of Software Product Management, and I will be giving a webinar demonstrating Memfault with Infineon devices. Come join us!
- 
    Goodbye to the C++ Implementation of Zig ⚡ Zig Programming Language 
 A very cool technique the Zig compiler uses when bootstrapping itself. - Noah
- 
    Creating a pick and place control board with the RP2040 - Stargirl (Thea) Flowers 
 A very thorough write-up describing the author’s open source pick and place control board. Very cool project! - Noah
- 
    How to make sure no Dynamic Memory is used - MCU on Eclipse 
 A post about how to ensure that your embedded projects don’t use a dynamic allocation via a heap. Sometimes you want a heap, other times you don’t. - Tyler
- 
    Welcome to Lord of the io_uring — Lord of the io_uring documentation 
 This website + their intro to async programming under Linux is great - Fausto.
- 
    When to hold ’em and when to fold ’em: Adding a hinge to a Game Boy that God never intended 
 An amazing and amazingly-documented Game Boy mod! - Noah
- 
    Investigating why Steam started picking a random font 
 A great bug investigation. Hop along for the ride!
- 
    Quirks of C 
 People love C. People hate C. At least we know it’s weird and fun in so many ways.
- 
    C23 implications for C libraries 
 C23 information in a nice and digestible format.
- 
    Channel Sounding – Bluetooth® Technology Website 
 From Mitch Johnson on the Interrupt Slack, a new Bluetooth LE standard extension for more accurate distance estimation vs. existing RSSI based approaches. Exciting work!
- 
    Introduction to Embedded Systems Programming — learn.adacore.com 
 Teaching the basics of embedded programming in Ada. If you find yourself programming an embedded device in Ada, please reach out! I’m very curious to hear your story.
- 
    What is zchunk? 
 An implementation of a delta-update system similar in appication to zsync and casync but with some interesting design choices that seem quite nice! - Noah
- 
    Parsing Protobuf at 2+GB/s: How I Learned To Love Tail Calls in C 
 Interesting article about using tail-calls for performance. - Noah
- 
    Everything I wish I knew when learning C - Tom M 
 A top post on Hackernews about some C tips the author wishes he knew earlier on in his career. Useful for us firmware engineers.
- 
    Google Online Security Blog: Memory Safe Languages in Android 13 
 Interesting write-up from Google on the change in languages used with Android. - Eric
- 
    Callbacks and Lambdas in Embedded C++ - Stratify Labs 
 The author goes over best practices using callbacks in C/C++.
- 
    How the 8086 processor’s microcode engine works 
 Article about 8086 microcode.
- 
    cpq/bare-metal-programming-guide: A bare metal programming guide (ARM microcontrollers) 
 A nicely thorough guide to programming an stm32, with a cool web server example at the end. - Noah
- 
    LoRa: Field Testing Antennas - News - SparkFun Electronics 
 SparkFun wrote about how to test LoRa antennas.
- 
    A Beginner’s Guide to Embedded Systems - Manasi Rajan 
 Great article for all embedded systems beginners.
Projects & Tools
- 
    vChavezB/puncover_html: Script to create a local html copy of the local puncover report. Intended for CI/CD purposes 
 A long time ago, an engineer at Pebble wrote puncover to help developers visualize code space usage for Pebble applications and the Pebble firmware itself. This project adds a little feature to it so that it can generate a bundle of static HTML, which can then be hosted anywhere!
- 
    EAStdC/EABitTricks.h at master · electronicarts/EAStdC 
 A header file on the EA public GitHub repo with common and optimized bitfield operations for C++.
- 
    radare2 online 
 Very nifty online radare2 console, for reversing / poking around binaries - Noah
- 
    WasmEdge 
 A WASM runtime targeting edge application and IoT - François
- 
    Arm CMSIS csolution - Visual Studio Marketplace 
 Didn’t realize Arm had published a few packages for VSCode. Looks like they’ll be slowly recommending people move from Keil to VSCode!
- 
    Stargirl🌠 on Twitter: The schematic viewer 
 Some neat looking PCB tools from the always excellent Stargirl Flowers. - Noah
- 
    wntrblm/Gingerbread: Web-based tool for creating artistic PCBs 
 “Gingerbread is a tool for converting vector artwork to KiCAD PCB files that live in your browser.”
- 
    ciniml/WireGuard-ESP32-Arduino: WireGuard implementation for ESP32 Arduino 
 Title says it all.
- 
    128Mb Ox64 SBC - PINE STORE 
 An interesting $8 Linux/RTOS RISC-V development board from the Pine team (in stock at the time of posting!) - Noah
- 
    espressif/esp-wdf: Espressif WASM Development Framework. 
 Espressif released a WASM framework for their chips, allowing more languages to run on their platform. - François
News & Updates
- 
    GDB News - Release 13 branch cut 
 The GDB version 13 branch has been cut! It’s much, much faster at loading and processing symbol files. I can’t wait for the final release!
- 
    Clang 15.0.0 Release Notes — Clang 15.0.0 documentation 
 Clang 15 added support for randomizing struct layout at compile time - Noah
- 
    MicroPython officially becomes part of the Arduino ecosystem - Arduino Blog 
 Arduino has made support for MicroPython official!
- 
    Virtual Hardware – Software Development Without Hardware – Arm® 
 Arm released some support for playing with their CPU’s virtually and in the cloud. Very cool! It’s primarily designed for server CPUs, but I hope to see this for microcontrollers soon. -Tyler
- 
    Arduino Unveils the Opta, Its First Micro PLC for the Industrial Internet of Things - Hackster.io 
 Arduino continues to release professional products, this time a new device targeted at the PLC market.
- 
    Z-Wave Alliance Announces Z-Wave Source Code Project is Complete, Now Open and Widely Available to Members - z-wavealliance 
 Z-Wave published their source code!
Random
- 
    Catherine on Twitter: Example of cc1 auto-fixing compilation errors 
 Clangcc1has support for auto-fixing some classes of compilation errors by running with clang-Xclang -fixit, as shown here 😮. - Noah
- 
    Optimization Tools — Zephyr Project Documentation 
 We learned recently that Zephyr has a way to generate a RAM and a ROM report for a given firmware build. Awesome!
