The NATS Self-Request Bug: When Your Service Talks to Itself

I was managing a monolithic Clojure application. As you might guess from the term “monolith” it became too large and I needed to break it out into smaller components for unsurprising reasons. I found that NATS met all of my needs. It allowed me to split up my application into smaller components which were easier to monitor and maintain. It provided that separation of concerns I wanted and allowed me to decouple the parts of my application from one another. It was very easy to set up and requires almost nothing from me to maintain. After migrating from the application to a new server, however, I started seeing weird failures relating to NATS. A background job scheduler in one of my services would intermittently hang for exactly one hour, then succeed immediately on retry. The NATS connection was rock-solid — no disconnects, no errors in the logs. The requests just vanished. The source, was a bug in my setup that had been there for years, but wasn’t uncovered until the migration simply because the new server setup was slightly different from the previous one. ...

March 22, 2026 · 5 min

Taming SSL Certificates for Non-RFC-Compliant Hostnames in Java

I was working on integrating with a new version of a vendor’s API. They claimed that authentication and everything like that remained the same across API versions. However, upon updating my code to point to their new API, I hit all kinds of SSL issues. The old hostname: api.vendor.com The new host: next_api.vendor.com The issue? Why it’s that underscore, of course! I was using Clojure for this project and the JVM was incredibly upset about this. ...

March 21, 2026 · 4 min