Jamie Tanna | Software Engineer

  • /now
  • Blog
  • Popular Posts
  • Archives
  • Search
  • Salary History
  • Open Source Projects I Maintain
  • Support Me
  • Hire Me (CV/Resume)

 Article

Validating UUIDs with Regular Expressions in Java (1 mins read).

Featured image for sharing metadata for article

How to validate UUIDs and UUIDv4s in Java with a regex.

Fri, 14 Jan 2022 11:54 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #uuid #regex.

 Article

Auditing with Spring Boot Actuator (9 mins read).

Featured image for sharing metadata for article

How to use Spring Boot Actuator for your audit and business event logging needs.

Thu, 13 Jan 2022 13:49 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #spring-boot #spring-security #logs.

 Article

Returning a Value, or a Default, From a Java Optional (1 mins read).

Featured image for sharing metadata for article

How to replace imperative code with a functional style, when returning a default value for a Java Optional.

Thu, 13 Jan 2022 09:53 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java.

 Article

Building an Automagically Updating Personal README for GitLab and GitHub (2 mins read).

Announcing the publishing of readme.jvt.me as well as automagically updating READMEs in my GitLab and GitHub profiles.

Wed, 12 Jan 2022 16:21 by Jamie Tanna's profile image Jamie Tanna . #go #github #gitlab #readme.jvt.me #microformats2.

 Article

Adding both an ObjectMapper and a YAMLMapper to Spring Boot (2 mins read).

Featured image for sharing metadata for article

How to have an ObjectMapper and a YAMLMapper coexisting in a Spring Boot project's bean dependencies.

Mon, 10 Jan 2022 17:35 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #jackson #spring-boot.

 Article

Testing Data Serialisation/Deserialization in Java (with Gson) (3 mins read).

Featured image for sharing metadata for article

How to validate your JSON types correctly serialise/deserialise when using the Gson library.

Fri, 07 Jan 2022 09:21 by Jamie Tanna's profile image Jamie Tanna . #java #testing #gson #blogumentation.

 Article

Improving Life-Work Balance on GitHub using per-Organisation Notification Settings (2 mins read).

Featured image for sharing metadata for article

How to set up per-organisation notification settings so your personal email doesn't get work-related notifications.

Thu, 06 Jan 2022 16:32 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #github #life-work-balance.

 Article

Publishing to Maven Repositories with GitLab CI, with Signed Artefacts (4 mins read).

Featured image for sharing metadata for article

How to publish signed artefacts from a Gradle build to Maven repositories (such as Maven Central) when using GitLab CI.

Tue, 04 Jan 2022 13:21 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #gradle #java #gitlab-ci #gpg.

 Article

Suppressing No pinentry warnings with GPG (in Automated Builds) (1 mins read).

How to get avoid No pinentry warnings when running GPG in automated build environments like CI/CD.

Tue, 04 Jan 2022 12:49 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #gpg.

 Article

Gotcha: PicoContainer requires Zero-Argument Constructors (2 mins read).

Featured image for sharing metadata for article

A little gotcha around using PicoContainer (with Cucumber) where it may not be usable unless you have zero-arg constructors.

Thu, 30 Dec 2021 21:01 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #cucumber #picocontainer.

 Article

Using Dagger for Dependency Injection with Cucumber Tests (4 mins read).

Featured image for sharing metadata for article

How and why to add Dagger for your Cucumber tests' dependency injection.

Thu, 30 Dec 2021 21:01 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #cucumber #dagger.

 Article

Publishing a NPM Package to npmjs.com from GitLab CI (1 mins read).

Featured image for sharing metadata for article

How to publish an NPM package to the public NPM registry, using GitLab CI.

Thu, 23 Dec 2021 11:01 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #nodejs #gitlab-ci.

 Article

Announcing a new package: @jamietanna/spectral-test-harness (1 mins read).

Featured image for sharing metadata for article

Announcing a new NPM package for easier testing of Spectral API linting.

Thu, 23 Dec 2021 10:34 by Jamie Tanna's profile image Jamie Tanna . #spectral-test-harness #api #unit-testing #testing #javascript #nodejs.

 Article

Test Driven Development for Your Spectral Rules, using Jest (7 mins read).

Featured image for sharing metadata for article

How to write unit tests for Spectral API linting, in a test-driven development fashion.

Wed, 22 Dec 2021 18:38 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #spectral-test-harness #spectral #api #unit-testing #testing #javascript #nodejs #tdd.

 Article

Autowiring your controllers automagically when using MockMVC and Spring Cloud Contract (2 mins read).

Featured image for sharing metadata for article

How to automagically set up your Spring controllers when using MockMVC with Spring Cloud Contract.

Tue, 21 Dec 2021 12:48 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #spring #spring-boot #spring-cloud-contract.

 Article

Decompiling Java Class Files On the Command-Line (2 mins read).

Featured image for sharing metadata for article

How to use the Fernflower decompiler on the command-line to decompile compiled Java classes.

Mon, 20 Dec 2021 20:49 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java.

 Article

Validating a Spring (Boot) Response Matches JSON Schema with MockMVC (3 mins read).

Featured image for sharing metadata for article

How to perform JSON Schema validation for a Spring (Boot) service's response when testing using MockMVC.

Mon, 20 Dec 2021 14:43 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #spring #spring-boot #java #json-schema.

 Article

Retrieving All Dependencies Required by a JAR at Runtime (3 mins read).

Featured image for sharing metadata for article

How to handily retrieve the full runtime classpath required for a JAR file, using Gradle.

Thu, 16 Dec 2021 15:14 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #gradle #java.

 Article

Use a (JSON) Schema for the Interface Portion of your RESTful API (3 mins read).

Why you should be using a well-defined (JSON) Schema for the data classes that your API consumers will need to utilise.

Thu, 16 Dec 2021 09:36 by Jamie Tanna's profile image Jamie Tanna . #api #json-schema #rest.

 Article

Getting the Date from a Week Number in Java (1 mins read).

Featured image for sharing metadata for article

How to get the date from a week number and year in Java.

Mon, 13 Dec 2021 20:33 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java.

 Article

Debugging Chef Variables With Logs (3 mins read).

Featured image for sharing metadata for article

How you can use different means of logging to make operations with Chef cookbook a little easier.

Mon, 13 Dec 2021 20:01 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #chef.

 Article

Getting the Battery Status of a Bluetooth Device on Linux (1 mins read).

Featured image for sharing metadata for article

How to use dbus-send to retrieve the percentage of battery left on a Bluetooth device on Linux.

Fri, 10 Dec 2021 21:58 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #command-line #bluetooth #linux.

 Article

Converting a Kitchen YAML to Chef Attributes (2 mins read).

Featured image for sharing metadata for article

How to convert attributes being set for your Chef Test Kitchen integration tests to an attributes.rb format.

Wed, 08 Dec 2021 21:40 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #chef #test-kitchen.

 Article

Using systemd-tmpfiles to manage temporary files and directories (2 mins read).

How I'm using systemd-tmpfiles to manage a temporary working directory and automagically clean it out.

Wed, 08 Dec 2021 18:15 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #systemd #linux.

 Article

Should That (Secret) Thing Be In Your Querystring? (2 mins read).

Why you should be very cautious about putting potentially sensitive values into the querystring of web APIs.

Wed, 08 Dec 2021 16:34 by Jamie Tanna's profile image Jamie Tanna . #api #security.

 Article

Owning my Hashtags (2 mins read).

Why I decided to treat hashtags in my (syndicated) content as tags on my site.

Wed, 08 Dec 2021 09:00 by Jamie Tanna's profile image Jamie Tanna . #indieweb.

 Article

Extracting the Default Private / Secret Keys from OpenAM/Forgerock AM (2 mins read).

How to retrieve the contents of the private or secret keys from an OpenAM/Forgerock AM installation.

Tue, 07 Dec 2021 17:48 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #openam.

 Article

Converting an Image to a Base64 data URL with Node.JS (1 mins read).

Featured image for sharing metadata for article

How to convert an image to a data URL using Node.JS on the command-line.

Mon, 06 Dec 2021 18:41 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #nodejs #command-line.

 Article

Appending Values to a Querystring with Ruby (1 mins read).

Featured image for sharing metadata for article

How to append a query parameter to a URL's querystring in Ruby.

Fri, 03 Dec 2021 14:15 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #ruby.

 Article

Making Zoom Notifications/Windows Float on BSPWM (1 mins read).

Featured image for sharing metadata for article

How to get BSPWM to handle Zoom notification windows as floating windows, instead of tiles.

Thu, 02 Dec 2021 18:33 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #bspwm #zoom.

 Article

Automagically Assuming AWS Roles for EC2/ECS (1 mins read).

Featured image for sharing metadata for article

How to set up your AWS infrastructure to automagically assume IAM roles.

Thu, 02 Dec 2021 17:20 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #aws.

 Article

Reducing Risk of Supply Chain Attacks with Reproducible Builds in Gradle (1 mins read).

Featured image for sharing metadata for article

How to enable Gradle's reproducible builds functionality to allow others to verify your released libraries don't contain uncommitted, malicious code.

Thu, 02 Dec 2021 17:05 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #gradle #security.

 Article

Packaging Wiremock Stubs into a Standalone JAR (2 mins read).

Featured image for sharing metadata for article

How to use Gradle to package a standalone JAR for Wiremock, including any stubs needed.

Thu, 02 Dec 2021 11:11 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #gradle #wiremock.

 Article

Testing Data Serialisation/Deserialization in Java (with Moshi) (3 mins read).

Featured image for sharing metadata for article

How to validate your JSON types correctly serialise/deserialise when using the Moshi library.

Wed, 01 Dec 2021 09:42 by Jamie Tanna's profile image Jamie Tanna . #java #testing #moshi #blogumentation.

 Article

Generate Plain Old Java Objects (POJOs) from JSON Schema Definitions with Gradle (3 mins read).

Featured image for sharing metadata for article

How to generate POJOs really quickly and easily, with no manual work, using the Gradle jsonschema2pojo Plugin.

Mon, 29 Nov 2021 09:23 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #gradle #java #json-schema.

 Article

Shift Your Testing Left with Spring Boot Controllers (5 mins read).

Featured image for sharing metadata for article

How to break down your tests for Spring Boot controllers, which could be used when performing Test Driven Development.

Sun, 28 Nov 2021 17:31 by Jamie Tanna's profile image Jamie Tanna . #java #testing #tdd #spring-boot.

 Article

Generate Plain Old Java Objects (POJOs) from XML Schema Definitions with Gradle (1 mins read).

Featured image for sharing metadata for article

How to generate POJOs really quickly and easily, with no manual work, using the Gradle XJC Plugin.

Mon, 22 Nov 2021 17:35 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #gradle #java #xml.

 Article

Use (End-to-End) Tracing or Correlation IDs (4 mins read).

Why you should be requesting, and logging, a unique identifier per request for better supportability.

Mon, 22 Nov 2021 09:30 by Jamie Tanna's profile image Jamie Tanna . #production #incident-management #supportability.

 Article

Determining the Version Of Libraries Packaged into the Java AWS Lambda Runtime (3 mins read).

Featured image for sharing metadata for article

How to determine what libraries, and their respective versions, are packaged into AWS Lambda.

Wed, 17 Nov 2021 17:21 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #aws #aws-lambda #serverless.

 Article

Lessons Learned from Running Java in Serverless Environments like AWS Lambda (10 mins read).

Featured image for sharing metadata for article

Some recommendations for running Java as a Serverless application language, for instance on AWS Lambda or Google Cloud Functions.

Wed, 17 Nov 2021 17:21 by Jamie Tanna's profile image Jamie Tanna . #java #aws #aws-lambda #serverless #google-cloud.

 Article

Generating Dynamic Identifiers with Thymeleaf (1 mins read).

Featured image for sharing metadata for article

How to generate a dynamic ids for elements in Thymeleaf.

Tue, 16 Nov 2021 21:54 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #thymeleaf.

 Article

Controlling the Linux Backlight via the Command-Line (1 mins read).

How to manage your screen backlight on the command-line, without installing any tools.

Wed, 10 Nov 2021 19:15 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #command-line #linux.

 Article

Make Your RSS Feed Discoverable (1 mins read).

Why and how you should make it possible to automagically discover your feed(s).

Wed, 10 Nov 2021 19:06 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #rss #feed.

 Article

Why You Should Avoid using Client Secret Authentication for OAuth2 Client Credentials (7 mins read).

Featured image for sharing metadata for article

Why I recommend against using client secret authentication for OAuth2 and OpenID Connect APIs.

Tue, 09 Nov 2021 11:45 by Jamie Tanna's profile image Jamie Tanna . #oauth #oauth2 #oidc #security.

 Article

Running a Java WAR File on the Command-Line (2 mins read).

Featured image for sharing metadata for article

How to run a WAR file locally, using Jetty, without installing anything.

Mon, 08 Nov 2021 21:17 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #war.

 Article

Querying and Interacting with CSV Files More Easily with SQLite (1 mins read).

Featured image for sharing metadata for article

How to use sqlite3 to parse and query comma-separated value files.

Mon, 08 Nov 2021 10:29 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #csv #sqlite.

 Article

How We Built a Team with a High Net Promoter Score (23 mins read).

Featured image for sharing metadata for article

Sharing the "Secret Sauce" of why the Purple Pandas was a team that was highly effective, and had a high NPS, too.

Fri, 05 Nov 2021 20:30 by Jamie Tanna's profile image Jamie Tanna . #capital-one #job #communication #diversity-and-inclusion.

 Article

Creating More Descriptive and Fluent Assertion Helpers (4 mins read).

How to improve test readability, and developer experience, using assertion helpers.

Thu, 04 Nov 2021 19:26 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #testing #java #ruby #rspec #assertj.

 Article

Using Middleman Redirects with a Custom, Non-HTML Content Type (2 mins read).

Featured image for sharing metadata for article

How to get Middleman's redirect to work with files that are not HTML.

Thu, 28 Oct 2021 11:34 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #middleman.

 Article

Improving Team Efficiency By Measuring and Improving Code Review Cycle Time (9 mins read).

How measuring how long code review took as a team lead to being able to change our processes, and then deliver much more effectively.

Wed, 27 Oct 2021 22:11 by Jamie Tanna's profile image Jamie Tanna . #practices #github #code-review.

You're currently viewing page 8 of 17, of 833 posts.

Go to the previous page

Go to the next page

Other links that may be of interest:

  • /slashes
  • Follow This Blog (i.e. via RSS feed)
  • Talks
  • Blogroll
  • Why is my site www.jvt.me?
  • Archives
  • Post Visualisation
  • Manual of Me
  • Typography
  • My name and pronounciation
  • RSVPs
  • Links
  • Post by Kind

This site is part of an IndieWeb Webring πŸ•ΈπŸ’

  • Previous site
  • Next site

Want to get in touch? Drop me an email at  hi@jamietanna.co.uk. I try to get back to everything, if I don't reply in a couple of weeks, feel free to give me a nudge!

You can also check out a list of all the places /elsewhere you can find me.

© 2025 Jamie Tanna. Post content and code snippets licensing is detailed on respective pages, otherwise default to Creative Commons Attribution Non Commercial Share Alike 4.0 International and Apache License 2.0.
Site design released under the MIT License.
Proudly hosted on AWS using S3 + CloudFront, deployed by GitLab CI, and generated by 4a2feb8ddf on Sat, 18 Apr 2020 14:40:29 +0100..