James Henderson

Toronto ON
(647) 876-5705


Software developer with keen interest in developing top quality code to solve big problems. Known for fully researching best practices and putting in the effort to design reliable and maintainable code. Like to write functional style code using immutable data structures where practical. Learning about functional languages such as Scala and Haskell. Interested in working with other creative and passionate developers.

Technical Qualifications

  • GNU/Linux, Windows, UNIX
  • Domain Driven Design
  • Java, Python, C, JavaScript, .NET, SQL, Bash, HTML
  • Git and SVN
  • Experience with GUI and backend development

Job Skills

  • Quick to learn and adapt to any new program or language
  • Always looking for the best way to do something
  • Easy to work with. Always tries to make the office a brighter place

Technical Interests

  • Functional programming
  • Immutable data structures
  • Test Driven Design
  • Projects with real world impact

Work Experience

Finance IT Core, May 2013 - Present, Royal Bank of Canada

  • Used principles of Domain Driven Design to facilite creating a shared model that both development and business could understand
  • Developed a RESTful API using Java
  • Performed front end design and development using HTML5 and AngularJS
  • Implemented Kerberos and SPNEGO based Single Sign On using Spring Security
  • Designed and implemented custom deployment software using Python, with the following features:
    • Full backup of every version upon update with easy rollback to any previous version
    • Very flexible and capable of deploying almost any sort of software
    • Recursive dependency resolution
    • Configuration templating and configuration inheritance to reduce duplicated configuration
    • Very fast, only limited by download speed from external servers
    • Simple and well documented command line interface

Product and Integration, July 2011 - May 2013, RuggedCom, A Siemens Business

  • Discovered and corrected security related issues before release, and led an effort to proactively improve code quality in order to avoid future problems
  • Introduced MinUnit for easy unit testing in C, and used a TDD approach for implementing several features
  • Performed feature design and specification using a spiral development model with well defined separation of requirements and design specification
  • Implemented features in C, Python, Javascript and YANG (a hierarchical data modeling language)
  • Automated integration testing system, providing daily development time savings of approximately four hours

GIS Development Team, Sep 2008 - June 2011, Sault Ste. Marie Innovation Centre

  • Created web application for looking up restaurant inspections using custom live search at http://inspectionresults.sdhu.com.
  • Set up and maintained reverse proxy using Varnish and FreeBSD
  • Worked with a team on a hospital infection control web application
  • Added features and cleaned up internal timesheet web application

IQ Development Team, Jan 2008 - April 2008, Sybase Inc.

  • Developed and tested Changes to Sybase IQ
  • Performed significant amounts of debugging under UNIX
  • Developed several scripts to increase efficiency

Quality Assurance, September 2006 - December 2006, RuggedCom

  • Developed & documented an automated test harness in Perl
  • Maintained several test scripts

Software Verification & Validation, Relay Engineering, and IT Desktop, September 2004 - April 2006, Research In Motion

  • Worked for 3 consecutive 4 month co-op terms
  • Went to England to work for 6 weeks as part of last term

Hobbies and Other Tidbits

Active person who enjoys playing hockey, going camping or snowboarding on the weekends. Grew up on a farm near Sault Ste. Marie. Went treeplanting while in University.


  • Bachelor Of Computer Science Honours Co-op, University of Waterloo
    • Relevant courses
      • Introduction to Computer Graphics
      • Artificial Intelligence
      • User Interfaces
      • Operating Systems