A look back at my goals from 2021 and an outline of my goals for 2022.
A review of growing my SaaS product to $1,000,000 in revenue over 6 years, both from a business and personal perspective.
The motivation and execution around building a PHPUnit to Pest Convert in one week.
A look back at my goals from 2020 and an outline of my goals for 2021.
A deep dive into the precedence of the various configurations when testing Laravel applications.
Install PHPMyAdmin alongside your local macOS development environment running Apache, MySQL, and PHP using Docker.
Have your Docker container prompt match your local prompt and add a simple emoji so you know where you are.
Interact with Docker containers by name using one simple, custom command.
A tutorial for installing Apache, MySQL, and PHP on macOS for local development using Docker.
Developers often choose to use inheritance. However, in Laravel, this may prove to be a painful decision.
Last week Shift had a database outage with a data loss of over 600 orders.
A look back at my goals from 2019 and an outline of my goals for 2020.
Test your controller actions use the expected middleware with a simple assertion.
A proposal of the top changes I'd like to see which streamline Laravel and a the developer experience.
Steps to configure PHP, Apache, and MySQL after upgrading from Mac OS X Mojave to macOS Catalina.
This is an update of a previous post to install Apache, PHP, and MySQL on Mac OS for macOS Catalina.
10 tips for crafting maintainable Laravel applications which leverage features of the Laravel framework while remaining easy to upgrade.
A review of a recent change to Laravel Shift as it relates to a recommendation for crafting maintainable Laravel applications.
Answers to 42 Git questions asked during a recent training I lead to guide a development team from git init to Git Master.
An outline of developing a feature practicing TDD, Outside-In, and YAGNI to demonstrate the intricacies of these practices working together.
Why upgrading your old Laravel applications is a waste of your resources with a pitch for Shift do it instead.
A guide for testing Stripe Checkout using Laravel Dusk to verify the most important piece of your application - accepting payments.
Tests provide confidence the code behaves as expected and confidence to refactor the code in the future.
A review of underutilized Laravel features found by Shift analytics and shared at Laracon US 2019.
Ways to reduce the cost of setting up your existing Laravel application for testing.
I woke up to 56 emails, 17 tweets, 9 Slack messages, and 4 telegrams. It was 7:07 AM.
An in-depth guide to using HTTP Tests to get started writing tests for your Laravel application.
An alternative approach to testing validation in Laravel which minimizes the number of tests required, while maximizing confidence.
Some insight in how I price my products and services, and the reasoning behind a recent price increase for Shift.
The second in a series on building products where I review steps done to grow a new audience for my upcoming product Optionality.
Some notes on the process of converting the static site generator I use from Jekyll to Jigsaw.
A look back at my 2018 dev goals and a lookahead at my dev goals for 2019.
The first in a series of posts on building products from the ground up.
Steps to configure PHP, Apache, and MySQL after upgrading from Mac OS X Sierra to macOS Mojave.
This is an update of a previous post to install Apache, PHP, and MySQL on Mac OS for macOS Mojave.
A set of 10 practices for writing code with a focus on improving readability and reducing complexity.
A unique analysis of data from Laravel Shift on over 8,000 Laravel apps.
A little backstory on the 5 development goals I set to achieve in 2018.
Why differences in test objects are often inconsequential and how abstraction can improve developer happiness.
Three more practices to write clean code and help improve code readability.
In an effort to provide on the go support for Laravel Shift, I created an SMS based admin using Nexmo and Laravel.
Additional references from my recent post "Writing Clean Code" containing motivation and practices for writing clean code.
Three simple practices to help write clean code and improve the readability of a codebase.
The backstory for my plan to host an online workshop on Git.
A closer look at the important difference between changing code and refactoring code.
Most high performance web sites optimize for the sad path. In this article, we address a way to optimize for the happy path too.
Advice on compensation, seeking raises, and determining when to change jobs shared from my own experiences.
Why I believe Lumen is dying and what the future holds for Lumen.
A response to Adam Wathan's challenge that isolated unit testing is incompatible with TDD.
Why I chose to pivot from a recent, successful product to a new product.
Announcing a platform for developers to build custom Shifts.
A write-up of the code samples given during my "Practicing YAGNI" talk at ZendCon 2016.
This is an update for Mac OS X Sierra of a previous post on installing Apache, PHP, and MySQL for Mac OS X.
Steps to configure PHP, Apache, and MySQL after upgrading from Mac OS X El Capitan to Mac OS X Sierra.
How to upgrade or install a different version of PHP on Mac OS X.
A retrospective on creating Laravel Shift as it reaches its milestone of 1,000 Laravel applications upgraded.
A recent coding style I call the "Proximity Rule". Might be called something else, but I still like the code.
Introducing Shift - a Laravel framework automated upgrade tool.
This is an update for Mac OS X El Capitan of a previous post on installing Apache, PHP, and MySQL for Mac OS X.
Steps to configure PHP, Apache, and MySQL after upgrading from Mac OS X Yosemite to Mac OS X El Capitan.
A retro after practicing test driven development for 100 days.
Some initial thoughts after two weeks on a new team practicing extreme programming.
A look at how the simple practice of "boyscouting" can improve your code.
Tutorial for configuring Apache Virtual Hosts on Mac OS X.
This is an update for Mac OS X Yosemite of a previous post on installing Apache, PHP, and MySQL for Mac OS X.
A list of books culled over the years on the journey to improve my craft as a software engineer.
A rockstar developer can't save you. Why? Because the developer gap.
Making the difficult decision to let PocketBracket, a successful app, fail.
The story behind launching my first project on Kickstarter.
A shell script to open GitHub from the command line.
A proof on how you can convert
uniqid() to a Unix timestamp in PHP.
A rant on my journey to become a real iOS developer.
This post provides a basic checklist for common database debugging when developing with examples in PHP and MySQL.
An update to my solution for a multitenant WordPress install. With improvements in maintainability and extensibility.
A look at how
use breaks PHP namespaces and why you should avoid using
A reflection on the core criteria of a good job after deciding to leave The New York Times.
While updating some legacy code to be backward-compatible I found that forward-compatibility was equally important.
A follow-up post reviewing the benchmarks performed during my recent migration from WordPress to Octopress.
A post on my recent migration from WordPress to Octopress as a return to simple blogging and a site with greasy, fast speed.
A response to a post on PHP Micro-Optimizations floating around the PHP community recently.
An evaluation of the argument 'Why [certain language] developers are better developers' and why it might be valid.
A review of our second Tough Mudder. This course in Kentucky. As well as a quick look at why I am a Tough Mudder.
The next installment of a series on how to be a better PHP developer, and better developer in general. This post covers PHP coding standards.
This post outlines how to install PEAR and PECL on Mac OS X.
This post outlines installing Apache, PHP, and MySQL on Mac OS X. In addition, I cover configuring Virtual Hosts and installing PHPMyAdmin.
This post outlines updating SVN for Mac OS X. I updated after realizing new apps used SVN 1.7 while Mac OS X Mountain Lion used SVN 1.6.
While talking about technologies and trends, I heard an interesting analogy - the difference between fashion & style as it relates to code.
WordPress Multitenancy - a simple solution to a complex problem. This post covers creating a multitenant architecture for WordPress. Aimed at improving scalability and maintainability.
After reviewing thousands of lines of code over the last few years, I compiled a list of simple tips to help you be a better PHP developer.
After interviewing with some top tech companies, I realized the difference between a developer and an engineer.
After my shared hosting plan expired, I migrated to Amazon EC2. My WordPress site now runs on a micro instance. Free for the next year.
For years I searched for a PHP User Group in Louisville. No more. I'm starting the Louisville PHP User Group and leading our first meeting.
A look back on 4 years of developing, managing, and marketing PocketBracket - a March Madness app for iOS, Android, and Windows Phone devices.
Step by step instructions for installing and configuring AWStats on Amazon EC2, as well as a script that automatically configures and updates sites for AWStats.
A script that hashes password for existing user records when using CakePHP Auth.
After recently sharing my Netflix account with my parents, I noticed a missing feature I believe is common in shared systems: User Profiles. This post is a letter to Netflix requesting this feature.
This post covers installing, configuring, and deploying (Heroku) I/O Docs - a live interactive documentation system for RESTful web APIs developed with node.js and redis.
A rant after encountering unexpected sort order when using
maxYear attributes to control options in an drop down. The solution involved an undocumented, and in my opinion unnecessary, attribute.
An article about our first Tough Mudder - the Tough Mudder Indiana at Badlands Off Road Park in late November 2011.
After scouring the web for days, this post aims to provide concise, central instructions for installing Node.js, npm, and redis on Mac OS X.
In two weeks I, as part of team #tigerblood, will accept the Tough Mudder Challenge - a 21 obstacle, 12 miles challenge course.
PHPMyAdmin 3.4 came with many UI changes. After a few months of using PHPMyAdmin 3.4, I'm weighing the pros and cons.
I came across some interesting behavior with CakePHP's Auth Component. The solution didn't align with the documentation or my understanding of the Auth Component's login redirect. This post covers the problem and my solution.
A follow up post from my talk on Configuring WordCamp for Multiple Environments at WordCamp Louisville 2011.
I've taken an interested in performance lately and heard about siege. The blog articled I found to install siege failed on the first step. So I decided to write my own in hopes it would help any non sysadmin developer that wanted to install siege on Mac OS X Lion. Although this should work with Leopard and Snow Leopard.
A follow up post about my talk on Configuring WordPress for Multiple Environments at WordCamp Chicago. It includes a link to the original blog post, slides, code samples, and a note about the proposed Unconference Talk.
A quick post on outputting the proper markup for guidance text using CakePHP's Form Helper.
Sharing my *moment* with WordPress and its dreaded "Error establishing a database connection" after updating the database.
I needed to perform conditional data validation in CakePHP for a project recently. This is a review of the internal options to do so and my own approach.
My CakePHP project fell down a rabbit hole earlier after creating a custom app_controller and app_model from something that should have been a no-brainer. Hopefully this helps someone else.
Some thoughts after a week with the new Apple TV and signing up for Netflix.
A rant on the recent competition between Facebook Places and Foursquare as it relates to intellectual property and the technical industry.
A rant that revisits the most important and unfortunately most forgotten component of problem solving - root cause analysis.
For this year's 2010 NCAA Men's Basketball Tournament I updated PocketBracket with a new UI and several user requested features. To build the buzz in the ever competitive app market, I'm running an iPad Giveaway.
I constantly see headlines for articles that just whine about the lack of Flash support on the iPhone OS. This is my believe as to why Flash is not supported in the iPhone OS.
A reflection on the routines I believe make me a good developer and look for in developers around me.
A description of my recent iPhone App - LastPlayed. Including development notes, marketing strategy, future direction, and an invitation for your feedback. Complete with a shameless plug for you to download the app for free.
Today I wrote my last IE6 hack, to overcome a common CSS bug, and I say good riddance to this nearly decade old browser.
As I didn't find a good DIY guide after a few Google searches, I wrote this post after installing a new trampoline on my 18' Hobie Cat.
An article about the process of creating my first iPhone Application - PocketBracket: March Madness. I revisit everything from development to marketing, and the story doesn't end there.
So there are several accordion solutions out there. But after reviewing a few, I created this hybrid using lean markup, simple CSS, and the Prototype and Scriptaculous libraries which degrades better than its predecessors.
A rant on what diversity, particularly in the development community, costs in respect to advancement.
A specification for developing a functional CSS Organization and Minification tool that can be used to manage CSS files.
If you didn't guess from the title, this is my first article. What does it contain? A look back at the development of this site, of course. I outline the pieces of this site with general development tips.