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.
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.
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.
Serving Branches on a Subdomain using Caddy and GitLab Review Apps (2 mins read).
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).
Using 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.
Running 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.
My First Week Back to Working (Remotely) After Three Months (6 mins read).
How I've found the first week back to work after almost three months, and the productivity gains of working reduced hours.
Chef 13 Upgrade: knife-cookbook-doc
Rubocop Updates (1 mins read).
Disabling the Missing space after #
and Do not use block comments
errors for your knife-cookbook-doc
formatted comments.
Chef 13 Upgrade: knife-cookbook-doc
gem upgrade (1 mins read).
Fixing odd Logger
entries in autogenerated knife-cookbook-doc
README.md
s for Chef 13.
Chef 13 Upgrade: Deprecation of Namespace Collisions in Custom Resources (1 mins read).
Preparing for breaking changes in Chef 14 by renaming property_name
to new_resource.property_name
in Custom Resources.
Verify a Ruby Class Method is Called with Arguments in Rspec, Without Doubles or Mocks (1 mins read).
Rspec code to verify that a Ruby Class Method is called from another method, without needing to mock anything.
Testing Chef's ruby_block
s with ChefSpec (3 mins read).
Testing implementation of a ruby_block
in ChefSpec, to ensure that the code executes as expected.
Chef 13 Upgrade: Lessons Learnt and Documented for Posterity (1 mins read).
Notes on the main problems encountered when upgrading from Chef 12 to Chef 13, both with ChefSpec and Rubocop.
Chef 13 Upgrade: Rubocop Changes for lazy
Parameters (1 mins read).
How to resolve the Parenthesize the param lazy
Rubocop error when upgrading your cookbook to Chef 13.
Chef 13 Upgrade: Rubocop Changes for Testing render_file
with ChefSpec and a with_content
Block (1 mins read).
How to resolve the Parenthesize the param render_file
Rubocop error when upgrading your cookbook to Chef 13.
Chef 13 Upgrade: Rubocop Changes for Word Array Literals (%w
) (1 mins read).
A one-liner shell command to fix Rubocop errors %w-literals should be delimited by [ and ]
.
Chef 13 Upgrade: Testing ruby_block
s with ChefSpec (1 mins read).
Replace your block.old_run_action
with block.block.call
to trigger ruby_block
s within ChefSpec 7 and Chef 13.
Emoji Support in Dunst (2 mins read).
How to see Emoji when using the Dunst notification system.
SSLError
When Running Berkshelf Behind a Proxy (2 mins read).
Getting around the pesky OpenSSL::SSL::SSLError SSLv2/v3 read server hello A
error when running Berkshelf behind a proxy.
2017 in Review (68 mins read).
A look back over the awesome (and not so awesome) things that happened in 2017, and a look forward to what 2018 holds.
Hackference 2017 (8 mins read).
My summary of the Hackference 2017 conference and hackathon.
2017's Music In Review (5 mins read).
What music was I listening to in 2017?
Running service
resources in Kitchen-Docker (3 mins read).
How to get up and running with service
resources when running Test Kitchen with the Docker driver, in this example for use with GitLab CI.
Trusting Self-Signed Certificates from the Chef Development Kit (2 mins read).
How to get the ChefDK (and associated tools) to trust internal / self-signed certificates, in an easy oneliner.
Getting around Permission Denied
when running ChefSpec (3 mins read).
How to handle getting an EACCES
when trying to run ChefSpec on a recipe.
GitLab Review Apps with Capistrano and Nginx (4 mins read).
Spinning up a version of your application on every push, so others don't have to manually get the code up and running locally.
Testing include_recipe
s with Chef and ChefSpec (2 mins read).
How to best test include_recipe
s within your Chef recipes, as well as how to ensure that you aren't running any dependent recipes in your tests.
Blogumentation - Writing Blog Posts as a Method of Documentation (4 mins read).
Why I'm starting to use blog posts as a form of documentation, and why I think they're so well suited.
Converting YAML to JSON and vice versa (Part 1 - Ruby) (2 mins read).
Coerce YAML to JSON and vice versa, from the comfort of your Gem-studded command line.
Clean up your Git branches (3 mins read).
Remove any merged local or branches from your local Git repository.
Pretty Printing JSON on the Command Line with Python (2 mins read).
Using Python's JSON module to pretty print JSON objects from the command line.
Viewing your diff while writing your commits with git commit --verbose (3 mins read).
Making it easier to write commit messages by having the diff in your editor.
Building Chef Cookbooks with GitLab (Part 1) (11 mins read).
An introduction to how to build a cookbook using GitLab's Continuous Integration platform in conjunction with kitchen-docker
.
Extracting SSL/TLS Certificate Chains Using OpenSSL (1 mins read).
A quick one-liner to get you the full certificate chain in .pem
format.
glances, a top
and htop
replacement (1 mins read).
I share the tool I have been using for system utilisation and monitoring, glances
.
Saving Repetition with Git Commit Templates (3 mins read).
Speed up your commit message writing by providing a template for when you run git commit
.
Cleaning Up Your LaTeX Build Output with latexrun
(3 mins read).
A tool to help reduce the amount of unnecessary output when building LaTeX files.
Why You Should Use GitLab.com (13 mins read).
A discussion about the reasons that I would greatly recommend the GitLab.com platform for all your Git hosting, opposed to its competitors.
Resurrecting dinosaurs, what could possibly go wrong? (12 mins read).
How containerised apps (AppImage, Snappy and Flatpak) could eat our users.
Preparing a Technical Workshop - A Checklist (4 mins read).
What you need to remember to ask the organisers and what to consider in order to ensure your workshop goes smoothly.
CloudABI - Easily develop sandboxed apps for UNIX (7 mins read).
An Application Binary Interface to make it possible to create capabilities-based, hardened, software.
FOSDEM 2017 (4 mins read).
A few words ahead of the storm of articles.
Open S-awesome (5 mins read).
A month of giving back, and a very honest post-mortem of what I learned.
Continuous Delivery with Capistrano and GitLab Continuous Integration (4 mins read).
How to get up and running with using GitLab CI and the Capistrano deploy tool.
2016's Music In Review (5 mins read).
What music was I listening to in 2016?
Hacktoberfest 2016 (12 mins read).
A few words about my excitement for the start of Hacktoberfest, and some ideas on how to get started yourself.
2015's Music In Review (5 mins read).
What music was I listening to in 2015?
The Sony Hack (6 mins read).
A discussion about Sony Pictures Entertainment being hacked in the months before the release of the action comedy, The Interview, and its depiction of Kim Jong Un.