Upgrading Householder Right-Side: BLAS-2 to BLAS-3

Upgrading Eigen's Householder Right-Side Application from BLAS-2 to BLAS-3

Eigen’s blocked Householder path only existed for left-side application. I added the right-side equivalent, upgrading M*Q from O(n) rank-1 updates to cache-friendly blocked matrix multiplies.

March 23, 2026 · 4 min · Pavel Guzenfeld
Zero-Copy Video on Jetson: Building gst-nvmm-cpp

Zero-Copy Video on Jetson: Building gst-nvmm-cpp and Contributing to GStreamer

How we built a GStreamer plugin suite for zero-copy NVMM video on NVIDIA Jetson, the bugs we hit along the way, and what it takes to contribute to the GStreamer project — from filing issues to getting an MR merged.

March 23, 2026 · 13 min · Pavel Guzenfeld
Contributing to ROS 2 — A Practical Guide

Contributing to ROS 2 — A Practical Guide from Four Accepted PRs

Everything I learned submitting four pull requests to ROS 2 core repositories — from finding issues and building in Docker to passing DCO checks, handling OSRF’s AI disclosure policy, rebasing across distro branches, and running the full test suites. A warts-and-all field guide.

March 22, 2026 · 15 min · Pavel Guzenfeld
PX4 Autopilot: A Practitioner's Guide

PX4 Autopilot: A Practitioner's Guide to Troubleshooting, Debugging, Building, and Testing

Everything I learned contributing 6 PRs to PX4-Autopilot in a single session — from Docker-based builds and sanitizer workflows, through uXRCE-DDS session debugging and MAVLink signing analysis, to SITL integration testing. Real bugs, real fixes, real build output.

March 22, 2026 · 14 min · Pavel Guzenfeld
PX4 SITL to Unity in Docker: A 60-Hour Odyssey

Connecting PX4 SITL to a Headless Unity Simulation in Docker: A 60-Hour Debugging Odyssey

A three-day odyssey connecting PX4 flight controller to a GPU-rendered Unity drone simulation running headless inside Docker — through licensing labyrinths, shader abysses, coordinate system riddles, native library dragons, and a TCP protocol twist ending nobody expected.

March 21, 2026 · 10 min · Pavel Guzenfeld
Debugging Doxygen: How .inc Files Break C++ Docs

Debugging Doxygen: How .inc Files Silently Break C++ Documentation

Eigen’s .inc plugin headers were read by Doxygen but never preprocessed as C++ — meaning macros like EIGEN_PARSED_BY_DOXYGEN were silently ignored. Here’s how I verified it in Docker and what the one-line fix looks like.

March 21, 2026 · 8 min · Pavel Guzenfeld
Modified Gram-Schmidt vs Householder QR

Modified Gram-Schmidt vs Householder QR: A Performance Showdown in Eigen

I submitted a Modified Gram-Schmidt QR decomposition to Eigen and a maintainer asked: why? Here’s the benchmark data that answered the question.

March 21, 2026 · 7 min · Pavel Guzenfeld
Fixing a CI Pipeline on Jetson Xavier

Fixing a CI Pipeline on a Jetson Xavier — 15 Failures to Green

A day-long battle fixing a CI pipeline that builds Docker images on a self-hosted Jetson Xavier runner. From stale git submodules to GCC-15 assembler errors, expired tokens, DNS failures inside Docker, and deleted upstream branches — every layer of the stack had something broken.

March 20, 2026 · 10 min · Pavel Guzenfeld
Fixing an Infinite Loop in Eigen's 128-bit Division

Fixing an Infinite Loop in Eigen's 128-bit Integer Division

How a missing overflow check in Eigen’s TensorUInt128 division operator caused an infinite loop for any dividend above 2^127 — and the one-line fix that stopped it.

March 20, 2026 · 4 min · Pavel Guzenfeld
How GCC's fill_n Regressed Eigen's AutoDiffScalar

How GCC's std::fill_n Silently Regressed Eigen's AutoDiffScalar Performance

A performance optimization in Eigen’s fill path assumed all scalar types are equal. GCC’s libstdc++ disagreed — and AutoDiffScalar paid the price.

March 20, 2026 · 4 min · Pavel Guzenfeld