Blog

Technical articles on engineering, research, and leadership.

Every cover on this blog is a cyberpunk neon infographic made with OpenAI's gpt-image-1. This is what happened when I tried to reproduce that exact style locally on a MacBook Pro M5 Max, with no API: which open models match the aesthetic, why none of them can render small legible text, and the composite workflow that closes the gap.

Image GenerationFLUXQwen-ImageApple SiliconMLXmfluxLocal AI

A reproducible, end-to-end pipeline that turns Qwen2.5-Coder-14B into a focused Kubernetes troubleshooting assistant, trained with MLX on a single MacBook Pro M5 Max and deployed through llama.cpp. The twist: every training example is authored by Claude Opus, making this a worked example of distilling a strong closed model into a specialized open-weight one.

LLMFine-TuningLoRAMLXApple SiliconKubernetesllama.cpp

Part two of fine-tuning Qwen2.5-Coder-14B into a Kubernetes troubleshooting assistant. The first run proved the pipeline on 47 examples and overfit instantly; the obvious fix was more data. This is what happened when I scaled the synthetic dataset from 65 to 2,053 examples, generated it with Claude Code subagents instead of a paid API, and watched the validation loss actually fall.

LLMFine-TuningLoRASynthetic DataClaude CodeSubagentsKubernetes

What I learned getting A/B OTA updates working on real hardware with RAUC and systemd-boot. Covers EFI boot entry failures, custom bootloader handlers, per-slot kernels, atomic ESP writes, and automatic rollback.

YoctoRAUCOTA UpdatesEmbedded LinuxSystemd-BootA/B Updates

What I learned applying CIS Benchmark controls to an embedded Linux device. Covers kernel hardening, SSH configuration, firewall rules, AppArmor, filesystem restrictions, and CVE management — which controls were worth it and which were not.

Embedded LinuxSecurityCIS BenchmarksLinux HardeningAppArmorYocto

Notes from figuring out containerized Yocto builds with KAS. Covers the YAML layering model, commit pinning, sstate-cache economics, and the failures I ran into when builds stopped working.

YoctoKASDockerBitBakeEmbedded LinuxBuild Systems