Professional Objective
I am a skilled systems architect and project leader with
20 years' experience creating software and 9 years' experience
planning, leading, co-ordinating, and directing a team. I have a
broad base of technical knowledge and excellent people skills,
and am always looking to learn new things and meet new
challenges.
Management Skills
Administrative: Developing project plans, Writing funding proposals, Budgeting, Managing funds, Delivering on commitments, Meeting deadlines.
Leadership: Supervising and focusing teams, Creating culture change, Promoting empowerment, Team building, Creating a shared team vision, Strategic planning.
Computer Skills
Programming Languages: Java, Python, C, C++, Perl, bash, awk, sed, Javascript, SQL.
Java/J2EE: Servlets, EJB, JSP, Custom Taglibs, JSTL, JDBC, JNDI, RMI, JAXP, Model 2, Struts, Blueprints, Applets, Swing.
XML: SAX, DOM, XPath, XSL:FO, XForms, SVG, XSLT, XML-RPC, SOAP.
Server Administration: Apache, Weblogic, Oracle AppServer, Tomcat, Zope, SMB/Samba, POP3/IMAP Mail Servers, NTP, Mixed Linux/Solaris/Windows/Novell Network, Cross-system log file integration, Ongoing security audit, System Monitoring.
Methodologies: Continuous Integration, Process Control, n-Tier Distributed Computing, Nonboolean text search, Artifical Intelligence, Model-View-Controller, Extreme Programming, Design Patterns, Aspect-Oriented Programming, Multi-threaded Programming, Object Oriented Design, Web Services, Open Source.
Process and Change Management: Source Code Management, Issue Tracking, Automated Continuous Builds, Attribute-generated Artifacts, Quality Metrics, Automated Deployment, Automated Testing, Performance Monitoring, Logfile Generation and Analysis.
Analysis: Requirements Gathering, Writing Specifications, Modelling (UML), Process Reengineering, Test Plans, Presentations.
Research Skills: Developing and Testing New Technologies, Identifying Opportunities Provided by New Technologies, Finding Options in Existing Technologies, Discovering Causes and Solutions for Obscure Bugs.
Artificial Intelligence: Neural Networks, Expert Systems, Natural Language Processing, Fuzzy Logic.
Documentation: Publications, Code Documentation, Training Manuals, Wiki Maintenance, Web site Maintenance.
Employment History
Senior Developer
Avue Technologies
August 2001-Present
Process Designer, System Architect, J2EE Developer,
Test Engineer, Network Administrator, and Change Agent.
Member of a team that provides a human resources web
application for various U.S. government agencies.
Projects:
- Created a continuous integration and release
process that allows a sustainable schedule of new stable
releases every week and bug fix releases every day or
two.
- Created a change management system that allows
exact control of code changes and associated issue records
that are promoted to each environment and to each release.
- Ported a 140,000-line application from Weblogic to
Oracle App Server with a 2-week deadline.
- Set up a system of secure transfers between systems
and networks to allow critical metrics such as CPU usage,
cluster behaviour, and free memory to be monitored from a
central location.
- Wrote a Python script to emulate a web browser in
order to create an archive of all of the dynamically
created HTML and PDF content of Avue.
- Wrote a system which pulls all of the Job
announcements off of a government web server, extracts data
about each job that is then stored in a database, and emails
former applicants whose profile matches the job
requirements.
- Created a system whereby applicants can publish
their own resume site.
Achievements:
- Reshaped the source code management, release
strategy, performance monitoring, bottleneck identification,
and deployment abilities of the Avue Technologies
web application.
- Introduced many architecture improvements to
Avue's J2EE system.
- Automated systems so that server environments
operate with a minimum of user intervention.
Systems Architect
University of British Columbia Student Services
January 1998-September 2001
Member of a team that created a three-tier J2EE
system for faculty, staff, and students
at the University of British Columbia. The client side is
HTML/JavaScript, Java Applets, and a Java Application. The
web tier is Apache and Weblogic hosting Servlets and JSPs.
The app tier is Weblogic Application Server serving EJBs.
The database is Oracle.
Projects:
- Created a front-end client applet.
- Designed and wrote an interprocess communication
system which used custom marshalling services
to provide three tier application services. Eventually this
was replaced by an Application Server.
- Created a continuous integration and release
management system
- Created a regression testing and load testing
environment using OpenSTA
- Using Weblogic's ZAC and InstallAnywhere, created
an automated application distribution system.
- Using Python, created a performance monitoring
tool with live graphing on the web.
Achievements:
- Reshaped the source code management, release
strategy, bug tracking, performance monitoring, and update
delivery of the UBC Student Services web application.
- Introduced Debian Linux servers
and Solaris servers into the development environment and
integrated them into a
mixed Novell, NT, and HPUX environment.
Team Leader
UBC Faculty of Law Artificial Intelligence Research
(FLAIR) Project
1990-1997
Member of a research and development team discovering
and applying new computer technology, particularly artificial
intelligence techniques, to legal research, ultimately
developing and shipping a Win32 commercial product.
Projects:
- Wrote a high speed non-boolean text retrieval
system using the Vector Space Model.
- Helped write a system to automatically categorize
and disambiguate terms in legal text. Terms are divided
into legal terms, cited cases, cited statutes, and facts.
Each category has unique methods for finding synonyms.
- Created a system using these newly researched
technologies to automatically mark up a legal document with
SGML in each of the four categories: case, statute, legal term,
and fact. The SGML contained a canonical form for each phrase
and, in the case of cited cases, provided a hyperlink back to
the original judgement.
- Worked on a system to identify similar statutes
between jurisdictions and across time.
- Worked on a system to automatically identify how
a judge was citing a case, whether they were overruling it,
distinguishing their case from the cited one, or any of
several other types of citation.
- Designed and implemented a custom database system
composed of a combination of inverted indices, hash tables,
and specially sorted tables laid out in a particular way on
a CDROM such that it could handle a query on tens of millions
of records using fuzzy text matching and return results in a
few seconds.
- Designed and implemented a build system to create
custom Very Large Databases composed of tens of millions of
records optimized for retrieval time. The system was an early
example of Grid computing. Databases took over a week to
build, with various machines joining and dropping out of the
build process during that time.
- Developed a source code management and continuous
build system for a multiplatform C and C++ codebase.
- Member of the commercialization team that translated
the research product into one that could be marketed.
Achievements:
- When the project was about to be cancelled due
to financial exigencies, took on the task of analysing
financial position and forecasts, thus ensuring the project
continued.
- Identified how the culture of the team was
optimized for research, and moved the team to a culture
which was optimized for delivering a product.
- Produced a novel method of retrieving data
from a CDROM, for a which a patent application was made.
- Identified new products which
these technologies could realize, and refocused the team
to producing them.
- Produced several articles on this work.
Systems Analyst
Target Software
1989-1990
Launched a new consulting arm for this value added reseller.
Projects:
- Developed Code Generation Templates for SBT.
- Wrote Informix SQL programs.
- Modified Fourgen Accounting systems.
- Installed and supported UNIX systems.
Owner
Stainless Steel Software
1984-1989
As an independent computer consultant, I provided
computer-related services to my clients. Clients included
several courier companies, a computer VAR, a number of engineering
firms, a software developer, and one of the world's largest mining
companies.
Projects:
- A communications subsystem for a point of sale system
for retail chains.
- An object-oriented database with a multidimensional
spreadsheet.
- An automated document transfer system.
- A vision recognition system.
- A low-level disk manager for the Amiga.
Open Source Projects
Founding Member
Apache Ant Project Management Committee
Project Lead
RRFiller Sourceforge Project
Contributor
Subversion Version Control System
Contributor
W3C XForms 1.0 Candidate Recommendation
Publications
Education
- Bachelor of Technology. Completed Significant Coursework
British Columbia Institute of Technology - Graduate Level Computer Science. Audited several courses
University of British Columbia
Miscellany
Excellent references available on request