Slides from PHP Conference Argentina
I recently had the opportunity to speak at PHP Conference Argentina . I’d like to thank Mariano and the other organizers for having me at the event. It was a fantastic opportunity for me to visit...
View ArticlePHP Generators - A useful example
PHP5.5 has support for generators which are a powerful language feature available in other languages like Ruby and Python. While generators in PHP are very much like their Python counterparts, I...
View ArticleCamera and Audio capture in web browsers
If you’ve ever built a web application that wanted access to the visitor’s camera you know what a painful experience that can be. If used to involve flash or silverlight plugins or clunky java....
View ArticleCoding every day
I recently read write code every day by John Resig. I’ve been trying to follow a similar set of ideas for a while now. My rules were less restrictive than John’s were.
View ArticleCompatibility Breaks in CakePHP 3.0
There will be a number of backwards compatibility (BC) breaks in the CakePHP 3.0.0 release. I thought it might be helpful to go over some of the reasons breaks in compatibility have been made. Each...
View ArticleDebugKit for CakePHP 3.0.0
A few weeks back during CakeFest 2014, I had the opportunity to hunker down and get DebugKit upgraded to CakePHP 3.0. While it was less of an upgrade and more of a re-design and re-write, I think the...
View ArticleAssetCompress v0.17 available
Earlier today, I packaged up AssetCompress 0.17. This release has a few noteworthy features. Cached builds in development Historically, in development every build file would be rebuilt on every...
View ArticleUpgrading to CakePHP 3.0
I recently finished upgrading this site to CakePHP 3.0.0-dev from 2.5.5. I thought I’d share my experiences, as they might be helpful to other people attempting to update a CakePHP 2.x application to...
View ArticleUsing CakePHP and a Horizontally Sharded Database
One approach to scaling out a database for a multi-tenant application is to horizontally shard or partition the data by customer. This often takes the form of having multiple identical copies of an...
View ArticleCakePHP 3.0 Retrospective
With CakePHP 3.0 out the door, I thought it would be good to reflect on the project. CakePHP 3.0 is the longest and largest open source project milestone I’ve ever participated in. At FreshBooks we do...
View ArticleMiniAsset Library Released
For a number of years, I’ve developed the AssetCompress CakePHP plugin. Simultaneously, I’ve maintained similar code at FreshBooks.
View ArticleLearning Rust
I’m always looking for new challenges. With my background mostly being in web development, I have little to no experience in low-level languages. In the past I’ve tinkered with C, and go-lang. This...
View ArticleContainerless Dependency Injection for Services
While I’m a big fan of dependency injection, I find dependency injection containers less alluring. I’ve found that liberal usage of containers can make application code harder to follow, and often the...
View ArticlePSR7 Bridge for CakePHP
I’m excited to announce the availability of a PSR7 Bridge plugin for CakePHP. This plugin lets you bridge PSR7 Middleware with CakePHP 3.3+ applications.
View ArticleSimplifying host identification with rainbow terminals
In my daily work, I end up having to ssh into a variety of hosts. Keeping track of which terminal is on which host can become challenging when I have 3 or 4 terminals all at a mysql prompt, or tailing...
View ArticleIntroducing Stickler-CI
I’d like to introduce a project I’ve been working on over the past few months. Stickler-CI helps automate the tedious process of ensuring coding standards are followed during pull requests. Like many...
View ArticleBlazing Fast Fuzzy Find in Vim
Many people are surprised when they find out I use VIM as my primary editor. While vim seems like a ‘basic’ editor, it can have IDE like features added through its massive plugin community. I recently...
View ArticleIntegration Testing with PHP-VCR
Integration testing with external webservices, has historically been an uncomforable process in PHP for me. It frequently involves complicated mocking that was fragile and hard to maintain. I’ve long...
View ArticleChanges to enabling repositories in Stickler CI
Stickler CI users have expressed that automatically enabling default linters can create a flood unwanted comments in pull requests, which is overwhelming and noisy. In response to these issues, we have...
View ArticleTaking Stickler-CI from an idea to a side hustle pt.1
In this three part series, I’m going to cover the evolution of Stickler CI in the past 2 years from the initial prototype to the present day. This specific article will cover how I built the initial...
View Article