110 Brunswick Ave., Upper Unit
Toronto, ON M5S 2M2
Experience
Team Lead, API & Integrations
FreshBooks | 2009 – Present
I oversee all technical aspects of the FreshBooks API and related development. I help make sure that FreshBooks is an ideal integration platform for 3rd party developers. I also promote the use of Open Web standards whenever applicable. Some notable accomplishments:
- I worked with the Google Apps team to have FreshBooks included as a launch partner for the Google Apps Marketplace. This involved implementing OpenID as a Relying Party.
- I implemented support for OAuth 1.0a as an authorization method for the FreshBooks API. I continue to support developers writing clients that use OAuth.
- I designed and implemented a Webhooks implementation that allows users to specify HTTP callbacks to receive notifications about events in their FreshBooks account.
My role also includes non-technical tasks such as coaching developers, community building, providing technical support for 3rd party developers, and writing technical documentation and blog posts.
I participate in core application development regularly, working with the application team to ensure that functionality necessary from an integrations perspective is implemented.
Software Developer
Perforce Software | 2007 – 2009
I was the primary author of P4PHP, a PHP extension written in C++ that provides PHP user-space scripts access to the Perforce API. P4PHP was released with Perforce 2009.2
I assisted in the development and maintenance of Perforce’s Knowledge Base software. The software is a WCMS written in PHP that stores content in a Perforce server. The system supports themes, modules and other extension points as well as workflow, personalization and other features common to sophisticated WCMS products.
I was also responsible for building and maintaining my team’s Continuous Integration server as well as a Xen based test farm of virtual servers running Selenium RC.
Freelance Software Developer
Various Clients | 2005 – 2007
I developed software for a variety of clients including the Department of Economics at the University of Toronto (Paper), Book City, Everywheremaps.com, The Federation of Metro Tenants’ Associations and Perforce Software. Most of the software I wrote was in Python, PHP and Java.
Software Developer
Royal College of Surgeons in Ireland | 2004 – 2005
I worked on contract in the Department of Clinical Pharmacology, collaborating on the development of a life sciences workflow system called Polyp. Polyp allows users to design computational workflows and queue them on clusters of Win32 and Linux hosts. Polyp consists of components written in Java and a Python daemon built using the Twisted Framework.
Software Programmer / Analyst
University of Toronto | 2002 – 2004
My core project at the Banting & Best Department of Medical Research was the development of a statistical clustering library called statclust. The library is written in C and provides implementations of hierarchical and k-means clustering algorithms. I wrote extensions making the library accessible from Python and Perl scripts. I also assisted a group of co-op students in the development of a web-based interface to statclust. The interface is written in Python and uses the Python Imaging Library to produce visualizations of clustered data.
Software Developer
Bell Canada | 1999 – 2003
As a member of the Operations Expertise Centre at Bell Canada, I developed and maintained a variety of internal business applications, mostly written in PHP, Perl and Visual Basic 6.0.
Education
Ontario Advanced Diploma in Computer Science Technology Program
Sheridan College – Oakville, ON | 2001 – 2004
Public Speaking
Open Web Toronto — Organized and presented at inaugural meeting for Open Web TO, an interest group for people interested in or actively developing with Open Web standards. March 2010.
Quality Assurance in Web Development — Presentation given to three offices (Victoria, London and San Francisco) at Perforce Software. November 2008.
Multithreaded and Concurrent Programming — Tutorial given to developers at the Royal College of Surgeons in Ireland and University College Dublin. January 2005.
Automating Bioinformatics Workflows — Presentation of pipeline workflow automation system delivered at the Royal College of Surgeons in Ireland. September 2004.
Extending Python – Writing Extensions for the Python Interpreter — Tutorial presented as part of the Toronto Bioinformatics Developers Network (BDN) lecture series 2003. Toronto, ON. July 2003.
Technical Summary
Programming Languages: PHP, Python, Ruby, Perl, Java, C, C++
Frameworks: Zend Framework, Ruby on Rails, Pylons, Django
Source Configuration Management: Perforce, Git, Subversion, CVS
RDBMS: MySQL, PostgreSQL
HTTP Servers: Apache, Lighttpd, Nginx
Operating Systems: Linux, FreeBSD, Mac OS X, Windows
Misc: xUnit, Continuous Integration, Ant