Keywords:

Skills Listing
ESRI GIS API
Since: 2010

In response to customer demand, I began integrating ESRI GIS with our app at work for geoprocessing and visualize of data quality in a geographic context. The ESRI API is huge, but very powerful.
Google Web Toolkit
Since: 2008

I adopted GWT 1.5 with the Ext-GWT widgets for use on a web version of our main application at work. For the last few years, we've been primarily working on a Swing-based UI. However, customers were asking for a lightweight web interface to view project results. The Google Web Toolkit combined with the excellent ExtJS UI makes a powerful development platform. Particularly for a group of Swing developers, we're right at home in GWT's component model and outstanding server and client debugging from right inside Eclipse.
Ruby on Rails
Since: 2006

Always keen to learn new languages and frameworks, I chose RoR for a personal project of mine, the Baby Name Map. I was amazed that Rails let me build that site in under 40 hours, working part-time for a month.
AJAX
Since: 2006

I've gained experience using some great Javascript toolkits such as Prototype and Scriptaculous working with Ruby on Rails. As well, I used ExtJS extensively for my Baby Name Map. I've also experimented with Dojo, YUI, and GWT.
Google Maps API
Since: 2007

I played around with the Google Maps API when it was first relesed, however it was a couple of years before I found a use for it in the commerical product I was working on. I am familar with most of the API and can quickly generate professional looking websites and mashups using this technology. Here are some examples:



I also used Google Maps extensively for a personal project of mine: Baby Name Map.

CentOS Linux
Since: 2007

CentOS is a free clone of the Red Hat Enterprise Linux system. Many of the web application providers and hosting companies I work with now use it nearly exclusively as you get the power, stability, and security of RHEL without having to pay the licensing fees. I have experience with installation, configuration, and administration of CentOS 4 and 5; particulary with the x86_64 (64-bit) version for AMD 64 and Intel Xeon processors.
Ubuntu Linux
Since: 2006

Ubuntu has done an excellent job of creating an easy to use desktop Linux distribution. I have experience installing and configuring this OS, particularly on laptops where it really shines.
Ruby
Since: 2006

I am currently a Ruby newbie, but have been learning it as I pickup the Ruby on Rails web framework. So far, my background with the Python scripting language has made the learning curve quite easy. It is a nice language for a number of development tasks.
  Yourkit Profiler
Since: 2005

A commerical profiler for Eclipse which I have used from time to time. A useful tool when tracking memory leaks in Java.
Netbeans Profiler
Since: 2005

Even though I use Eclipse as my primary IDE, I always start up Netbeans for its profiler. Easy to use, with clear reporting and excellent responsiveness, this is the best free profiler available today.
Eclipse Debugger
Since: 2002

The Eclipse debugger is the best part of the IDE. Before Eclipse, I wrote Java programs in Emacs so the debugger was a revelation in control. I am now extremely proficient in its use and quirks.
Swing GUIs
Since: 2000

I have extensive experience in all aspects of Swing GUI development, particularly for deployment on Windows systems. My work at Intervera Data Solutions required that I take their GUI to the next level by:

  • introducing Windows desktop integration through the system tray
  • proper thread control using SwingWorker and Foxtrot
  • improved multi-document interface extensions like a Windows menu, taskbar, and status display
  • a complete setup wizard that used Java2D progress effects

This work resulted in a more reliable, better performing interface that was much more attractive to users.

Derby (Cloudscape)
Since: 2005

I have used this in open source projects as an embedded database and also for in-memory unit testing. It's a great contribution from IBM which enables even small, simple apps to easily integrate a database. It's also great for development as it matches the feature set of enterprise databases with a much smaller foot print. I wrote a tutorial on using Derby for isolated unit testing which was published on the IBM Developerworks site.
Enterprise Messaging Services
Since: 2003

I led the design and implementation of an enterprise messaging-based system at Pason Systems. I gained extensive experience in the best practices of design using asynchronous communications. The system I designed provided high-reliability and redundancy while still providing high performance. My choice of a Java Message Service (JMS) based system ensured vendor independence.
Windows XP
Since: 2004

While I used to a bit of a Linux zealot, the stability and ease of use of Windows XP are starting to grow on me as of early 2005. This is my primary development platform at Intervera.
Cruise Control
Since: 2005

Combined with Ant and/or Maven, this contious integration tool is excellent for ensuring compiliation or test problems with a commit are spotted quickly. We use this against our Subversion repository at Intervera for building and running unit/integration tests. The server is configured to handle all of our concurrent development streams. We execute unit tests on every developer commit and once a night, the longer running integration tests are run.
Maven
Since: 2005

A powerful build tool that also generates a wide variety of useful reports about a project. I particularly like all the code analysis plugins like CheckStyle, JDepend, and others. I adopted this build tool for the Java projects at Intervera.
Subversion
Since: 2005

This is a great version control system with excellent command-line tools and multiple GUI clients (TortiseSVN). We use this at Intervera for our configuration management. I installed, configured, and administer the repository. It's a great successor to CVS in that it's similar but doesn't have all of CVS' drawbacks.
Visual SourceSafe
Since: 1999

I can't remember the exact version, but I used this SCM tool at the Alberta Research Council in the late '90s. Overall, I was not impressed with this tool.
Perl
Since: 2001

The duct tape of the internet. A useful scripting language for quick jobs that I've used on many projects.
Eclipse
Since: 2002

Donated by IBM, this is now the premier open-source IDE for Java work. I've used this tool extensively on Java projects both at work and university. It has advanced nicely in the last few years.
PHP
Since: 2002

I now have a good deal of experience in PHP from my work on the Outreach Project Tool branch I am currently leading. This excellent open source project management tool is a good example of the great web applications that can quickly be created in PHP.
Extensible Hypertext Markup Language (XHTML)
Since: 2001

I have gained experience in writing standards conforming web sites that use XHTML both at work and at home. This web site is a good example of a good looking site that can maintain standards compliance at the same time. I also have experience in XHMTL's complementary technology, cascading style-sheets (CSS)
Ant
Since: 2001

At Intervera, I used Ant to create a one-step build and deployment script that allows our QA department to tag a version from the development stream and generate a complete installer with a single command. Integrated with CruiseControl, our Ant build also runs unit and integration tests as well as report generation such as code coverage, Javadoc, and style reports. Using the Ant-contrib tasks and integrating with DDLUtils, I have also built a complete data versioning facility.
make
Since: 1999

The grandfather of build tools, make is still an excellent approach for C and C++ projects. I helped to implement a recursive makefile system for the DataHub project at Pason Systems. Coupled with a controlling Perl script, we automated an ad hoc build process into a one line command that built, reported errors and deployed to target servers.
Borland OptimizeIT
Since: 2002

This is a useful Java profiler that provides memory and time usage information. I found it to be an excellent way of accurately diagnosing slow spots in Java code.
eXtreme Programming (XP)
Since: 2002

This development methodology is a refreshing twist on many conventional approaches to software development. While I haven't had an opportunity to do true pair programming, I have adopted the "test first" and "travel light" philosophies. I hope to increase my experience in XP in future projects.
Unified Process (RUP)
Since: 2002

After giving an in-depth report on the Unified Process for my SENG 623 class, I discovered that many of the steps that I unconciously do during development are covered in the RUP. The iterative and incremental lifecycle in particular has proven to be very effective. As well, I hope to make better use of use-case models in future development as a design driver.
Netbeans
Since: 2001

While I prefer Eclipse as my IDE, the Netbeans project is coming along. Their profiler is light-years ahead of Eclipse's at this point. I maintain an install of Netbeans just for it strengths.
Logwatch
Since: 2002

This excellent log auditing tool is now part of the default Red Hat install. It provides timely notifications of abnormal log entries in a customizable fashion.
Red Hat Network
Since: 2001

This excellent software package management tool allows an administrator to manage patches and updates for a large number of RH Linux servers remotely via a web interface. It also provides an admin with timely alerts to get security holes patched quickly which is crucial for internet servers.
JUnit
Since: 2002

A fantastic tool from the refactoring guru, Martin Fowler. I now use JUnit extensively in all my Java applications and consider automated unit testing to be a critical tool for design, implementation, and maintenance of a product.
  Joint Application Design
Since: 2001

An interesting technique pioneered by IBM. This was covered during SENG 613 and I look forward to have an opportunity to try this out in industry.
  Structured Analysis and Structured Design
Since: 2001

An older approach utilizing tools common throughout the requirements engineering world such as Entity-Relation (ER) diagrams and dataflow digrams. Covered during SENG 613
  Quality Function Deployment
Since: 2001

This was the topic of my groups's research paper and presetnation for SENG 613. It is an interesting technique, taken from the quality revolution of Japanese industry. It was adapted for software while I don't see myself using the entire technique, there are useful tools found within QFD.
  Cleanroom Engineering
Since: 2001

During SENG 613, this technique was covered as a requirements engineering tool. Somewhat more formal than I would typically feel is warraneted for most of my work, but it can be useful in certain situations.
  Requirements Prioritization
Since: 2001

My SENG 611 course covered a number of prioritization techniques includeing the Analytical Hierachy Process (AHP). Prioritazation is a critical componenet of successful requirements analysis.
  Formal Specifications
Since: 2001

The use of this mathematically rigourous tool was covered in my SENG 611 class. I have not had a need, nor do I forsee a need, to use this technique during requirements gathering on my projects. However, the technique can pay dividends in certain situations.
  Concept Maps
Since: 2001

This useful tool was covered during my SENG 611 class. It's use for requirements elicitation from non-technical clients and users was highlighted. Tool support for concept mapping was also discussed.
  Interviews
Since: 2001

Based on techniques gained during my SENG 611 class, I have performed both formal and informal interviews for my commercial projects.
  Repertory Grids
Since: 2001

A useful tool for requirements elicitation. This topic was discussed in my SENG 611 class.
SSH
Since: 1999

I have built, installed and configured this secure replacement for telnet on numerous Unix systems. I only use OpenSSH from the OpenBSD project. I make it a rule to disable telnet access on any Unix server I come across.
  PortSentry
Since: 2001

I use this easily installed tool to monitor and respond to abnormal port activity.
Tripwire
Since: 2000

I have experience installing, configuring and monitoring this system integrity checker. Tripwire stores a cryptographic hash of critical system files which can alert you if an attacker changes them (i.e. installs a root kit).
  nmap
Since: 2000

The premier port scanning tool available on the web. I use this tool to test the firewall configurations of machines that I am administrating. It is great for finding vulnerabilities that you may have overlooked.
LogCheck
Since: 2000

This excellent tool mines the valuable security information contained within an operating system's log files and emails the pertinent information to the system administrator. An excellent tool in one's security toolbox.
iptables
Since: 2001

When I upgraded my server to Red Hat 7.1 with the new 2.4 kernal, I switched the firewalling from ipchains to the newer iptables. I haven't had chance to fully utilize all the features of iptables, but it looks quite promising.
mod_ssl
Since: 1999

I gained experience in building, installing, and configuring SSL for the Apache webserver back in 1999. Nowadays, the RSA patent has expired and Redhat ships apache with SSL pre-configured.
PGP
Since: 1999

This tool for encrypting and signing email messages is a great idea that I wish more people would use. I've been signing all my email for years now using GnuPG in my email client, Mutt. My PGP public key is available on my 'Contact' page.
Extensible Markup Language
Since: 2000

All the recent applications I have worked on have made extensive use of XML for data storage, configuration, and inter-application communication. I am familiar with the DOM and stream-based parsing technology. My work with application integration with web services has also provided me with a knowledge of DTD and XML schema defintion and design. As well, I have taken 3 days of intermediate XML training provided by Fifth Era Training which covered all the XML basics with a number of advanced uses.
  Dia
Since: 1999

I've used this excellent technical diagramming tool for Unix on various projects at school and work. It doesn't have the code generation facilities of Rational or TogetherJ, but I find it meets the bill in most situations.
Structured Query Language (SQL)
Since: 1999

I have a large amount of experience using the various SQL language standards and the database-specific extensions in Oracle, MS SQLServer, and MySQL. I am comfortable with database schema design using normalization techniques and OR or ER data modeling. My background includes performance optimizations during query design and runtime-analysis.
GNU Debugger (gdb)
Since: 1998

I found this to be an invaluable tool when programming in C on Solaris and Linux. I used gdb quite a bit during my final year of university at the U of A and also on projects involving C apps at Pason Systems
Concurrent Versions System (CVS)
Since: 1999

I've used this excellent source control tool extensively during my university career as well as during the WebCPR project at the ARC and the Datahub project at Pason Systems. This involved installation, configuration, extension and administration of multiple CVS repositories. I would strongly recommend this tool for IT shops facing configuration management difficulties.
Windows 2000
Since: 2000

The Landview Online application server and e-commerce site utilized Windows 2000 Server as the server platform. I gained experience in implementing, testing, and/or deploying ASP web apps, Java applets and servlets, and legacy applictions via Citrix Metaframe.
MS Visio
Since: 1999

This was the diagramming tool mandated for use on all software projects at the Alberta Research Council. I made extensive use of Visio to create UML project documentation.
MS Visual FoxPro
Since: 2000

I gained experience using v6.0 during the Landview Online project as FoxPro was the DB used for the ordering site I developed. My experience includes utilizing FoxPro from MS Active Server Pages (ASP).
Hypertext Markup Language (HTML)
Since: 1996

HTML was my first exposure to computer programming and I have been building standards-compliant web sites with it ever since. I now typically code XHTML based sites using various web application servers and languages. I have a full knowledge of the various HTML and XHTML standards as well as a knowledge of the rendering quirks of the major web browsers.
Prolog
Since: 2000

My CMPUT 325 class provided an introduction to logic programming in Prolog. We used the Sicstus implementation for Unix.
  Lisp
Since: 2000

Through my CMPUT 325 class at the U of A, I gained experience with this functional programming language. I have also used lisp when customizing my favorite text editor, emacs.
Emacs
Since: 1998

The premier development environment for Unix. Probably the most feature complete text editor available, it also provides access to all of the Unix developer's toolset. After reading 'Learning GNU Emacs', I have a much deeper appreciation of this tool's full capabilities.
Javascript
Since: 1999

My work in web development lead me to gain experience in the client-side scripting language developed by Netscape. This required learning to handle the javascript differences between Netscape and IE.
PostgreSQL
Since: 2000

I have some exposure with this advanced Open Source database on Linux. I plan on using this DB when I start evaluating EJB app servers on Linux.
N-tier architectures
Since: 2000

My work with Java distributed computing and Microsoft's ASP web application platform allowed me to gain expertise in designing three-tiered applications. This architecture provides a number of benefits over the previous two-tiered or 'fat client' model.
Distributed Computing
Since: 1999

I gained design experience in Java distributed computingduring the WebCPR project at ARC. Using the Remote Method Invocation (RMI) toolkit, I designed an image viewing and uploading subsystem. The design took threading and security issues into account.
AIX
Since: 1999

During my time at ARC, I gained experience using AIX systems as the server for the Clinicare project. Specific skills included the SMIT administration tool and deployment and maintenence of a Java Virtual Machine on AIX.
C
Since: 1998

I have a strong background in C from my development work on CGI applications for Pason's Datahub. These programming tasks were made easier by the excellent training in the C language I received at the U of A.
MS Visual Studio
Since: 2000

The majority of the web-based applications I developed at the ARC during my internship were done with Interdev. I have also used Visual FoxPro for some of the database development needed for the Landview project.
VBScript
Since: 2000

During my ARC internship, I implemented two web-based applications using MS Visual Interdev and ASP. VBScript was the server side scripting language. It's not as clean as Python, but the MS tools are very easy to use.
Python
Since: 1999

This is an open-source scripting language similar to Perl, however it is truly object-oriented and emphasizes readable code. I've used Python on extensively on the Pason Datahub and during a numerical computing project at university.
Unified Modeling Language
Since: 1999

My Java work required that all designs be carefully diagramed and documented using the Unified Modelling Language (UML). As well, I wrote a project architecture document for the Landview/ARC project containing use cases as well as class, sequence, and deployment diagrams.
Borland JBuilder
Since: 1999

JBuilder is the primary IDE I'm using at Intervera this year (2005). I am well used in it's use, shortcuts, and plugins. Overall, it's a good IDE but I'd probably have to give the nod to Eclipse as my favorite. As well, JBuilder 4 was the primary IDE used for the Java project I participated in at the Alberta Research Council. I gained expertise using both the Professional and Enterprise versions.
Java - Overview
Since: 1999

Java is my strongest programming language as I have many years of commercial experience on a wide variety of projects and applications. My most recent Java project involved the design, implementation, and deployment a highly available and scalable communications conduit between Pason's rig-side data recorder and our data warehouse. This project involved the use of J2EE technologies with an emphasis on the Java Message Service APIs. I was technical lead on this project which involved 5-7 developers. My emphasis on code quality resulted in my introduction of test-driven development within our project team.

Also at Pason Systems, I implemented a Java-based rich client for drilling rig contractors that greatly streamlined their payroll process. This project required use of XML, encryption, Java WebStart, and obfuscators. At the Alberta Research Council, I was involved with an updated front-end for Clinicare Corporation's electronic patient record. That project involved RMI distributed computing technology and the Java Advanced imaging API.

I have gained exposure to a number of Java libraries and tools including JSPs, servlets, applets, Swing, JDBC, JSSE, JCE, JAI, RMI, Web Start, XML, Eclipse, Netbeans, JBuilder, Ant, and obfuscators. My introduction of unit testing techniques to Pason Systems has also provided me with extensive experience in JUnit, XMLUnit, DBUnit, HTTPUnit, and Fitnesse.

I became a Sun Certified Java Programmer in 2004.

Solaris
Since: 1998

A Unix derivative from Sun Microsystems. I have some experience from my work at the ARC and also from the Oracle database lab at the U of A.
OpenBSD
Since: 1998

BSD Unix derivative is used on the majority of public terminals at the U of A. It is an open-source project led by a programmer from Calgary. This is the most secure general purpose operating system available.
Windows NT
Since: 1998

I gained a great deal of experience with this OS during my internship at the Alberta Research Council. In particular, I picked up server administration skills targeted to using WinNT as a web server.
Mac OS X
Since: 1995

I'd been a Mac user back in the System 7 and 8 days, but moved to Linux to get a stable OS. However, with the advent of Mac OS X, I've become a big fan again. We currently have a iMac G4 desktop and a Macbook Core Duo laptop with the latest OS X version. With my recent intereest in Ruby on Rails, I've been spending a lot of time on laptop which is a great system.
Red Hat Enterprise Linux
Since: 1998

I am a Red Hat Certified Engineer, please see my certifications page for more details. I have extensive experience through my work with the Pason System's data center that relies heavily upon Red Hat Linux. This work has provided me with an opportunity to work on the procurement, configuration, deployment, and maintenance ofover 30 servers. I have learned which tools can help ease the workload when managing a number of production servers as well. I am also familiar with the programming environment provided by Linux as well as procedures for ensuring server security.
Oracle
Since: 1999

Oracle is the primary database in use at Intervera and by our clients. As such, I have gained experience working with various versions (8, 9i, 10g) on large corporate servers and developer workstations. I use Oracle SQL Developer primarily during development but am comfortable with the sqlplus command-line tool. My development work has included learning the many optimizations in terms of schema definition and JDBC features that can result in significantly better read/write performance.
MS SQLServer
Since: 2000

I have used MSSQL Server (both 2000 and 2005 versions) for development of web applications and data quality tools. I have administrated server installations of the database and am familar with its performance optimizations. On my developer workstation I use the Express Edition which allows for isolated, compatability testing.
MySQL
Since: 1999

I have extensive knowledge of this excellent open-source database. This was our primary database for all of the web applications at Pason Systems, the largest of which had 200 GB of data. I spent a week in Houston in early 2002 taking a MySQL training course covering security, disaster prevention and recovery, replication, transactions, and system optimization. I also use this database for all of my personal software projects requiring a database. I am very impressed with this database as it definately becoming enterprise capable.


Welcome!

I am a software developer from Calgary, Canada. I like to dabble in open-source software when not slinging Java at my day job.

You're currently only seeing the public areas of my site. For access to personal photos, videos, and blog posts, you'll need to login.

Around the Web

Recent Blog Posts

play blog%> Our House Featured in Local Magazine
2010-08-03 at 10:44 am
play blog%> House Air Tightness: Design Trade-offs
2010-08-01 at 10:17 pm
tech blog%> Google releases App Inventor framework
2010-07-12 at 12:51 pm
play blog%> Why Geo-Exchange Heating?
2010-06-21 at 12:52 pm
play blog%> Why Solar Hot Water?
2010-06-21 at 12:51 pm
play blog%> Why build Green?
2010-06-21 at 12:49 pm
play blog%> Basement development
2010-06-10 at 09:18 pm
play blog%> Welcoming Connor Davis
2010-05-14 at 11:37 am

Recent Comments

Listening To