Here is a collection of some open-source projects that I've worked on throughout the years. Most are still maintained and used in a wide variety of locations.
Way back in 2009 I was introduced to Particetree's PQP, a super-simple profiler that you could include in a PHP project to output basic stats and log variables to without dumping on the screen or tailing a log. It changed my perception of development and I began to use it regularly across all of my projects. Unfortunately, the team who built it did not maintain it, and it soon became more of a hindrance than tool.
So I decided to refactor PQP to fit modern standards. I wanted to fix some glaring PHP warnings, install it through Composer, clean up the classes, and have it fully testable. The project took close to two months but by the end I was very happy with the new release. The 1.1.0 release came out in January of 2016, and I've also built a Monolog handler to pipe logging messages into the console.
In early 2013 I started working on an open-source mail utility to wrap up some of the header and boundary logic needed for good cross-platform e-mail handling. After the initial work was done I let it sit and collect dust for a good three years before returning and refactoring it, adding unit tests, integration tools, and better debugging options. I'm pretty happy with the current 2.1.0 release on Github.
So what's so special about it? The original concept was to create a chainable wrapper for the basic PHP mail() function, an interface that has survived the recent refactor. More important, though, is how it handles different options. The implementor can just throw more pieces into the object, adding multiple attachments and formats, and the class handles the header and boundary logic to actually send the message. No need to look up cross-platform quirks or exact structure of mail's $additional_headers parameter - all of that is encapsulated.
After dabbling in data science for a few months I bumped into the idea of k-means clustering and decided to try implementing in PHP. I came up with a small class that could handle either random or forgy initialization and then repetitive clustering and re-positioning of centroids until convergence is reached. Right now it supports numeric multi-dimenstional arrays and can be found on my Github account.
I've always enjoyed playing with regular expressions and, back in 2014, wanted to share this love with my local PHP user group. Some of the presentation dealt with formal language theory, though I quickly switch things over to practical implementation and examples. The presentation was well received and the slides (which were formatted in reveal.js) are still available as markdown.
Of course, this very website is one of my largest side projects and is something that will probably never be fully done. The codebase behind it powers multiple domains and has gone through several iterations of refactor. The current direction (as of early 2016) is a rather radical change that is removing huge swaths of old crud in favor of modern practices.
This codebase has gulp-powered frontend assets and different composer packages for modular backend development. The backend is slowly moving towards a fully testable structure that is still light enough for ~1mb memory usage, a personal goal of mine. Oh, and it's all responsive and super light for mobile users. You can view the main code for my website infrastructure under jacobemerick/web.