Enhancing software, elevating teams.

Pusher alternatives for local development with Laravel Broadcasting

Pusher alternatives for local development with Laravel Broadcasting

Recently, I built a proof of concept for a feature using Laravel’s Broadcasting feature. While I was familiar with its existence, it was my first time actually using it for something.  With broadcasting, we’re referring to the concept of transmitting server-side events to one or more clients; typically,...

Setting up infrastructure using HashiCorp Terraform, Laravel Forge and Cloudflare

Setting up infrastructure using HashiCorp Terraform, Laravel Forge and Cloudflare

DigitalOcean | Cloud Infrastructure for DevelopersAn ocean of simple, scalable cloud solutions.Cloud Infrastructure for DevelopersDave McCarthyResearch Vice President, IDC If you’ve used Terraform before and you want to jump to the meat of how to combine Terraform, Forge, and Cloudflare, jump to the paragraph titled “Combining Terraform, Forge, and...

Typescript, Vue 3, and strongly typed props

Typescript, Vue 3, and strongly typed props

After working with React (and TypeScript) for a long time, I’ve recently been contributing to a Vue application. While I felt right at home in Vue 3’s Composition API (given how similar it feels to React Hooks), I did miss the ability to easily use TypeScript purely for...

Adding GitHub annotations with PHP-CS-Fixer

Adding GitHub annotations with PHP-CS-Fixer

Have you ever seen an error message like the one above before? If you’ve used tools such as PHPStan alongside GitHub Actions then it might be familiar to you. GitHub refers to these as annotations. They are used to add an error message (on the offending line in a...

Using an SSH tunnel to connect to your dev MySQL with Docker

Using an SSH tunnel to connect to your dev MySQL with Docker

About a year ago, I wrote about managing your ports with Traefik in your local development environment. That blog post described how to set up the Traefik proxy and route all your traffic to the correct container without having to rely on the ports exposed by your container. This can...

On Technical debt - What is it, how is it created, what types of technical debt are there, how to avoid tech debt, and how to fix it?

On Technical debt - What is it, how is it created, what types of technical debt are there, how to avoid tech debt, and how to fix it?

What is technical debt? How can you fix technical debt and what is the best approach to avoid technical debt?

Fixing cookiebot bug by not fixing cookiebot

Fixing cookiebot bug by not fixing cookiebot

I want to start with a small disclaimer that I don’t fully understand what exactly went wrong and why the things we did fixed the problem. I’m pretty sure I would be able to find out by staring long enough at very complex code, but at some point,...

Google Workspace SSO and automated user provisioning

Google Workspace SSO and automated user provisioning

One of the client projects I work on has larger, enterprise customers. Because of this, I needed to create a way for their users to sign into our application using single sign-on (SSO). To do that, we needed to automatically provision users in our system. This is something I wasn’...

Modern front-end monorepos — Part 2: running scripts

Modern front-end monorepos — Part 2: running scripts

In the previous article, we set up a monorepo project with 2 applications and a package. We also enabled Yarn workspaces to manage the dependencies and linking of the workspaces. One inconvenience so far was having to start 2 separate terminal windows to run the applications. This isn’t a...

You’ve successfully subscribed to madewithlove
Welcome back! You’ve successfully signed in.
Great! You’ve successfully signed up.
Success! Your email is updated.
Your link has expired
Success! Check your email for magic link to sign-in.