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.
Address: 629 Horton Bay Road, Mayne Island, BC V0N 2J2, Canada
Phone: +1 250 412 8807
Web site: www.epiphyte.ca
I have been developing and administering systems professionally for over fifteen years, and as a spare time passion for many years more. Industries I have worked in include 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 game development. As such, I bring with me wide-ranging expertise, and I will enthusiastically adapt to any new technological environment.
C#, C, C++, Java, Python, Haskell, PHP, Ruby, Scheme, Perl, i386
Development for Operating Systems:
Microsoft Windows (Native Win32 and .NET CLR), GNU/Linux, various Un*xen,
- Web Development:
Microsoft ASP.NET, PHP, Yesod, Java (Servlets, JSP, EJB, Applets), Ruby on Rails,
Un*x/GNU/Linux system administration, web/application servers (Apache, Microsoft Internet Information Services, Jakarta Tomcat, JBoss) mail servers (Sendmail, Exim, and Postfix MTAs, plus POP3 and IMAP), DNS (BIND name server), file (Samba, FTP, SFTP), VPNs, filewalls
Database Development and Administration:
Microsoft SQL Server 6.5 - 2005 (T-SQL, OLAP), Oracle 7.3 - 8i (PL/SQL), MySQL, PostgreSQL, Microsoft Access
OpenGL, Renderware Graphics (PC, Xbox, PS2, Gamecube), Direct3D, Maya (MEL)
scripts, Photoshop plugin development
Win32 API, MFC, X Window System, wxWindows, Java AWT/Swing
Symbian, WAP, WML
Video Game Development:
PlayStation 2, Xbox, Nintendo GameCube, Nokia N-Gage, PC, Web
Sep 2005 – present
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
Web/Database Developer (Contract, Telecommute)
- Programmed, created database, and created elements of the
graphic design for a myu.com.tw, web site that connects students with
language teachers in Taiwan.
Sep 2003 – Jan 2004
Blue Shift Canada Co., Victoria, B.C.
ESPN Major League Baseball
- 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.
- Brush clearing in northern British Columbia.
May 2002 – Apr 2003
Exile Interactive Inc., Parksville, B.C.
Junior Game Programmer
Sega World Series Baseball 2K4
- 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
- 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
- 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
- Setup the development environment using Jakarta Tomcat (Servlet
engine) and Jboss (EJB server) and production environment using iPlanet
- 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.
- 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.
- 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.
Forest Renewal B.C.
- Searched for and corrected anomalies in the project tracking
system Oracle database and found/repaired their root causes. Developed
a multi-tiered web-based reporting system using ASP, Access, and
- 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.
- 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
Canstock.com, including parts of the portfolio system, all of Dataline
and constantly updating stock tickers on sites such as www.transcanada.ca and www.bce.ca.
- Wrote code to stream stock market information from NAQ satellite feed to flat file database running on Solaris.
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.
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.
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.
I have also completed many personal software projects, some of which
can be found at my web site (www.epiphyte.ca/proj). These include:
- (under development) Group bulk order management web application, written in Haskell using the Yesod framework.
- (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.
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.
- Speak and understand Dutch in addition to English.
- Dual Canadian/Dutch citizen, which allows me to live and work throughout
Canada, the European Union, Aruba, and the Netherlands Antilles without
needing a visa.
- Avid bicyclist, kayaker, hiker, camper, and traveller.