Blog / The engineering notebook
Ideas tested.
Lessons shared.
Field notes from building AI systems. Practical experiments, engineering decisions, and lessons worth sharing.
Blog / The engineering notebook
Field notes from building AI systems. Practical experiments, engineering decisions, and lessons worth sharing.
A paper review of SECOND, the sparse-convolution 3D LiDAR detector: its GPU rule generation, angle loss, and point-cloud data augmentation.
Conditional batch normalization predicts the affine scale and bias from a conditioning input, allowing language, class labels, or another signal to modulate visual features.
Streaming 800x600 video over HTTP from a five-dollar ESP32-CAM board, running a face detection test on the stream, and what the board is realistically good for.
Installing the Fira Code font on Ubuntu, with the commands for 16.04 and for 17.04 through 24.04. A programming font with ligatures, and the one I use everywhere.
My setup notes for a fresh Ubuntu machine, tested on 20.04 through 24.04: a script that installs most of the packages in one pass, plus the manual steps for everything it does not cover.
Replacing bash with Zsh on Ubuntu: install the shell, add Oh My Zsh, and wire up the zsh-autosuggestions plugin. Three steps, and the shell setup I keep coming back to.
Building a desktop pushup counter that combines human keypoint detection with signal processing to count reps from a webcam, no sensors needed.
Lecture 1 notes from the Apex.AI Autoware course: getting the development environment up with Docker, ROS 2, Terminator, and Autoware.Auto, the errors I hit along the way, and how I fixed them.
Course notes from Udacity's Self-Driving Fundamentals, featuring Apollo. What the seven lessons cover, from HD maps and localization through perception, prediction, planning, and control. Every diagram in the series is redrawn.
Lesson 7: steering, throttle, and brake that follow the planned trajectory while keeping passengers comfortable. PID, LQR, and model predictive control, with the tradeoffs of each.
Lesson 6: turning a map, a position, and a set of predictions into a trajectory. Routing the world as a graph, Frenet coordinates, path-velocity decoupled planning, and reading an ST graph.
Lesson 5: predicting what everything else on the road will do next. Model-based against data-driven approaches, lane-sequence prediction, and using an RNN to produce a trajectory for each tracked object.