Lazy Properties in Python Using Descriptors
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 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
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
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 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
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 Sachs digs into practical finite-field arithmetic for LFSRs, using his libgf2 Python library as the hands-on guide. He shows how to test whether a polynomial is primitive, why that matters for maximal-length sequences, and how the library implements addition, multiplication, exponentiation, and shifts over GF(2). The post is both a math refresher and a code walkthrough for engineers who want to compute with LFSRs instead of just talk about them.
Linear Feedback Shift Registers for the Uninitiated, Part I: Ex-Pralite Monks and Finite Fields
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 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
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.
3D printing for embedded development
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.
Book Review: "Turing's Cathedral"
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.
Tenderfoot: Embedded Software and Firmware Specialties
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.
What I Learned From Crashing and Burning in Grad School
Have you ever felt so consumed by something that it started to crowd other parts of your life? So obsessed with success in a particular area that you could hardly think about anything else? I found myself in exactly that spot in 2018 when I first started graduate school; I wanted to succeed so badly that I worked myself to the bone and I let even my marriage and my health suffer in service to it. This state of being is, believe it or not, NOT conducive to success, in neither the long-term nor the short-term. But it took two authors and one pivotal book for me to understand that, to see the pit I had dug for myself, and to begin the path back out. In this blog, I want to share with you my journey in the hopes that you can avoid the mistakes I made.
How to Include MathJax Equations in SVG With Less Than 100 Lines of JavaScript!
Jason Sachs recounts a simple hack to get MathJax equations inside SVG without heavy dependencies or complex tools. His approach renders MathJax in temporary HTML divs, captures the resulting SVG nodes, and swaps them into SVG
Musings on Publication — and Zero Sequence Modulation
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.
Baking in Process Improvements
Jason Sachs uses a backyard cookie-baking session with his niece to illustrate practical process improvements engineers can apply. He documents batch-by-batch tweaks — temperature, dough placement, and a pipelined scooping step — that raised throughput and improved quality, then connects the lesson to pilot projects and small automations like a Python script for JIRA. The piece makes the case for quick experiments and a culture that rewards refinement.
How to Succeed in Motor Control: Olaus Magnus, Donald Rumsfeld, and YouTube
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.
A Wish for Things That Work
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.
Garden Rakes Revisited: The Hall of Shame
Jason Sachs opens a Hall of Shame to catalog the everyday software "garden rakes" that steal time and focus. He walks through concrete examples from PowerPoint point editing and Office window behavior to Outlook undo bugs and TurboTax's opaque errors, showing how poor UI and hidden behaviors force you to work around the tool instead of with it. This is a short, cranky checklist for avoiding wasted effort.
Oh Robot My Robot
Jason Sachs turns a familiar poem into a robot sendoff, and the result is equal parts funny and oddly technical. The piece riffs on broken hardware, vanishing memory, and a machine that has clearly seen better days, all while keeping the rhythm of a classic elegy. If you enjoy engineering humor with a literary twist, this is a quick, memorable read.
Linear Feedback Shift Registers for the Uninitiated, Part IX: Decimation, Trace Parity, and Cyclotomic Cosets
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.
A Wish for Things That Work
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.
Python Code from My Articles Now Online in IPython Notebooks
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"
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
Reading a company’s financial statements does not have to feel like accounting homework. Jason Sachs shows how engineers can pull out the most useful profitability signals, especially gross margin and operating margin, from SEC filings and earnings releases. Using semiconductor companies as examples, he explains what those ratios mean, how they’re computed, and why they can hint at business strength or weakness.
Musings on Publication — and Zero Sequence Modulation
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.
Massive Open Online Courses ( Transforming education )
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.
3D printing for embedded development
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.
Garden Rakes Revisited: The Hall of Shame
Jason Sachs opens a Hall of Shame to catalog the everyday software "garden rakes" that steal time and focus. He walks through concrete examples from PowerPoint point editing and Office window behavior to Outlook undo bugs and TurboTax's opaque errors, showing how poor UI and hidden behaviors force you to work around the tool instead of with it. This is a short, cranky checklist for avoiding wasted effort.












