EmbeddedRelated.com
The 2026 Embedded Online Conference

Lazy Properties in Python Using Descriptors

Jason SachsJason Sachs November 7, 2017

Python descriptors let you outsource attribute lookup, and Jason Sachs walks through a practical use: lazy, cached properties. He presents a LazyProperty descriptor that defaults to a WeakKeyDictionary cache so computed results are stored on first access and automatically purged when objects are garbage collected. The post shows how to share caches by value using attrkey or swap cache classes for different use cases.


Linear Feedback Shift Registers for the Uninitiated, Part VI: Sing Along with the Berlekamp-Massey Algorithm

Jason SachsJason Sachs October 18, 20174 comments

Jason Sachs breaks down the Berlekamp-Massey algorithm and shows how to recover an LFSR's minimal connection polynomial from a stream of output bits. The article mixes intuition, worked examples, and Python code to demonstrate the update rule, visual debugging tables, and when the solution is unique. Expect practical implementation notes, a complexity discussion, and a libgf2 example you can run in an IPython notebook.


Linear Feedback Shift Registers for the Uninitiated, Part V: Difficult Discrete Logarithms and Pollard's Kangaroo Method

Jason SachsJason Sachs October 1, 2017

Most discrete-log problems are hopeless by brute force, but clever algorithms cut that cost to feasible levels. This installment walks through baby-step giant-step, Pollard’s rho and kangaroo methods, and how Silver-Pohlig-Hellman and index calculus leverage group structure to speed attacks on GF(2^n) fields. Jason Sachs includes Python examples, heuristics, and complexity nuggets so you can see when each method is practical.


Linear Feedback Shift Registers for the Uninitiated, Part IV: Easy Discrete Logarithms and the Silver-Pohlig-Hellman Algorithm

Jason SachsJason Sachs September 16, 20174 comments

Discrete logarithms can be either trivial or infeasible depending on how group elements are represented, and Jason Sachs shows a practical route when they are intentionally easy. This article walks through using LFSRs as fast counters, why a smooth group order matters, and how the Silver-Pohlig-Hellman algorithm plus the Chinese Remainder Theorem recovers exponents in GF(2) with small prime factors.


Linear Feedback Shift Registers for the Uninitiated, Part III: Multiplicative Inverse, and Blankinship's Algorithm

Jason SachsJason Sachs September 9, 2017

Jason Sachs walks through Blankinship's constant-space variant of the Extended Euclidean Algorithm and shows how to compute multiplicative inverses both modulo an integer and in GF(2)[x]. The article uses clear numeric and polynomial examples, Python snippets, and an LFSR finite-field example to show how the algorithm yields Bézout coefficients and inverses useful for discrete-log tricks and cryptographic contexts. Readers get a practical recipe for inverse computation.


Tenderfoot: Embedded Software and Firmware Specialties

Matthew EshlemanMatthew Eshleman August 20, 20179 comments

This post revisits an earlier Stack Overflow answer and breaks embedded firmware into practical specialties, from assembly optimization and device drivers to DSP, IoT networking, security, UI, and systems architecture. It outlines the core skills, tools, and math each specialty demands, and explains how product constraints and industries shape those roles. Newcomers get clear guidance on where to focus their learning and career development.


Linear Feedback Shift Registers for the Uninitiated, Part II: libgf2 and Primitive Polynomials

Jason SachsJason Sachs July 17, 2017

Last time, we looked at the basics of LFSRs and finite fields formed by the quotient ring \( GF(2)[x]/p(x) \).

LFSRs can be described by a list of binary coefficients, sometimes referred as the polynomial, since they correspond directly to the characteristic polynomial of the quotient ring.

Today we’re going to look at how to perform certain practical calculations in these finite fields. I maintain a Python library called libgf2,...


Linear Feedback Shift Registers for the Uninitiated, Part I: Ex-Pralite Monks and Finite Fields

Jason SachsJason Sachs July 3, 20176 comments

Jason Sachs demystifies linear feedback shift registers with a practical, bitwise view and the algebra that explains why they work. Readable examples compare Fibonacci and Galois implementations, show a simple software implementation, and reveal the correspondence between N-bit Galois LFSRs and GF(2^N) so you can pick taps and reason about maximal-length pseudorandom sequences.


How to Succeed in Motor Control: Olaus Magnus, Donald Rumsfeld, and YouTube

Jason SachsJason Sachs December 11, 2016

Jason Sachs turned frustration with algorithm-heavy motor-control app notes into a practical MASTERs class, now available on YouTube. He walks through building a fifteen-minute field-oriented control refresher, the hazards teams commonly miss, and the months of prep required to make a polished technical lecture. Read for a candid behind-the-scenes look at teaching motor control to engineers and tips you can apply to your next drive project.


Scorchers, Part 1: Tools and Burn Rate

Jason SachsJason Sachs April 12, 20167 comments

Small purchases often pay for themselves faster than you expect, and Jason Sachs walks through the math to prove it. He shows how to compute a fully burdened labor rate, including taxes, benefits, overhead, holidays, and productive hours, then compares that rate to the price of common tools. The practical conclusion is simple: if a sub-$100 utility saves about an hour of productive work, just buy it.


Oh Robot My Robot

Jason SachsJason Sachs June 26, 2015

Oh Robot! My Robot! You’ve broken off your nose! Your head is spinning round and round, your eye no longer glows, Each program after program tapped your golden memory, You used to have 12K, now there is none that I can see,  Under smoldering antennae,   Over long forgotten feet,    My sister used your last part:      The chip she tried to eat.

Oh Robot, My Robot, the remote controls—they call, The call—for...


A Wish for Things That Work

Jason SachsJason Sachs January 1, 20182 comments

Jason Sachs revisits his long-running gripe with poor user interfaces, cataloguing annoyances from his Toyota Prius dashboard to desktop apps and browsers. He mixes sharp, real-world examples with a short, practical wishlist for 2018 aimed at making embedded displays, update behavior, security cues, and developer tools noticeably less frustrating for engineers and end users alike.


Linear Feedback Shift Registers for the Uninitiated, Part IX: Decimation, Trace Parity, and Cyclotomic Cosets

Jason SachsJason Sachs December 3, 2017

Taking every jth bit of a maximal-length LFSR uncovers a surprising algebraic structure. Jason Sachs walks through cyclotomic cosets, shows why decimation by powers of two preserves minimal polynomials, and connects LFSR output to trace parity and simple bitmask parity computations. The article uses hands-on Python with libgf2, Berlekamp-Massey, and state recovery so you can reproduce and automate these analyses.


Python Code from My Articles Now Online in IPython Notebooks

Jason SachsJason Sachs May 1, 20152 comments

Jason M. Sachs has published the Python code from his EmbeddedRelated articles as standalone IPython notebooks. He automated extraction of example code and pushed the notebooks to a public Bitbucket repository under the Apache license, and they are viewable via nbviewer. The post lists available notebooks and asks readers to link back to EmbeddedRelated and share feedback on how they used the code.


Book Review: "Turing's Cathedral"

Jason SachsJason Sachs November 20, 20146 comments

The early days of electronic computing are explored through George Dyson's Turing's Cathedral, which traces the IAS machine, John von Neumann, and Princeton's Institute for Advanced Study from 1940 to 1958. Jason Sachs praises Dyson's archival access and narrative detail, especially on hardware like vacuum tubes and delay lines, but warns the book's software explanations feel vague and would have benefited from diagrams.


Reading and Understanding Profitability Metrics from Financial Statements

Jason SachsJason Sachs March 29, 2022

Whoa! That has got to be the most serious-minded title I’ve ever written. Profitability Metrics from Financial Statements, indeed. I’m still writing Part 2 of my Supply Chain Games article, and I was about to mention something about whether a company is profitable, when I realized something that didn’t quite fit into the flow of things, so I thought I’d handle it separately: how are you supposed to know what I mean, when I say a company is profitable? And how am I...


Massive Open Online Courses ( Transforming education )

Jayaraman Kiruthi VasanJayaraman Kiruthi Vasan October 10, 20124 comments

Jayaraman Kiruthi Vasan outlines why MOOCs have become a practical way for embedded engineers and programmers to learn from top universities without quitting jobs. The post highlights platform options like Coursera, edX, Udacity and Khan Academy, explains how on-demand video lectures and clear prerequisites make targeted upskilling feasible, and points to DSP and Python courses useful for embedded design.


Musings on Publication — and Zero Sequence Modulation

Jason SachsJason Sachs May 30, 20141 comment

Publishing technical content involves more than writing, it requires tools, reviewers, and patience. Jason Sachs walks through his lean workflow for posting to EmbeddedRelated, contrasts it with the multi-person review cycles at semiconductor companies, and points out a neat trick for checking PDF metadata. He also highlights a Microchip tutorial on Zero Sequence Modulation that includes a 3-D HTML5 interactive viewer to make space vector concepts easier to grasp.


3D printing for embedded development

Ido GendelIdo Gendel February 19, 2024

Used mostly for creating little plastic objects, the desktop 3D printer is not an obvious addition to the embedded developer's toolbox. However, if you're looking for more reasons to get one, or already have one that's mostly gathering dust, here are a couple of embedded-related ways to get more value out of it.


Painting with Light to Measure Time

Jason SachsJason Sachs December 26, 2020

When Jason Sachs needed to verify a first-order sigma-delta LED dimming implementation but had no oscilloscope, he turned to long-exposure "light painting" to turn time into space on a photograph. By sweeping the camera across blinking LEDs he captured pulse trains, read the bit patterns from the light trail, and confirmed the result with a tiny Python accumulator model. The post shares practical tips on timing accuracy, exposure, and avoiding ambient-light artifacts.


The 2026 Embedded Online Conference