Writing
Blog
Thoughts on software architecture, AI, algorithmic trading, investing, and building for the long term.
Content and Container Separation: Building a PowerPoint Generator with JSON as Source of Truth
A weekly training series needed consistent PowerPoint decks without manual formatting. The solution: JSON as source of truth, a Python generator as the renderer, and a clean separation between content and presentation.
Drift Detection for Live Trading Strategies: Comparing Broker Performance Against Backtest Baselines
How the DriftEngine evaluates live broker metrics against backtest baselines, generates recommendations, and gates strategy deployment through statistical drift analysis.
Pairing Blood Pressure Readings from Health Connect: The Millisecond Problem
How the Hermes Health Connect app pairs systolic and diastolic readings from Android Health Connect using one-second buckets and fuzzy matching, before exporting to a Laravel backend.
Natural Unit Prices for Grocery Flyers: Why $/kg Hides What You Actually Pay
When your grocery price scraper normalises everything to $/kg, you lose the signal consumers actually see. Here is how Panier Futé learned to parse 473 ml, barquette, sac, and botte without hardcoding a lookup table.
From Circular to Alert: Building a Grocery Price Intelligence Pipeline in Laravel
How a Laravel app scrapes weekly grocery circulars, normalizes prices into a historical time series, predicts optimal buy moments with linear regression on SQLite, and fires Telegram alerts when a staple hits its floor price.
Three Bugs Before Breakfast: Integrating Flutter with Google Health Connect
A walk through three sequential bugs that blocked a Flutter app from reading Google Health Connect data, how each was discovered, and what the health package v13.3.1 actually needs from your AndroidManifest.
Binary Bars and Byte Orders: Building a High-Performance Backtest Data Pipeline
How I built a custom binary bar format with MappedByteBuffer, chased an endianness bug across Python and Java, and organized 11 Maven modules around zero circular dependencies.
Stop Treating AI Like Autocomplete: 5 Game-Changing Lessons from the OpenCode / Crush Revolution
Agentic coding is not about better prompts. The OpenCode-to-Crush lineage of Plan/Build agents, persistent AGENTS.md context, granular permissions, and provider sovereignty changes how developers collaborate with AI.
Why SQLite Works in Production: A Laravel Case Study
SQLite in production is not a toy. Here is how one Laravel site runs on it at zero marginal cost, with real backup and concurrency strategy.
Tracing Every Trade Back to a Git Tag: A Strategy Lifecycle Pipeline
A Laravel API that receives deployment events from a shell script, links every trade to a git tag, and surfaces the full lifecycle of a trading strategy across backtest, paper, and live environments.
15 Strategies, 9 Pairs, 20 Years: What the Backtest Data Actually Says
I ran 15 systematic strategies across 9 forex pairs over 20 years of H1 data. The results challenge most assumptions about market microstructure and strategy design.
A Laravel Markdown Pipeline: CommonMark, Frontmatter, and SQLite Date Sorting
How I built a robust markdown-to-HTML pipeline in Laravel using CommonMark with TableExtension, YAML frontmatter stripping, SQLite-safe date sorting for drafts, and dark-mode table CSS.