Blog
Measured studies, open-source implementations, and production lessons across edge AI, agent reliability, privacy, cost, and security.
Measured studies, open-source implementations, and production lessons across edge AI, agent reliability, privacy, cost, and security.
A Flatpak build that passed every structural check and still died one line into launch. Why green CI proved nothing about the GUI, and how to install the real artifact and start it under Xvfb instead.
Squared ReLU computes the square of a rectified activation. This note explains why Primer used it, how it changes gradients, and when not to adopt it blindly.
Ubuntu 24.04 cannot run different fractional scaling on a 4K laptop panel and a 2K external monitor. Upgrading to 24.10 and moving NVIDIA to Wayland fixes it.
Ubuntu 24.04 ships the original Kazam, not Kazam 2. How to build and install Kazam 2 from source, with the dependencies, PulseAudio support, and the optional OCR components.
Xorg, your desktop environment, and the browser can hold several GB of VRAM before training starts. How to find what is sitting on the GPU and hand that memory back.
Amending one commit message is easy; a run of them is not. How to rewrite several past messages at once with interactive rebase, after a batch of commits shipped without their story numbers.
SegFormer Mix-FFN inserts a depthwise 3×3 convolution between two feed-forward projections, giving image tokens local spatial context without explicit positional embeddings.
LayerScale multiplies each Transformer residual branch by a learned per-channel gain initialized near zero, helping very deep image Transformers begin close to an identity mapping.
Fifteen productivity tips from Dr. Milan Milanovic, covering single-tasking, the 3:3:3 plan, daily deep-work blocks, and the Feynman technique for learning something new.
A short note on Vinh Khuat's multi-instrument performance and what it shares with software: love the craft first, practice the tools, then build something whole.
Notes from Minh Vu's session on teaching as a core engineering skill: explaining something is how you consolidate it, which is why leads, founders, and engineers all end up teaching.
A 2023 record of moving this blog to Cloudflare Pages for free bandwidth on a static export, kept for history. The site runs on Vercel Pro again, because API routes, Postgres, the RAG chatbot, and cron jobs all need the compute.
Varifocal Loss trains dense detectors to predict a score that combines object confidence with localization quality, while focusing training on difficult negative examples.
Django opens a fresh database connection on every request. Set CONN_MAX_AGE for persistent connections, and add pooling when the database does not share a server with the backend.
DeBERTa separates token content from relative position, then combines content-to-content, content-to-position, and position-to-content attention scores.
ReGLU, GEGLU, and SwiGLU multiply one linear projection by an activated gate, giving Transformer feed-forward layers a learned control path.
GhostNet generates a small set of intrinsic feature maps with a normal convolution, then expands them using cheap depthwise operations. Here is how its module and bottleneck work.
Review of three papers in one line of work: CenterTrack for 2D tracking, CenterPoint for 3D detection and tracking, and CenterPoint++, the Waymo Real-time 3D Detection Challenge submission.
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.
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.
Lesson 4: turning camera, LiDAR, and radar data into objects. Classification, detection, and segmentation, what each sensor is good and bad at, and why Apollo fuses them rather than trusting one.
Lesson 3: how the vehicle places itself to single-digit-centimetre accuracy. Inertial navigation, GNSS and IMU, RTK, LiDAR and visual localization, and the multi-sensor fusion Apollo settles on.
Lesson 2: why a self-driving car needs an HD map rather than the one on your phone. Centimetre precision, lane markings and a 3D road network, how localization rides on top of the map, and how the maps get built.
Lesson 1: what actually makes up a self-driving car. The six levels of autonomy, how a machine driver differs from a human one, and the three layers of the Apollo platform: hardware, the open software stack, and the cloud services.
Lovász-Softmax is a differentiable surrogate for the Jaccard/IoU loss. It sorts pixel errors and weights them by the discrete change they cause in IoU.
CBHG is the sequence-processing block used in the original Tacotron: a 1D convolution bank, highway network, and bidirectional GRU working at different context scales.
VGG perceptual loss compares generated and target images in a frozen feature space instead of requiring every output pixel to match.
Accuracy alone hides a bad classifier. A walkthrough of the confusion matrix and what is built from it: precision, recall, specificity, F-score, and the AUC-ROC curve, with when each one is the metric that matters.