Below are a list of published articles that I have written. I've also done technical editing for articles on topics about Zend Framework 2, CouchDB, and the PHP SPL, to name a few.
"Education Station" is a column I am currently writing, from January 2019 to now.
Education Station deals with many different aspects that a developer might face, and how they can become a better developer. Topics include "DevOps and You", "Night of the Living Dead (code)", and "Explicit is Better Than Implicit."
"The Dev Lead Trenches" was a column I wrote for php[architect] from July 2017 to December 2018.
I never planned on being a team lead when it happened. I want to help you grow as a team lead, whether you took a job as a team lead want to do better, or were like me and all of a sudden in charge of other people. Ultimately, it is not as scary as one might think, but being a team lead may mean getting outside of your comfort zone. In this and future columns, I will expand upon the few ideas I mentioned here and more.
March 2017 issue of php[architect]
Docker has come a long way in the last few years. It’s now possible to set up Docker as easily as other development tools on any operating system most people use, and (barring a few weird OS-specific gotchas) you can comfortably work in Docker from just about any machine. Some people, like myself, do not even install Vagrant on their machines anymore and opt for a pure Docker development environment. In this article, we’ll look at how deploying your Dockerized application has changed and become easier
March 2016 issue of php[architect]
Many frameworks are now starting to adopt PSR-7 and the ideas of middleware. Middleware helps move some common code out of our business logic and into reusable objects that can be injected into a request. Zend Expressive is one of the new micro frameworks that are built totally around PSR-7, and is designed fully around middleware as a first-class citizen.
January 2014 issue of php[architect]
For most developers, PHP is a web language. We use it every day to build our web applications for browsers and mobile devices. Really, that is what the language was designed for. There comes a time in any large application.s life when things begin to change. Processes become too large to fit comfortably in a single request or they need to be taken care of at specific times. Maybe the application is not even suited for the web. At those times, we look at using PHP as something other than a server-side scripting language. Despite being made for the web, it works well other places too. Welcome to the command line.
December 2013 issue of php[architect]
Tools are very handy, if not essential, to a project. However, the tools are only helpful if you can find them. A well-organized toolbox can do wonders for your productivity. If only we had something like that for our digital tools.You are in luck; we do now.
August 2013 issue of php[architect]
Package management for PHP has historically been a bit of a mess. For the longest time, it was just: download a package, throw it somewhere, and then require the needed files. This worked OK, but you were never really sure about the quality of the packages. PEAR came along and gave us a centralized repository for code and a pretty decent way to install it. The big issue was that the packages available through the PEAR project were minuscule compared to the large amount of third-party libraries out there in the wild. A few years ago, a new project popped up named Composer, which aimed to get rid of the issues plaguing package management. In 2013, it has become pretty much the standard way to install and distribute packages in PHP.
July 2013 issue of php[architect]
Despite what the marketing says, HTML5 isn.t really a standard. It.s a constantly shifting list of ideals that may one day become a standard, but until then, it.s not a standard. It.s a working draft. Sure, many groups have come to agree on the things that should be in HTML5, but as developers we know how the real web works. HTML5 has some nifty features, but we cannot rely on those features being available, despite what the people in sales are selling to our clients.
April 2013 issue of php[architect]
Users love to upload files, either to share them with other people or for storage. Gone are the days when regular internet users will fire up an FTP client just to upload a file to a server. Thanks to HTML5, we now can have users drag a file over from their desktop onto their browser, and the browser will automatically send it to the server (well, everything but older versions of IE anyway). Think of how much uploading you yourself do throughout out the day. Facebook wouldn.t be half as fun if you couldn.t upload embarrassing photos from your friend.s birthday party.
March, 2013 issue of php|architect
APIs are becoming an almost default part of any web application that exposes data. Be it a social network for which people can build clients or a data repository where people want to consume the data they need in a fashion of their choosing, APIs are empowering users to work with the data how they want. There’s a good chance your application will benefit from having an API.
January, 2013 issue of php|architect
Documentation is always a part of any project. Sometimes, however, a project ends with no, or very little, documentation as it is normally one of the first things that gets thrown out the door when deadlines loom. Developers are very good at saying, “I’ll circle back to this when I’m finished”. Often, though, this time never comes. Now when I say documentation, I’m not just talking about code comments. Documentation is an idea that encompasses code comments, but is so much more. Documentation allows new developers to quickly pick up on a project and get to work. Documentation helps new users find what they need to do so they get their jobs done more quickly. Documentation is important, so what can we as developers do to help make documentation better?
November, 2012 issue of php|architect
As PHP developers, we are well aware of the database portion of our stack. SQL is usually the second language that PHP developers pick up out of necessity. If you go beyond straight SQL and look at some of the features of the server itself, you find all sorts of other things to play with. Built-in functions, triggers, variables, stored procedures, and other things are there to make the life of a DBA or a programmer easier. This article will cover two of those things: stored procedures and variables – how they work and how we can use them in PHP.
September, 2012 issue of php|architect
Any PHP developer can develop modules for Drupal, but like any system newcomers, will have a learning curve that must be overcome before the system makes sense. With Drupal playing the role of both a CMS as well as a generic application framework, you have the power to build complex applications as well as small modularized code
October, 2011 Issue of php|architect
IBM and Zend have pushed hard to prove that PHP on the IBM i is a viable solution, and it is. While they tend to gear most of their marketing toward mainframe developers to switch over to PHP, coming to the IBM i from a PHPers experience is a whole different matter. We know the language, just not this well-aged platform. IBM has done their best to make developers welcome but the environment is still different. I’ll go through some of the common annoyances of having to work on the i, as well as tips to make life easier. This is not an introduction to programming on the i, just tips to make your life easier.
September, 2011 issue of php|architect
No matter what language you use, developing code is the same – spec, code, deploy, maintain. The “Big Boys” have teams to manage each task, but what happens when you don’t? I’ll go over some different methods for maintaining internal and external programs that are cheap, open source, and make your life easier. PHP has a plethora of tools for us to use to effectively code and maintain our projects; and the best part is that they are generally inexpensive or even free. The trick is finding and using these tools effectively in a workflow that the developer can use.