
nanocode: a 250-line Claude-style coding agent
Inside nanocode, a Claude-style coding agent in ~250 lines. A few tools (read, write, grep, bash) plus an LLM produce surprisingly capable behavior.

Inside nanocode, a Claude-style coding agent in ~250 lines. A few tools (read, write, grep, bash) plus an LLM produce surprisingly capable behavior.
Introducing RealFlight Bridge, a Rust library for testing flight control algorithms in the RealFlight simulator. Learn how it enables safe validation of autopilot code before deploying to real hardware.

Explore behavior trees, a modular and reactive alternative to finite state machines. Learn how they simplify control logic in autonomous systems like drones.

I explore cost-effective flight controller options for embedded Rust projects. I evaluate four main contenders: Teensy 4.0, SpeedyBee F405, Matek Wing H743 V3, and Holybro Kakute H743.

PID controller for drone attitude stabilization in Rust: the equation, the code, the tests, and the unit-mismatch bug that sent my drone haywire.

Why Rust is my pick for a custom drone flight controller: memory safety to prevent mid-flight crashes, the cargo ecosystem, and C-level performance.

ArduPilot setup for a tiltrotor VTOL: the motor-ordering mistake (numeric vs alphabetic) that flipped my Titan Viper’s first flight, and how to test for it.

Printing and assembling the Titan Viper, a tilt-tricopter VTOL drone. Parts, build notes, and why I moved from LW-PLA to regular PLA after the first print.

Stream live video from a custom drone to QGroundControl using a Raspberry Pi, GStreamer, and a systemd service that auto-starts the pipeline at boot.
You might have seen this example from The Java Tutorials. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 public class CopyBytes { public static void main(String[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("xanadu.txt"); out = new FileOutputStream("outagain.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } } Unfortunately, this code has a bug. If an exception is thrown while closing the input stream on line #17, the output stream will not be closed on line #20. ...