Please note: the information in this résumé is not necessarily being kept up to date since I am not currently looking a new position or contract.


I have been developing software and administering systems professionally for over seventeen years, and as a spare time passion for many years more. Industries I have worked in include health care, digital media distribution, video games, stock market, and government, using many programming languages (ranging from the highest to the lowest level), web development stacks, database management systems, and platforms. My work includes leading development teams, developing highly scalable distributed systems, low level optimized audio and image transcoding modules, video game mechanics, mobile middleware, and web and database application development and deployment. Personal interests include functional programming, audio processing, and transit/bicycle infrastructure. As such, I bring with me wide-ranging expertise, and I will enthusiastically adapt to any new technological environment.


  • Programming Languages:
    Haskell, C#, C, C++, Java, Python, PHP, Ruby, Scheme, Perl, i386 assembly Language
  • Development for Operating Systems:
    GNU/Linux, Mac OS X, Microsoft Windows (Native Win32 and .NET CLR), various Un*xen, Symbian, MS-DOS
  • Web Development:
    Yesod, Elm, ASP.NET, PHP, Flash, Java (Servlets, JSP, EJB, Applets), Ruby on Rails, ASP, CGI (in Perl), Cold Fusion, HTML+CSS+JavaScript
  • DevOps and Sysadmin:
    AWS (EC2, VPC, S3, Elasticache, RDS, Route 53, CloudWatch, CloudFormation, IAM, SES, SQS, SNS), Docker, Kubernetes, Terraform, Ansible, Chef, SaltStack, general Un*x/GNU/Linux system administration, web/application servers (Yesod, NGINX, Apache, Microsoft IIS, Jakarta Tomcat, JBoss), mail servers (Sendmail, Exim, and Postfix MTAs, plus POP3 and IMAP), DNS (BIND name server), file servers (Samba, FTP, SFTP), VPNs, firewalls
  • Database Development and Administration:
    PostgreSQL, Microsoft SQL Server 6.5 - 2005 (T-SQL, OLAP), Oracle 7.3 - 8i (PL/SQL), MySQL, Microsoft Access
  • Graphics APIs:
    OpenGL, Renderware Graphics (PC, Xbox, PS2, Gamecube), Direct3D, Maya (MEL) scripts, Photoshop plugin development
  • GUI Frameworks:
    Win32 API, MFC, X Window System, wxWindows, Java AWT/Swing
  • Mobile Development:
    Symbian, WAP, WML
  • Video Game Development:
    PlayStation 2, Xbox, Nintendo GameCube, Nokia N-Gage, PC, Web


Jul 2012 - Present FP Complete, San Diego, California
Haskell developer and DevOps engineer (Contract, Telecommute)

  • Technologies: Haskell, AWS, Docker, Ansible, Ubuntu, PostgreSQL, etc.
  • Maintainer for the Haskell Stack build tool.
  • Haskell development for clients.
  • DevOps for clients.
  • Security, containerization, and scalability architecture and implementation for a web-based IDE that allowed arbitrary server-side code execution.

Sep 2005 – Oct 2012 INgrooves Fontana, San Francisco, California
Principal Software Engineer (Contract, Telecommute)

  • Architect and implement numerous subsystems of a distributed, highly scalable digital media management and distribution system.
  • Lead and manage engineering teams.
  • Automate operation of a previously manually operated system, intelligently distributing tasks over a cluster.
  • Improve audio transcoding subsystem implemented in C++.
  • Increase scalability by improving distribution of work over cluster and optimizing C# code, SQL queries, and database model.
  • Create flexible system for generating partner-specific metadata formats, now used for over 500 partners.
  • Design and Implement REST API for partners to hook into our system.
  • Implement ASP.NET web interface additions and improvements.

Oct 2004 – May 2008 Ian Thompson, Parker Island, B.C.

  • Caretaker for a 19-acre property on a small island. Duties include general yardwork, repairs, and maintenance.

Nov 2004 – May 2005 Omega X Wars, Columbus, Ohio
Game Programmer (Contract, Telecommute)

  • Creating Java server and Flash network API for a massively multiplayer online game.

Dec 2004 – Jan 2005, Taiwan
Web/Database Developer (Contract, Telecommute)

  • Programmed, created database, and created elements of the graphic design for a, web site that connects students with language teachers in Taiwan.

Sep 2003 – Jan 2004 Blue Shift Canada Co., Victoria, B.C.
Game Programmer
ESPN Major League Baseball (PS2)

  • Improved PS2 texture compression, provided programmer and technical support to 3D artists, managed art data.

May 2003 – Aug 2003 Apex Reforestation, Prince George, B.C.
Silviculture (Seasonal)

  • Brush clearing in northern British Columbia.

May 2002 – Apr 2003 Exile Interactive Inc., Parksville, B.C.
Junior Game Programmer
Sega World Series Baseball 2K4 (Xbox, PS2)

  • Wrote UI of and maintained a multi-platform texture compression tool.
  • Created a multiplicative-to-subtractive lightmap converter.
  • Maintained and modified PS2 texture compression codecs.
  • Ported a stadium viewer to Xbox and PS2 and added features.
  • Optimized art asset version control system.
Exile Baseball Demo (PC, NGC)
  • Defined project structure, setup version control and Wiki Web (collaborative web-site), setup VPN for off-site employees, implemented controls, camera, HUD, audio, and event system on PC and Gamecube.

Sep 1999 – Apr 2002 Success Information Systems Ltd., Victoria, B.C.
Managing Partner and Lead Web/Database Programmer/Technical Architect (Web)

  • Lead developer of team that developed a J2EE (JSP, Servlets, EJB) web application for iPlanet Application Server providing the front-end for administering the system data in an Oracle 8i database.
  • Designed and implemented a reusable framework for building web applications that front a database.
  • Oracle Database Engineer for the project.
  • Setup and day-to-day running of Sun development and production servers, numerous Oracle tasks, PL/SQL development of stored procedures, CFML (Cold Fusion) development, development of scripts (Python, Perl, Unix shell scripting) to automate tasks such as nightly FTP transfers.
FroZen Dirt Media Corporation (Mobile Phone/J2EE)
  • Setup the development environment using Jakarta Tomcat (Servlet engine) and Jboss (EJB server) and production environment using iPlanet Application Server.
  • Designed a multi-tiered application architecture for wireless services.
  • Developed Java Servlets, Enterprise JavaBeans, and server application written in Java.
  • Designed and implemented a database using Oracle 8i. Wrote Servlets that generate Wireless Markup Language for communication with mobile phones and other wireless devices.
  • Designed an XML based protocol for communication between client and server.
BC Fisheries (Web)
  • Setup development environment using ServletExec and Jetty, created coding standards, frameworks, etc.
  • Managed five person team of programmers writing a Java Servlets based web application for maintenance of data in an Oracle database.
  • Developed Java Servlets.
Encorp Pacific (Access)
  • Database Engineer for the project.
  • Modified an existing application to use a Microsoft SQL Server 7.0 database inplace of a Microsoft Access MDB.
  • Wrote code which automatically manages the links to SQL Server in an Access front end database.

May 1997 – Feb 1999 Zerius Development Inc., Victoria, B.C.
Web/Database/Game Programmer
Forest Renewal B.C.

  • Searched for and corrected anomalies in the project tracking system Oracle database and found/repaired their root causes. Developed complex dynamic HTML forms using ASP and JavaScript. Helped to implement a multi-tiered web-based reporting system using ASP, Access, and Oracle.
Ferguson Fractal
  • Lead developer for web application with user security, preferences, and portfolio system using Apache mod_perl, C, and a MySQL database, running on Linux.
  • Designed data model.
Catalyst Wars (PC)
  • Ported to Windows and Linux from Macintosh, graphics coding, gameplay.
Canadian Stock Market Reporter Inc.
  • Numerous behind-the-scenes and front-end CGI programs for, including parts of the portfolio system, all of Dataline and constantly updating stock tickers on sites such as and
  • Wrote code to stream stock market information from NAQ satellite feed to flat file database running on Solaris.

May 1997 RankTracker, Victoria, B.C.
Web Programmer (Contract)

  • Developed a web-based tool that automatically queries the most popular search engines in order to aid a web master in determining how easy his web site is to find, and to improve the search results.
  • Implemented as a CGI script written in Perl.

May 1995 – Apr 1997 Hyperion Business Corporation, Victoria, B.C.
System Administrator and Web Programmer

  • Developed CGI programs in Perl and designed web sites. Administered a Digital Unix (OSF/1) Internet server.
  • Installed and managed Apache web server, sendmail MTA, wu-ftpd FTP server, Majordomo mailing lists, and many others.
  • Setup secure web server with Stronghold.

1995 Canadian Information Processing Society, Victoria, B.C.
Web Designer (Contract)

  • Created prototype for web version of the CIPS newsletter and demonstrated it at a meeting.

1992 Stellar Systems Group, Inc., Victoria, B.C.
BBS System Operator (Contract)

  • Setup and maintained a BBS for employees to access their e-mail and the network from offsite and home.

Personal Projects

I have also completed many personal software projects, some of which can be found at my web site ( These include:

  • (1996-2002) Vocoder (voice transformer) written in C.
  • (2003) Browser-based game written in Python using OpenGL and compiled to the Java Virtual Machine
  • (1996) Modular sound synthesis applet/application written in Java with an object-orientated interface.
  • (2005) Scripted MIDI file generator implemented as a domain-specific language in Ruby, created to aid a blind person in his music composition.


Sep 1995 – Dec 1997 University of Victoria, Victoria, B.C.

  • Completed 2nd year Computer Science with 7.14 (A-) GPA.


Sep 2018 - present Southern Gulf Islands Emergency Program, Mayne Island, B.C.
Duty Officer

  • Monitor pager and emergency radio during duty weeks, and help establish and run Emergency Operations Centre in case of emergencies.

Sep 2019 - present Mayne Island Pathways And Trails Association, Mayne Island, B.C.

  • Member of the board of directors.

Aug 2019 - present Mayne Island Parks and Recreation Commission, Mayne Island, B.C.
Trail guardian

  • Help to maintain parts of Mayme Island's trail network with my family.

Mar 1999 – Aug 1999 Auroville, Tamil Nadu, India
Web/Database Programmer, Network Engineer

  • Spent 6 months in this international township in southern India.
  • During this time I volunteered to set up Linux-based network servers and firewalls, train people to write web applications, and at a tree nursery.


  • Dual Canadian/Dutch citizen, which allows me to live and work throughout the European Union and Canada.
  • Speak and understand Dutch in addition to English.
  • Father of twin boys.
  • Avid bicyclist, kayaker, hiker, camper, and traveller.