Projects
I started programming late in life, sometime in 2000 after I’d decided I wanted to become a programmer. My first real experience with code was some very simple C++ in a requirements course for the Computer Technology diploma program at SAIT. I passed that course (it wasn’t hard) and began my 2 years at SAIT in 2001. I initially struggled with Java, getting a C grade in the introductory course. It wasn’t until the second Java course that things "clicked" for me, when I finally understood passing objects by reference. It was literally like a light switch being flicked in my head. I got an A in that course, and an A in every programming course after that. Along the way I was introduced to Linux, and started to play with it far too much. After the second semester of SAIT, I spent the 4 month break learning html, setting up a firewall and mail/web server among other things. I was introduced to .NET right before the 1.0 release, when a fellow student (Don Heninger) was able to get the faculty to agree to let us implement our final 8 month project using the Framework.
Fluid Designs
This was a straight up html site for a friend who had a company making mainly whitewater safety products. I generated a site template using Photoshop and ImageReady, and then proceeded to attempt to organize the site into coherency. I learned html from scratch in the process, and also learned why duplication is bad (it’s really hard to make changes to a static html website layout when you have over 40 pages). The site is no longer online.
Undercurrents
Undercurrents was another website built for a friend in the paddling industry. It was a solo effort and my first project after graduating from SAIT. This one was different from Fluid Designs’ site, however, in that it was a full on database-driven .NET application. I’d learned a lot from implementing our final project at SAIT, and was able to create a pretty nice (at the time) CMS application with nicely segregated layers (UI, Facade, Domain, Data Access). It’s still up and running, although due for an upgrade. I learned a bunch about deployment to shared hosting and .NET in general.
LandLord Diary
LandLord Diary was a rich-client property management application written in .NET. It also integrated with Outlook using the Primary Interop Assemblies from Microsoft (which wrapped COM stuff in a really thin .NET skin). This project gave me my first introduction to CVS, as I worked on it with another developer (Eric Bauld). Our project manager was Grigori Melnik, who is a researcher/professor at SAIT and the UofC and a huge proponent of Agile methodologies (he runs the Calgary Agile Methodologies User Group). We didn’t get too deep into Agile, regrettably, as both Eric and I were a little too inexperienced with the concepts and Grigori didn’t have the time to mentor us, but we did do some pair-programming and had a one-week iteration cycle after which we would do a demo and install for the client. This project taught me a bunch about how important communication is on a project. I also wrote a rudimentary O/R mapper for persistence, before even understanding what an O/R mapper was (I thought I was a genius writing code that could reflect on an object and construct SQL queries that actually worked)! We delivered the final version after 5 months of development. It was moderately successful as I understand it.
Kanga Communications
Kanga was the first actual company I worked for as a salaried employee. I was the third developer to be hired, and met a bunch of great developers along the way, many of whom I’m still working with in some way. I learned so much at Kanga it’s hard to summarize it all in one place. One of the main things I took away was the importance of good leadership. As the company got more successful we were given more and more projects to work on, to the point where some of us were literally working on 5 or 6 projects at any given time. Project management was horrible, and I believe it eventually led to the demise of the company, although that’s a story for another day. Here’s a list of some of the highlights:
Inter-Agency
When I started at Kanga, everything was developed in PHP. I was given a medium-sized project to implement for the Inter-Agency project, a collaboration between 7 (I think) homeless shelters in Calgary to develop a system for sharing client data. One of the many promises Kanga made was to re-write existing systems, which was an impossible task in my mind, but we went ahead anyways. The first re-write was for the Salvation Army, which I started in PHP, and eventually finished in .NET. I taught myself PHP by porting the O/R mapper I’d created on the LandLord Diary project, and then started extracting a whole bunch of stuff out into a framework of sorts. It’s strange to think of it now, but I finally came to grasps with MVC while writing this app, implementing something startlingly similar to a rudimentary version of Rails in php. The model was implemented in an Active Record pattern backed by the O/R mapping data access layer. There were separate views for each action, which were loaded via a front-controller. I really want to get the code back for posterity’s sake.
The php app was eventually re-written in .NET, using all the same patterns. It’s still one of the cleanest solutions I’ve ever written. The Inter-Agency project itself fizzled out eventually, I assume due to lack of funding.
Timesheet
This was an internal application developed for tracking employee hours within Kanga. It was used for almost two years, and proved to be very solid. The code can be downloaded via its Google Code project page.
Inform Alberta
I joined this project briefly as a UI guy, responsible for writing html that would be converted to proper JSP’s by the real developers. It was an agile project, with the developers pair-programming and all that jazz. I didn’t actually get to participate in the process very much, but I observed many things and got to meet Ted O’Grady and Raymond Yip. I must have done something right, because I was hired on at CGI a year or two later by Ted.
CityMYX
I don’t even know what to say about this project. After a month or two of frantic side-by-side coding with Buckley to meet an arbitrary launch deadline we had a functioning online dating service up and running. I thankfully got punted from the project to work on other things after launch, but I learned a bunch about managing (or not) client expectations on this one.
Healthlink Alberta
Healthlink was a project tasked to create a service that published health topics from a central location that could be consumed by all the health regions in Alberta. It was probably my greatest success at Kanga, since it’s an app that’s still in use 2 1/2 years later. I literally built the entire thing, including an old-school ASP web service over XML-RPC that pulled data from Microsoft CMS 2001 and a bunch of web clients for all seven health regions in PHP, .NET, ASP, and Java. Development of the web service took place under really, really stupid constraints that involved me travelling 3 hours to Edmonton to work on the application on site about once a week for 6 months. We actually met our launch date, which was televised and presented to the public by some MLA along with Inform Alberta. I learned how hard it is to manage a project with so many disparate interests in addition to technologies like ASP, Microsoft CMS, and web services. It wasn’t perfect, but it works.
Pangaea Systems
I was finally able to get out of Kanga after flirting with Pangaea for about 8 months. (I was just in time, as it turns out, because a week after I left the main owner was bought out in a hostile takeover gone wrong and the new boss ran the company into bankruptcy less than a year later). Little did I know that Pangaea was also having issues at the time, enduring a will-sapping buyout that didn’t quite work out. By the time I showed up, most of the Calgary office was gone, and for about a month after I joined there’d be a nice farewell e-mail from some other long-time employee every week. But still, it was better than where I came from, and I met a few good people there, including Bill Henry and Brad Robertson. I sat on the bench for most of my time there, but managed to re-write a Microsoft CMS 2002 calendar module for the City of Lethbridge and write an nice little application for a reposession company. I left after 5 months, just before I was to start working on some real meaty projects. I felt bad for leaving so soon, but in a strange twist of fate CGI (my next employer) ended up buying Pangaea less than a year later. I finally got to work with a really competent project manager (Bill), who made me realize that it is possible to do waterfall development if you’ve got your shit together.
CGI
I left Pangaea for CGI in July of 2005 after getting a tip from Chris Clark that they were hiring. This was my dream job at the time, and what I had originally expected from Pangaea. I finally got to work on a large project with more than 2 or 3 people, and it was Agile to boot. I’m unable to put down in a few short paragraphs exactly what I’ve learned so far, but suffice to say, I’ve learned a bunch about Agile, and had a lot of my own ideas validated. I get the feeling that I’ll find it hard to find another project that works as smoothly as this one after it’s finished.
To summarize, we’re building a Production Accounting system for 4 major oil companies in Java that’s replacing old Cobol applications that have been developed for over 20 years. There’s 37 developers (I just counted), at least 8 production accountants, and a bunch of support/testing people. I’m just a small part of the team, but it’s been fun so far.

