Java beans have a readability problem. Not the pattern itself — fields plus getters and setters is fine, and a great deal of the ecosystem still relies on it — but the house style the average enterprise codebase wraps around it. Six lines of boilerplate Javadoc and braces for a one-word concept, repeated for every property, until a class with eight fields scrolls for two pages and tells you nothing you didn’t already know from the field name.
Continue readingUsing JsonPath safely with Jackson’s JsonNode tree model
When working with JSON in Java, Jackson’s JsonNode tree model is a popular choice — especially in framework code that processes or transforms data. But what if you want to query that tree using flexible JsonPath expressions?
Jayway JsonPath is a powerful tool, but using it with pre-parsed Jackson trees isn’t as obvious as you’d think — especially when you’re aiming for safe, predictable behavior in production.
In this post, I’ll share a few techniques I found helpful for reliably applying JsonPath to JsonNode trees, making your queries safer, clearer, and better suited to framework-level code.
Continue readingLong Names are Long
I found a hugely insightful article on naming. It encourages concise naming, and lays out really clear principles on how to name variables well.
“A name has two goals:
- It needs to be clear: you need to know what the name refers to.
- It needs to be precise: you need to know what it does not refer to.
After a name has accomplished those goals, any additional characters are dead weight.”
https://journal.stuffwithstuff.com/2016/06/16/long-names-are-long/
Case-Insensitive Search using EF Core and PostgreSQL
PostgreSQL is a great database. It can do just about anything. But one area that has surprising gaps is case insensitive search. Surely, having the benefit of thirty years of database research, users can search for a customer without knowing the exact capitalization of their name? Turns out it’s not so easy..
Read on to find out how to implement this in EF Core.
Continue readingHow to Upgrade PostgreSQL (pg_upgrade) on Windows
PostgreSQL major versions are incompatible as to data format stored on disk. There is a pg_upgrade tool available but instructions for Windows aren’t directly usable. Aren Cambre fills this gap with accurate working instructions to use pg_upgrade on Windows.
Is It Really a CVE? — Reported XSS in YUI 2.8.2
Recently I had reason to investigate a reported vulnerability in the YUI 2 library. CVE-2022-48197 claimed cross-site scripting in the TreeView component, but provided very little detail. Was this a real security issue?
Continue readingLanguage is tricky — Descriptive versus Selective Identifiers
Here’s a puzzle. Does a “wrapped URL” refer to the wrapped result, or the original URL input that was wrapped?
Language is our tool, but occasionally we can get confused or go in circles over semantics. Find the story of this brain-bender, and how we clarified it, here.
Continue readingSearch JIRA & Confluence instantly from your Address Bar
Hey! Want to be able to open JIRA issues or Wiki pages instantly, without needing to open a bookmark before you can search?
Chrome lets you define custom “search engines” to search JIRA/ Wiki, using only a keyword in your URL bar.
Continue readingSpring Boot — How to hot swap Thymeleaf templates
This is an often-asked question on the Internet — and one which, previously, had no good answer. Now, thanks to @Jianrong Chen, we have a one-liner configuration to do it!
Continue readingAvoiding insurmountable queue backlogs
Queues offer a promise of reliability for integrating applications, but can cause more subtle operational risks.
Queues exhibit ‘bi-modal behavior’ — low latency when everything is working well, but can rapidly form large backlogs when a failure occurs. This can dramatically increase the recovery time from outages.
Amazon offer an extremely interesting article about the reliability of queuing, with strategies to limit and manage backlogging.