🏠Activity stream

For a while, on an earlier homepage, I collected together an “activity stream”. It was collated from a variety of sources through a number of complicated processes to show a “recent activity” view.

I’m sort of interested in that kind of thing, so I’ve made an attempt to recreate it here. This is derived from periodically updated feeds, most recently:

  • photos.nwalsh.com last updated 24 Oct 2026 at 18:42Z
  • so.nwalsh.com last updated 24 Oct 2026 at 10:26Z
  • blog.saxonica.com last updated 15 Oct 2026 at 16:12Z
  • relaxng/jing-trang/issues last updated 12 Oct 2026 at 13:15Z
  • docbook/xslTNG/issues last updated 07 Oct 2026 at 11:30Z
  • photos.nwalsh.com, 24 Oct 2026 at 18:42:57
    Ahhhh, that’s goood
    Ahhhh, that’s goood
  • so.nwalsh.com, 24 Oct 2026 at 10:26:33

    Gonna be one droopy moustache when I take this mask off.

  • photos.nwalsh.com, 24 Oct 2026 at 10:15:47
    A little ventilation would be nice, GWR.
    A little ventilation would be nice, GWR.
  • so.nwalsh.com, 19 Oct 2026 at 14:40:00

    Side quests. Who doesn’t love a good markup side quest? https://so.nwalsh.com/2026/10/19-side-quests

  • blog.saxonica.com, 15 Oct 2026 at 18:00:00

    Announcing Saxon 13.1!

    The Saxon 13.1 maintenance release has been published. This is a maintenance release for Java, C#, C/C++, PHP, and Python that fixes a number of issues that have been raised since 13.0 was released.

    Saxon 13.1 was released on 15 October 2026. This release has been uploaded to the usual locations on the Saxonica website, GitHub, and Maven, PyPi, and NuGet. SaxonCS 13.1 is built with .NET 10.

    Note that this Saxon 13.1 maintenance release does not try to track recent changes in the 4.0 language specifications. What’s implemented and what’s not implemented is largely unchanged from Saxon 13.0, though a few minor bugs may have been fixed.

    As the 4.0 language features develop, there will be periods when implementation and specification are out-of-sync. See QT4 extensions for more information about exactly what is implemented in Saxon 13.1.

    For a list of the issues resolved in this release, please visit the issue trackers for SaxonJ and SaxonCS or SaxonC on the Saxon support site.

    Download products:

    For more details, please consult the documentation.

    Issues resolved in SaxonJ and SaxonCS

    This release fixes more than sixty issues in SaxonJ and SaxonCS:

    • 7274 NullPointerException when -TP (timing profile) is requested using the default stylesheet
    • 7269 (and 7138 and 7134) Correct the behavior of the JAXP allowed protocols configuration with respect to the empty string
    • 7263 Negating Long.MIN_VALUE fails with StackOverflow exception
    • 7262 Improvements to the samples for schema-aware XQJ
    • 7260 NullPointerException in NodeInfo.children()
    • 7258 Saxon 13 XSLT 4.0: fixed-namespaces is ignored on an imported or included module
    • 7257 SaxonJ-HE 13.0 with a xsl:template match which contains a union, is only tracing calls for the first item in the union
    • 7250 Crash in fn:replace() when using 4.0 if the callback function has the wrong signature
    • 7246 fn:transform() called from XQuery fails with "Unable to retrieve URI .."
    • 7231 SaxonCS-HE 13 gives error when using fn:current-output-uri with xsl:result-document
    • 7224 ClassCastException caused by incorrect result of instance of
    • 7219 file:append-text-lines() fails to close the file
    • 7216 Named xsl:result-document leaks primary FileOutputStream on Windows
    • 7212 (and 7179) SaxonCS-HE 13 dependency vulnerabilities
    • 7207 SaxonCS raises SIGILL 132 on older systems
    • 7197 SaxonCS-HE 13 on .NET keeps files loaded by document() locked
    • 7194 SaxonCS doesn't resolve UNC paths correctly
    • 7193 Add Automatic-Module-Name to Saxon-HE jar manifest
    • 7192 Saxon13 fails when for-each-group sorts by current-grouping-key() in a multi-mode template
    • 7191 Optimizer error with to operator?
    • 7186 Internal error evaluating template rule
    • 7165 A valid document must have only one child element
    • 7156 Bare xsl:result-document leaks a FileOutputStream on Windows
    • 7155 NullPointerException in NodePredicate.test(net.sf.saxon.om.GNode)
    • 7150 Error in XML Catalog handling
    • 7148 SaxonCS-HE 13.0 unintentionally includes ICU4N
    • 7145 In SaxonCS-13, old schema API fails with IllegalStateException
    • 7144 SaxonCS: format-number() does not respect picture if it ends with '#'
    • 7143 random-number-generator() is not really deterministic
    • 7142 SaxonCS-HE 13 incorrectly parses numeric values
    • 7140 Incorrect result from bin:shift()
    • 7139 Streamed grouping XSLT crashes when not finding a grouping key
    • 7136 Saxon-HE 13 XQuery NullPointerException: Cannot load from object array because "collators" is null
    • 7135 Unreported type error in general comparison
    • 7133 SaxonCS-HE 13: surprising behavior on XsltTransformer.MessageListener
    • 7128 Error with XInclude enabled, in Saxon 13.0
    • 7127 Saxon 13.0 doesn't use XML catalog's public ID as expected
    • 7118 ArrayIndexOutOfBoundsException in TwineBuilder.java (using non-BMP characters)
    • 7111 Saxon 13.0 dereferences XQuery module namespace URI before using location hint
    • 7110 NullPointerException in ResourceResolverWrappingLSResourceResolver
    • 7102 apply-templates in streaming mode fails when multithreading
    • 7100 SaxonCS-HE fails with MVID mismatch in ICU4N resources under some circumstances.
    • 7098 The NineML jars are unnecessarily included in the Saxon-HE release
    • 7097 ClassCastException in Saxon 13
    • 7049 When used in a push context, fn:unparsed-text ignores the normalize-newlines option
    • 6899 Multiple document validation in SaxonCS
    • 6872 NPE when attempting to compile a recursive XSD
    • 6857 Saxon does not stop when listener warning throws

    Notes on the SaxonCS release: SaxonCS 13.1 requires .NET 10. We’ve also changed the way that the command line tools are packaged. Previously, a single, monolithic executable was produced. This seems to have been the source of at least one bug, so we’ve disabled that feature.

    SaxonC

    This release fixes about ten issues in SaxonC:

    • 7132 The python samples readme for running pytest in Saxon 13 is incorrect.
    • 7113 Failed to build SaxonC PHP extension: no rule to make target php8_saxon.cpp
    • 7107 Typo in name of PyXsdSchema method export_compoments
    • 7095 Trying to use fn:invisible-xml in XSLT 4.0 with SaxonC 13 EE fails
    • 7094 SaxonC 13 Transform.exe doesn't handle and report exceptions during stylesheet compilation cleanly
    • 7092 SaxonC 13 HE Query.exe doesn't handle error in XQuery cleanly as SaxonC 12.9 HE
    • 6921 Comparison for unsigned integer incorrect
    • 6919 XdmMap::containsKey incorrect check

    If you encounter any issues with Saxon 13.1, please report them on our issue tracker.

  • relaxng/jing-trang #298 created, 12 Oct 2026 at 13:15:01

    Allow Jing Validation to work via JAXP service loading

    Add missing Java Service Loader service files for XMLSyntaxSchemaFacory and CompactSyntaxSchemaFactory so that Jing can be used via JAXP via javax.xml.validation.SchemaFactory#newInstance(String).

    Previously, just placing Jing on the classpath, and calling SchemaFactory.newInstance("http://relaxng.org/ns/structure/1.0") or SchemaFactory.newInstance("http://www.iana.org/assignments/media-types/application/relax-ng-compact-syntax") was not enough. Previously you would also have to set a system property, or setup a jaxb.properties config file, see: https://docs.oracle.com/en/java/javase/21/docs/api/java.xml/module-summary.html

    My use case, was that I wanted to use Jing instead of jxvc with the xml-maven-plugin to validate my RelaxNG. This wasn't possible before, as adding Jing to the classpath did not cause it to be discoverable via JAXP. With this PR, we can now successfully use the following config:

                   <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>xml-maven-plugin</artifactId>
        <version>1.2.1</version>
        <dependencies>
            <dependency>
                <groupId>org.relaxng</groupId>
                <artifactId>jing</artifactId>
                <version>20241231</version>
            </dependency>
        </dependencies>
        <executions>
          <execution>
            <goals>
              <goal>validate</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <validationSets>
            <validationSet>
              <dir>src/main/relaxng</dir>
              <systemId>src/main/schema.rng</systemId>
              <validating>true</validating>
              <schemaLanguage>http://relaxng.org/ns/structure/1.0</schemaLanguage>
            </validationSet>
          </validationSets>
        </configuration>
    </plugin>
    
                

    p.s. It would be really helpful for us if we could both get this merged and into a release ASAP. Please let us know if there is anything further we can do to help with that... Thanks :-)

  • docbook/xslTNG #684 merged, 7 Oct 2026 at 09:28:38

    Test emptiness with empty() and drop explicit child:: axes

  • docbook/xslTNG #684 created, 2 Oct 2026 at 17:39:20

    Test emptiness with empty() and drop explicit child:: axes

    This is a small tidy-up of five lines in src/main/xslt/modules.

    Three emptiness tests count every item to answer a question the first item settles. empty() stops at the first item and says what the test means:

                   -  <xsl:if test="count($coords) lt 1 or count($coords) gt 2">
    +  <xsl:if test="empty($coords) or count($coords) gt 2">
    
                

    The other two are count($target) = 0 in chunk-cleanup.xsl and count(db:methodparam) eq 0 in programming.xsl. Two explicit child:: steps, in bibliography.xsl and lists.xsl, are dropped as well.

    ./gradlew test passes on this branch with 1711 of 1711 tests, the same as on main at a840909.

    These were found with xslint, a linter for XSLT. Its fixer made the edits, and I reviewed each one by hand.

  • relaxng/jing-trang #297 closed, 1 Oct 2026 at 19:27:35

    Release/wip

  • relaxng/jing-trang #297 created, 1 Oct 2026 at 19:16:51

    Release/wip

  • blog.saxonica.com, 1 Oct 2026 at 17:15:00

    The future of Intel-based Mac products

    When Apple discontinued making computers based on the Intel chipset, in favor of their own Apple silicon chips, it was clear that the days for Intel-based Mac products were numbered.

    The previous macOS release, macOS 26, “Tahoe”, was the last version of macOS that could be installed on an Intel Mac and, although macOS 27, “Golden Gate”, can use “Rosetta” to support Intel-based applications, Rosetta will be removed in macOS 28.

    It’s already the case that some significant tools, like Homebrew, have discontinued support for Intel-based Macs. And recently, GraalVM followed suit.

    This puts our SaxonC product line in something of a bind. Ideally, we’d time any change in platforms or architectures to line up with a full release. But GraalVM’s rather abrupt decision to discontinue support for Intel-based Macs means we either have to avoid upgrading the version of GraalVM that we use (sacrificing potential performance gains and possibly leaving systems vulnerable), or we have to acknowledge that we can no longer distribute SaxonC products (including Python and PHP) for Intel-based Macs.

    The current plan is that Saxon 12 will continue to support Intel-based Macs, but that could change if it became necessary to upgrade GraalVM for that release. In some near-term Saxon 13 release, we’ll be upgrading GraalVM and discontinuing support for Intel-based Macs.

    Not because we want to, but because there’s no practical way to continue delivering it.

  • so.nwalsh.com, 25 Sep 2026 at 18:05:11

    Not a fan, but also “I wonder if something went wrong with this keg” levels of skunkyness. Back to Staropramen.

  • photos.nwalsh.com, 25 Sep 2026 at 16:46:34
    Alpacalypse
    Alpacalypse
  • so.nwalsh.com, 24 Sep 2026 at 17:04:24

    Relaxing after the first meeting day.

  • so.nwalsh.com, 23 Sep 2026 at 16:54:55

    Oxford, briefly.

  • so.nwalsh.com, 22 Sep 2026 at 10:57:59

    I have no idea what these are, but they're huge. Those leaves are on the order of five or six feet across and several of the stalks were taller than me.

  • so.nwalsh.com, 20 Sep 2026 at 15:38:49

    I managed to get may AWS Lambda photo publisher thing working again.

  • relaxng/jing-trang #296 created, 15 Sep 2026 at 12:45:26

    Invalid attribute value is not named in error message

    Hi, when I validate a file, I can a looong error message with the allowed attribute values. But what is missing, what would have been helpful, is the invalid attribute value. This would allow me to find the invalid value and replace it more conveniently.

    Image
  • relaxng/jing-trang #295 closed, 11 Sep 2026 at 19:22:05

    Release/dependabot

  • relaxng/jing-trang #295 created, 11 Sep 2026 at 19:21:14

    Release/dependabot

And 1278 more items…