Diiv.io

I’m currently a staff software engineer at Apple in the Apple Services Engineering org, working on distributed systems and mobile device management. Find me on LinkedIn, X / Twitter, and GitHub.

On the academic side, I hold a B.S. in EECS from UC Berkeley and an M.S. in Computer Science from Georgia Tech. My Berkeley EE coursework centered on signal processing, systems, random signals, and convex optimization, the direct foundations of these two courses. The CS half of the EECS degree, like my Georgia Tech master’s, focused on artificial intelligence and machine learning, alongside computer networking, security, operating systems, algorithms, and compilers.

This site documents a focused, self-directed weekend project: getting genuinely good at digital signal processing for embedded software / firmware engineering, both the mathematics underneath it and the hands-on firmware and bench work on top of it. It’s built as two courses plus the worked textbook sets behind them.

My full-time job always comes first (it’s my main love and passion), so this is a hobby-outside-work project I build on weekends, likely over 1–2 years to complete. Updates are slow by design, but when I do publish, I make sure to only put up content I feel is of solid quality.

Everything of substance here is done by hand, because the whole point is to learn. The math proofs and exercises are worked out by hand, and so are the labs and their associated write-ups once I actually do them. The only thing AI provides is this skeletal structure: the page scaffolding and consistent formatting, plus typesetting my handwritten proofs into LaTeX/KaTeX. Nothing beyond that skeleton is AI-generated.


The two courses

Course 1 is the mathematics: the theory prerequisite, worked by hand. Course 2 is the bench: a fully lab-based course that spends that theory building, measuring, and shipping real-time DSP on real hardware. Course 1 is assumed as a mastered prerequisite by Course 2; its results are applied there, never re-taught.

Course 1 — Mathematical & Theoretical Foundations

A 20-section course: ten sections on the theory books that matter most for DSP and embedded signal processing, ordered by dependency — linear algebra, numerical linear algebra, real analysis, probability, convex optimization, complex analysis, and distribution theory / Fourier transforms — then four sections of digital and statistical signal processing built on that foundation (filter design, the FFT, adaptive filtering, spectral estimation, and the Kalman filter), and six sections carrying it all into two dimensions and into sound: digital image processing (spatial and frequency-domain filtering, restoration, compression, segmentation) and digital audio signal processing (quantization, sample-rate conversion, equalizers, reverberation, dynamic range, coding), closing on the convolutional neural networks that end both books. A dependency-ordered syllabus of section-by-section themes and readings; I work select problems from each section’s chapters by hand, with the worked solutions on the Books page.

Books: Axler Linear Algebra Done Right · Trefethen & Bau Numerical Linear Algebra · Ross Elementary Analysis · Bertsekas & Tsitsiklis Introduction to Probability · Boyd & Vandenberghe Convex Optimization · Bak & Newman Complex Analysis · Strichartz A Guide to Distribution Theory and Fourier Transforms · Lyons Understanding Digital Signal Processing · Kuo, Lee & Tian Real-Time Digital Signal Processing · Bendat & Piersol Random Data · Grewal & Andrews Kalman Filtering · Cover & Thomas Elements of Information Theory · Gonzalez & Woods Digital Image Processing · Zölzer Digital Audio Signal Processing

Syllabus

Course 2 — Embedded DSP: From the Bench to Real-Time Firmware

A fully hands-on, lab-first course (~41 labs across 8 core modules + two bonus modules) that turns the math into working firmware. Bench instrumentation and safety; mixed-signal I/O (I²C DAC/ADC, level shifting); analog signal conditioning with op-amps; interrupt- and DMA-driven acquisition on an STM32 Cortex-M4F; real-time FIR/IIR filters, the FFT, PSD/noise-floor estimation, Goertzel tone detection, and Kalman state estimation; robust RTOS firmware; learned, on-device signal processing on a Raspberry Pi 5 and a Jetson Orin Nano; and a host-in-the-loop workflow that streams real audio/image/video files to the target, processes them, and verifies the result against a reference. Every circuit is predicted by hand, measured on real instruments, and reconciled.

Books: Oppenheim Signals and Systems · Lyons Understanding DSP · Hayes Statistical DSP and Modeling · Kuo, Lee & Tian Real-Time Digital Signal Processing · Grewal & Andrews Kalman Filtering · Bendat & Piersol Random Data

Syllabus

All Courses


Book proofs & notes

I work through selected proofs and exercises by hand on paper first. Once I’m satisfied with a solution, I typeset it in LaTeX/KaTeX; the typesetting is the only part that is AI-assisted. Everything is organized by book and chapter in Books.

  • Math (Course 1) — Axler (Linear Algebra Done Right), Trefethen & Bau (Numerical Linear Algebra), Ross (Elementary Analysis), Bertsekas & Tsitsiklis (Introduction to Probability), Boyd & Vandenberghe (Convex Optimization), Bak & Newman (Complex Analysis), Strichartz (A Guide to Distribution Theory and Fourier Transforms), Cover & Thomas (Elements of Information Theory)
  • Signal processing & EE — Oppenheim, Willsky & Nawab (Signals and Systems), Lyons (Understanding Digital Signal Processing), Hayes (Statistical Digital Signal Processing and Modeling), Kuo, Lee & Tian (Real-Time Digital Signal Processing), Grewal & Andrews (Kalman Filtering: Theory and Practice with MATLAB), Bendat & Piersol (Random Data: Analysis and Measurement Procedures)
  • Image & audio (Course 1) — Gonzalez & Woods (Digital Image Processing), Zölzer (Digital Audio Signal Processing)