How I built a composable pipeline to take physical book scans through OCR, automated cleaning, AI copy-editing, and Vellum layout — and packaged it as a reusable toolchain with a step-by-step tutorial.
How to build a floating thumbnail tooltip for Leaflet photo markers — shared DOM element, edge-flip positioning, hover delays, and keyboard accessibility.
How to stamp a copyright notice onto every image at Hugo build time using images.Text — including the font trap, the shadow technique for readability, and how to keep multiple shortcodes in sync.
How to replace browser-side EXIF GPS reading with a pre-build Node script that embeds coordinates directly in the HTML — faster maps, no async loading, no browser EXIF parsing.
A collection of non-obvious traps in Hugo's image processing pipeline: the ASCII-only default font, the strings.TrimLeft argument order, stale image caches, and why two shortcodes processing the same image can produce different URLs.
How to build an interactive map for a Hugo static site that reads GPS coordinates directly from image EXIF data and plots photo markers alongside a GPX route — with all the gotchas.
In 2020, the Armenian Institute republished I Ask You, Ladies and Gentlemen by Leon Surmelian. This is the story of how I got involved in digitising it.
The Maven Shade plugin bundles all dependencies into a single fat jar — handy for deploying libraries into Drools Guvnor or running self-contained FitNesse fixtures.
Drools's built-in sum accumulator silently converts BigDecimals to doubles. A custom accumulator to fix that before it corrupts your financial calculations.
Configuring a Spring application with two separate data sources using Spring Data JPA — separate @Configuration classes and EntityManagerFactory beans for each schema.
First impressions of Apache Camel for implementing Enterprise Integration Patterns — a content-based router and a CSV-to-XML transform with almost no code.
BEA's Jython-based scripting tool for automating WebLogic server administration — create domains, manage deployments, and handle disaster recovery without restarting.