Setting up an AWS S3 Static Website with CloudFlare — 16 February, 2022
This is a quick guide to setting up a static website on AWS S3. Not only are we securing the bucket with our bucket policy and bucket…
PHP 8 and Nginx on Ubuntu 20.04 LTS Tutorial — 17 October, 2021
I needed to set up instances running PHP 8 a few times to test that my WordPress plugins and composer packages work on PHP 8. I also have…
Case Study: Composer Package — 30 August, 2021
This is a look at a composer package that returns an SVG graph from an array of data: shortdark/socket composer package. There may be better…
Learning a new Coding Language — 13 June, 2021
When I learn a new language, or write something in a language I don't use very often, there are a few ways to go about it. I guess, often we…
About Shortdark — 01 January, 2021
I am a web developer living in Sheffield, UK who has mainly been developing websites in PHP. My Career Timeline 1999 Taught myself HTML and…
PHP Coding Style (More Than One Way to Skin a Cat) — 29 November, 2020
I look up everything before I use it. An IDE such as PHP Storm has the PHP docs built in so can tell you a lot of the information you need…
Regex Examples — 19 July, 2020
Coding that is simple yet powerful allows you to get many different problems solved. As such, using regex is one of my favorite coding…
Some CSS Discussion — 01 March, 2020
The actual CSS is no longer in this post, it has been moved here Bart Simpson Head Animation How did we manage before smartphones? The other…
Javascript CSS Accordion — 22 December, 2019
I was having trouble finding a WordPress plugin that would give me an Accordion on a particular WordPress website. Either jQuery was not in…
Setting up AWS Elastic Beanstalk with Laravel to update with GIT — 08 December, 2019
Disclaimer for 2021 and Beyond In case anyone should read this article and get the wrong idea here is my disclaimer for 2021 and beyond…
Updating Headers for Extra Security — 02 June, 2019
In this post, we looked at some ways to tighten up security and increase the speed of websites in modern times. How to Implement Security…
Optimizing MySQL Queries — 22 April, 2019
When you first build a website the database may seem fast. All your queries may get executed quickly. But, after a while when the database…
Creating a Composer Package Tutorial — 21 April, 2019
This is a simple step-by-step guide to making a PHP composer package that can be listed publicly on packagist.org for anyone in the world to…
How to create and run Bash Scripts — 06 April, 2019
To create a bash script that will work only for your user, you can store the bash files in your user's home directory. The standard place to…
Interacting with S3 using PHP — 09 February, 2019
Trying to connect to use AWS S3 for the first time can be confusing. Here is a quick guide to roughly what has to happen. Basic Steps to Set…
Apache to Nginx — 27 January, 2019
I had a PHP website that was the last man standing on some shared hosting that was slow that didn't have SSH access. I decided that since I…
Trying AWS Lightsail — 13 January, 2019
AWS Lightsail is the closest thing AWS has to shared hosting. It is their quick, easy and inexpensive off-the-shelf hosting that has SSH…
Best Practices for Websites in 2018 — 14 July, 2018
Once upon a time you could buy a domain name and hook it up to some cheap, shared hosting and that was all you had to do. You could build…
Customizing Linux — 09 July, 2018
Here are some tweaks you can make to various parts of Linux to make the whole experience a little easier and more intuitive. This guide is…
Moving a WordPress Blog to Different Hosting — 08 July, 2018
2022 Update This post was written in 2018 and while I think most of the article still applies, there are other methods to deploy a WordPress…
WordPress and the Command Line — 07 July, 2018
These days there are often WordPress apps on the control panel of hosting providers that enable you to install WordPress easily with a click…
Upgrading from Debian 8 (Jessie) to Debian 9 (Stretch) — 14 March, 2018
Previously, I looked at setting up Debian 8 with PHP 7.0. But now, Debian 9 is the current stable version and Debian 8 is only due to…
MySQL in the Command Line — 04 March, 2018
Following the setting up a Linux webserver tutorial. You may also wish to create a MySQL database. First, install MySQL in the Linux console…
How to Fix Some Potential Issues When Using CDN (Cloudflare) — 28 January, 2018
Using a CDN is a great way to optimize your website and protect against DDoS attacks. The process of setting up a CDN is pretty simple…
How to Build a Laravel Website (Basic Steps After Installation) — 27 January, 2018
Basic Steps After Installing Laravel 5.4 You have successfully installed Laravel 5.4 and you have directed the domain name at the public…
Installing Laravel on Debian 8 with PHP 7.0 — 12 April, 2017
I was unable to find a single tutorial that would show exactly how to install Laravel on Debian, possibly because I was using PHP 7.0 on…
Converting a Website to HTTPS (Adding SSL Encryption) Tutorial — 04 April, 2017
The internet is gradually becoming more and more encrypted and secure. While this is most important for websites where you might enter…
Setting up a Linux Webserver with SSH in 20 Steps (Debian 8) — 19 March, 2017
Here is a guide to Setting up a Linux Webserver with SSH. This is for Debian 8 (Jessie) although other versions of Debian will be similar…
How to write a WordPress Plugin — 05 October, 2016
There are 1,000s of WordPress Plugins and each one is individual, but for anyone wanting to make a plugin for themselves here are a few…
Post Volume Stats — 15 September, 2016
Post Volume Stats Wordpress plugin, "Post Volume Stats", is free to download here. It is a plugin to show the user's posting patterns - from…
Add Target Fixer — 14 September, 2016
This is currently a very simple plugin that solves the target="_blank" vulnerability, which is a security risk in that it allows phishing to…
Projects — 30 July, 2016
You can see my public git repos at my GitHub profile. Some of My Test Websites Here are some websites I've set up at various points as part…