Spring Boot: 'junit-vintage' failed to discover tests
When Using Only JUnit5 Tests (2 mins read).
How to avoid the error 'junit-vintage' failed to discover tests
when using Spring Boot.
Spring Boot: 'junit-vintage' failed to discover tests
When Using Only JUnit5 Tests (2 mins read).
How to avoid the error 'junit-vintage' failed to discover tests
when using Spring Boot.
Generating Random Bytes On the Command Line with OpenSSL (1 mins read).
How to generate random bytes as binary, base64 or hex, using openssl
on the command-line.
Using @Mock
as a Method Parameter with Mockito (2 mins read).
Using @Mock
on method parameters to reduce manual mock setups with Mockito.
Converting a Byte Array to a String in Ruby (1 mins read).
How to convert an array of bytes to a String with Ruby.
Disabling the logging of Spring Security's Default Security Password (2 mins read).
How to disable Spring Boot logging the generated security password
.
Generating the Client Assertion JWT for private_key_jwt
Authentication with Ruby (1 mins read).
A helper script to generate the client assertion required to authenticate to an Authorization Server that supports private_key_jwt
, on the command-line with Ruby.
Verifying Signed JWTs (JWS) with Ruby (2 mins read).
Using the ruby-jwt library to verify a signed JSON Web Token (JWS) on the command-line.
Creating Signed JWTs (JWS) with Ruby (1 mins read).
Using the json-jwt and ruby-jwt libraries to sign a JSON Web Token on the command-line.
Issues with Ordering When Using Vault CLI's -no-print
Argument (1 mins read).
A possible solution for no-print
not taking effect with the vault
CLI when using AWS EC2 auth.
GitLab CI Shell Executor failing builds with ERROR: Job failed: exit status 1
(1 mins read).
How to work around ERROR: Job failed: exit status 1
errors with GitLab CI's shell executor.
GitLab CI Shell Executor Failing Builds With No Such Directory
(1 mins read).
How to work around No Such Directory
errors with GitLab CI's shell executor.
Deploying a Branch to Netlify on the Command-Line (1 mins read).
How to use Netlify's Node CLI to deploy a given branch to Netlify.
Generating JWK Thumbprints with Ruby (1 mins read).
How to generate JWK thumbprints with Ruby.
Generating JWK Thumbprints with Node.JS (1 mins read).
How to generate JWK thumbprints with Node.JS.
How are Open Banking Key Ids (kid
) Generated? (1 mins read).
Sharing insight into how Open Banking has generated their kid
s for use with JWTs.
How to Run Java on the Command-Line to Attach a Debugger (1 mins read).
How to run java
on the command-line, and make it possible to attach a debugger.
Extract a Public Cert from a Java Keystore/Truststore (1 mins read).
How to export the public certificate from a Java keystore.
Evicting Spring Cache on a Schedule (1 mins read).
How to evict Spring Cache's @Cacheable
data on a schedule.
No default controller available
With bluetoothctl
(1 mins read).
One possible solution for the No default controller available
error message with bluetoothctl
.
How to avoid HttpMessageNotReadableException
when using ContentCachingRequestWrapper
with Java Servlet Filters (1 mins read).
How to avoid receiving Required request body is missing
errors when using a ContentCachingRequestWrapper
.
Reading a Servlet/Spring Request Body Multiple Times (3 mins read).
How to read the request body more than once using Java Servlet Filters.
Disabling @Valid
Annotation in a Spring Integration Test (1 mins read).
How to disable @Valid
validation in Spring Integration Tests.
Converting Output from Rest Assured to Curl Requests (3 mins read).
How to convert the log output from Rest Assured to a curl
request.
Navigating through the Vim Changelist with Intellij (2 mins read).
How to use g;
and g,
using IntelliJ's IdeaVim plugin to cycle through changes in a file.
Running Spotless Automagically with Gradle (2 mins read).
How to set Gradle configuration globally to always run spotlessApply
in your projects.
Gotcha: AWS SDK Proxy Setup with Test Kitchen (2 mins read).
How to avoid odd proxy issues when using the AWS SDK, when using Test Kitchen.
Determining What Motherboard You're Using, On Linux (1 mins read).
How to determine what motherboard the machine you're using is reporting, on the command-line with Linux.
Extracting x5c
s from a JSON Web Key Set (JWKS) to PEM files with Ruby (1 mins read).
How to extract the full chain of certificates from a JWKS' x5c
parameter to files.
Autogenerating the Date
Header in Postman (1 mins read).
How to generate and send a Date
header using Postman.
Converting a Byte Array to String with Buffer
in Node.JS (1 mins read).
How to convert an array of bytes to a String using Node.JS's Buffer
class.
GitLab Runner Docker TCP Error (2 mins read).
Fixing the cannot connect to the Docker daemon
error with GitLab Runner and Docker.
Inheriting the Proxy from the Jenkins Host in Docker (1 mins read).
How to pass proxy variables from your Jenkins host to your Docker containers.
Inheriting the Environment Variables from the Jenkins Host in Docker (2 mins read).
How to pass environment variables from your Jenkins host to your Docker containers.
Tomcat May Log Cookies Out-of-the-Box (3 mins read).
Warning you about cookies being logged out-of-the-box, and how to resolve it.
Providing Custom Serialization for Map
Keys in Jackson (1 mins read).
How to configure Jackson to use a custom method to serialise keys for a Map
.
Toggling Your Bluetooth Connection using bluetoothctl
on the Command-Line (1 mins read).
How to script bluetoothctl
to toggle your connection to a Bluetooth device.
Extract a Private Key from a Java Keystore (1 mins read).
How to export an asymmetric PrivateKeyEntry
entry from a Java keystore.
Splitting an X509 PEM-Encoded Certificate Bundle into Multiple Files (1 mins read).
Splitting a certificate bundle into separate files using split
or awk
.
How to Use curl
to Send Requests to Domains Without Editing Your /etc/hosts
File (1 mins read).
Using curl
's --resolve
flag to perform custom lookup for hosts.
How to unzip/decompress a Java JAR file (1 mins read).
How we can use the unzip
command to decompress JAR files.
Triggering an AWS Lambda from the Command-Line (1 mins read).
How to invoke an AWS Lambda function from the Command-Line.
Skip Builds On Branch Indexing with Jenkins Multibranch Pipelines (2 mins read).
How to stop Jenkins unnecessarily kicking off builds on Multibranch pipelines when indexing the branches.
Generating HMAC Signatures on the Command Line with OpenSSL (1 mins read).
How to generate HMAC signatures for a given string, using openssl
.
Creating Signed JWTs (JWS) with Node.JS (1 mins read).
How to use the jsonwebtoken library to create a Signed JSON Web Token (JWS) with Node.JS.
Setting up Multiple redirect_uri
s on the Meetup.com API (2 mins read).
How to allow multiple redirect_uri
s on your Meetup.com (OAuth2) API consumer.
How to Extract a Twitter Profile URL (But Not Status URL) with a Regex (1 mins read).
A regular expression to match Twitter Profile URLs, but not Status URLs.
Converting a Ruby Hash to a String (1 mins read).
The ways that we can convert a Hash to a String with Ruby.
Generate Plain Old Java Objects (POJOs) from XML Schema Definitions with xjc
(4 mins read).
How to generate POJOs really quickly and easily, with no manual work, using the xjc
command.
Converting an x5c
from a JSON Web Key to a PEM with Ruby (1 mins read).
How to convert a JWK's x5c
to a PEM-formatted certificate with Ruby.
Technically my reply to this tweet is the latest thing on my blog (see the link at the end) but https://www.jvt.me/posts/2020/01/14/ruby-parse-unix-epoch/ is the last, super short #blogumentation blog post
One of my own #blogumentation articles saved me today from tearing my hair out, determining why some requests kept being rejected https://www.jvt.me/posts/2019/02/25/verify-signed-jwt-nodejs/ - that's why I do it!
Parsing a Unix Epoch With Bash/Ruby on the Command-Line (1 mins read).
How to convert a Unix Epoch to a human-readable date format.
Performing Mutual TLS Authentication with Rest Assured (via Apache HTTP Client) (3 mins read).
How to configure Rest Assured to perform Mutual TLS authentication against an API.
Gotcha: Running both JUnit4 and JUnit5 Together with Gradle (1 mins read).
How to make sure your JUnit4 and JUnit5 Gradle tests work within the same project.
Gotcha: Running both JUnit4 and JUnit5 Together with Maven (1 mins read).
How to make sure your JUnit4 and JUnit5 Maven tests work within the same project.
Pretty Printing XML on the Command-Line (1 mins read).
How to use xmllint
to pretty-print XML/HTML files.
Backporting/Replaying Changes using git format-patch
and git apply
/ git-am
(2 mins read).
Using git format-patch
and git apply
/git am
to apply a patch, if git cherry-pick
isn't available.
List What Files Changed in a Git Commit (1 mins read).
How to list what files changed in a given commit.
Using Chef to Delete Files that aren't in a List (2 mins read).
How to delete files in a directory that don't match a list.
Converting a JSON Web Key to a X.509 .pem
file (in Node.JS) (2 mins read).
Converting a JSON Web Key (JWK) to an X.509 PEM file, using the node-jose
library.
Configuring a Jenkins Multibranch Pipeline to Use an External Script with Job DSL (2 mins read).
How to set up a Multibranch Pipeline to use an external Git repo for running your Jenkins script.
ChefSpec Gotcha: Using render_file
When Deleting Files (2 mins read).
How to use render_file
with ChefSpec when you're deleting the file.
Setting up a directory for OpenSSL's SSL_CERT_DIR
(2 mins read).
How to configure a directory of trusted certificates for OpenSSL to trust.
Locking Your Machine Before Suspending Using systemd (2 mins read).
How to get systemd to automagically lock your machine before it suspends.
Parsing URL Querystrings with Node.JS (1 mins read).
How to easily parse a URL querystring with Node.JS.
Using the OpenSSL Command-Line to Verify an SSL/TLS Connection (2 mins read).
How to use the openssl
command-line to verify whether certs are valid.
Viewing Jenkins Jobs' Configuration as XML (1 mins read).
How to view the XML configuration for a given Jenkins job.
Trusting Self-Signed Certificates from Ruby (1 mins read).
How to configure Ruby to trust self-signed certificates.
Pretty Printing YAML with the Ruby Command-Line (1 mins read).
Using Ruby's YAML
library to pretty-print YAML files from the command-line.
Piping Data When Not Running a Command with sudo
(1 mins read).
How to (more) safely pipe stdin
to an elevated command with sudo tee
.
Minifying JSON with Python (1 mins read).
How to take a pretty-printed JSON string and replace it with a minifed JSON string using Python.
Minifying JSON with Ruby (1 mins read).
How to take a pretty-printed JSON string and replace it with a minifed JSON string using Ruby.
Only Adding Changes for Tracked Files With Git (1 mins read).
How to only add files that have changed with git add -u
.
Creating a Global .gitignore
(1 mins read).
How to have Git have a list of files to globally ignore, without configuring anything in your ~/.gitconfig
.
Gotcha: Netlify Makes All Your Filenames Case-Insensitive (1 mins read).
Beware if you have a requirement for case-sensitive URLs for Netlify.
Making Hugo Generate Case Sensitive URLs (2 mins read).
How to make your Hugo URLs case sensitive.
Viewing the Contents of a Certificate Signing Request (CSR) with OpenSSL (1 mins read).
How to look at the contents of a Certificate Signing Request (CSR) with the openssl
command-line tool.
Setting Your Maven Project Versions (1 mins read).
How to set the versions of all Maven pom.xml
s within a Maven project.
Listing the Contents of a Java Truststore (3 mins read).
How to extract a list of trusted certificates from a Java Trust store.
Getting git diff
Outputs Without a Prefix (1 mins read).
How to remove a/
and b/
from git diff
outputs.
Auto-linking URLs with Hugo (2 mins read).
How to get URLs automagically converted to links in Hugo, using Regular Expressions.
Pushing your Git Branches to a Matching Remote Branch (1 mins read).
How to save yourself from typing git push --set-upstream origin ${branch}
and have Git determine the branch you're pushing to.
Testing Your SLF4J Logs (3 mins read).
Looking at how we would unit test our SLF4J logs to gain confidence they work, and to catch regressions in the future.
Viewing Logs for a systemd Unit with journalctl
(1 mins read).
How to view the logs for a given unit, using systemd and journalctl
.
Setting up a custom RubyGems Repository for Chef in Test Kitchen (1 mins read).
How to use a private RubyGems repository for your Chef gem dependencies in Test Kitchen.
Overriding Test Kitchen Driver Configuration (1 mins read).
How to override specific configuration in Test Kitchen's project-specific .kitchen.yml
.
How Many Gadgets Does the Kitchen Need?! The Many Tools for Chef Dependency Management (5 mins read).
Looking at the different dependency management solutions of Chef, and how, where and why you would use each one.
Extracting Request Parameters Dynamically for a application/x-www-form-urlencoded
Request (1 mins read).
How to access all key-value pairs of parameters sent in a application/x-www-form-urlencoded
request.
Extracting Request Parameters Dynamically for a multipart/form-data
Request (2 mins read).
How to access all key-value pairs of parameters sent in a multipart/form-data
request.
Adding a 404 page for www.jvt.me on Netlify, with Hugo (1 mins read).
Announcing a swanky new 404 page for www.jvt.me.
Converting Ruby Hash keys to Strings/Symbols (2 mins read).
How to recursively convert a Ruby Hash's keys to a String / Symbol.
Merging an 'Override' Ruby Hash into the Original Hash (6 mins read).
How to use Ruby to merge two hashes with nested arrays of hashes, with the second hash overriding values from the first.
Adding Newlines to all Files in Git (3 mins read).
Adding newlines at the end of all Git-tracked files.
How to RSVP to an Indie Event from your Website (4 mins read).
How to use your personal website in conjunction with Microformats and Webmention to be able to RSVP to Indie events.
Easily Parsing Failed Cucumber Scenarios from the JSON Report (2 mins read).
How to parse a Cucumber JSON report to display the failed scenarios and their causes.
Using OpenSSL Behind a (Corporate) Proxy (1 mins read).
How to use OpenSSL commands when behind a proxy server.
Extract a Secret Key from a Java Keystore (2 mins read).
How to export a symmetric SecretKey
entry from a Java keystore.
Parsing Key-Value URL Fragments with Node.JS (1 mins read).
How to easily parse a URL fragment containing key-value pairs of data, with Node.JS.
Creating an iCalendar feed for my RSVPs (2 mins read).
How and why I've created a public calendar for the RSVPs I send from this site.
Add your Meetup.com Events to your Calendar (1 mins read).
How to get all your upcoming Meetup.com events straight to your calendar.
Pretty Printing JSON Files Inline on the Command Line (2 mins read).
How to rewrite multiple JSON files inline on the Command Line.
Force a Refresh of an Emby Library in Kodi (1 mins read).
How to force an update of an Emby library from Kodi.
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 (2 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) (38 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.
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.
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.
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.
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.