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.
Writing software helped shape how we think as engineers. As AI takes over more implementation, I worry about discovery debt: the questions and insights we miss when we skip the work that might have revealed them. Here is how I want to preserve understanding, curiosity, and judgment while working with coding agents.
Training is moving back onto the machines people own, and those machines are not a fleet you control. Apple GPU support sat on my plan for two years because nothing looked broken; the runs finished, they were just slower. Turning Metal on was worth 1.7x to 4.2x per epoch on the one M1 I own, and much less end to end. The measuring is what found the real bugs, three of which never raised anything: is_bf16_supported() answering True on a card that only emulates it, a gradient scaler silently dropping optimiser steps and halving a mAP, and 16-bit being slower than 32-bit on Apple Silicon even though everything works.
Models almost never ask you what you meant: across ambiguous questions, answer rates run above 95% and clarification barely registers. Repairing that in conversation makes it worse: underspecified multi-turn runs measure a 39% average performance drop, driven by a 112% jump in unreliability, and the effect shows up from two turns onward. The leverage is no longer in writing better prompts. It is in forcing the questions out before the first answer attempt, and in asking the questions afterward that prove you understood what you shipped.
WebMCP lets a web page hand callable tools to browser AI agents instead of making them scrape the DOM. I wired three read-only tools into this site. The interesting part was not the API. It was deciding what an agent, or a prompt injection riding one, is allowed to do.
When a machine writes most of your diff, the constraint stops being how fast you type and becomes how well you review. Here is the SDLC I actually run (the provenance audit, the sandbox, the CI backstops, and the three questions I ask every AI-authored change) plus the parts of review that don't compress and never will.
On small local models, the standard ReAct loop has a failure mode nobody warns you about: the model calls one tool, declares victory, and stops. What we measured across 12 GGUF models in EdgeVox, why we added a plan-once dispatcher, and how to decide which loop your task actually needs.
A first-hand build narrative of EdgeVox, a fully offline voice agent that chains speech-to-text, a local LLM, and text-to-speech on one device. The architecture in plain language, ROS2 integration, the latency budget, and the failure modes nobody warns you about.
Building a represent-me chatbot is a weekend project. Treating it like a production security surface is the part nobody writes about. Here is the architecture, the prompt leak I found by attacking my own bot, and the reusable suite that keeps it honest.
Vietnam already has the chips, three meaningful Vietnamese model attempts in flight, and the most binding AI law in Southeast Asia. The conversation about sovereign AI keeps demanding a 70B foundation model. The actual gap is one layer down: open evaluation, license-clean data, compliance-aware specialized models, and on-device runtimes that operationalize Law 134/2025 from March 2026.
A 2025 RCT found students who studied with ChatGPT scored 11 points lower on a retention test six weeks later, even though their work during the sessions was higher quality. Better results, worse thinking. Here is what the cognitive science says, and how it changed my own AI habits.
NVIDIA just open-sourced OpenShell, a policy-enforced sandbox for autonomous AI agents. Four security layers, a privacy router that decides which LLM sees which data, and hot-reloadable YAML policies. How it works and what it solves that nothing else does.
Vibe coding is shipping apps faster than ever, but also shipping vulnerabilities at alarming rates. This guide covers real disasters, practical security measures from secret scanning to endpoint hardening, and SOTA AI-powered review methods to keep your vibe-coded apps from becoming the next breach headline.
Coding isn't what it used to be. AI implements faster than we can type, and agents are automating our tasks. But there's a bright side: we're evolving from implementors into architects and reviewers. Here's how to survive the shift.
AI agents don't just talk. They execute code, which makes isolation the whole problem. The sandbox technologies that matter (microVMs, gVisor, WebAssembly) and the platforms built on them (E2B, Modal, Northflank).
OpenClaw, formerly Clawdbot, runs a personal AI agent locally and wires it straight into your messaging apps. Its gateway architecture, the security failures that followed, and what building a safe autonomous ecosystem would actually take.
Fine-tuning Llama 3.2 at 1B and 3B, then running the result locally in Llama Assistant. From the pre-trained models through tuning on your own data to on-device deployment.
Privacy in AI is a hot topic. I created Llama Assistant to provide a privacy-focused alternative to popular AI assistants like ChatGPT or Claude AI. In this blog post, I'll share my motivation behind creating Llama Assistant and how it differs from other AI assistants.
Where a Django app actually slows down as traffic grows. Benchmark first, then fix the database queries, add the right caching layer, and scale instances with Docker and Kubernetes.
A short review of advancements in YOLO-NAS - a new YOLO architecture born from Neural Architecture Search.
How I built AnyLabeling on top of Labelme: why the tool needed to exist, how Segment Anything and YOLO inference is wired into the labeling loop, and how text OCR labeling works.
Comparing Airflow, MLflow, and Kubeflow for MLOps: what each does, how Airflow plus MLflow stacks up against Kubeflow, and which to pick by scale.
Daisykit, a graph-based C++ and Python toolkit for deploying AI pipelines, from face detection to pose estimation and barcodes, in a few lines of code.
How to install OpenCV 4 on macOS with Homebrew for C++, plus the pip and conda routes for Python, tested on an Apple M1 Macbook Air.
My macOS setup note for a Macbook Air M1: Homebrew, daily apps, coding IDEs, and a ZSH plus iTerm2 terminal for a full development environment.
Two ways to get ROS 2 Foxy running on a Raspberry Pi 4: flash my prebuilt Ubuntu image, or set up Ubuntu, the desktop, and ROS 2 from scratch.
A review of YOLOX, the anchor-free YOLO with a decoupled head and SimOTA, plus a hands-on traffic-sign detection experiment on the VIA dataset.
Reading notes on three papers: CenterTrack for 2D tracking, CenterPoint for 3D detection and tracking, and CenterPoint++ for the Waymo real-time challenge.
A paper review of SECOND, the sparse-convolution 3D LiDAR detector: its GPU rule generation, angle loss, and point-cloud data augmentation.
Building a desktop pushup counter that combines human keypoint detection with signal processing to count reps from a webcam, no sensors needed.
The three deep networks behind my Jetson Nano ADAS: CenterNet detection, a ResNet-18 sign classifier, U-Net lane segmentation, plus TensorRT tuning.
Software design of an ADAS on Jetson Nano: forward collision warning, lane departure detection, and speed-limit sign over-speed alerts.
Building an ADAS prototype on a Jetson Nano: the motivation, feature scope, and hardware design for collision, lane-departure, and speed-limit warnings.
Set an Intel integrated GPU as the display renderer on Ubuntu 18.04 so your NVIDIA GPU's full VRAM stays free for CUDA and model training.
How to regain SSH access to an AWS EC2 Ubuntu instance after ufw locks you out, by disabling the firewall via a user-data script.
How to attach lifecycle methods like componentDidMount to a React functional component using the react-pure-lifecycle package.
Fix the mysql2 gem compile error on macOS when using MAMP by pointing gem install at the right mysql_config path.
Minify every JavaScript file in a folder with a short UglifyJS plus Bash loop, no Grunt setup required.
A beginner guide to GNU Emacs: why use it for coding, how to install it on Ubuntu, and the essential file, edit and cursor shortcuts