The CSS specificity trap that killed my paragraph spacing
How a routine margin reset overrode the owl selector and made all my prose paragraphs run together — and the one-line fix.
Notes from a software architect working in energy, commodities and banking. Long-form writing on software development, rules engines, the history of computing in Armenia, and the process of digitising old books.
How a routine margin reset overrode the owl selector and made all my prose paragraphs run together — and the one-line fix.
How to use Hugo's layout key to give a standalone page its own template, rather than bending a shared layout with conditionals.
How to build a floating thumbnail tooltip for Leaflet photo markers — shared DOM element, edge-flip positioning, hover delays, and keyboard accessibility.
Why the 'first tap previews, second tap acts' pattern is broken on touch devices, and what to do instead.
A lightweight, zero-dependency test that walks your Hugo content tree and catches broken image paths before they reach production.
Drools is no longer the only game in town. A look at Easy Rules, RuleBook, and when you should reach for a rules engine at all.
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.
Switching the blog to Hugo on GitHub Pages after years on various platforms.
Armenia's pivotal role in developing computers in the Soviet Union — written in preparation for an Armenian Institute event on Women in Science.
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 KIE Workbench REST API lets you automate project setup in a fresh container — useful when VirtualBox keeps changing your IP address.
Connecting a Spring Boot application to two separate databases with Spring Data JPA, working around Boot's default autowiring behaviour.
Just the essentials: a Spring Boot application exposing a Drools rules engine as an HTTP API, nothing more.
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.
A reference project wiring Spring and Drools without the heavyweight KIE integration — hand-cranked and straightforward.
Drools's built-in sum accumulator silently converts BigDecimals to doubles. A custom accumulator to fix that before it corrupts your financial calculations.
A Ruby script to parse the Nexus REST API and reliably fetch the latest snapshot artifact, sidestepping the timestamped filename problem.
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.
Useful WLST resources and Gist examples for scripting WebLogic domain creation and server administration.
BEA's Jython-based scripting tool for automating WebLogic server administration — create domains, manage deployments, and handle disaster recovery without restarting.