Experience
Independent Software Developer
Kitchener, Ontario
January 2004 - present
- designed a data representation language and implemented
translators between it and XML
- finished designing an object-oriented programming language
and implementing most of a compiler and part of the common
library for it
- implemented rudimentary versions of several utilities for
the programming language, including a message catalog
builder and a documentation generator
- designed and implemented a custom television schedule
generator
Intrexa/Global Beverage Group
Kitchener, Ontario
Software Architect
January 2001 - December 2003
- architected the Java framework used to implement all
server-side applications
- designed and implemented a framework extension that allows
attributes to be added to business objects after an application
has been deployed
- designed and implemented a framework extension that allows all
operations to be forwarded transactionally to one of several
different SOAP-enabled legacy systems
- designed and implemented several key subsystems, including
the security, input validation and generic persistence
subsystems
- devised and implemented a wide variety of general-purpose Java
classes
- designed and implemented an automatic code generation system
using XML and XSLT that supports regeneration, allowing
global changes to be propagated automatically to existing
classes
Mortice Kern Systems/Vertical Sky
Waterloo, Ontario
Software Developer
February 1999 - January 2001
- designed and implemented all of the commands and views for the
product-independent security subsystem, as well as their
command line and Swing GUI interfaces
- designed and implemented several major Swing GUI interfaces for
the Source Integrity version control product
- designed and co-implemented a Java application that provides a
secure means of deploying Web content to remote machines using
configurable transmission and copying protocols
Solect Technology Group
Toronto, Ontario
Software Developer
October 1997 - February 1999
- senior member of a team of several dozen developers building
IAF/3, a distributed, object-oriented Internet customer care
and billing system for large ISPs
- architected and designed the rating and billing subsystems and
implemented the rating subsystem
- created RML, a language for specifying Internet product pricing
and discounting rules, and implemented a parser for it
- specified several of the system's public CORBA IDL
interfaces
- designed and implemented all of the system's multithreaded
CORBA servers
- designed and implemented classes to isolate business classes
from all CORBA dependencies
- responsible for creating standards for and ensuring the
accuracy and consistency of all of the system's CORBA IDL
interfaces
- co-designed and implemented the system's security
architecture
- implemented and extended many common infrastructure
classes
- used the RogueWave Tools.h++ and ACE libraries extensively
Independent Software Developer
Kitchener, Ontario
November 1996 - October 1997
- designed, implemented and documented the C++
Filter Classes
library that provides a framework for classes that can be
combined in the same way that programs can be combined under
UNIX
- designed and implemented a collection of C++ string classes
and wrote an extensive set of test cases for them
- designed and implemented two
GUI applications
in Tcl/Tk, one of which can also function as a
WWW applet
- designed, implemented and documented
PreHTML,
an HTML preprocessor
- designed and implemented a pair of
Java applets
Sears Canada Incorporated
Guelph, Ontario
Programmer/Analyst II
June 1994 - November 1996
- member of a high performance team responsible for developing
and supporting a national financial planning and reporting
system that reduced a 2 day reporting cycle to less than half
a day
- architected a replacement for the system's online financial
report generation process that increased the number of possible
report types from 20-30 to over 500 while reducing CPU usage
by 66%
- designed and implemented a calculation engine for the new
report generation process that was 30% faster, more flexible,
and provided and ensured more accurate results than the
previous process
- designed and implemented a source code control and change
management system for all of the system's code, preventing
the simultaneous update or accidental deletion of a program's
source code and automating program installation
- designed, implemented and documented a report format editor
that greatly simplified the creation of reports involving
subtotals and other calculations