RSS Amplifier

Blog

christalks.dev latest posts

I am a full stack Laravel developer based 20 minutes outside of London, UK, with a passion for crafting custom software and exceptional user experiences since 2009. This blog details my continuous learning, journey, challenges, and solutions.

christalks.devRSS feed ↗27 posts

Latest posts

Fastrack your API integrations with the connector pattern

Integrating with external APIs is a common task for a developer, but it can quickly become a hard to maintain mess! I’ve often found myself repeating the same boilerplate code across different projects—manually setting up headers, handling authentication, and formatting responses for every single endpoint.

Seamless Password Migration: Shifting users from WordPress to Laravel

One of the biggest hurdles in migrating a legacy site is the users database. You want to move to Laravel, but you don't want to force every single user to reset their password the moment you go live. Here's how you can achieve this when migrating from WordPress!

Creating a deployer ServiceAccount for your Kubernetes deployment

Kubernetes can be confusing and creating service accounts for deployment is no exception. In this quick guide, I show you how to create an authenticated service account for deploying to Kubernetes!

Secure Your Webhooks in Laravel: Preventing Data Spoofing

Learn how to implement robust authentication using pre-shared keys and HMAC signatures to protect your webhook endpoints.

Using custom icons in FilamentPHP

Sometimes, the standard Heroicon set just isn't enough. Here's how you can quickly and easily add additional vectors to your Laravel FilamentPHP project

Setting up locale based routing in Laravel with middleware

Laravel is an excellent framework that supports multilingual functionality out of the box - but it doesn't go as far as setting up the routing for you. Here's how you can achieve it with simple routing and middleware.

Testing responsive with TailwindCSS

If you're working on your responsive game, this tiny tooltip trick might be of use to you!

Another pattern - lets talk about state machines

The state machine pattern isn't something you often hear about, but its critical to almost every piece of technology you experience in every day life

What are interfaces, otherwise known as contracts in PHP?

Interfaces - often known as contracts - felt like a big leap in the early days of programming. But it's good to know - they're not that scary!

Using PHP Attributes to enhance the capabilities of Enums

PHP Attributes are a powerful feature of PHP >= 8. In this example, I provide a brief introduction to using reflection to enhance your Enums with PHP attributes

Integrating audit logs into your FilamentPHP admin panel

Following on from my recent introduction to my auditing package, I'm going to show how quick and easy it is to implement an audit log viewer into FilamentPHP admin panel

Keeping track of activity on your Laravel project using Laravel Simple Auditing

I recently wrote a package (Simple Laravel Auditing) with the aim of making it quick and easy to add auditing in your Laravel Application

Leveraging Laravel's built in driver functionality

Laravel makes heavy use of drivers for everything from session management to caching, and there's no reason why you shouldn't use it too!

Installing custom node versions using Node Version Manager

Installing node is made easy with Node Version Manager. This simple tutorial details how you can quickly and easily setup Node JS anywhere

How to utilise a powerful programming pattern in Laravel - the Action Pattern

The action pattern is a common programming pattern that allows you to abstract code into elements known as actions. It's powerful and provides many advantages.

Installing Kubernetes Rancher with RKE2, Helm and Cert Manager

A quick and dirty guide to installing Rancher, complete with SSL certificate to manage your Kubernetes clusters

Installing and safely upgrading Meilisearch to the latest version

Meilisearch is an amazing open-source search engine with an intuitive API to rival the likes of Algolia. Upgrading can be scary, so I automated it with a bash script!

Prefixing your medias storage paths with Spatie Media Library

I use Spatie Media Library - a lot - and one really useful technique is to have the same storage system, with environment prefixes

Adding Google reCAPTCHA to Livewire components

Adding ReCaptcha to your forms is a necessary step when handling public form submissions, but adding it for Livewire is a little trickier. I'll explain how I go about this process.

Running Laravel's queue worker using a cron schedule

Queues are a powerful tool in the Laravel framework. Inherently, they require some setup - but what about smaller projects?

Using Laravel's sleep helper to save time

API's can be a pain - throttling is an issue you'll often encounter, particularly with large datasets. One workaround is to enforce delays between execution

Creating helper functions in Laravel

A quick tip for adding globally available 'helper methods' in Laravel

Using Laravel's Lottery helper to rate limit error reporting

I thought I'd share this quick tip as I'm in the process of building a system that handles large quantities of data. And with that, comes errors!

Efficiently testing components with Laravel Livewire's testing utilities

I've been writing some tests to check my new subscription form functions as expected. I show how easy it is to write tests to make assertions against a Livewire component.

Deploying a Laravel Application with Deployer and GitHub Actions

I share a surprisingly simple zero-downtime deployment technique that utilises Deployer 7 and GitHub Actions to automatically and atomically deploy Laravel applications.

Rebuilding my trust in testing with GitHub Actions

As we make the switch from BitBucket to GitHub, I've been embracing GitHub Actions for automatic test running. I'm sharing our most commonly used test configuration.

Building a blog with Laravel

Detailing my decisions and choices when making this blog I give a quick insight into the technology stack that I chose and some of the reasons why.