<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Articles on alistaircol</title>
    <link>https://ac93.uk/articles/</link>
    <description>Recent content in Articles on alistaircol</description>
    <generator>Hugo -- gohugo.io</generator>
    
    <language>en</language>
    
    
    
    
    <atom:link href="https://ac93.uk/articles/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Private Github Readme Stats server and uploading to S3 with Ansible Semaphore</title>
      <link>https://ac93.uk/articles/creating-private-github-readme-stats-generator/</link>
      <pubDate>Tue, 03 Sep 2024 19:50:30 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/creating-private-github-readme-stats-generator/</guid>
      <description>Containerise a private Github Readme Stats server and upload stats card image to S3 using an Ansible playbook on a schedule with Semaphore</description>
      
      <category>github-readme-stats</category>
      
      <category>docker</category>
      
      <category>ansible</category>
      
      <category>semaphore</category>
      
    </item>
    
    <item>
      <title>Use git feature to &#39;hide&#39; local changes of a Dockerfile which installs xdebug</title>
      <link>https://ac93.uk/articles/git-update-index-assume-unchanged-dockerfile-for-xdebug/</link>
      <pubDate>Tue, 11 Oct 2022 19:10:18 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/git-update-index-assume-unchanged-dockerfile-for-xdebug/</guid>
      <description>Use git update-index --assume-unchanged to remove local changes of a Dockerfile from the staging area in a repository, and use (an ignored) docker-compose.override.yml to configure xdebug.</description>
      
      <category>docker</category>
      
      <category>xdebug</category>
      
      <category>git</category>
      
    </item>
    
    <item>
      <title>Basic Cognito user pool with login/logout integration in Laravel, with users/system clients</title>
      <link>https://ac93.uk/articles/laravel-integration-with-amazon-cognito/</link>
      <pubDate>Sat, 24 Sep 2022 09:09:32 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-integration-with-amazon-cognito/</guid>
      <description>A relatively basic Laravel integration with an Amazon Cognito user pool with two clients. The first client for web users will be used to initiate (from Laravel) login/logout on Cognito&amp;rsquo;s hosted UI with email/password. The second client will be for system users, which will generate tokens with email/password through API instead of hosted UI. Finally, a simple console command to decode/verify web and system users&amp;rsquo; JTWs from the user pool&amp;rsquo;s JWKS.</description>
      
      <category>laravel</category>
      
      <category>cognito</category>
      
      <category>terraform</category>
      
    </item>
    
    <item>
      <title>Adding asynchronous search to a hugo blog</title>
      <link>https://ac93.uk/articles/adding-async-search-to-hugo-project-with-alpine-and-fuse/</link>
      <pubDate>Thu, 08 Sep 2022 19:24:50 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/adding-async-search-to-hugo-project-with-alpine-and-fuse/</guid>
      <description>Learn how to add asynchronous search to a hugo blog with alpine.js and fuse.</description>
      
      <category>hugo</category>
      
      <category>alpine</category>
      
      <category>fuse</category>
      
    </item>
    
    <item>
      <title>Create a GitHub workflow to run PHP linters, tests, and generate coverage report</title>
      <link>https://ac93.uk/articles/laravel-github-workflow-lint-run-unit-and-feature-tests-and-generate-code-coverage-report/</link>
      <pubDate>Mon, 05 Sep 2022 17:40:52 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-github-workflow-lint-run-unit-and-feature-tests-and-generate-code-coverage-report/</guid>
      <description>Create and configure a GitHub workflow to run PHP QA tools (e.g. phplint, phpcs), and then run unit and feature tests (e.g. php artisan test, phpunit), and finally generate a code coverage report or some other artifact.</description>
      
      <category>laravel</category>
      
      <category>github</category>
      
      <category>phpunit</category>
      
    </item>
    
    <item>
      <title>Send a templated WhatsApp message through Twilio in Laravel</title>
      <link>https://ac93.uk/articles/laravel-send-whatsapp-message-with-emoji-and-variables/</link>
      <pubDate>Tue, 30 Aug 2022 16:58:02 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-send-whatsapp-message-with-emoji-and-variables/</guid>
      <description>Send a message template containing emoji from Twilio in Laravel.</description>
      
      <category>laravel</category>
      
      <category>whatsapp</category>
      
      <category>twilio</category>
      
    </item>
    
    <item>
      <title>Consume raw SQS messages from another application with Laravel&#39;s queue</title>
      <link>https://ac93.uk/articles/laravel-consume-raw-sqs-messages-in-its-job-queue-system/</link>
      <pubDate>Sat, 27 Aug 2022 13:37:44 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-consume-raw-sqs-messages-in-its-job-queue-system/</guid>
      <description>Easily consume arbitrary raw AWS SQS messages produced by another application in your Laravel application&amp;rsquo;s queue with a Job and queue configuration.</description>
      
      <category>laravel</category>
      
      <category>aws</category>
      
      <category>sqs</category>
      
    </item>
    
    <item>
      <title>Setting up CI to build and release multiple sets of documentation from an OpenAPI spec</title>
      <link>https://ac93.uk/articles/github-action-build-multiple-sets-of-documentation/</link>
      <pubDate>Fri, 26 Aug 2022 18:06:53 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/github-action-build-multiple-sets-of-documentation/</guid>
      <description>Learn how to set up a GitHub workflow to build documentation for a generated PHP SDK from multiple generators, and consolidate them all into a single gh-pages branch.</description>
      
      <category>github</category>
      
      <category>php</category>
      
      <category>openapi</category>
      
      <category>apigen</category>
      
      <category>doctum</category>
      
      <category>doxygen</category>
      
      <category>phpdoc</category>
      
      <category>taskfile</category>
      
    </item>
    
    <item>
      <title>Headless screenshot of a chart in Laravel with Browsershot and S3 upload</title>
      <link>https://ac93.uk/articles/laravel-chartjs-blade-browsershot/</link>
      <pubDate>Thu, 25 Aug 2022 15:00:07 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-chartjs-blade-browsershot/</guid>
      <description>Generate and save a blade component containing a Chart.js chart in Laravel (without controller bloat) using Browsershot, and then upload it to S3.</description>
      
      <category>laravel</category>
      
      <category>chartjs</category>
      
      <category>browsershot</category>
      
    </item>
    
    <item>
      <title>Using Laravel&#39;s pipeline to replace CMS content placeholders with values</title>
      <link>https://ac93.uk/articles/laravel-pipeline-placeholder-cms-accessor/</link>
      <pubDate>Thu, 25 Aug 2022 13:13:51 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-pipeline-placeholder-cms-accessor/</guid>
      <description>Use the Laravel Pipeline component with many Pipes to replace arbitrary placeholders in DOM with computed values using a Model&amp;rsquo;s accessor</description>
      
      <category>laravel</category>
      
      <category>pipeline</category>
      
    </item>
    
    <item>
      <title>A Laravel middleware to optimise images with imgproxy on arbitrary markup</title>
      <link>https://ac93.uk/articles/laravel-response-middleware-optimise-images-with-imgproxy/</link>
      <pubDate>Thu, 25 Aug 2022 12:22:31 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-response-middleware-optimise-images-with-imgproxy/</guid>
      <description>Create a Laravel middleware to parse the response DOM and update a set of img&amp;rsquo;s src to be routed through imgproxy.</description>
      
      <category>laravel</category>
      
      <category>imgproxy</category>
      
    </item>
    
    <item>
      <title>Using whiptail to show the active git branch for a set of git repositories</title>
      <link>https://ac93.uk/articles/whiptail-list-git-repositories-branches-and-jump-to-tmux-window/</link>
      <pubDate>Mon, 06 Jun 2022 20:18:44 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/whiptail-list-git-repositories-branches-and-jump-to-tmux-window/</guid>
      <description>List the active git branch for a set of git repositories in whiptail, then jump to the selected repository&amp;rsquo;s tmux window</description>
      
      <category>git</category>
      
      <category>tmux</category>
      
      <category>whiptail</category>
      
    </item>
    
    <item>
      <title>Tailwind CSS Breakpoints in Google Chrome Device Toolbar</title>
      <link>https://ac93.uk/articles/tailwind-breakpoint-google-chrome-devices/</link>
      <pubDate>Fri, 27 May 2022 18:53:26 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/tailwind-breakpoint-google-chrome-devices/</guid>
      <description>Setting up the Tailwind breakpoints by adding custom devices in Google Chrome&amp;rsquo;s device toolbar for easier testing.</description>
      
      <category>tailwind</category>
      
      <category>tailwindcss</category>
      
    </item>
    
    <item>
      <title>Building and hosting a full CI &amp; CD containerised Laravel application</title>
      <link>https://ac93.uk/articles/building-and-hosting-a-full-ci-cd-containerised-laravel-application/</link>
      <pubDate>Sat, 04 Dec 2021 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/building-and-hosting-a-full-ci-cd-containerised-laravel-application/</guid>
      <description>I&amp;rsquo;ve hosted many apps. I&amp;rsquo;ve set up CI to build containers. But I&amp;rsquo;ve never figured out the continuous deployment part, until now. I will use watchtower in a GitHub workflow to trigger the image update and restart the container.</description>
      
      <category>github</category>
      
      <category>ci</category>
      
      <category>cd</category>
      
      <category>traefik</category>
      
      <category>watchtower</category>
      
    </item>
    
    <item>
      <title>Building an image for static site generator output</title>
      <link>https://ac93.uk/articles/building-static-site-generator-image/</link>
      <pubDate>Mon, 12 Jul 2021 21:01:31 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/building-static-site-generator-image/</guid>
      <description>Bundling the generated output from a static site generator (e.g. hugo) into a simple static file server (e.g. caddy) for testing the build.</description>
      
      <category>hugo</category>
      
      <category>docker</category>
      
      <category>caddy</category>
      
    </item>
    
    <item>
      <title>Quckie: git - copy a file from another branch without switching branch</title>
      <link>https://ac93.uk/articles/git-copy-file-from-another-branch-without-checkout/</link>
      <pubDate>Mon, 21 Jun 2021 14:57:08 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/git-copy-file-from-another-branch-without-checkout/</guid>
      <description>Copy a file from another git branch without checking to that target branch.</description>
      
      <category>git</category>
      
      <category>quickie</category>
      
    </item>
    
    <item>
      <title>Laravel post migration event listener</title>
      <link>https://ac93.uk/articles/laravel-post-migration-event-listener/</link>
      <pubDate>Thu, 17 Jun 2021 19:16:55 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-post-migration-event-listener/</guid>
      <description>Want your Laravel app to do something after running migrations? Here&amp;rsquo;s how I did it.</description>
      
      <category>laravel</category>
      
      <category>event</category>
      
      <category>migration</category>
      
      <category>post-migration</category>
      
    </item>
    
    <item>
      <title>Making filled triangle SVG with CSS</title>
      <link>https://ac93.uk/articles/filled-svg-css-chevrons/</link>
      <pubDate>Tue, 18 May 2021 22:00:56 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/filled-svg-css-chevrons/</guid>
      <description>Understanding basic SVG path and viewbox for a simple filled triangle.</description>
      
      <category>css</category>
      
      <category>svg</category>
      
    </item>
    
    <item>
      <title>Connecting to a remote server with mc</title>
      <link>https://ac93.uk/articles/mc-remote-server-cli-ni/</link>
      <pubDate>Tue, 18 May 2021 17:26:58 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/mc-remote-server-cli-ni/</guid>
      <description>Connect to a remote server with mc from command line (non-interactive).</description>
      
      <category>mc</category>
      
    </item>
    
    <item>
      <title>MySQL query logging on Mac</title>
      <link>https://ac93.uk/articles/mysql-query-logging-on-mac/</link>
      <pubDate>Mon, 17 May 2021 17:54:18 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/mysql-query-logging-on-mac/</guid>
      <description>Enabling MySQL query logging on Mac (without Docker).</description>
      
      <category>mysql</category>
      
    </item>
    
    <item>
      <title>Creating a fresh Laravel installation with Docker</title>
      <link>https://ac93.uk/articles/make-a-new-laravel-development-repo-with-docker/</link>
      <pubDate>Fri, 14 May 2021 19:28:30 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/make-a-new-laravel-development-repo-with-docker/</guid>
      <description>A command I&amp;rsquo;ve used a few times to install a fresh Laravel project into the cwd&amp;rsquo;s src/ folder, leaving the cwd for your own README, Docker, Terraform, etc. files.</description>
      
      <category>laravel</category>
      
      <category>docker</category>
      
      <category>php</category>
      
      <category>composer</category>
      
    </item>
    
    <item>
      <title>Using Xdebug with Laravel Valet</title>
      <link>https://ac93.uk/articles/valet-xdebug/</link>
      <pubDate>Tue, 02 Mar 2021 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/valet-xdebug/</guid>
      <description>Installing and configuring Xdebug with Laravel Valet.</description>
      
      <category>xdebug</category>
      
      <category>valet</category>
      
    </item>
    
    <item>
      <title>Some handy local development environment tools/services</title>
      <link>https://ac93.uk/articles/substitute-production-compatible-services-for-local-development/</link>
      <pubDate>Sat, 20 Feb 2021 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/substitute-production-compatible-services-for-local-development/</guid>
      <description>A few tools (email, object storage, logging) to substitute compatible APIs from production environment for local development.</description>
      
      <category>laravel</category>
      
      <category>docker</category>
      
      <category>mailhog</category>
      
      <category>graylog</category>
      
      <category>minio</category>
      
      <category>terraform</category>
      
    </item>
    
    <item>
      <title>A backend implementation for livewire/sortable</title>
      <link>https://ac93.uk/articles/laravel-livewire-sortable-implementation/</link>
      <pubDate>Tue, 16 Feb 2021 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-livewire-sortable-implementation/</guid>
      <description>How to handle backend requests given from livewire/sortable. Data fetched in mount - think Posts by Users (as prop into Livewire component) under a Category (as prop into Livewire component), then sort order persisted during action and re-rendered seamlessly.</description>
      
      <category>php</category>
      
      <category>laravel</category>
      
      <category>livewire</category>
      
    </item>
    
    <item>
      <title>Using webdevops/php-dev:7.x and configuring xDebug 3 for local development in PHPStorm</title>
      <link>https://ac93.uk/articles/webdevops-php-dev-xdebug-phpstorm-2020-03/</link>
      <pubDate>Fri, 18 Dec 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/webdevops-php-dev-xdebug-phpstorm-2020-03/</guid>
      <description>How to set up PHPStorm, and use webdevops/php-dev:7.x image using xdebubg v3.</description>
      
      <category>php</category>
      
      <category>docker</category>
      
      <category>xdebug</category>
      
    </item>
    
    <item>
      <title>Using Terraform to provision &amp; configure infrastructure - AWS S3 website bucket hosting &amp; Cloudflare DNS updates</title>
      <link>https://ac93.uk/articles/terraform-s3-websites-and-cloudflare/</link>
      <pubDate>Tue, 15 Dec 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/terraform-s3-websites-and-cloudflare/</guid>
      <description>Create an AWS S3 and corresponding CNAME in Cloudflare for static site hosting using &amp;lsquo;infrastructure as code&amp;rsquo; using Terraform.</description>
      
      <category>aws</category>
      
      <category>s3</category>
      
      <category>terraform</category>
      
      <category>cloudflare</category>
      
    </item>
    
    <item>
      <title>UK place data - a database as a Docker image, with a pointless multi-stage build to transform and load data</title>
      <link>https://ac93.uk/articles/gazetteer-uk-place-data-docker-image/</link>
      <pubDate>Sun, 13 Dec 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/gazetteer-uk-place-data-docker-image/</guid>
      <description>A UK place name gazetteer loaded into a docker image with some spatial querying.</description>
      
      <category>mysql</category>
      
      <category>docker</category>
      
    </item>
    
    <item>
      <title>Building a database as private Docker image with structure and data for CI</title>
      <link>https://ac93.uk/articles/publish-database-container-with-structure-and-data-for-ci/</link>
      <pubDate>Tue, 08 Dec 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/publish-database-container-with-structure-and-data-for-ci/</guid>
      <description>Building a private Docker image with custom structure and data, for a legacy app for a slightly easier CI pipeline.</description>
      
      <category>mysql</category>
      
      <category>docker</category>
      
      <category>ci</category>
      
    </item>
    
    <item>
      <title>Standard JSON validation response in Laravel</title>
      <link>https://ac93.uk/articles/laravel-request-validation-hook/</link>
      <pubDate>Tue, 17 Nov 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-request-validation-hook/</guid>
      <description>Using failedValidation for standard JSON responses on validation error(s).</description>
      
      <category>php</category>
      
      <category>laravel</category>
      
    </item>
    
    <item>
      <title>Single action Laravel controllers and FQCN in route definitions</title>
      <link>https://ac93.uk/articles/laravel-single-action-controllers-with-fqcn-routes/</link>
      <pubDate>Mon, 09 Nov 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-single-action-controllers-with-fqcn-routes/</guid>
      <description>Slim single action controllers and IDE friendly FQCN route definitions in Laravel.</description>
      
      <category>php</category>
      
      <category>laravel</category>
      
    </item>
    
    <item>
      <title>PHP code analysis with Sonarqube in Docker</title>
      <link>https://ac93.uk/articles/php-sonarqube-analysis-docker/</link>
      <pubDate>Sun, 08 Nov 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/php-sonarqube-analysis-docker/</guid>
      <description>Code Quality and Security - SonarQube empowers all developers to write cleaner and safer code.</description>
      
      <category>php</category>
      
      <category>docker</category>
      
      <category>sonarqube</category>
      
    </item>
    
    <item>
      <title>Changing semi-unstructured JSON data in a MySQL backing store to MongoDB</title>
      <link>https://ac93.uk/articles/changing-mysql-json-backing-store-to-mongodb/</link>
      <pubDate>Sat, 12 Sep 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/changing-mysql-json-backing-store-to-mongodb/</guid>
      <description>Moving our semi-unstructured data from a mysql database, stored in a json column to a mongodb instance for better performance.</description>
      
      <category>mongodb</category>
      
      <category>mysql</category>
      
      <category>csv</category>
      
    </item>
    
    <item>
      <title>Querying an IP restricted API with Postman</title>
      <link>https://ac93.uk/articles/postman-query-ip-restricted-api-socks-proxy/</link>
      <pubDate>Fri, 11 Sep 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/postman-query-ip-restricted-api-socks-proxy/</guid>
      <description>Use a SOCKS proxy to query an IP restricted API with Postman.</description>
      
      <category>proxy</category>
      
      <category>socks</category>
      
      <category>ssh</category>
      
      <category>postman</category>
      
    </item>
    
    <item>
      <title>Github Actions: Build code-generated assets, create a release and attach those assets to the release</title>
      <link>https://ac93.uk/articles/github-action-php-tcpdf-tag-release/</link>
      <pubDate>Tue, 08 Sep 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/github-action-php-tcpdf-tag-release/</guid>
      <description>Automatically have Github Actions build some code-generated (binary) assets and attach to a release when a new tag is pushed.</description>
      
      <category>github</category>
      
      <category>git</category>
      
      <category>php</category>
      
      <category>tcpdf</category>
      
      <category>ci</category>
      
    </item>
    
    <item>
      <title>Deploying a static site generators build to an S3 bucket using CI with Bitbucket pipelines</title>
      <link>https://ac93.uk/articles/s3-bucket-hosting-and-bitbucket-pipelines/</link>
      <pubDate>Mon, 07 Sep 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/s3-bucket-hosting-and-bitbucket-pipelines/</guid>
      <description>Automatically have Bitbucket CI build a static site and move the built into a production or staging bucket depending on the branch.</description>
      
      <category>nuxt</category>
      
      <category>s3</category>
      
      <category>bitbucket</category>
      
      <category>ci</category>
      
      <category>cloudflare</category>
      
    </item>
    
    <item>
      <title>PHP environment for Codewars Kata challenges</title>
      <link>https://ac93.uk/articles/codewars-php-docker-setup/</link>
      <pubDate>Mon, 31 Aug 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/codewars-php-docker-setup/</guid>
      <description>Relatively barebones PHP environment for Codewars Kata challenges, with xdebug.</description>
      
      <category>docker</category>
      
      <category>php</category>
      
      <category>xdebug</category>
      
      <category>kcachegrind</category>
      
    </item>
    
    <item>
      <title>Publish messages to RabbitMQ for a worker to process later</title>
      <link>https://ac93.uk/articles/php-enqueue-amqp-lib-rabbitmq/</link>
      <pubDate>Sun, 30 Aug 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/php-enqueue-amqp-lib-rabbitmq/</guid>
      <description>Publish messages to a RabbitMQ instance using PHP. Build a PHP consumer to process messages in the background with supervisord.</description>
      
      <category>docker</category>
      
      <category>php</category>
      
      <category>rabbitmq</category>
      
      <category>supervisord</category>
      
    </item>
    
    <item>
      <title>Using Ghost as Headless CMS in a Laravel Site</title>
      <link>https://ac93.uk/articles/laravel-ghost-blog-headless-integration/</link>
      <pubDate>Sat, 29 Aug 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/laravel-ghost-blog-headless-integration/</guid>
      <description>How you might integrate content written in a Ghost Blog into a Laravel site using its Content API.</description>
      
      <category>php</category>
      
      <category>laravel</category>
      
      <category>ghost</category>
      
    </item>
    
    <item>
      <title>S3 Database Dump Sync For Local Development</title>
      <link>https://ac93.uk/articles/s3-db-dump-to-dev-sync/</link>
      <pubDate>Thu, 16 Jul 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/s3-db-dump-to-dev-sync/</guid>
      <description>A simple whiptail script to select which databases you want to refresh for local development work. Downloads using awscli and some pv for progress on decompressing and importing.</description>
      
      <category>aws</category>
      
      <category>s3</category>
      
      <category>bash</category>
      
      <category>whiptail</category>
      
    </item>
    
    <item>
      <title>Scraping legacy static sites and hosting them (yuck!)</title>
      <link>https://ac93.uk/articles/scraping-migrating-reverse-engineering/</link>
      <pubDate>Tue, 14 Jul 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/scraping-migrating-reverse-engineering/</guid>
      <description>This was hell. Just an excuse to save some handy wget, ssh, find, csvtool, xargs, commands and other occasionally useful things, honestly.</description>
      
      <category>php</category>
      
      <category>wget</category>
      
      <category>csv</category>
      
      <category>httpd</category>
      
      <category>cloudflare</category>
      
    </item>
    
    <item>
      <title>Basic PDF manipulation tools with zenity, pdftk, and gs</title>
      <link>https://ac93.uk/articles/pdf-sh/</link>
      <pubDate>Mon, 13 Jul 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/pdf-sh/</guid>
      <description>Basic scripts for dealing with PDF in my job - converting, cutting and catting - throwing some zenity around gs and pdftk.</description>
      
      <category>pdf</category>
      
      <category>bash</category>
      
      <category>zenity</category>
      
      <category>pdftk</category>
      
      <category>gs</category>
      
    </item>
    
    <item>
      <title>A nicer, more efficient terminal experience with tmux and tmuxinator.</title>
      <link>https://ac93.uk/articles/tmuxinator-configuration/</link>
      <pubDate>Tue, 09 Jun 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/tmuxinator-configuration/</guid>
      <description>Friendship ended with terminator, now tmux is my best friend.</description>
      
      <category>tmux</category>
      
    </item>
    
    <item>
      <title>Apache httpd Server Configuration Hardening</title>
      <link>https://ac93.uk/articles/httpd-server-hardening/</link>
      <pubDate>Tue, 09 Jun 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/httpd-server-hardening/</guid>
      <description>Some tips I picked up to make sites hosted on Apache httpd servers more secure.</description>
      
      <category>httpd</category>
      
    </item>
    
    <item>
      <title>Integrating Some PHP QA Tools</title>
      <link>https://ac93.uk/articles/php-qa-tools/</link>
      <pubDate>Sun, 07 Jun 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/php-qa-tools/</guid>
      <description>How you can integrate some PHP QA tools in your project, and guard your project with git hooks.</description>
      
      <category>php</category>
      
      <category>docker</category>
      
      <category>bash</category>
      
      <category>git</category>
      
      <category>make</category>
      
    </item>
    
    <item>
      <title>Developing in PHP with Docker: one nginx ingress to isolated httpd &amp; php containers</title>
      <link>https://ac93.uk/articles/docker-nginx-httpd-php-mysql/</link>
      <pubDate>Sun, 19 Jan 2020 00:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/docker-nginx-httpd-php-mysql/</guid>
      <description>One ingress nginx reverse proxy to multiple php:apache containers with different (XDebug) configurations.</description>
      
      <category>docker</category>
      
      <category>nginx</category>
      
      <category>apache</category>
      
      <category>httpd</category>
      
      <category>php</category>
      
      <category>xdebug</category>
      
      <category>mysql</category>
      
    </item>
    
    <item>
      <title>Server checklist with whiptail and logger.</title>
      <link>https://ac93.uk/articles/server-checklist-with-whiptail-and-logger/</link>
      <pubDate>Sat, 18 Jan 2020 12:00:00 &#43;0100</pubDate>
      
      <guid>https://ac93.uk/articles/server-checklist-with-whiptail-and-logger/</guid>
      <description>An interactive CLI for logging server audits in bash with whiptail and logger.</description>
      
      <category>bash</category>
      
      <category>whiptail</category>
      
      <category>logger</category>
      
    </item>
    
  </channel>
</rss>
