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 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 multi-weekend project: learning about via real practice on digital signal processing for embedded software / firmware engineering and real-time rendering and GPU engineering. It’s built as one comprehensive math theory course followed by three courses, a DSP course, a course on computer architecture and ARM assembly, and a lab-based rendering/GPU course.
My full-time job and commitments to my family like my amazing wife always come first, 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 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 3 is a short supporting course beside them: computer architecture and hands-on ARM64 assembly, the machine model underneath Course 2’s firmware. Course 4 points the same foundation at a second craft: real-time rendering and GPU engineering — modern C++20, Vulkan, Metal, and CUDA, fully lab-based with a profiler open on every lab.
Course 1 — Mathematical & Theoretical Foundations
A single self-contained booklet, Abridged Math Foundations for Signals and Systems: 60 lessons in 8 parts, dependency-ordered. Linear algebra through the spectral theorem, the DFT as a unitary matrix, the SVD, and determinants; probability through conditional expectation, random and Gaussian vectors, limit theorems, Bernoulli/Poisson processes, and Markov chains; signals and systems — convolution, Fourier series and transforms, frequency response, sampling, Laplace and \(z\)-transforms; applied signal processing — the DFT in practice, FIR/IIR design and finite word lengths, multirate and sigma–delta conversion, spectrum estimation, Wiener/LMS/Kalman filtering, detection and digital communication, image and audio processing, learned DSP, and bench electronics; the analysis behind the transforms — Lebesgue integration, Hilbert spaces and \(L^2\), complex analysis, distributions, and numerical linear algebra; and convex optimization and information theory — convex models, regularized fitting, duality and KKT certificates, gradient/Newton/proximal algorithms, entropy, KL divergence, mutual information, channels, and rate–distortion. Each lesson: theory with proofs, practice by hand, and [Proof]/[Hand] exercises worked by hand; per-lesson deeper-reading pointers resolve to the textbooks on the Books page.
Books: Axler Linear Algebra Done Right · Trefethen & Bau Numerical Linear Algebra · Ross Elementary Analysis · Axler Measure, Integration & Real Analysis · Bertsekas & Tsitsiklis Introduction to Probability · Bak & Newman Complex Analysis · Strichartz A Guide to Distribution Theory and Fourier Transforms · Kreyszig Introductory Functional Analysis with Applications · Dunn & Parberry 3D Math Primer for Graphics and Game Development · Lyons Understanding Digital Signal Processing · Kuo, Lee & Tian Real-Time Digital Signal Processing · Hayes Statistical Digital Signal Processing and Modeling · Grewal & Andrews Kalman Filtering · Richards Fundamentals of Radar Signal Processing · Proakis & Salehi Digital Communications · Gonzalez & Woods Digital Image Processing · Tekalp Digital Video Processing · Zölzer Digital Audio Signal Processing
Course 2 — Embedded DSP: From the Bench to Real-Time Firmware
A fully hands-on, lab-first course (~46 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: Lyons Understanding DSP · Hayes Statistical DSP and Modeling · Kuo, Lee & Tian Real-Time Digital Signal Processing · Grewal & Andrews Kalman Filtering
→ Syllabus
Course 3 — Computer Architecture, ARM Assembly & Modern Embedded C
A deliberately short bridge course that opens the black box between C and silicon: digital design and computer architecture theory (gates to pipelines to caches), exercised hands-on in ARM64 (A64) assembly on Apple Silicon — every coding exercise assembles, runs, and is debugged locally with clang and lldb — then the other ARM: the 32-bit Thumb-2 Cortex-M world of Course 2’s STM32, taught through Yiu and cross-compiled disassembly, with a capstone note comparing one algorithm across the two ISAs. It closes on the language itself: modern C for firmware — from K&R to the C17/18 baseline STM32 toolchains build, plus the embedded idioms and best practices (volatile, MMIO, layout control, interrupt-safe patterns, the undefined behavior that matters), each proven in disassembly rather than asserted.
Books: Harris & Harris Digital Design and Computer Architecture, ARM Edition · Smith Programming with 64-Bit ARM Assembly Language · Yiu The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors · Seacord Effective C, 2nd ed. · the course’s Modern C for STM32 Firmware reference guide
→ Syllabus
Course 4 — Real-Time Rendering & GPU Engineering: Vulkan, Metal & CUDA in Modern C++
A fully lab-based course (33 labs across 8 modules) pointing Course 1’s mathematics at real-time 3D graphics: the graphics pipeline learned twice, with every scene rendered through both Vulkan (modern C++20 under CMake) and Metal (Swift, then metal-cpp); general-purpose CUDA programming in C++ and Python on a Linux desktop’s RTX 4090; an engine grown lab by lab — resource lifetimes, a render graph, multithreaded command recording, culling and instancing; the techniques modern renderers are made of — cascaded shadow maps, deferred shading on tile-based Apple GPUs, quadtree terrain with streaming, GPU-driven rendering, Gaussian splatting; and performance engineering as a first-class subject, with Tracy, Xcode GPU capture, RenderDoc, and Nsight on every lab and a capstone world viewer shipped on two APIs and two GPUs with a written performance report.
Books: Begbie & Horga Metal by Tutorials · Castorina & Sassone Mastering Graphics Programming with Vulkan · Motta GPU Programming with C++ and CUDA · Halladay Practical Shader Development · Lengyel Mathematics for 3D Game Programming and Computer Graphics · Dunn & Parberry 3D Math Primer for Graphics and Game Development
→ Syllabus
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), Axler (Measure, Integration & Real Analysis), Bertsekas & Tsitsiklis (Introduction to Probability), Bak & Newman (Complex Analysis), Strichartz (A Guide to Distribution Theory and Fourier Transforms), Kreyszig (Introductory Functional Analysis with Applications), Dunn & Parberry (3D Math Primer for Graphics and Game Development)
- Signal processing & EE — 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), Richards (Fundamentals of Radar Signal Processing), Proakis & Salehi (Digital Communications)
- Image, video & audio (Course 1) — Gonzalez & Woods (Digital Image Processing), Tekalp (Digital Video Processing), Zölzer (Digital Audio Signal Processing)