Jamie Tanna | Software Engineer

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

 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.

 Article

Using JitPack to Install Gradle Plugins from Git Sources (2 mins read).

Featured image for sharing metadata for article

How to use JitPack to use an unreleased Gradle plugin from a Git repo in your Gradle projects.

Wed, 27 Oct 2021 11:37 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #gradle #java #jitpack.

 Article

Listing Which GitHub Pull Requests are in a Project (2 mins read).

Featured image for sharing metadata for article

How to list the PRs inside a Project on Github, for example, via a Ruby client.

Tue, 26 Oct 2021 09:20 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #github #github-projects #ruby.

 Article

Things I Learned Migrating My Personal APIs To Kubernetes (10 mins read).

Featured image for sharing metadata for article

What I learned while migrating from a number of Java applications on Virtual Private Servers (VPS) to a Kubernetes cluster.

Mon, 25 Oct 2021 14:47 by Jamie Tanna's profile image Jamie Tanna . #kubernetes #personal-infrastructure #sysadmin #java #spring-boot.

 Article

Updating a Secret in Kubernetes with the Java Client (3 mins read).

Featured image for sharing metadata for article

How to use the Kubernetes Java SDK to patch a secret through Kubernetes' secrets API.

Sat, 23 Oct 2021 19:23 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #kubernetes #java.

 Article

How to Undo a git push --force (5 mins read).

Featured image for sharing metadata for article

How to recover from a force push with Git.

Sat, 23 Oct 2021 10:26 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #git.

 Article

Debugging Middleman Code With Middleman's Logger (1 mins read).

Featured image for sharing metadata for article

How to diagnose issues in Middleman, using logging output.

Fri, 22 Oct 2021 08:55 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #middleman.

 Article

Lightweight and Powerful Dependency Injection for JVM-based Applications with Dagger (7 mins read).

How and why you should be using Dagger for your dependency injection.

Tue, 19 Oct 2021 09:35 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #aws-lambda #dagger.

 Article

Implementing IndieAuth Server Metadata (2 mins read).

Announcing support for OAuth Server Metadata on my IndieAuth Server.

Fri, 15 Oct 2021 22:35 by Jamie Tanna's profile image Jamie Tanna . #www.jvt.me #indieauth.jvt.me #indieauth #oauth2 #oidc.

 Article

Announcing a Service for Creating an iCalendar feed for event RSVPs: rsvp-calendar.tanna.dev (2 mins read).

Creating a shared service to allow creating iCalendar feeds for tracking what events you're attending.

Fri, 15 Oct 2021 15:00 by Jamie Tanna's profile image Jamie Tanna . #calendar #indieweb #rsvp-calendar.tanna.dev #architect-framework.

 Article

"I Thought You'd Be Paid More" - What I Learnt From Posting My Salary Publicly (3 mins read).

Featured image for sharing metadata for article

A writeup of my lightning talk at Tech Nottingham about my salary post.

Wed, 13 Oct 2021 14:34 by Jamie Tanna's profile image Jamie Tanna . #salary #job #public-speaking #talk #tech-nottingham.

 Article

Testing Data Serialisation/Deserialization in Java (with Jackson) (4 mins read).

Featured image for sharing metadata for article

How to validate your JSON types correctly serialise/deserialise.

Sat, 02 Oct 2021 22:00 by Jamie Tanna's profile image Jamie Tanna . #java #testing #jackson #blogumentation.

 Article

Setting up fluentd to Parse Nested JSON from Docker (2 mins read).

How to configure fluentd to parse the inner JSON from a log message as JSON, for use with structured logging.

Wed, 29 Sep 2021 18:29 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #fluentd #logs #docker #kubernetes #logz.io.

 Article

Tips for Reducing Dependency Upgrade Toil with Renovate (5 mins read).

Featured image for sharing metadata for article

Some tips I've picked up while working with Renovate to keep my projects up-to-date.

Sun, 26 Sep 2021 18:21 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #renovate #open-source #security.

 Article

Packaging Wiremock Extensions into the Standalone Server Runner (2 mins read).

Featured image for sharing metadata for article

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

Sun, 12 Sep 2021 17:58 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #gradle #wiremock.

 Article

Testing Java Callbacks with Mockito (1 mins read).

Featured image for sharing metadata for article

How to test invoking a real callback in a Java project, as a unit test.

Fri, 10 Sep 2021 16:04 by Jamie Tanna's profile image Jamie Tanna . #java #mockito #blogumentation.

 Article

Providing a Public Salary History Page (2 mins read).

Publishing my salary and compensation history for public use.

Thu, 09 Sep 2021 10:59 by Jamie Tanna's profile image Jamie Tanna . #salary #job.

 Article

Releasing a Java Library for Gherkin Formatting (4 mins read).

Featured image for sharing metadata for article

Announcing the release of a Java library that can pretty-format a Gherkin feature file.

Tue, 07 Sep 2021 09:15 by Jamie Tanna's profile image Jamie Tanna . #java #gherkin-formatter #cucumber.

 Article

Pushing Back to Git In a Jenkins Multibranch Pipeline (1 mins read).

Featured image for sharing metadata for article

How to push back to a Git repo using a Jenkins multibranch pipeline.

Mon, 06 Sep 2021 10:00 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #jenkins #git.

 Article

Using Bill of Materials to Simplify Dependency Management (3 mins read).

Featured image for sharing metadata for article

Producing a Bill of Materials to simplify dependency management for Java projects.

Sat, 28 Aug 2021 21:37 by Jamie Tanna's profile image Jamie Tanna . #java #blogumentation #gradle #maven.

 Article

Making Your Gherkin Scenarios Written Using Human-Readable Language (4 mins read).

Featured image for sharing metadata for article

A lukewarm take about why you should use natural language, so someone not-as-technical can read it and still derive value.

Tue, 24 Aug 2021 22:40 by Jamie Tanna's profile image Jamie Tanna . #software-testing #cucumber #communication.

 Article

I'm Joining the Cabinet Office (5 mins read).

Featured image for sharing metadata for article

Announcing my move into the Central Digital and Data Office (CDDO) as a Tech Lead.

Thu, 19 Aug 2021 09:36 by Jamie Tanna's profile image Jamie Tanna . #personal #job #announcement #capital-one #cddo.

 Article

Using Abstract Test Classes To Reduce Duplication in Java (4 mins read).

Featured image for sharing metadata for article

How to use Java's abstract classes to reduce duplication of code across unit tests with common functionality.

Wed, 11 Aug 2021 17:28 by Jamie Tanna's profile image Jamie Tanna . #java #junit5 #testing.

 Article

Introducing a Microformats API for Books: books-mf2.fly.dev (2 mins read).

Featured image for sharing metadata for article

Announcing the Microformats translation layer for book data.

Sun, 01 Aug 2021 13:42 by Jamie Tanna's profile image Jamie Tanna . #microformats #micropub #reading #books-mf2.

 Article

Encoding Strings for Embedding in JSON with Ruby on the Command-Line (1 mins read).

Featured image for sharing metadata for article

How to easily convert a string to a format that can be used as a value for JSON strings.

Thu, 29 Jul 2021 22:36 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #json #ruby #command-line.

 Article

Programatically Comparing Versions Using Chef's Versioning Schemes (1 mins read).

Featured image for sharing metadata for article

How to use Chef's versioning classes to determine whether a version constraint is matched.

Thu, 15 Jul 2021 20:48 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #chef #ruby.

 Article

Parsing Encoded JSON Strings on the Command-Line with Ruby (1 mins read).

Featured image for sharing metadata for article

How to decode an encoded JSON string.

Mon, 28 Jun 2021 19:12 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #command-line #json #ruby.

 Article

Testing that your Spring Boot Application Context is Correctly Configured (2 mins read).

Featured image for sharing metadata for article

How to improve the tests you've got to validate that Spring Boot's context is set up correctly.

Fri, 25 Jun 2021 09:09 by Jamie Tanna's profile image Jamie Tanna . #java #spring-boot #testing.

 Article

Decrypting Encrypted JSON Web Tokens (JWE) with Ruby (1 mins read).

Featured image for sharing metadata for article

How to use Ruby to decrypt encrypted JSON Web Token objects.

Tue, 22 Jun 2021 22:18 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #ruby #jwt.

 Article

Running Multiple JDK Versions with the Gradle Toolchains Configuration (2 mins read).

Featured image for sharing metadata for article

How to use the Gradle's toolchain configuration to configure multiple JDKs on your machine.

Wed, 09 Jun 2021 09:04 by Jamie Tanna's profile image Jamie Tanna . #blogumentation #java #gradle.

 Article

Testing Data Serialisation/Deserialization using JsonTest with Spring Boot (3 mins read).

Featured image for sharing metadata for article

How to use the @JsonTest test type in Spring Boot to validate your JSON types correctly serialise/deserialise.

Wed, 02 Jun 2021 09:21 by Jamie Tanna's profile image Jamie Tanna . #java #testing #spring-boot #blogumentation.

 Article

Default Your Tests to run in Parallel (2 mins read).

Discussing the benefits you can achieve by having parallel-by-default.

Tue, 01 Jun 2021 14:50 by Jamie Tanna's profile image Jamie Tanna . #software-quality #software-testing #quality-engineering #testing.

 Article

Writing Better Wiremock Stubs (3 mins read).

Featured image for sharing metadata for article

How to improve the specificity of Wiremock tests to allow for not clobbering other scenarios, and enabling scalable test runs.

Tue, 01 Jun 2021 14:50 by Jamie Tanna's profile image Jamie Tanna . #software-quality #software-testing #quality-engineering #testing #wiremock.

 Article

Writing Better Tests (1 mins read).

Announcing a new series of posts about improving the way we write tests.

Mon, 31 May 2021 22:04 by Jamie Tanna's profile image Jamie Tanna . #software-quality #software-testing #quality-engineering #testing.

You're currently viewing page 9 of 17, of 850 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..