Commit ce1a1b09 authored by Jamie Tanna's avatar Jamie Tanna

Reformat directory structure for Hugo

Note that we use pluralised content types i.e. `posts`.
parent a58e81dd
<blockquote>As part of an <a href="{% post_url 2018-03-06-chef-13-upgrades %}">upgrade from Chef 12 to Chef 13</a>, this is one of the posts in which I've been <a href="/posts/tags/chef-13-upgrade">detailing the issues I've encountered, and how I've resolved them </a>.</blockquote>
<blockquote>As part of an <a href="{{ ref . "2018-03-06-chef-13-upgrades" }}">upgrade from Chef 12 to Chef 13</a>, this is one of the posts in which I've been <a href="/posts/tags/chef-13-upgrade">detailing the issues I've encountered, and how I've resolved them </a>.</blockquote>
......@@ -9,7 +9,7 @@ canonical_url: http://www.impactnottingham.com/2014/07/intelligent-parenting/
---
> This article was [originally published](http://www.impactnottingham.com/2014/07/intelligent-parenting/) for [Impact Nottingham](http://www.impactnottingham.com).
![Intel Mimo](/assets/img/intel-mimo.jpg)
![Intel Mimo](/img/intel-mimo.jpg)
> Image Credit: Gizmag
......
......@@ -9,7 +9,7 @@ canonical_url: http://www.impactnottingham.com/2014/11/smart-is-the-new-black-li
---
> This article was [originally published](http://www.impactnottingham.com/2014/11/smart-is-the-new-black-lightbulbs-to-reflect-a-modern-age/) for [Impact Nottingham](http://www.impactnottingham.com).
![Smart Lightbulbs](/assets/img/smart-lightbulbs.png)
![Smart Lightbulbs](/img/smart-lightbulbs.png)
> Image courtesy of tech order via Flickr
......
......@@ -9,7 +9,7 @@ canonical_url: http://www.impactnottingham.com/2014/11/game-of-drones/
---
> This article was [originally published](http://www.impactnottingham.com/2014/11/game-of-drones/) for [Impact Nottingham](http://www.impactnottingham.com).
![Amazon Delivery](/assets/img/game-of-drones.jpg)
![Amazon Delivery](/img/game-of-drones.jpg)
> Image courtesy of Amazon Prime Air
......
......@@ -9,7 +9,7 @@ canonical_url: http://www.impactnottingham.com/2014/12/the-hour-of-code-whats-th
---
> This article was [originally published](http://www.impactnottingham.com/2014/12/the-hour-of-code-whats-the-worst-that-could-happen/) for [Impact Nottingham](http://www.impactnottingham.com).
![David Cameron during Hour of Code](/assets/img/hour-of-code.png)
![David Cameron during Hour of Code](/img/hour-of-code.png)
> Image courtesy of Number 10 via Flickr
......
......@@ -9,7 +9,7 @@ canonical_url: http://www.impactnottingham.com/2015/04/the-sony-hack/
---
> This article was [originally published](http://www.impactnottingham.com/2015/04/the-sony-hack/) for [Impact Nottingham](http://www.impactnottingham.com).
![Stereotypical hacking image](/assets/img/sony-hack.png)
![Stereotypical hacking image](/img/sony-hack.png)
> Image courtesy of Erwin Vindl via Flickr
......
......@@ -4,7 +4,7 @@ title: Continuous Delivery with Capistrano and GitLab Continuous Integration
description: How to get up and running with using GitLab CI and the Capistrano deploy tool
categories: guide
tags: capistrano deploy ci gitlab docker
image: /assets/img/vendor/gitlab-wordmark.png
image: /img/vendor/gitlab-wordmark.png
---
[Capistrano][capistrano-rb] is a deploy tool written in Ruby that I adopted last year, and started use with `jvt.me`, `hacknotts.com` and `inspirewit.com`.
......
......@@ -4,7 +4,7 @@ title: Why You Should Use GitLab.com
description: A discussion about the reasons that I would greatly recommend the GitLab.com platform for all your Git hosting, opposed to its competitors.
tags: gitlab opensource
categories: persuasive
image: /assets/img/vendor/gitlab-wordmark.png
image: /img/vendor/gitlab-wordmark.png
---
## tl;dr
......@@ -50,7 +50,7 @@ For instance, this is how I [distribute this site][jvtme-container-registry], an
Environments are a feature of the CI platform that help capture the different stages that an application must go through before reaching end user consumption, i.e. `dev`, `qa`, `prod`. This is something that is tracked within the [`.gitlab-ci.yml`][jvtme-ci-yaml] file, and then provides an easy way to see what environments are running what code, as well as exposing links to the environments themselves from the GitLab UI:
![The environments page on the repository for `jvt.me`](/assets/img/jvt.me-environments-21-03-17.png)
![The environments page on the repository for `jvt.me`](/img/jvt.me-environments-21-03-17.png)
GitLab also provides the ability to [check out your deployments locally][gitlab-docs-env-ref] - it does this by creating a Git `ref` which then tracks the commit in each environment. This makes it much less effort to determine which code is currently in which environment in a way that requires no manual (or even scripted) work by yourself, as it is handled through GitLab itself, and you can easily hook into it as the link describes.
......@@ -70,19 +70,19 @@ Last weekend, while setting up a new repo for [Hack24][hack24], [@anna_hax][anna
By having more of a delve, I found the following options:
![GitLab's approvals section](/assets/img/gitlab-approvals.png "GitLab's approvals section")
![GitLab's approvals section](/img/gitlab-approvals.png "GitLab's approvals section")
In order to make Merge Requests more robust, it can be useful to enforce the amount of approvals that must be given in order to allow a merge to occur. At the same time, there may be specific people in your project that you'd want to perform an approval for, and therefore you can call them out here, too.
<div class="divider"></div>
![GitLab's protected branches](/assets/img/gitlab-protected-branches.png "GitLab's protected branches")
![GitLab's protected branches](/img/gitlab-protected-branches.png "GitLab's protected branches")
Protected branches on GitLab provide a bit more control over the ability to push and merge - this means that you can limit the two options separately - i.e. you can ensure only your CI or service account can push directly to `develop` (for instance, when running workflows using something like [mvn-jgitflow][jgitflow]) but that any of the developers in your team can perform a merge _into_ `develop`. This extra control can be greatly useful when working on larger, distributed teams, and will make it possible to more tightly restrict access control to ensure that your project is managed correctly.
<div class="divider"></div>
![GitLab's push rules](/assets/img/gitlab-push-rules.png "GitLab's push rules")
![GitLab's push rules](/img/gitlab-push-rules.png "GitLab's push rules")
In addition, GitLab adds some extra controls over what can be pushed up - such as blocking any secrets, which is common to hear about, and I can see being a great thing to have enabled, for that one time you forget and then end up with a [$6000 AWS bill][aws-bill-6k].
......@@ -90,15 +90,15 @@ Additionally there can be enforcement on the commit messages, making sure that t
<div class="divider"></div>
![GitLab Merge Requests can be automerged when CI pipelines succeed](/assets/img/gitlab-merge-when-ci-succeeds.png "You can set GitLab to automerge a Merge Request when the CI Pipeline succeeds")
![GitLab Merge Requests can be automerged when CI pipelines succeed](/img/gitlab-merge-when-ci-succeeds.png "You can set GitLab to automerge a Merge Request when the CI Pipeline succeeds")
This is another really great feature - having a MR auto-merge when the CI job finishes. No longer do you have to keep checking back to see if i.e. Jenkins has succeeded for the MR. This is something that can be triggered and then you can just go and work on something else, freeing you up to focus on other things. This may not sound like a killer feature, but when you have relatively large build pipelines, this saves you from context switching back and forth to check if things have passed, so you can then merge them.
<div class="divider"></div>
![GitLab stops `WIP` Merge Requests from being merged until the `WIP `is removed from the title](/assets/img/gitlab-wip-merge.png "A WIP Merge Request cannot be merged until the `WIP` is removed from the title")
![GitLab stops `WIP` Merge Requests from being merged until the `WIP `is removed from the title](/img/gitlab-wip-merge.png "A WIP Merge Request cannot be merged until the `WIP` is removed from the title")
![GitLab stops `WIP` Merge Requests from being merged until the `WIP `is removed from the title](/assets/img/gitlab-wip-merge-2.png "A WIP Merge Request cannot be merged until the `WIP` is removed from the title")
![GitLab stops `WIP` Merge Requests from being merged until the `WIP `is removed from the title](/img/gitlab-wip-merge-2.png "A WIP Merge Request cannot be merged until the `WIP` is removed from the title")
This is something that I've found when working on teams using GitHub - in order to make it obvious that a Merge Request is a WIP that you don't want merged, it's best to set the title to i.e. `WIP: Add Why-GitLab article` and then add a `DO_NOT_MERGE` label. However, GitLab makes this even easier by detecting the `WIP` in the title, and disallowing merging until the title is updated. Although this seems like a minor thing, it means there's a little less overhead that you personally have, as you can't accidentally merge though the changes (if the CI passes, that is).
......
......@@ -4,7 +4,7 @@ title: Saving Repetition with Git Commit Templates
description: Speed up your commit message writing by providing a template for when you run `git commit`.
categories: blogumentation
tags: tools git workflow automation
image: /assets/img/vendor/git.png
image: /img/vendor/git.png
---
## Creating Your Commit Template
......@@ -81,7 +81,7 @@ cmt
Once hitting `<TAB>` in the file, I can then move around the file quickly, adding a message as follows:
<asciinema-player src="/assets/casts/commit-message-templates.json"></asciinema-player>
<asciinema-player src="/casts/commit-message-templates.json"></asciinema-player>
[beams-commit]: https://chris.beams.io/posts/git-commit/
[tpope-commit]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
......
......@@ -12,11 +12,11 @@ By combining these tools, it provides a really nice, easy to use interface, that
For instance:
![Glances running on a system under typical load](/assets/img/glances-load.png)
![Glances running on a system under typical load](/img/glances-load.png)
And then, when there is load on the system:
![Load on the system produces alerts and warnings](/assets/img/glances-load.png)
![Load on the system produces alerts and warnings](/img/glances-load.png)
Glances has the ability to display information about your containers, the actual system utilisation in terms of processes, and their I/O, CPU and Memory impacts, as well as general disk I/O by partition. Something I only noticed recently was the ability to see your system temperatures, as well as battery percentages. Finally, when your resource usage starts to get to certain levels, you will get warnings, such as the high CPU utilisation in the second image.
......
......@@ -4,7 +4,7 @@ title: Building Chef Cookbooks with GitLab (Part 1)
description: An introduction to how to build a cookbook using GitLab's Continuous Integration platform in conjunction with `kitchen-docker`.
categories: guide chef gitlab
tags: howto blogumentation gitlab chef test-kitchen docker gitlab-ci
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
## Foreword
......
......@@ -4,7 +4,7 @@ title: Viewing your diff while writing your commits with git commit --verbose
description: Making it easier to write commit messages by having the diff in your editor.
categories: blogumentation
tags: git commit shell workflow
image: /assets/img/vendor/git.png
image: /img/vendor/git.png
---
I am a firm believer of the fact that Git history should be documentation for the reasoning behind _why_ the code is as it is. As such, I take care to make my commits follow [Chris Beams' commit guidelines][git-commit], which usually involves writing the commit while reading the diff of what's changed, so I don't forget anything.
......@@ -90,7 +90,7 @@ This means that I don't need any plugins, and can remain in my `$EDITOR`, as wel
To see this article in action, check out the asciicast:
<asciinema-player src="/assets/casts/git-commit-verbose.json"></asciinema-player>
<asciinema-player src="/casts/git-commit-verbose.json"></asciinema-player>
[vim-fugitive]: https://github.com/tpope/vim-fugitive
[git-commit]: https://chris.beams.io/posts/git-commit/
......@@ -40,4 +40,4 @@ $ python -m json.tool < file.json
To see this article in action, check out the asciicast:
<asciinema-player src="/assets/casts/pretty-printing-json-cli.json"></asciinema-player>
<asciinema-player src="/casts/pretty-printing-json-cli.json"></asciinema-player>
......@@ -4,7 +4,7 @@ title: Clean up your Git branches
description: Remove any merged local or branches from your local Git repository
categories: blogumentation
tags: blogumentation git
image: /assets/img/vendor/git.png
image: /img/vendor/git.png
---
## Intro
......
......@@ -4,7 +4,7 @@ title: 'Testing `include_recipe`s with Chef and ChefSpec'
description: 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.
categories: blogumentation
tags: blogumentation chef tdd chefspec
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
While writing cookbooks, both personally and professionally, I practice a heavy use of TDD to ensure that the recipes are doing what I expect them to. As part of this, I will want to test both standard resources, as well as `include_recipe`s:
......
......@@ -4,7 +4,7 @@ title: GitLab Review Apps with Capistrano and Nginx
description: Spinning up a version of your application on every push, so others don't have to manually get the code up and running locally.
categories: guide
tags: guide gitlab review-apps capistrano
image: /assets/img/vendor/gitlab-wordmark.png
image: /img/vendor/gitlab-wordmark.png
---
Note: This post describes how to work with Nginx. There is an alternate post on [Serving Branches with GitLab Review Apps using Caddy], which may be of interest.
......@@ -14,7 +14,7 @@ I very recently set up [GitLab's Review Apps][review-apps] for this site, meanin
For example, the [`example/review-apps`][review-apps-branch] branch is deployed under the `review/example/review-apps` environment to <http://example-review-apps.www.review.jvt.me/>:
![`example/review-apps` environment](/assets/img/gitlab-review-apps-capistrano/example-review-apps.png)
![`example/review-apps` environment](/img/gitlab-review-apps-capistrano/example-review-apps.png)
This means that each branch I push to will spin up a new instance of my site under the `review.jvt.me` subdomain.
......
......@@ -5,7 +5,7 @@ description: How to handle getting an `EACCES` when trying to run ChefSpec on a
categories: blogumentation
tags: blogumentation chef chefspec chefdk
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
You may find that when running ChefSpec on your Chef cookbook, you may hit an error such as the following, spouting `Permission denied`:
......
......@@ -5,7 +5,7 @@ description: How to get the ChefDK (and associated tools) to trust internal / se
categories: blogumentation chef
tags: chef chefdk certificates berkshelf
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
If you're writing Chef cookbooks in a corporate environment, you may be developing against services on your internal network. As the services are not going to be exposed externally, the certificate used for HTTPS will be an intranet-only/self-signed cert, and therefore will require you to manually add it to your trust store.
......
......@@ -4,7 +4,7 @@ title: 'Running `service` resources in Kitchen-Docker'
description: 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.
categories: blogumentation chef kitchen docker
tags: blogumentation chef kitchen docker howto
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
When writing cookbooks, you need to actually test that they work. This is often done using [Test Kitchen][test-kitchen], a tool that allows you to converge your cookbooks on a real machine. There are a number of drivers that can be used, such as [kitchen-vagrant][kitchen-vagrant] and [kitchen-docker][kitchen-docker].
......
......@@ -113,7 +113,7 @@ Stuart's got a [full transcript of his talk][stuart-transcript] available.
It was a great hack, and we played around with [GitHub][github-api], [Intuit QuickBooks][quickbooks-api] and [Starling Bank][starling-api] APIs, tying it together with a [Python Flask app][flask].
![Be Paid to Get Deployed](/assets/img/projects/be-paid-to-get-deployed.png)
![Be Paid to Get Deployed](/img/projects/be-paid-to-get-deployed.png)
From Intuit, we won a GoPro Hero each and from GitHub we won a choice of swag - we both chose a [GitHub hoodie][github-hoodie] and [GitHub Contributions Mug][github-contribution-mug].
......
......@@ -31,11 +31,11 @@ I've tweaked my site a lot over this last year, finding lots of low-brainpower t
Here's an image of the site at the start of the year:
![2017's site, still using the original site's theme](/assets/img/2017-year-in-review/2017-01-01-jvt.me.png)
![2017's site, still using the original site's theme](/img/2017-year-in-review/2017-01-01-jvt.me.png)
And the site at the end of the year:
![(almost) 2018's site, with a whole new minimal look and feel](/assets/img/2017-year-in-review/2017-12-31-jvt.me.png)
![(almost) 2018's site, with a whole new minimal look and feel](/img/2017-year-in-review/2017-12-31-jvt.me.png)
I'd originally started to rebuild the site in late January with the [Space Jekyll theme][space-jekyll-template] in mind. However as I'd almost reached readiness to launch the new theme, I found that actually the [Daktilo theme][daktilo-template] spoke to me more due to its strong minimalism, and almost Markdown-ness.
......@@ -70,7 +70,7 @@ These posts varied from [Blogumentation style findings][tag-findings], to how-to
For some cold hard evidence of my site's engagement, I've also got some statistics that I can share from my tracking. Note that numbers will generally be higher, but due to adblock and other features, [Matomo][matomo] ([previously Piwik][piwik-rename-matomo]) will not be able to glean all data. Also note that due to a backup malfunction, there is some data loss between July and late September.
![Overview statistics - 2130 visits, 3276 pageviews, 2605 unique pageviews](/assets/img/2017-year-in-review/overview.png)
![Overview statistics - 2130 visits, 3276 pageviews, 2605 unique pageviews](/img/2017-year-in-review/overview.png)
The high bounce rate of 80% indicates that it's likely my content either isn't engaging enough, or (hopefully) has been all the reader needs to solve their issue, which is likely given the number of Blogumentation posts I've done that would roughly fit within the 1 min 14s of average visit duration.
......@@ -88,31 +88,31 @@ Finally, the home page itself received 477 visits.
Additionally, digging into some of the other interesting points:
![Chrome (including mobile) dominates the Browser visits with ~65% market share](/assets/img/2017-year-in-review/browsers.png)
![Chrome (including mobile) dominates the Browser visits with ~65% market share](/img/2017-year-in-review/browsers.png)
Chrome has been heavily dominating the market, with a very strong lead in terms of visits, followed by Firefox and then Safari. I wonder how the release of the new and awesome Firefox 57 (Quantum) is going to affect these stats over the next year.
![Returning visits are all over the place, but starting to become more common from September](/assets/img/2017-year-in-review/returning-visits.png)
![Returning visits are all over the place, but starting to become more common from September](/img/2017-year-in-review/returning-visits.png)
For returning visitors, they seem to be spending a little more time on the site (1 min 56s compared to 1 min 14s), which is a positive sign showing greater interest on return (perhaps). Roughly a quarter of my traffic is returning visitors, which isn't too bad considering that (as I'll highlight below), most of my traffic seems to be organic search traffic as I only share my articles very rarely. I find it interesting that from September-ish, there have been more returning visitors to the site, whether that's returning to the same page(s), or to different page(s), I'm unsure.
![Google accounts for ~94% of search traffic with 1221 visits](/assets/img/2017-year-in-review/search-engines.png)
![Google accounts for ~94% of search traffic with 1221 visits](/img/2017-year-in-review/search-engines.png)
Just over half of my overall traffic comes from search engines, and through other views, Matomo seems to show that there are certain articles of mine that are placed in the top ten results of search pages, which is pretty great to see as I've not really invested much into SEO aside from the [Jekyll SEO Tag plugin][jekyll-seo-tag].
Unfortunately Matomo [locks keyword detection behind a paywall][SearchEngineKeywordsPerformance], so I don't get any information on how to make my keywords better optimised.
![Referrer breakdown to "Search Engines", "Direct Entry" and "Websites"](/assets/img/2017-year-in-review/referrer-types.png)
![Referrer breakdown to "Search Engines", "Direct Entry" and "Websites"](/img/2017-year-in-review/referrer-types.png)
Search engine traffic accounts for ~60% of my traffic, at 1299 visits, followed by "Direct Entry" traffic with 591 visits, and other websites linking to mine at 240 visits.
I believe that the "Direct Entry" referrers are privacy-guarding search engines, browsers and extensions blocking referrer information, rather than it being down to someone having i.e. a bookmark or typing out a URL. What's also interesting is that although "Direct Entry" visitors are less than half the number of visitors than search engines, they spend double the time on the site (1m55s vs 58s), and perform almost double the actions (2.4 vs 1.3).
![Top website referrers](/assets/img/2017-year-in-review/top-referrers.png)
![Top website referrers](/img/2017-year-in-review/top-referrers.png)
Twitter is my main place to share links to my content, as my main self-promotion platform so it would explain why the views are higher there. I've also shared on a couple of other platforms, and sometimes share on [the TechNottingham Slack's `#blog` channel][tn-blog] but as mentioned before, my approach has not been to over-share my content, and instead let it be discovered (more out of laziness than choice).
![Year view of visits over time, showing slow growth to May, followed by higher visits from September onwards](/assets/img/2017-year-in-review/visits-over-year.png)
![Year view of visits over time, showing slow growth to May, followed by higher visits from September onwards](/img/2017-year-in-review/visits-over-year.png)
Finally we can see that really I'm not getting too much traffic per day, not quite reaching 40 visits per day. It's interesting that around September-ish the number of visitors was higher, and more constant. Whether that was due to me having a lot of my Blogumentation style blogs that hit search results more effectively, or just that I was starting to get ranked a little better, I can't say.
......
......@@ -5,7 +5,7 @@ description: 'Getting around the pesky `OpenSSL::SSL::SSLError SSLv2/v3 read ser
categories: blogumentation
tags: chef blogumentation proxy cli shell chefdk berkshelf
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
I found recently that when trying to download cookbooks in an environment that required a proxy, I would encounter the error `OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errorno=0 state=SSLv2/v3 read server hello A`, even when I had a proxy set for i.e. `.example.com`:
......
......@@ -18,7 +18,7 @@ Although I've used [Dunst][dunst] for a couple of years, it wasn't until recentl
It came about when I switched over from Chromium to Firefox Nightly, and found that the WhatsApp Web interface would send notifications via Dunst. For instance, I would receive a popup similar to:
![Dunst notifications without emoji support, showing the raw Unicode characters instead of pictogram representation](/assets/img/emoji-dunst/without-emoji.png)
![Dunst notifications without emoji support, showing the raw Unicode characters instead of pictogram representation](/img/emoji-dunst/without-emoji.png)
As you can see, instead of receiving a pictogram representing ["Woman Gesturing OK"][woman-gesturing-ok], I was able to see the raw Unicode representation.
......@@ -26,7 +26,7 @@ It turns out the lack of emojis showing was due to me not having any emoji fonts
Once installed, I found that the font would automagically get loaded into Dunst and would render notifications correctly:
![Dunst notifications with emoji support, showing the correct pictogram representation](/assets/img/emoji-dunst/with-emoji.png)
![Dunst notifications with emoji support, showing the correct pictogram representation](/img/emoji-dunst/with-emoji.png)
Just to ensure this would always reference this font (i.e. in the case multiple emoji fonts were installed), I configured Dunst by adding the following configuration in `~/.config/dunst/dunstrc`:
......
......@@ -4,7 +4,7 @@ description: 'How to resolve the `Parenthesize the param lazy` Rubocop error whe
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef-13-upgrade-rubocop chef rubocop chef-13 rubocop-0-49
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
{% include posts/chef-13/intro.html %}
......
......@@ -4,7 +4,7 @@ description: 'How to resolve the `Parenthesize the param render_file` Rubocop er
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef-13-upgrade-chefspec chef chefspec
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
{% include posts/chef-13/intro.html %}
......
......@@ -4,7 +4,7 @@ description: 'Replace your `block.old_run_action` with `block.block.call` to tri
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef-13-upgrade-chefspec chef chefspec chef-13 chefspec-7
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
{% include posts/chef-13/intro.html %}
......
......@@ -4,7 +4,7 @@ description: 'Notes on the main problems encountered when upgrading from Chef 12
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef-13-upgrade-rubocop chef-13-upgrade-chefspec chef rubocop chefspec chef-13 chefspec-7 rubocop-0-49
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
I've recently been working through upgrading my Chef 12 cookbooks to Chef 13, as Chef 12 is to be [End of Life'd in April 2018][chef-12-eol].
......
......@@ -4,7 +4,7 @@ description: 'A one-liner shell command to fix Rubocop errors `%w-literals shoul
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef-13-upgrade-rubocop chef rubocop chef-13 rubocop-0-49
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
{% include posts/chef-13/intro.html %}
......
......@@ -4,7 +4,7 @@ description: 'Preparing for breaking changes in Chef 14 by renaming `property_na
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef-13-upgrade-deprecation chef chef-13 chef-14
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
In Chef 12 and Chef 13, the following code would work, allowing the `file` resource to access the `my_content` property:
......
......@@ -4,7 +4,7 @@ description: 'Fixing odd `Logger` entries in autogenerated `knife-cookbook-doc`
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef knife-cookbook-doc chef-13 documentation
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
{% include posts/chef-13/intro.html %}
......
......@@ -3,7 +3,7 @@ title: "Testing Chef's `ruby_block`s with ChefSpec"
description: 'Testing implementation of a `ruby_block` in ChefSpec, to ensure that the code executes as expected'
categories: blogumentation chef
tags: blogumentation chef chefspec testing
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
I like to ensure that all my code is as well unit tested as possible, both so I can quickly iterate changes, and to ensure that future changes don't inadvertently break functionality.
......
......@@ -4,7 +4,7 @@ description: 'Disabling the `Missing space after #` and `Do not use block commen
categories: blogumentation chef-13-upgrade
tags: blogumentation chef-13-upgrade chef knife-cookbook-doc chef-13 documentation chef-13-upgrade-rubocop
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
{% include posts/chef-13/intro.html %}
......
......@@ -5,7 +5,7 @@ description: How I've found the first week back to work after almost three month
categories: thoughts
tags: capitalone spectatdesigns
no_toc: true
image: /assets/img/first-week-back-remote-work.png
image: /img/first-week-back-remote-work.png
---
After almost three months off work, due to my [Ruptured Appendix][ruptured-appendix], I started working again last week, albeit with reduced hours.
......@@ -17,7 +17,7 @@ As part of looking ahead, we discussed the work I'd be picking up. Firstly, due
Not only was it great to see Gareth, but it was a really nice change having a little normalcy back, and really nice catching up and hearing how the rest of the team were, as I'd been missing them quite a lot recently.
![My work Macbook Pro + Packed Pixel setup](/assets/img/first-week-back-remote-work.png)
![My work Macbook Pro + Packed Pixel setup](/img/first-week-back-remote-work.png)
On Thursday I worked through my compliance business training, armed with my [Packed Pixel][packed-pixel] to monitor the billions of updates I had pending. With the boring tasks done, this left my Friday hours free to plan the Chef and documentation work that I'd be undertaking. On both days, I didn't even make use of my full four hours, and when I closed my laptop for the day, I also turned off my work phone. This was a big step for me, given the last few weeks I'd been keeping an eye on Slack and emails, missing work quite a bit. But now I was actually officially working I found it was nice to be able to turn everything off for the night, knowing the next day it would still be there for me.
......
......@@ -5,7 +5,7 @@ description: 'Hitting the error `permission denied while trying to connect to th
categories: blogumentation
tags: docker chef blogumentation
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
Yesterday I was writing a cookbook, where I needed to log in to GitLab's private registry:
......
......@@ -3,7 +3,7 @@ title: Bundling Common Rake Tasks into a Gem
description: 'An example of how to create a helper gem for common Rake task, using the real-world example of Chef cookbooks.'
categories: guide gem
tags: chef chefdk gem ruby rake foodcritic rubocop rspec knife-cookbook-doc gitlab-ci
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
**Note: The code snippets in this post are licensed as Apache-2.0 and available at [<i class="fa fa-gitlab"></i> jamietanna/example-cookbook-helper-gem][example-cookbook-helper-gem].**
......
......@@ -3,7 +3,7 @@ title: Executing an Interactive Python Shell (REPL) for a Script
description: 'Using `python -i` to get an interactive REPL after running a Python source file.'
categories: blogumentation
tags: cli python blogumentation tools howto
image: /assets/img/vendor/python-logo-notext.png
image: /img/vendor/python-logo-notext.png
no_toc: true
---
Sometimes you want to be able to get a [REPL][repl] (**R**ead **E**val **P**rint **L**oop) shell when running a Python script. This can help you interactively test manipulations of data and functions with your code, without having to amend your script, write the file, and then re-run it.
......
......@@ -4,7 +4,7 @@ description: 'How adding two lines to my `.gitlab-ci.yml` migrated my existing s
categories: guide
tags: netlify gitlab-ci automation continuous-deployment ci deploy howto
no_toc: true
image: /assets/img/vendor/netlify-full-logo-white.png
image: /img/vendor/netlify-full-logo-white.png
---
**Update** The code snippet below has been updated to point to `netlifyctl` rather than the `netlify` Node CLI, as `netlifyctl` is now the recommended CLI interface.
......
......@@ -3,7 +3,7 @@ title: Serving Branches on a Subdomain using Caddy and GitLab Review Apps
description: How to dynamically serve a branch on a subdomain for GitLab Review Apps using Caddy Labels.
categories: guide
tags: guide gitlab review-apps caddy howto deploy
image: /assets/img/vendor/gitlab-wordmark.png
image: /img/vendor/gitlab-wordmark.png
no_toc: true
---
This post describes how to work with Caddy. I've previously written about how to use [GitLab Review Apps with Capistrano and Nginx][gitlab-review-apps-capistrano], which may be of interest.
......
......@@ -3,7 +3,7 @@ title: "Morsels of Goodness: What's Cooking in Chef 14?"
description: A look at the new features coming in the new Chef 14 release, as well as what to watch out for when upgrading.
categories: chef-14
tags: chef-14 chef foodcritic cookstyle rubocop ruby test-kitchen
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
Update: I've also started to document [any interesting changes required for Chef 14](/posts/tags/chef-14-upgrade).
......
......@@ -4,7 +4,7 @@ description: "Why you should explicitly add `backup false` when `delete`ing a `f
categories: blogumentation
tags: blogumentation chef
no_toc: true
image: /assets/img/vendor/chef-logo.png
image: /img/vendor/chef-logo.png
---
**Note** - this is slightly clickbait, as this behaviour is somewhat documented in the [Chef docs for the `file` resource][file-resource], although it is not made obvious, and can be a little gotcha.
......
......@@ -3,7 +3,7 @@ title: Better Git Diff Outputs with Git Submodules
description: How to get nicer `diff`s when working with submodules.
categories: blogumentation
tags: blogumentation git cli
image: /assets/img/vendor/git.png
image: /img/vendor/git.png
---
I've recently been playing around with [Git Submodules] a little bit more, and have been frustrated by the output of `git diff`s:
......
......@@ -3,7 +3,7 @@ title: 'Merging multiple repositories into a monorepo, while preserving history,
description: 'How to merge multiple repositories, with their history, into a single repository, using the `git subtree add` command'
categories: blogumentation howto
tags: blogumentation git monorepo git-subtree cli
image: /assets/img/vendor/git.png
image: /img/vendor/git.png
no_toc: true
---
When I started to give talks, either at [Hacksoc][hacksoc] or Meetups, I wanted a nice way to share both my slides and the sources, so others could see what I did to write them, as well as supporting my passion for Free Software and spreading knowledge.
......
......@@ -38,7 +38,7 @@ $ ruby -rjson -e 'puts JSON.pretty_generate(JSON.parse(ARGF.read))' < file.json
To see this article in action, check out the asciicast:
<asciinema-player src="/assets/casts/pretty-printing-json-ruby-cli.json"></asciinema-player>
<asciinema-player src="/casts/pretty-printing-json-ruby-cli.json"></asciinema-player>
[so-stdin]: https://stackoverflow.com/questions/273262/best-practices-with-stdin-in-ruby
[pp-python-json]: {% post_url 2017-06-05-pretty-printing-json-cli %}
......@@ -27,7 +27,7 @@ One key learning over this migration to microservices was that although there wa
This led them to the use of Pessimistic Deployments which ties caution with continuous monitoring:
![AWS' release process using pessimistic deploys](/assets/img/aws-chef-day/pessimistic-deployments.jpg)
![AWS' release process using pessimistic deploys](/img/aws-chef-day/pessimistic-deployments.jpg)
This approach ensures that the minimal set of customers are affected, and that at any point, it can be rolled back to prevent further impact.
......@@ -41,13 +41,13 @@ Once all AZs in the first region are migrated, the next region can be deployed t
Jonathan discussed some differences that AWS see around key components in a piece of software, and how they largely split into two:
![Application stack built separately to infrastructure](/assets/img/aws-chef-day/application-vs-infrastructure.jpg)
![Application stack built separately to infrastructure](/img/aws-chef-day/application-vs-infrastructure.jpg)
The reasoning for this is that the actual code you write and the configuration for it (be it configuration files, environment variables, or Chef code) is one piece, which is the piece that you fully own. However, the infrastructure, such as where the code sits isn't entirely under your control, i.e. someone else may create your AMIs.
In line with this, they also see a matching split in pipelines, with the aim to automate the whole release process:
![Application pipelines working differently to infrastructure pipelines](/assets/img/aws-chef-day/application-vs-infrastructure-pipeline.jpg)
![Application pipelines working differently to infrastructure pipelines](/img/aws-chef-day/application-vs-infrastructure-pipeline.jpg)
Application pipeline (i.e Java code, relevant configuration such as cookbooks):
......@@ -109,7 +109,7 @@ An unfortunate issue with the current architecture of the OpsWorks is that it ca
### Chef Automate
![The Chef Automate platform](/assets/img/aws-chef-day/chef-automate.jpg)
![The Chef Automate platform](/img/aws-chef-day/chef-automate.jpg)