Articles

I’m a full-stack developer with leanings towards Laravel (TALL); as well as devops and automation. Most of these articles are published as a reference for myself, but if someone finds them useful, then great!

You can see the list of articles below, the tags; or use the search function below to see more.

Some things I want to learn and write about (even if it’s just for myself) in the future:

Learn how to add asynchronous search to a hugo blog with alpine.js and fuse.
~7 minutes
Published
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.
~8 minutes
Published
Send a message template containing emoji from Twilio in Laravel.
~3 minutes
Published
Easily consume arbitrary raw AWS SQS messages produced by another application in your Laravel application’s queue with a Job and queue configuration.
~4 minutes
Published
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.
Published
Generate and save a blade component containing a Chart.js chart in Laravel (without controller bloat) using Browsershot, and then upload it to S3.
Published
Use the Laravel Pipeline component with many Pipes to replace arbitrary placeholders in DOM with computed values using a Model’s accessor
~4 minutes
Published
Create a Laravel middleware to parse the response DOM and update a set of img’s src to be routed through imgproxy.
~3 minutes
Published
List the active git branch for a set of git repositories in whiptail, then jump to the selected repository’s tmux window
~5 minutes
Published
Setting up the Tailwind breakpoints by adding custom devices in Google Chrome’s device toolbar for easier testing.
~1 minute
Published
I’ve hosted many apps. I’ve set up CI to build containers. But I’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.
~13 minutes
Published
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.
~2 minutes
Published
Copy a file from another git branch without checking to that target branch.
~1 minute
Published
Want your Laravel app to do something after running migrations? Here’s how I did it.
Published
Understanding basic SVG path and viewbox for a simple filled triangle.
~2 minutes
Published
Connect to a remote server with mc from command line (non-interactive).
~1 minute
mc
Published
Enabling MySQL query logging on Mac (without Docker).
~1 minute
Published
A command I’ve used a few times to install a fresh Laravel project into the cwd’s src/ folder, leaving the cwd for your own README, Docker, Terraform, etc. files.
Published
Installing and configuring Xdebug with Laravel Valet.
~1 minute
Published
A few tools (email, object storage, logging) to substitute compatible APIs from production environment for local development.
Published
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.
~2 minutes
Published
How to set up PHPStorm, and use webdevops/php-dev:7.x image using xdebubg v3.
~1 minute
Published
Create an AWS S3 and corresponding CNAME in Cloudflare for static site hosting using ‘infrastructure as code’ using Terraform.
~8 minutes
Published
A UK place name gazetteer loaded into a docker image with some spatial querying.
~5 minutes
Published
Building a private Docker image with custom structure and data, for a legacy app for a slightly easier CI pipeline.
~4 minutes
Published
Using failedValidation for standard JSON responses on validation error(s).
~4 minutes
Published
Slim single action controllers and IDE friendly FQCN route definitions in Laravel.
~4 minutes
Published
Code Quality and Security - SonarQube empowers all developers to write cleaner and safer code.
~2 minutes
Published
Moving our semi-unstructured data from a mysql database, stored in a json column to a mongodb instance for better performance.
~8 minutes
Published
Use a SOCKS proxy to query an IP restricted API with Postman.
~1 minute
Published
Automatically have Github Actions build some code-generated (binary) assets and attach to a release when a new tag is pushed.
~3 minutes
Published
Automatically have Bitbucket CI build a static site and move the built into a production or staging bucket depending on the branch.
Published
Relatively barebones PHP environment for Codewars Kata challenges, with xdebug.
Published
Publish messages to a RabbitMQ instance using PHP. Build a PHP consumer to process messages in the background with supervisord.
Published
How you might integrate content written in a Ghost Blog into a Laravel site using its Content API.
~8 minutes
Published
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.
~2 minutes
Published
This was hell. Just an excuse to save some handy wget, ssh, find, csvtool, xargs, commands and other occasionally useful things, honestly.
~5 minutes
Published
Basic scripts for dealing with PDF in my job - converting, cutting and catting - throwing some zenity around gs and pdftk.
~4 minutes
Published
Some tips I picked up to make sites hosted on Apache httpd servers more secure.
~5 minutes
Published
Friendship ended with terminator, now tmux is my best friend.
~3 minutes
Published
How you can integrate some PHP QA tools in your project, and guard your project with git hooks.
~7 minutes
Published
One ingress nginx reverse proxy to multiple php:apache containers with different (XDebug) configurations.
Published
An interactive CLI for logging server audits in bash with whiptail and logger.
~3 minutes
Published
To top
< SM
max-width: 640px