Hi, my name is Chris Shennan and I'm a senior php developer and aspiring indie-hacker.
Welcome to my personal website!
Sponsored By: Password Angel - Share passwords, API keys, credentials and more with secure, single-use links.
The ramblings of a wannabe indiehacker!
Fixing: 08: value too great for base (error token is "08")
Explicitly state the base of a number to fix "value too great for base" errors
Chris Shennan
Fixing: cal: command not found
Install ncal to fix "cal: command not found" errors
10 Essential PHP.ini Tweaks for Improved Web Performance
If you're running a website or web application with PHP, you may have encountered issues with slow loading times, high memory usage, or other performance problems. Fortunately, there are several tweaks you can make to your PHP configuration file (...
HowTo: Check how long a MySQL server has been running
Commands to run in MySQL that will let you know how long your MySQL instance has been running.
Fixing: pecl/xdebug requires PHP (version >= 8.0.0, version <= 8.2.99), installed version is 7.4.33
Resolving issues installing Xdebug on PHP7.4 when the minimum requirements are PHP 8 or later.
Return null or Throw Exception - Best Practice?
Returning `null` is the programmatic equivalent of "It's broken". Use exceptions to give context and allow you to tailor your error handling.
SQS Queue: How many messages have been received?
Using the CloudWatch API and the AWS CLI to get the number of messages received this week by a particular queue
Using Tailwind CSS with Symfony Encore
Configure your Symfony application to use TailwindCSS and create beautiful looking applications using pre-built UI components
Docker Logs - Tail logs and only show new entries
Follow the log entries for a docker container and ignore everything that came before, i.e. tail the log entries from the end of the log file rather than the start.
Password Angel - Share passwords, API keys, credentials and more with secure, single-use links
Password Angel was built to allow passwords, temporary credentials and application secrets to be shared securely in cases where a password manager wouldn't easily be used.
4 steps to improve Laravel + Docker performance issues
Improve the performance of your Laravel + Docker application by checking for DNS issues, installing PHP Opcache, configuring nginx to handle OPTIONS requests & installing docker-sync
Fixing "Authentication plugin 'caching_sha2_password' cannot be loaded" errors
As of MySQL 8.0, `caching_sha2_password` is now the default authentication plugin rather than `mysql_native_password` which was the default in previous versions. This means that clients (Sequel Pro, HeidiSQL etc) that rely on the `mysql_native_pa...
DV, OV and EV SSL certificates - What is the difference?
SSL Certificates come in a 3 types, Domain Validation (DV), Organisation Validation (OV) and Extended Validation (EV) but what is the difference and how do you distinguish between them?
Connect to a private RDS instance using SSH & AWS SSM (Systems Manager)
You have an AWS RDS instance which is on a private subnet and therefore not publicly accessible and you wish to connect to this RDS instance remotely without installing a bastion server or having any public-facing ec2 instances.
What is an SSL certificate and why do I need one?
An SSL (Secure Socket Layer) certificate is a digital certificate used to provide a secure connection between a website and your web browser. Any information sent via this secure connection is only readable by you and the intended website. Does my...
Passing GDPR preferences via the MailChimp API
Create newsletter signup forms and use the MailChimp API to push those contacts into MailChimp along with their selected GDPR preferences (email, direct mail, customized online advertising)
How To: Track Outbound Links
Great! You have got visitors on your website, you can see they viewed several articles, but where did they go next?
Validating Schema.org and Open Graph Tags in your development environment
Validating Schema.org tags, open graph tags and testing how sites like Facebook, Twitter and LinkedIn will treat a link from your site has always been difficult to test in development.
Installing and configuring Symfony2
Getting a Symfony2 project up and running is fairly easy but I did come across a few bumps in the road when I first attempted it so I am hoping to smooth those bumps out a bit for some of you first-timers.
WordPress wp_redirect() shows a blank page
Enable output buffering to stop `wp_redirect()` showing a blank page instead of redirecting to the correct page.
Raw SQL from Doctrine Query Object – Revised
A few months ago I posted an article talking about how to get the raw SQL from a Doctrine Query Object but with the release of Symfony 1.3 and Symfony 1.4 it would appear that the code no longer works. As a result, I’ve updated the code to work w...