My strength is seeing beyond the “full stack”; diving in to understand the details of OS implementation and Internet protocol behaviour or to untangle the hairiest operational mysteries, while looking outward to the motivations of the people making, using and paying for software-based systems.
I’ve worked on high availability monolith+microservice SAAS, multi-million user open source (Firefox and Thunderbird), high performance network services in C and C++, and access management at both the policy and network level. My career has ranged over Web security standards committees, network security, enterprise architecture, multi-tier applications, embedded microcontrollers, systems administration, and the human and organizational side of software development. I’ve been paid to program in Ruby, Elixir, JavaScript, Scala, C++, Java, C, Perl, and many others, on all the major OS platforms.
Work Experience
Senior Software Developer, PagerDuty, 2015 – present
- Made substantial changes to core data structures without downtime or incidents (splitting Services into Services and Integrations and splitting Alerts off from Incidents, if you’re familiar with PD)
- Led the design and implementation of team and role based permissions
- Implemented and advocated for OpenTelemetry-style structured logging, leading to significant improvements in understanding system behaviour during both normal operation and incidents
Senior Software Developer, Mozilla Corporation, 2011 – 2014
- Rewrote Firefox Add-on Manager database to use asynchronous and off-main-thread I/O, improving overall performance and eliminating user interface lag
- Significantly reduced the impact of add-on compatibility checks, based on telemetry instrumentation and analysis, and blogged about the results
- As a Firefox Toolkit peer, performed code reviews of patches submitted by other developers
- Mentored volunteer contributors through the process of learning to contribute code changes to Firefox and Thunderbird
Technical Architect, University Health Network, 2007 – 2011
- Managed team of 6-9 developers building and maintaining web and thick client Java medical records applications
- Designed and developed event-driven, rule-based clinical notification system
- Lead transition to agile (Scrum) project organization within software development team
- Lead technical architecture specification team for Greater Toronto area shared health record project, including working with architects from eHealth Ontario on technical strategy
Senior Software Designer, Atlantic Systems Group / Nevex Software Technologies, Inc. / Baltimore Technologies / Hewlett-Packard Company, 1998 – 2007
- Founding member of the OASIS SAML, WS-Security and WS-SecureExchange standards committees
- Technical Architect for Select Access (Access Management) and Select Audit (Log archiving and analysis for regulatory compliance)
- Developed and maintained portable, high performance, multi-threaded TCP/IP server and client code in C++ and Java
- Developed and presented pre- and post-sales customer presentations and training
- Participated in division- and company-wide architecture councils
- Provided technical leadership to team ranging from 5 to 15 programmers through many product release cycles
Senior Software Developer, Border Network Technologies / Secure Computing Corporation, 1996 – 1998
- System architect for the SecureZone firewall, a 20 person-year project to develop a next generation Internet security gateway
- Design, team leadership and implementation of the server side of the client-server administration interface for SecureZone (Perl/CORBA)
- Technical leadership of intermediate and junior developers
- BSDi (Unix) kernel development and debugging
- Added ESMTP and MIME-Multipart support to the ZMailer SMTP mail gateway for the BorderWare Firewall Server
Software Developer, Platform Computing Corporation, 1992 – 1995
- Software development, technical support and end-user documentation for LSF (Load Sharing Facility), a package for load monitoring, remote execution, and batch queuing of jobs on UNIX platforms
- Revision control, build and release management, and system and network administration on many vendor versions of UNIX
Software Developer, Sci-Tec Instruments, 1990 – 1992
- Embedded controller software development for Petro-Tag, a petroleum storage tank gauging system, and the Two-Axis Positioner, a lightweight, high-accuracy platform for aiming cameras and scientific instruments
Software Developer (contract), Robertson Stromberg, 1989 – 1990
- Design and implementation of a law library information system using the FreeForm 4GL with a Britton-Lee relational database system
Software Developer, Britton-Lee Inc., 1988 – 1988
- Development of a graphical, object-oriented language for database applications
Education
Bachelor of Science (High Honours), University of Saskatchewan, Department of Computational Science
Masters of Science, University of Saskatchewan, Department of Computational Science: “Extended Polymorphic Type-Checking”
Publications
Student paper award, 1987 Summer USENIX conference, for “RPCC: A Stub Compiler for Sun RPC”
“Perl and CORBA”, invited presentation at Perl Conference 2.0, August, 1998
Patents:
- System and method for controlling interactions between networks. January 2001: US 6182226, EU WO/1999/048261
- System and method for implementing a security policy. September 2002: US 6453419
- Generation and use of digital signatures. June 2007: US 7234060, EU WO/2002/005475
- Computer system security service. March 2009: US 7512965
- Computer system security service. June 2008: US 20080134286
- Computer system security service. July 2010: US 7757271
Interests
Curling, cycling, building and flying kites
References
Available on request.