23 Jul 2021

So. I’m starting over.

This weblog is my space to ramble on in bursts longer than 140 characters. The opinions are my own. If you’d like to follow along, you can subscribe to one or more of several feeds. Or just click the links below, that works too. So does searching.


We inherited an orchid with the house. I was trying to decide if it was worth keeping when I noticed it had started a flower spike. Clever orchid.

Emacs is an example of that rare thing, a program that just improves over time. Most recently, I switched (back) to the Poet theme, upgraded to org-roam v2, and got org-protocol:// working for browser integration. It’s just a treat.

Adventures in wiring (5/5): I have backed away slowly and called an electrician. Because I think I know what needs to be done, and that's not good enough.

Recent posts

GetEntity 23 Jul 2021
In DotNet

The .NET System.Xml.XmlResolver API’s GetEntity method returns the resolved entity as an unadorned Stream. That is an unfortunate design choice.

Improving parallelism 23 Jul 2021
In XProc

Exploring the trade-offs between user expectations and performance in XProc pipelines.

System.Xml.XmlResolver 06 Jul 2021
In DotNet

This .NET API is fundamentally broken. If anyone reading this thinks it might be possible to persuade someone to fix it, I’d be happy to help.

Java configurations 05 Jul 2021
In Java, Python

A tool for managing the configurations (dependencies and the classpath, system properties, etc.) of Java applications.

XML Resolver 3.0.1 released 04 Jul 2021
In XML, XMLResolver

I’ve pushed a 3.0.1 release of the XML Resolver.

Gradle DockerContainer plugin 29 Jun 2021
In Docker, Gradle

These days, I mostly use Gradle to manage builds and Docker to manage containers. So how do I manage Docker from Gradle? With this plugin.

Annotating the XML Catalogs specification 28 Jun 2021
In DocBook, XMLResolver

A few notes on the production of an annotated XML Catalogs specification.

C# static initializers 24 Jun 2021
In CSharp, Java

A C# class initialization conundrum that has me stumped. If anyone can point me to an explanation of what’s going on here, I’d appreciate it.

Schrödinger’s cat cluebox 20 Jun 2021 (updated 21 Jun 2021)
In Games

Can you rescue the cat?

Oranges preserved in brandy 20 Jun 2021 (updated 02 Jul 2021)
In Food

What do you do with a bumper crop of little oranges?

Releases. Lots of releases. 18 Jun 2021 (updated 21 Jun 2021)
In DocBook, Gradle, RelaxNG, XML, XMLResolver

Release the Krak…all the things! I’ve been pushing a bunch of related, if not exactly dependent, projects forward. I think I’ve pushed new releases of all of them now.

Towards XML Resolver 3.0.0! 03 Jun 2021 (updated 28 Jun 2021)
In XML, XMLResolver

I’ve pushed a snapshot release of XML Resolver 3.0.0. No, really, I actually mean it.

Towards XML Resolver 2.0.0 03 May 2021
In XML, XMLResolver

I’ve pushed a snapshot release of XML Resolver 2.0.0.

Testing NodeJS programs 12 Feb 2021
In NodeJS

In the NodeJS world, how do you manage dependencies during development and testing? (Resolved.)

Fifty ways 19 Jan 2021
In SelfReference

I am reminded of a quote from a film.

Thinking differently 15 Jan 2021
In SelfReference

You aren’t supposed to have noticed, but it’s all a bit different around here now.

SQL solution 31 Dec 2020 (updated 15 Jan 2021)
In SelfReference, TheWeb

The solution I settled on was a single database with two versions of the “main” table.

(ye)SQL 28 Dec 2020 (updated 15 Jan 2021)
In TheWeb

I have a small application that uses a PostgreSQL database. How does one manage “staging” versus “production” in such an environment?

Uploading applications 03 Nov 2020
In TheWeb

Every new project begins with writing tooling for the new project. Today’s diversion, a Gradle task to upload a web application. [Updated.]

Please pardon the dust 31 Oct 2020
In SelfReference

Over the next few days and weeks, I’ll be doing some remodeling.

Encryption at Rest? 26 Oct 2020
In Linux, SelfReference

Rolling my own security solution, in other words: doing it wrong.

Dash docsets on other platforms 22 Oct 2020
In Linux, MacOS, Windows, XML

A recent discussion on the slack channel made me aware of Zeal, a cross-platform viewer for Dash docksets.

On Fibonacci and tail recursion (and XSLT) 09 Oct 2020

A few observations about tail recursion and xsl:iterate in XSLT 3.0.

Saxon Chronicles 02 Oct 2020
In Saxon, Saxonica

Announcing a new weblog.

OCRing financial statements 22 Sep 2020

Sometimes (always, AFAICT) OCRing a PDF is the most reliable way to get transaction details out of financial institutions.

Catalog resolver migration 07 Aug 2020
In XMLResolver

Migrating your application from the Apache Commons catalog resolver to XML Resolver.

DocBook themes 03 Aug 2020
In DocBook

Adding support for dark mode as an aid to accessibility.

DocBook XSL: The Next Generation 25 Jul 2020
In Balisage, DocBook, XML, XSLT

A new implementation of transformations for DocBook in XSLT 3.0

An XInclude API for Saxon 09 Jul 2020
In Balisage, DocBook, XML

An XInclude processor for Saxon, including an extension function that can be called from XSLT stylesheets (and XQuery? I haven’t tried).

Dynamic profiles 08 Jul 2020
In DocBook

Composing documents based on run time parameter values.

Alternatively · You might be looking for my previous weblog, my home page, my photos, or my itineraries. Or maybe you’re looking for my, Twitter, or GitHub pages? The XML Guild? Balisage? XML Summer School? Goodness, I don’t know. Is it silly travel maps you’re after? Or timezone details? Home made calendars? A clock? A countdown timer? Shoes or ships or sealing wax? Cabbages or kings? Maybe DuckDuckGo could help?

  • I work for Saxonica, but the opinions expressed here are my own, and no other party necessarily agrees with them. A full disclosure of my professional interests can be found on the author page.