Here's everything I've ever written, starting all the way back to 2008. Enjoy!

Building a PHPUnit to Pest Converter in a week

The motivation and execution around building a PHPUnit to Pest Convert in one week.

5 minute read →

A lookbehind at 2020 and lookahead for 2021

A look back at my goals from 2020 and an outline of my goals for 2021.

6 minute read →

Configuration precedence when testing Laravel

A deep dive into the precedence of the various configurations when testing Laravel applications.

6 minute read →

Install PHPMyAdmin on macOS using Docker

Install PHPMyAdmin alongside your local macOS development environment running Apache, MySQL, and PHP using Docker.

2 minute read →

Match a Docker container prompt to your own

Have your Docker container prompt match your local prompt and add a simple emoji so you know where you are.

1 minute read →

Custom command to interact with Docker containers

Interact with Docker containers by name using one simple, custom command.

2 minute read →

Installing Apache, MySQL, and PHP on macOS using Docker

A tutorial for installing Apache, MySQL, and PHP on macOS for local development using Docker.

14 minute read →

Avoiding inheritance in Laravel

Developers often choose to use inheritance. However, in Laravel, this may prove to be a painful decision.

4 minute read →

Shift Database Outage

Last week Shift had a database outage with a data loss of over 600 orders.

4 minute read →

A review of 2019 and goals for 2020

A look back at my goals from 2019 and an outline of my goals for 2020.

6 minute read →

Testing middleware behavior with controller assertions

Test your controller actions use the expected middleware with a simple assertion.

2 minute read →

Streamlining Laravel

A proposal of the top changes I'd like to see which streamline Laravel and a the developer experience.

7 minute read →

Updating Apache, PHP, and MySQL for macOS Catalina

Steps to configure PHP, Apache, and MySQL after upgrading from Mac OS X Mojave to macOS Catalina.

3 minute read →

Installing Apache, PHP, and MySQL on macOS Catalina

This is an update of a previous post to install Apache, PHP, and MySQL on Mac OS for macOS Catalina.

3 minute read →

Crafting maintainable Laravel applications

10 tips for crafting maintainable Laravel applications which leverage features of the Laravel framework while remaining easy to upgrade.

10 minute read →

Maintaining Laravel config files

A review of a recent change to Laravel Shift as it relates to a recommendation for crafting maintainable Laravel applications.

5 minute read →

42 Git Questions Answered

Answers to 42 Git questions asked during a recent training I lead to guide a development team from git init to Git Master.

11 minute read →

TDD, Outside-In, and YAGNI

An outline of developing a feature practicing TDD, Outside-In, and YAGNI to demonstrate the intricacies of these practices working together.

5 minute read →

Why your team should not be upgrading old Laravel applications

Why upgrading your old Laravel applications is a waste of your resources with a pitch for Shift do it instead.

3 minute read →

Testing the most important piece of your application

A guide for testing Stripe Checkout using Laravel Dusk to verify the most important piece of your application - accepting payments.

6 minute read →

Testing makes me a confident developer

Tests provide confidence the code behaves as expected and confidence to refactor the code in the future.

5 minute read →

Laravel - Some Shifty Bits

A review of underutilized Laravel features found by Shift analytics and shared at Laracon US 2019.

10 minute read →

Lowering the time cost of testing existing Laravel applications

Ways to reduce the cost of setting up your existing Laravel application for testing.

5 minute read →

A Shifty Email Bug

I woke up to 56 emails, 17 tweets, 9 Slack messages, and 4 telegrams. It was 7:07 AM.

5 minute read →

Start testing your Laravel applications

An in-depth guide to using HTTP Tests to get started writing tests for your Laravel application.

19 minute read →

Testing validation in Laravel by asserting a Form Request

An alternative approach to testing validation in Laravel which minimizes the number of tests required, while maximizing confidence.

4 minute read →

Pricing is hard. Raising prices.

Some insight in how I price my products and services, and the reasoning behind a recent price increase for Shift.

3 minute read →

Building Products - Building an audience

The second in a series on building products where I review steps done to grow a new audience for my upcoming product Optionality.

4 minute read →

Jekyll to Jigsaw

Some notes on the process of converting the static site generator I use from Jekyll to Jigsaw.

5 minute read →

2018 Lookbehind, Lookahead 2019

A look back at my 2018 dev goals and a lookahead at my dev goals for 2019.

5 minute read →

Building Products - Starting from Square 0

The first in a series of posts on building products from the ground up.

6 minute read →

Updating Apache, PHP, and MySQL for macOS Mojave

Steps to configure PHP, Apache, and MySQL after upgrading from Mac OS X Sierra to macOS Mojave.

3 minute read →

Installing Apache, PHP, and MySQL on macOS Mojave

This is an update of a previous post to install Apache, PHP, and MySQL on Mac OS for macOS Mojave.

4 minute read →

10 practices for readable code

A set of 10 practices for writing code with a focus on improving readability and reducing complexity.

5 minute read →

Laravel by the Numbers

A unique analysis of data from Laravel Shift on over 8,000 Laravel apps.

8 minute read →

Untangling Nested Code

How to identify the different forms of nested code and refactor them to more readable code.

6 minute read →

2018 Dev Goals

A little backstory on the 5 development goals I set to achieve in 2018.

5 minute read →

Fake it by stubbing the mock, dummy

Why differences in test objects are often inconsequential and how abstraction can improve developer happiness.

3 minute read →

Writing Clean Code (Part 2)

Three more practices to write clean code and help improve code readability.

4 minute read →

SMS admin in 8 lines of code

In an effort to provide on the go support for Laravel Shift, I created an SMS based admin using Nexmo and Laravel.

4 minute read →

Committing to the wrong branch

Exploring the various Git commands you can run when you make a commit on the wrong branch.

4 minute read →

References from "Writing Clean Code"

Additional references from my recent post "Writing Clean Code" containing motivation and practices for writing clean code.

1 minute read →

Writing Clean Code

Three simple practices to help write clean code and improve the readability of a codebase.

4 minute read →

You changed the code, you didn't refactor the code.

A closer look at the important difference between changing code and refactoring code.

2 minute read →

Starting an online workshop for Git

The backstory for my plan to host an online workshop on Git.

3 minute read →

15 years of amateur trading

I started invested in the stock market when I was 20. Over the past 15 years, I learned these valuable lessons.

12 minute read →

An edge case for cache busting

Most high performance web sites optimize for the sad path. In this article, we address a way to optimize for the happy path too.

4 minute read →

Compensation tips

Advice on compensation, seeking raises, and determining when to change jobs shared from my own experiences.

4 minute read →

Using git bisect

A real world example of using git bisect to find a bug deep in my application code.

4 minute read →

Stop aliasing core Git commands

Some claim aliasing core Git commands is the "Right Way". It's not.

1 minute read →