Resume Overview
- Consulting
- Tech Skills
- Experience
- Education
- Certifications
- Training
- Interests
- I am a software developer with a decade of industry experience in a variety of programming languages, system architecture and design, software testing, database/system administration and development methodologies.
- Through my work experience and my MSc. in Software Engineering at the U of C, I have enhanced my project management, teamwork, and communication skills, while acquiring numerous technical skills and industry certifications.
- Check out my latest personal project, the Baby Name Map. I am not currently available for consulting work on a part-time basis. More details...
Work Experience
Development Team Lead at Petris Technology (December, 2004 to present)
Leadership, Mentoring, and Coaching
Effectively mentored and coached the team in the Scrum development process using my facilitation skills as a certified Scrum master.
- Established an effective and creative team environment based on shared commitment to a common goal. The team was able to significantly improve productivity; delivering real value to clients.
- Moved development to a bi-weekly cycle with clear reporting of team progress using Scrum burn-down graphs. Facilitated sprint planning meetings to focus the development effort on the highest priority items. Led demonstration meetings at the end of each iteration to showcase delivered functionality and gather further feedback.
- Adopted daily peer review of code to ensure high product quality and quickly cross-train the team. Held sprint review meetings to encourage continuous improvement from the entire team.
Architecture and Technical Advances
Championed many improvements to the architecture and design of the DataVera data-quality application. Provided effective and compelling implementations of key features including:
- Integrated web technologies such as Google Web Toolkit to provide a web-based user interface for report viewing. Also added Google Maps features to provide a visual means of matching geographic lines and points from client data sets.
- Added a custom data query language to our application using JavaCC to define the parsing grammar. Wrote effective JUnit tests to provide good coverage of the parsing and execution of the queries.
- Greatly increased the portability of the application by implementing a database-backed file system (DBFS) that allowed for full multi-user access to shared projects. By removing the need for a shared network drive, our sales team was able to offer clients a wider range of multi-user installation options.
- Led the design and implementation of a job scheduling engine (server-side) by integrating the Quartz open-source scheduling engine to effectively meet client requirements for reliability, performance, and ease of administration.
- Adopted a database-independent approach to managing our application's DDL & SQL scripts that let us target Oracle, SQL Server, and MySQL from a single repository of schema and data. Contributed many enhancements I made back to the Apache open-source project DDLUtils.
- Significantly enhanced the graphical user interface of the DataVera application to provide a professional look and ensure ease of use. Highlights included an application taskbar, windows menu, animated effects, an application setup wizard, and Windows tray icon integration; as well as improvements to the Swing thread usage for responsiveness.
Development Team Toolsmith
Implemented key process improvements for the development and test teams in my role as toolsmith. This led to a substantial increase in developer productivity and software quality.
- Configuration Management: Selected, installed, and configured Subversion for version management. Introduced branching techniques for managing release and development code streams concurrently. Demonstrated and provided training for other team members during adoption phase.
- Continuous Integration: Implemented a Cruise Control server to build the application and run unit tests on every commit. Nightly builds generate Javadoc documentation, integration test results, code coverage, and other quality reports.
- Automated Build & Deployment: Fully automated the tag, build, test, installer generation, and deployment steps for our application. Introduced obfuscation, XML encryption, and native Windows executable generation to our deployment.
- Quality Assurance: Introduced effective test techniques such as mock objects and acceptance test automation. Implemented automated error reporting tool to gather QA and client feedback quickly and efficiently.
Systems Analyst at Pason Systems (April, 2001 to November, 2004)
Technical Architect of Entrprise Messaging Solution
Team leader on an Enterprise Application Integration (EAI) project involving remote oil-field data transmission to Pason's central DataHub application. Key requirements included greatly increased data transmission rate, low latency, bandwidth conservation, and guaranteed delivery.
- An effective team leader for a group of seven developers which required project management as well as mentoring skills
- Adopted an iterative project management approach (Scrum) which allowed for frequent delivery of working software and let the team respond quickly to changing requirements
- Designed an object-oriented architecture using enterprise messaging (J2EE/JMS) to meet the project requirements, ensure service availability, and allow for future scalability
- Led implementation and testing of the application using Agile techniques such as pair programming, continuous integration, and thorough unit testing
Maintained Critical Data Warehouse
Technical leader of the developer group for the Pason DataHub. This product is the central data warehouse for all drilling data collected by the Pason electronic drilling recorder (EDR) at rig sites. In production for nearly five years now, the system provides timely access to drilling data, regulatory forms, and other rig data to drilling contractors and lease operators.
- Gained valuable experience adding new functionality and maintaining existing features in languages such as C, Java, Python, and Perl
- Was the primary database administrator (DBA) of production MySQL databases with hundreds of gigabytes of data employing multiple layers of redundancy including novel archival, clustering, and replication schemes
- Led projects to horizontally cluster the MySQL database, improve message-processing performance by an order of magnitude, modernize the application's authentication layer
- Worked closely with IT department on procurement, installation, setup, deployment, and management of production systems in a data-center co-location facility
- Gathered requirements from customers, designed, implemented, tested, and deployed (via Java WebStart) a desktop payroll manipulation program which accessed the Pason DataHub for employee data
Improved Development Processes
Drove software engineering process improvement within Pason's R&D group resulting in improved productivity and software quality.
- Introduced new configuration management (CVS) and software engineering processes such as Scrum and test-driven development (TDD) to product development at Pason
- Became project maintainer of an open-source project management tool to provide better tracking and oversight of project progress within the R&D department
- Initiated lunch-time seminars for developer knowledge development by giving a talk on Agile methodologies and holding a workshop on test-driven development
Application Developer at Alberta Research Council (May 1999 to April 2001)
Built Image eCommerce Site
Designed and implemented an e-commerce web site for BCL Landview Systems allowing for electronic purchase and delivery of aerial photography.
- Designed the system architecture and security measures
- Coded ASP/VBScript pages for access to SQL Server and FoxPro databases
- Integrated a Java applet and servlet based printing subsystem for the images
- September 2000 through April 2001 (8 months, part-time during school)
Enhanced Java-based Patient Record System
Designed, implemented and tested the image management module of Clinicare Corporation's computer-based patient record system. (WebCPR)
- Used Java's RMI, JSSE, JCE and JAI toolkits to provide security and advanced imaging features for WebCPR, a distributed Java system
- Generated quality technical documentation of all design and architectural decisions using the UML modelling language
- May 1999 through August 2000 (16 month Internship, full-time)
Education
Master of Science (MSc) in Software Engineering (MSc.)
- Gained exposure to the latest software engineering techniques such as Agile and Aspect-Oriented Programming
- Graduate program in the department of Computer Science at the University of Calgary
- Supervised by Dr. Robert Kremer: Associate Professor, Computer Science
- Graduated from U of C on June 6, 2006
Bachelor of Science Degree in Computing Science (Spec. Cert.)
- Participated in the Computing Science Internship Program (16 month work term)
- Graduated from the University of Alberta (May, 2001)
Bachelor of Science Honours Degree in Microbiology (BSc.)
- Graduated with First Class Honours from the University of Alberta (May, 1998)
- Achieved Dean's List Academic Standing ('95,'96,'97,'98)
Relevant Skills
- Leadership skills: significant experience as technical lead and mentor for development team of 8-10 developers. Applied Scrum project management techniques to projects in the role of Scrum master
- Teamwork skills: team experience with large organizations and small groups in both leadership and team member roles
- Communication skills: experience with formal presentations, speeches, technical writing, research papers, and effective team communication
- Technical skills: please see my tech skills page for a complete list
Significant Achievements
- Published IBM developerWorks tutorial on isolated unit testing with the Derby database.
- Sun Certified Java Programmer, Red Hat Certified Engineer, and MySQL Certified Professional
- Contributer of custom Swing desktop components to the Swing Labs project hosted Sun Microsystems.
- Past maintainer of the open-source project: Outreach Project Tool
- Peter Lougheed Leadership Scholarship (U of A)
- Max Wyman Memorial Leadership Scholarship (U of A)
- President's Entrance Award for Leadership (UBC)
Personal Interests
- Java, Ruby, and Linux software, particularly open-source projects.
- Hiking, mountain-biking, kite-surfing, telemarking, snowboarding, fitness, yoga, and travelling.



















