Viewing X.509 PEM Certificate Fingerprints with OpenSSL (1 mins read).
How to view an X.509 PEM certificate's fingerprint using openssl commands.
Viewing X.509 PEM Certificate Fingerprints with OpenSSL (1 mins read).
How to view an X.509 PEM certificate's fingerprint using openssl commands.
Hello IndieAuth! (1 mins read).
Setting up my IndieAuth provider for interacting with IndieWeb applications everywhere.
Pretty Printing JSON with Ruby (1 mins read).

Using Kernel.jj to pretty print Ruby objects as JSON objects.
Hello IndieNews! (2 mins read).
Discovering IndieNews and starting to syndicate my posts to it.
Specifying datetime in your Hugo posts' front matter (1 mins read).

Setting your posts' date to a datetime string to specify the time a post was published at.
Marking up Events with Microformats (1 mins read).

Announcing the events content type and their markup with h-event.
Beyond Rest: The Future of Web APIs (8 mins read).

A writeup of the meetup talking about what could come next for APIs.
Homebrew Website Club: Nottingham, Session 1 (2 mins read).

A recap of our first Homebrew Website Club: Nottingham.
Easily rewriting Git URLs from HTTPS to SSH and vice versa (2 mins read).

How to use Git's config to rewrite HTTPS URLs to SSH and vice versa, for repo pushes and pulls.
Adding the microformats h-entry markup to my blog posts (1 mins read).

Announcing the addition of the h-entry markup to my blog posts.
Displaying Webmentions on my Hugo website (3 mins read).

How and why I've gone about getting Webmentions rendered on my static Hugo site.
Setting up a personal hCard for myself (2 mins read).

Setting up an hCard to allow microformats parsing for details about myself.
Homebrew Website Club: Nottingham (2 mins read).

Thoughts about setting up the first Homebrew Website Club in Nottingham.
I'm Not Good With People (12 mins read).
A bit of a raw look about how I'm really poor in social situations, how I've got to this realisation, and how I want to do better about it.
Verifying Signed JWTs (JWS) with Node.JS (3 mins read).

How to use the jsonwebtoken and node-jose libraries to verify the signature of a Signed JSON Web Token (JWS) with Node.JS.
Moving talks.jvt.me to reveal-hugo (3 mins read).

Migrating my custom Reveal.JS setup to using reveal-hugo.
Performing a No-Op with chef-client using JSON (2 mins read).

How to perform a chef-client run without executing anything.
FOSDEM 2019 (31 mins read).

Recapping my time at the Free and Open Source Developers Europe Meeting conference in Brussels.
Using git worktree to have multiple branches checked out at once (4 mins read).

How to use git worktree to check out multiple Git branches from the same repo at once.
Using Git refs to help track your GitLab Environments, from your local repo (2 mins read).

How to pull the Git refs that GitLab Environments exposes in your GitLab repo.
Using Git refs to check out GitHub Pull Requests, from your local repo (2 mins read).

How to pull the Git refs for Pull Requests to your GitHub repo.
Using Git refs to check out GitLab Merge Requests, from your local repo (2 mins read).

How to pull the Git refs for Merge Requests to your GitLab repo.
Performing Code Review on Your own Merge/Pull Requests (4 mins read).
Why the first step to getting others to review your code is to review it yourself.
Pretty Printing JSON using Node.JS on the Command Line (1 mins read).

Using Node.JS's JSON module to pretty print JSON objects from the command line.
Automating Promotion of Jekyll Posts from Draft to Post (2 mins read).

The handy script I've created to automate publishing a draft in Jekyll, with handy Zsh + Bash autocomplete.
Converting X.509 and PKCS#8 .pem file to a JWKS (in Node.JS) (2 mins read).

Converting X.509 and PKCS#8 files to JWKS format, using the node-jose library.
Using git commit --fixup= to track changes that need to be applied on top of another commit (4 mins read).

Using git commit --fixup= and git rebase --autosquash to easily track and squash fix commits.
Goodbye Jekyll, Hello Hugo! (5 mins read).

My move from Jekyll to super speedy Hugo, and what I've needed to do to migrate.
2018's Music In Review (1 mins read).
What music was I listening to in 2018?
Creating Microservices for my Static Website (2 mins read).
Exploring moving data out of my site's remit and into its own 'microservices' which can be consumed at build-time, as well as via client-side JavaScript.
Leaving BTRFS as my primary filesystem (5 mins read).
Why I'm moving away from using BTRFS as the primary filesystem on my personal devices, and why it had nothing to do with BTRFS itself.
TYKJS Middleware Gotcha When Base 64 Decoding Data (3 mins read).

How to workaround the Failed to base64 decode: illegal base64 data at input byte error when trying to use b64dec in TYKJS middleware.
Unit Testing Your TYK (TYKJS) Middleware (6 mins read).

Writing unit tests (in this case using Jasmine) for the TYK API Gateway's JavaScript middleware functionality.
Hackference 2018 (31 mins read).

A review of my time at Hackference's 1-day conference and 24-hour hackathon.
How to run tests from the ChefDK in Docker (6 mins read).

How to get up and running with the ChefDK to perform common tests, such as unit tests and linting.
Using Fake Cookbooks for Writing ChefSpec Tests for your Custom Chef Resources (3 mins read).

A directory structure I've found quite useful for writing ChefSpec tests for custom resources, by creating a fake cookbook within the cookbook you're testing.
Creating a versionable, self-contained (fat-/uber-) JAR for Gatling tests (17 mins read).

Why you'd want a fat JAR for your Gatling tests and how you'd achieve it.
Tweaking Gatling HighCharts Response Time Bounds (3 mins read).

How to configure the bounds that Gatling marks your response times within for console output and graphing purposes.
Setting your default AWS profile for the AWS CLI and SDKs (2 mins read).

Setting the default AWS profile when working with multiple profiles and the AWS CLI / SDKs.
Chef 14 Upgrade: Custom Resource Properties are Silently Coerced to Hash if they are a nil (2 mins read).

Finding out that a nil gets silently coerced to an empty Hash if given to a custom resource's property of type Hash.
Chef 14: ChefSpec Coverage Reporting Deprecation (1 mins read).

Noting the deprecation of using ChefSpec::Coverage.start! when using Chef 14 and above.
Chef 14 Upgrade: Change in ValidationFailed error messages when setting required properties (2 mins read).

The updated error message returned by a Chef ValidationFailed error, when you're specifying which properties are required on a custom resource.
Why You Should Be Unit Testing Your Functional Acceptance Tests (7 mins read).

A few reasons explaining why you should be writing unit tests for your functional tests.
Viewing X.509 DER Certificate Details with OpenSSL (2 mins read).
How to convert an X.509 DER file to a human-readable format using openssl commands.
Viewing X.509 PEM Certificate Details with OpenSSL (2 mins read).
How to convert an X.509 PEM file to a human-readable format using openssl commands.
Backporting/Replaying Changes Using git cherry-pick (6 mins read).

Using git cherry-pick to make it easier to backport or replay Git commits across different versions of your codebase.
Revert 'Some knowledge-sharing news' (5 mins read).
The unfortunate decision to cancel my Packt training courses.
DevOpsDays London 2018 (51 mins read).

My writeup of my first DevOpsDays conference, and the awesome talks and conversations I was part of.
Showing response headers with curl -i (3 mins read).

Showing just response headers when curling a resource, using curl -i.
Safely Force Pushing with Git using --force-with-lease=ref (6 mins read).

How git push --force-with-lease=ref can save you from overriding others' changes on shared Git branches.