Jon Sangster

Computer Programmer

  • Vancouver, BC
  • (778) 877–4682


  • 15 years of professional programming experience, with particular knowledge in Ruby on Rails, Java, C, Haskell, and agile project management.
  • Pursuing opportunities to make significant contributions, leading a small team in agile development while mentoring junior developers.

Technical Skills

  • Scrum
  • Agile Alliance “Certified Scrum Master”
  • Kanban
Operating Systems
Web Servers
Version Control

Work Experience

Traction Guest Senior Ruby Engineer

  • Time will tell.

Spark RE Senior Developer

  • Sole senior developer, leading a team of four intermediate and junior developers.

  • Instituted a project management framework based on Agile methodologies, to support the needs of the growing development team.

  • Created a universal “spreadsheet importer” for Ruby on Rails, allowing users to import any number of arbitrarily-related records via a single spreadsheet, into a PostgreSQL database. This importer featured a React UI, dynamically generated from the Rails' models and the associations between them.

  • Refactored the application's E-Commerce software with a “line items” feature, allowing users to apply any number of taxes, discounts, addons, and other modifications to their inventory.

  • Developed a Node.js microservice, employing headless Chrome, to convert webpages into PDFs, maintaining their look and feel.

  • Developed a diskless “bulk download” microservice, allowing users to request dynamically-generated archives of their project files.

Ballistiq Digital Inc Senior Developer

  • Developed software for a variety of high-profile clients, including Autodesk, NVIDIA, Riot Games, Luxion, and HP.

  • Created a conference management application which coordinated registration, housing, tax information, seminar and class enrolment, childcare, custom discounts, meal plans, and PDF name-tag generation for thousands of attendees.

    This was a Ruby on Rails application backed by a PostgreSQL database, with a UI implemented with a highly customized version of Active Admin. Offline processes, such as name-tag generation and email dispatch were delegated to Sidekiq Pro via Redis.

  • Architected an internal ontology server with Adobe Experience Manager to allow a large client to manage shared assets across their global platform.

  • Implemented an ontology server for a client with many departments that independently create marketing and advertising websites to act as a “single source of truth” to ensure these sites all maintain up-to-date copy and assets.

    This is a custom node.js backed by a MongoDB NoSQL database. It included custom middleware to Authenticate users against the organization's Active Directory server via SAML.

  • Adapted Shopify's storefront to sell digital—instead of physical—goods. This included a custom API server to automatically deliver product keys to end-users upon payment verification, as well as an “embedded Shopify app” to allow the client to manage their serial code inventory directly from Shopify's dashboard.

    This project required a custom “serial-code provisioner” service implemented in Ruby on Rails and backed by a MySQL database. Serial codes were delivered to end-users with Mandrill.

    Administration of the serial-code provisioner was implemented through a custom Shopify Plugin, also written in ruby. This allowed administrators to securely manage their inventory in the remote application directly from their Shopify console.

Unique Ltd Senior Developer

  • Led a Scrum project to replace a disparate collection of legacy REST services with a unified Ruby on Rails service.

  • Implemented a service to communicate the volumetric data returned by millimetre wave scanners to that customer's profile, allowing E-Commerce partners (such as Levi's or Bloomingdale's) to pre-select the garment size which fits them exactly.

  • Created an E-Commerce Wordpress plugin to enable REST access to an the automated garment-fitting service.

  • Incrementally improved legacy REST services to meet changing business requirements.

  • Developed an AngularJS extension to allow partners to embed a profile creation wizard in their own E-Commerce site, allowing their users easy access to our garment-fitting service.

NTT Data/Keane Senior Developer

  • Implemented control and user-interface software so the custom hardware our client, Pason Systems, created for the operation of land-based oil derricks, including the Automatic Driller, Electronic Drilling Recorder, Enhanced Pit Volume Totalizer, Rig Display, and SideKick.

  • Created many custom, skeuomorphic UI widgets to emulate the physical equipment which our Java applications replaced.

  • Led a Scrum project to replace a simple drilling recorder with a touchscreen charting interface that supports multiple lanes and several traces per lane.

  • Developed a module for the “Automatic Driller” system to safely stop the drilling operation if the Driller fails to stop it before the Kelly drive reaches the drill floor.

  • Held the role of “Backup Client/Server & Reporting Domain Lead:” the first consultant to become a Backup Lead for one of our client's domains.

CGI Group Inc Consultant

  • Code Support on five UNIX applications and Application Support of nine UNIX applications and one Windows application.

  • Developed a Java service to incorporate legacy telecom systems into Bell's One Bill service. This project earned a perfect 10/10 in each of the twenty categories of the Client Satisfaction Assessment Program (CSAP) report. Recognized via the Kudos program for my work on this project.

  • Involved in the local Java Special Interest Group and occasionally presented a seminar on introductory UNIX/Linux skills to newer employees.

St. Francis Xavier University Technical Support

  • Provided support for all forms of technology on the university campus.

  • Helped in 2005–2006 to launch the WebFX Open Source initiative, which updated all the lab computers on campus to dual-boot Linux along with Windows XP.

Open Source Contributions

A Haskell library extending XMonad, to provide users with the ability to create keyboard-shortcuts that perform different actions, depending on what application has focus.
A RubyGem to create ffmpeg filter graphs, to facilitate complex audio/video processing on Ruby on Rails application servers.
Convert images to a format suitable for the PCD8544 LCD controller.
A convenience library for developing projects with AVR microcontrollers.
A machine which automatically waters and plant and controls its growlight on a schedule.
A toy Pong “arcade machine” using an Arduino, the LCD screen from the indestructible Nokia 5110, and simple components.
A RubyGem which provides a simple API for parsing General Transit Feed Specification (GTFS) files.
A Rails Engine which adds a RESTful API for GTFS feeds to a Ruby on Rails host application.
A RubyGem for Ruby on Rails to render JSend-compliant JSON responses.
A Textile parser for CodeMirror, the in-browser code editor.
A RubyGem which generates Perfect Paper one-time passwords.


  • Completed 108 credits toward a Bachelor's Degree in Computer Science.
  • Dean's List, 2006–2007
  • Summer Research Assistant of department chair, Dr. van Bommel.