Portfolio

Interested in a concise version of what I've worked on, whether technical writing or software development? Then here it is.

Four Key Considerations to Guide Your Logging Approach in PHP, Python, or Ruby

Four Key Considerations to Guide Your Logging Approach in PHP, Python, or Ruby

tagged with: Logging, Loggly

This is part one of a 4-part series for the Loggly blog. It discusses four key considerations for professional logging.

Taking Advantage of Built-in Logging In PHP, Ruby and Python

Taking Advantage of Built-in Logging In PHP, Ruby and Python

tagged with: Logging, Loggly, PHP, Python, Ruby

This is part two of a 4-part series for the Loggly blog. It looks at some of the key pros and cons of using the built-in logging options available in three of the most popular development languages: PHP, Python, and Ruby.

Security, and Performance In Logging

Security, and Performance In Logging

tagged with: Encryption, Loggly, Privacy, Protocols, Security

This post looks at three questions which impact on privacy and security. It walks through key logging decisions including protocols, message encryption, and how these choices impact performance.

How to Make Logging Even More Responsive By Using A Queueing Server

How to Make Logging Even More Responsive By Using A Queueing Server

tagged with: Logging, Loggly, Queueing, Queueing Server

This shows one final approach to logging; specifically, how to separate the logging responsibilities from an application by using a queueing server.

Kanban, It’ll Rock Your Productivity

Kanban, It’ll Rock Your Productivity

tagged with: Kanban, Kanbanize, Usersnap

This post, for the Usersnap blog, introduces the user to Kanban and shows the user how to integrate the Usersnap Feedback widget with Kanbanize.

Make Web Development Simpler, Quicker, and Easier by Integrating Your Project Management Tool With a Bug Tracker

Make Web Development Simpler, Quicker, and Easier by Integrating Your Project Management Tool With a Bug Tracker

tagged with: Bug Tracker, Project Management, Usersnap

This post, for the Usersnap blog, steps the user through integrating the Usersnap Feedback widget with Asana dashboard.

Managing Scheduled Tasks in Plesk 12

Managing Scheduled Tasks in Plesk 12

tagged with: Conetix, Plesk 12, Scheduled Tasks

This post, for the Conetix blog, step through creating and maintaining a series of regular tasks in Plesk 12.

Installing Zend Framework 2 on Plesk 12

Installing Zend Framework 2 on Plesk 12

tagged with: Conetix, Plesk 12, Zend Framework 2

In this tutorial, for the Conetix blog, I show the user how to set up and deploy a basic Zend Framework 2 application, based on the ZF2 Skeleton Application, on Plesk 12.

Installing Node.js on Plesk 12

Installing Node.js on Plesk 12

tagged with: Conetix, Node.js, Plesk 12

In this tutorial, for the Conetix blog, I step the user through setting up and deploying a basic Node.js application on Plesk 12.

Installing KeystoneJS on Plesk 12

Installing KeystoneJS on Plesk 12

tagged with: Conetix, Keystone.js, Plesk 12

This tutorial, for the Conetix blog, takes the user through how to set up and deploy a KeystoneJS application on Plesk 12.

Installing FuelPHP on Plesk 12

Installing FuelPHP on Plesk 12

tagged with: Conetix, FuelPHP

In this tutorial, for the Conetix blog, the user is stepped through the process of setting up and deploying a basic FuelPHP 4 application on Plesk 12.

Installing Ruby on Rails on Plesk 12

Installing Ruby on Rails on Plesk 12

tagged with: Conetix, Plesk 12, Ruby, Ruby on Rails

This tutorial, for the Conetix blog, takes the user through the process of setting up and deploying a basic Ruby on Rails 4 application on Plesk 12.

Installing Laravel 4 on Plesk 12

Installing Laravel 4 on Plesk 12

tagged with: Conetix, Laravel 4, Plesk 12

This tutorial, for the Conetix blog, takes the user through how to set up and deploy a basic Laravel 4 application on Plesk 12.

Email Debugging with MailCatcher

Email Debugging with MailCatcher

tagged with: PHP, MailCatcher, Email, SitePoint, Testing

I wrote this article for SitePoint to show developers how to test their application's email functionality, as close to production as possible, using MailCatcher.

Unit Testing with GuzzlePHP

Unit Testing with GuzzlePHP

tagged with: Mocks, PHP, Stubs, Unit Testing

A follow up to the GuzzlePHP intro by Miguel Romero; the article shows the user how to use Guzzle to test network client software.

Top 3 Challenges Facing Mobile Development

Top 3 Challenges Facing Mobile Development

tagged with: HTML5, Mobile, Mobile Development, New Relic

This post for New Relic, discussed the top 3 challenges in mobile development. These are: Vendor / Platform and Device Fragmentation and Development Approach.

Simple User Testing with CasperJS

Simple User Testing with CasperJS

tagged with: Casper.js, New Relic, Phantom.js

User testing is important for development. In this article, I took the user through testing basics in JavaScript using CasperJS built on PhantomJS.

HTML5 Web Storage – Cookies Are So 1994

HTML5 Web Storage – Cookies Are So 1994

tagged with: HTML5, New Relic, Offline Apps, Web Storage

This two part series reviewed Web Storage in HTML5. It covered the history of both Web Storage and cookies, the pros, cons, strengths and limitations.

Founded Master Zend Framework

Founded Master Zend Framework

tagged with: Master Zend Framework, PHP, Zend Framework

I founded, and write weekly for, Master Zend Framework, which teaches developers all there is to know about the Zend Framework, from basics to advanced.

Monthly Column in PHP Architect Magazine

Monthly Column in PHP Architect Magazine

tagged with: PHP Architect, PHP

For two years, I've written the Education Station column in PHP Architect magazine; introducing PHP developers to new technologies, services and concepts.

Simple Javascript Unit Testing with QUnit

Simple Javascript Unit Testing with QUnit

tagged with: JavaScript, QUnit.js, Unit Testing

As the complexity of JavaScript applications grows, it's become obvious that it needs proper unit tests. This is the first in a series on testing with JavaScript.

ClamAV as a Validation Filter in Zend Framework

ClamAV as a Validation Filter in Zend Framework

tagged with: ClamAV, PHP, Zend Framework, ZF2

This post showed the user how to create a custom Zend Framework filter protecting them against virus in uploads, using the ClamAV virus scanner.

Inattention Blindness – Maybe Users Really Don't See

Inattention Blindness – Maybe Users Really Don't See

tagged with: Psychology, User Interface, UX

Wondering why your site users don't see or use the very obvious button you put there for them to click on? Maybe they're not actually seeing it. Here I show you why.

Politics Often Hold the Community Back

Politics Often Hold the Community Back

tagged with: Bruno Škvorc, Gary Hockin, Mailchimp, PHP

This is the final part of the interview series, discussing PHP as a professional language. Here, I interviewed Sitepoint's PHP channel editor, Bruno Škvorc, and Gary Hockin from Roave.

Getting Started with Google Go

Getting Started with Google Go

tagged with: Golang, Google, Imports, Structs

This is an introductory article to the Go language from Google. I walked the user through setting up their environment and creating an application, using imports, structs and functions.

Interview: Tom Oram and Rob Allen

Interview: Tom Oram and Rob Allen

tagged with: PHP, Rob Allen, Tom Oram

This is the second part of the interview series, getting opinions from Tom Oram, who works for a development firm in Wales and Rob Allen from Nineteen Feet.

Can Great Apps Be Written in PHP

Can Great Apps Be Written in PHP

tagged with: Application Development, PHP

This is the first in a series, discussing whether great apps can be written in PHP. PHP's been decried as a horrible language. I disagreed, so discuss it with the community.

The Composer Cheatsheet

The Composer Cheatsheet

tagged with: Composer, PHP

This post takes the user through the Composer cheat sheet. It covers the two sections covering the command line and composer.json file and an intro screencast.

Build Virtual Machines Easily with PuPHPet – Part 2

Build Virtual Machines Easily with PuPHPet – Part 2

tagged with: PuPHPet, PHP, Virtual Machines

This is the second of a two part series introducing developers to PuPHPet. In this part I covered the two core files used: common.yaml, and Vagrantfile.

Who Needs MySQL When There Is IndexedDB?

Who Needs MySQL When There Is IndexedDB?

tagged with: HTML5, IndexedDb, New Relic, WebSQL

Written for the New Relic blog, this post explores the possibility of using HTML5's IndexedDB, instead of MySQL, as a data source for web-based applications and why it's better than WebSQL.

Five Non-Mainstream Databases for PHP Apps – Part 3 – New Relic blog

Five Non-Mainstream Databases for PHP Apps – Part 3 – New Relic blog

tagged with: Databases, PHP

Part 3 of the series looking at five alternative databases PHP developers can use. The series looks at five alternative databases available for PHP apps you, developers might not have heard of.

8 Fallacies of Distributed Computing for PHP Developers

8 Fallacies of Distributed Computing for PHP Developers

tagged with: Distributed Computing, PHP

This post discusses the 8 Fallacies of Distributed Computing, specifically for PHP developers; as, it’s important to understand these common misconceptions.

Introduction to Git – Round 2 (Advanced)

Introduction to Git – Round 2 (Advanced)

tagged with: Git, Interactive Rebasing, Version Control

Picking up from Sean Hudgston's Introduction to Git, this post looks at some of the advanced features of Git, such as rebasing, exporting a repository, basic rebasing, commit reordering, commit splitting and commit merging.

One-click App Deployment with Server-side Git Hooks

One-click App Deployment with Server-side Git Hooks

tagged with: Continuous Deployment, Git

This is an in-depth post, showing users how to use git hooks to set up automatic deployment for their PHP applications.

Build Virtual Machines Easily With PuPHPet

Build Virtual Machines Easily With PuPHPet

tagged with: Continuous Development, PuPHPet, Virtual Machines

This was the first of a two part series for Sitepoint, introducing developers to the virtual machine generation tool - PuPHPet