Writing
Blog
Thoughts on software architecture, AI, algorithmic trading, investing, and building for the long term.
Serving a Blog API from a Laravel App That Also Runs Filament
Adding a REST API to a Laravel site already running Filament admin without conflicts, extra packages, or over-engineering. Token auth, auto-slug generation, markdown table support, and draft previews.
Format Conversion in Pure Java: What Works, What Doesn't, and When to Bring in ONLYOFFICE
A conversion matrix across 7 Java libraries and ONLYOFFICE: where docx4j, POI, PDFBox, Commons Imaging, and Tika each shine and where they fall short.
Closing the Loop: How Trading Strategies Graduate from Backtest to Live Execution
Architecture and implementation of a multi-stage promotion pipeline that moves automated trading strategies from historical backtest through paper trading into live production, with gated qualification at each stage.
Architecting a Modular Trading Engine: 11 Maven Modules, Zero Circular Dependencies
A retrospective on splitting a Java trading system into an 11-module Maven monorepo: why the dependency graph matters more than the module count, how a zero-circular-dependency rule paid off during maintenance, and what I would do differently next time.
Building a Desktop Receipt Pipeline: Tesseract, Local LLMs, and Hybrid Extraction in PyQt6
A walkthrough of stitching Tesseract OCR, a local NuExtract-tiny model, and a DeepSeek fallback into a PyQt6 desktop app. Threading, fuzzy business matching, and the hybrid extraction architecture.
Event Sourcing a Backtest Engine: Why SQLite Beats Logfiles for Reproducibility
The BMad Method: A Structured Development Methodology for AI-Assisted Coding
Four phases, one rule: never ask an AI to code what it cannot describe. How the BMad Method (Build More Architect Dreams) keeps AI collaboration structured, auditable, and actually productive. Docs: docs.bmad-method.org
Building a Weekly Meal Pipeline: Scraper, LLM Vision, and Automated Meal Plans
How I built an automated pipeline that scrapes 3 grocery circulars, analyzes 44 images with Gemini, generates Ricardo-style weekly menus, and pushes everything to a web dashboard — saving hours every week.
OCR Extraction Benchmark: DeepSeek API vs NuExtract-tiny vs Tesseract
I built a benchmark to compare three approaches for structured data extraction from Quebec receipts. Here's what 18 synthetic receipts across 15 professions revealed about accuracy, speed, and cost.
The BMAD Method: A Structured Approach to AI-Assisted Development
I run 17 projects with AI assistance. Without a structured methodology, every session was a fresh start. The BMAD Method changed that — here is how a 4-phase workflow turned AI from a coding autocomplete into a true development partner.
Sparkle-Style Auto-Updates for PyQt6 Desktop Apps
I built a cross-platform auto-update system for PyQt6 that mirrors Sparkle's appcast pattern. Ed25519-signed XML feeds, QThread-based background checks, and the same installer plumbing on Windows, macOS, and Linux.
Building a Weekly Meal Pipeline
How I built an automated pipeline that scrapes 3 grocery circulars, analyzes 44 images with Gemini, generates weekly menus, and pushes to a web dashboard.