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
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 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
Fixing GCC False-Positive Warnings in Eigen

Fixing GCC False-Positive Warnings in Eigen: A Deep Dive into -Warray-bounds at -O3

How a GCC 13 false-positive -Warray-bounds warning in Eigen’s TensorContraction led to a lesson about if constexpr, C++14 portability, and the right way to suppress compiler warnings in a large codebase.

March 18, 2026 · 4 min · Pavel Guzenfeld

behavior-tree-lite -- C++23 Header-Only Behavior Tree Library

Header-only C++23 behavior tree with compile-time DSL, zero heap allocations, and sub-nanosecond node dispatch. 10x smaller binary than BehaviorTree.CPP.

1 min · Pavel Guzenfeld

fiber-nav-sim -- PX4 + Gazebo VTOL Navigation Simulator

GPS-denied VTOL navigation simulator using fiber optic odometry and monocular vision fusion. PX4 SITL + Gazebo Harmonic + ROS 2 Jazzy. Sub-meter accuracy over 3.3km.

1 min · Pavel Guzenfeld