Pretty Printing JSON Web Tokens (JWTs) on the Command Line using OpenSSL (3 mins read).

How to easily introspect a JWT on the command line using OpenSSL and optionally Python for real pretty-printing.
Pretty Printing JSON Web Tokens (JWTs) on the Command Line using OpenSSL (3 mins read).
How to easily introspect a JWT on the command line using OpenSSL and optionally Python for real pretty-printing.
URL Decoding with Ruby on the Command Line (1 mins read).
How to use Ruby's standard library to decode URLs with a handy one-liner.
Using Hugo .Render
to Save Repetition (3 mins read).
Replacing if
s with .Render
to save duplication in Hugo templates.
Using <details>
tags for HTML-only UI toggles (3 mins read).
How using the <details>
HTML tag can provide a toggleable UI element with only built-in HTML.
Verify if a field in a JSON response is not set with Rest Assured (1 mins read).
How to verify whether a field is not present in a JSON Rest Assured Response
.
Pretty Print JSON with Java (1 mins read).
How to pretty print a JSON object using Java and Jackson.
Gotcha: URL Encoding for consecutive double slashes issue with Rest Assured (2 mins read).
How to workaround consecutive double slashes being URL encoded (as %2F
s) in Rest Assured.
Prettier HTML Reports for Cucumber-JVM (2 mins read).
How to generate prettier HTML reports for Cucumber with cucumber-reporting
and cucumber-reporting-plugin
, with and without Jenkins.
Viewing X.509 DER Certificate Fingerprints with OpenSSL (1 mins read).
How to view an X.509 DER 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.
Pretty Printing JSON with Ruby (1 mins read).
Using Kernel.jj
to pretty print Ruby objects as JSON objects.
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.
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.
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.
Performing a No-Op with chef-client
using JSON (2 mins read).
How to perform a chef-client
run without executing anything.
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.
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.
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.
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.
Showing response headers with curl -i
(3 mins read).
Showing just response headers when curl
ing 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.
Viewing Git history of a file in git log
while ignoring file renames (5 mins read).
How to track changes to files in Git without pesky file renames getting in the way, using git log --follow
.
Test-Driven Chef Cookbook Development Using ChefSpec (and a sprinkling of InSpec) (39 mins read).
Using the example of deploying and running a Java JAR file as a way to show the lifecycle of a fully test-driven Chef cookbook.
Pretty Printing JSON Web Tokens (JWTs) on the Command Line using Ruby (3 mins read).
How to easily introspect and pretty print a signed JWT (JWS) or an encrypted JWT (JWE) on the command line using Ruby's standard library, or using the ruby-jwt external library.
Using chef-shell
to interactively debug attributes and recipes (5 mins read).
How to use chef-shell
to see attribute config and recipes, with and without a Chef Server.
Creating a versionable, self-contained (fat-/uber-) JAR for Cucumber tests (11 mins read).
Why you'd want a fat JAR and how you'd achieve it.
My Path from School to University to Work (25 mins read).
A look back at my journey up to now, the choices I've made, and what advice I have for others who are embarking on their own journeys into tech.
Pretty Printing JSON on the Command Line with Ruby (1 mins read).
Using Ruby's JSON module to pretty print JSON objects from the command line.
Merging multiple repositories into a monorepo, while preserving history, using git subtree
(3 mins read).
How to merge multiple repositories, with their history, into a single repository, using the git subtree add
command.
Sharing Multiple SSH Sessions over the Same Network Socket (3 mins read).
Reusing network sockets for speed and reduction of authentication handshakes with OpenSSH.
Better Git Diff Outputs with Git Submodules (2 mins read).
How to get nicer diff
s when working with submodules.
Beware: delete
ing a file
in Chef doesn't actually delete
it (3 mins read).
Why you should explicitly add backup false
when delete
ing a file
through Chef, to avoid leaving potentially sensitive files still on the box.