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
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
Backporting/Replaying Changes Using
git cherry-pick (6 mins read).
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
Safely Force Pushing with Git using
--force-with-lease=ref (6 mins read).
git push --force-with-lease=ref can save you from overriding others' changes on shared Git branches.
My editorial workflow for blog posts (8 mins read).
Taking you through the journey I go on when writing blog posts, from ideation to publishing the post.
How to track changes to files in Git without pesky file renames getting in the way, using
git log --follow.
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.
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.
How to use
chef-shell to see attribute config and recipes, with and without a Chef Server.
OggCamp 2018 (21 mins read).
A look at my time at OggCamp 2018, the talks I presented and attended.
Context is key: thinking about your audience (5 mins read).
How to have inclusive conversations by providing the right context for those who may not have the same level of understanding.
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.
Being More Explicit on Content Licensing (3 mins read).
Why I'm re-licensing the code snippets and post content on my site is, and how I'm making it more obvious.
Some exciting job and knowledge-sharing news (4 mins read).
Moving into Quality Engineering, publishing Chef training courses, conference speaking about Chef at OggCamp and the complex mess that is this very static website at DevOpsDays London.
Notes from the AWS + Chef Dev Day Roadshow in London (13 mins read).
Notes from the AWS Dev Day Roadshow in London, where we got to play around with Chef, Chef Automate and InSpec using AWS OpsWorks.
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.
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
diffs when working with submodules.
file in Chef doesn't actually
delete it (3 mins read).
Why you should explicitly add
backup false when
file through Chef, to avoid leaving potentially sensitive files still on the box.
Morsels of Goodness: What's Cooking in Chef 14? (5 mins read).
A look at the new features coming in the new Chef 14 release, as well as what to watch out for when upgrading.
Finally Returning to Full Time Work After 123 Days (2 mins read).
Receiving the final sign off after four months off for my ruptured appendix.
How to dynamically serve a branch on a subdomain for GitLab Review Apps using Caddy Labels.
Deploying to Netlify using GitLab CI (3 mins read).
How adding two lines to my
.gitlab-ci.yml migrated my existing site from GitLab Pages to Netlify.
Executing an Interactive Python Shell (REPL) for a Script (1 mins read).
python -i to get an interactive REPL after running a Python source file.
Bundling Common Rake Tasks into a Gem (8 mins read).
An example of how to create a helper gem for common Rake task, using the real-world example of Chef cookbooks.
docker login as another user in Chef (2 mins read).
Hitting the error
permission denied while trying to connect to the Docker daemon socket when trying to run
docker login as a non-root user in Chef.