Here's everything I've ever written, starting all the way back to 2008. Enjoy!
Why another side-project
Asking myself why I decided to work on yet another side-project.
Launching another side-project
Coming to my decision to launch another side-project and key takeaways for working on side-projects.
A lookbehind at 2023 and lookahead for 2024
A look back at my goals from 2023 and an outline of my goals for 2024.
4 personal finance tips for Indie Hackers
A review of the personal finance decisions which increased my calm as an Indie Hacker running a successful SaaS.
A lookbehind at 2022 and lookahead for 2023
A look back at my goals from 2022 and an outline of my goals for 2023.
Spawning workers based on queue workload
The backstory for building a feature to spawn additional worker servers based on the job queue workload.
A lookbehind at 2021 and lookahead for 2022
A look back at my goals from 2021 and an outline of my goals for 2022.
Grinding to $1,000,000 in revenue over 6 years
A review of growing my SaaS product to $1,000,000 in revenue over 6 years, both from a business and personal perspective.
Building a PHPUnit to Pest Converter in a week
The motivation and execution around building a PHPUnit to Pest Convert in one week.
A lookbehind at 2020 and lookahead for 2021
A look back at my goals from 2020 and an outline of my goals for 2021.
Configuration precedence when testing Laravel
A deep dive into the precedence of the various configurations when testing Laravel applications.
Install PHPMyAdmin on macOS using Docker
Install PHPMyAdmin alongside your local macOS development environment running Apache, MySQL, and PHP using Docker.
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.
Custom command to interact with Docker containers
Interact with Docker containers by name using one simple, custom command.
Installing Apache, MySQL, and PHP on macOS using Docker
A tutorial for installing Apache, MySQL, and PHP on macOS for local development using Docker.
Avoiding inheritance in Laravel
Developers often choose to use inheritance. However, in Laravel, this may prove to be a painful decision.
Shift Database Outage
Last week Shift had a database outage with a data loss of over 600 orders.
A review of 2019 and goals for 2020
A look back at my goals from 2019 and an outline of my goals for 2020.
Testing middleware behavior with controller assertions
Test your controller actions use the expected middleware with a simple assertion.
Streamlining Laravel
A proposal of the top changes I'd like to see which streamline Laravel and a the developer experience.
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.
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.
Crafting maintainable Laravel applications
10 tips for crafting maintainable Laravel applications which leverage features of the Laravel framework while remaining easy to upgrade.
Maintaining Laravel config files
A review of a recent change to Laravel Shift as it relates to a recommendation for crafting maintainable Laravel applications.
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.
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.
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.
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.
Testing makes me a confident developer
Tests provide confidence the code behaves as expected and confidence to refactor the code in the future.
Laravel - Some Shifty Bits
A review of underutilized Laravel features found by Shift analytics and shared at Laracon US 2019.
Lowering the time cost of testing existing Laravel applications
Ways to reduce the cost of setting up your existing Laravel application for testing.
A Shifty Email Bug
I woke up to 56 emails, 17 tweets, 9 Slack messages, and 4 telegrams. It was 7:07 AM.
Start testing your Laravel applications
An in-depth guide to using HTTP Tests to get started writing tests for your Laravel application.
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.
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.
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.
Jekyll to Jigsaw
Some notes on the process of converting the static site generator I use from Jekyll to Jigsaw.
2018 Lookbehind, Lookahead 2019
A look back at my 2018 dev goals and a lookahead at my dev goals for 2019.
Building Products - Starting from Square 0
The first in a series of posts on building products from the ground up.
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.
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.
10 practices for readable code
A set of 10 practices for writing code with a focus on improving readability and reducing complexity.
Laravel by the Numbers
A unique analysis of data from Laravel Shift on over 8,000 Laravel apps.
Untangling Nested Code
How to identify the different forms of nested code and refactor them to more readable code.
2018 Dev Goals
A little backstory on the 5 development goals I set to achieve in 2018.
Fake it by stubbing the mock, dummy
Why differences in test objects are often inconsequential and how abstraction can improve developer happiness.
Writing Clean Code (Part 2)
Three more practices to write clean code and help improve code readability.
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.
Committing to the wrong branch
Exploring the various Git commands you can run when you make a commit on the wrong branch.
References from "Writing Clean Code"
Additional references from my recent post "Writing Clean Code" containing motivation and practices for writing clean code.