Employment Experience


General Dynamics Canada

Position:  Intermediate Software Engineer
Department:  Air and Naval Research and Development
Period:  Oct 2006-Nov 2009


Since GDC is a defense company and I worked in Research & Development, I don't want to write down a lot of particulars about what I worked on, so I'll specify some of the areas I worked in and what technologies were used.

One thing I worked on that is "out there" (at least on the GD website) was WOMBATS (PDF file). I implemented the core architecture of the system (but not the GUI or some of the tasks that run in the system). It was written in C++ and uses SQLite, a popular database engine for embedded systems, to store data for processing and transmitting between the different tasks running in the system. It's an MVC architecture, and I made use of design pattern principles when writing it ("Find what varies and encapsulate it" -- Design Patterns Explained by Alan Shalloway and James Trott).

My favourite thing I worked on was a cross-platform library written in C++ that is used by several other GD projects (including the company's biggest project, the Marine Helicopter Project). My responsibilities on this R&D project:

  • Add new features; find and fix bugs
  • Write CppUnit tests
  • Write example applications.
    • I was told by a newcomer to the project (a senior developer) that my examples were very helpful. I made them at a level that wasn't trivial but also wasn't so complex as to make it hard to learn. I also arranged them into a tree, so if you wanted to learn about topic X, you could see that you should learn examples Y and Z first in order to understand X, so you weren't trying to learn 3 things at once. Another topic W's example might also use Y as a base, so if you had already learned Y, you could go straight to W.
  • Provide support to users
  • Test on Windows, Linux, and Solaris
  • created release packages
  • Update documentation

I also worked a lot in a demonstration lab, setting up computers, installing software, troubleshooting problems, running software during demos to government, forces, and business personnel, and preparing documentation for the demos so that others could carry them out in my absence.

Aviya Technologies, Inc.

Position:  Software Test Engineer
Period:  Jul 2006-Oct 2006


At Aviya, I tested aerospace systems software to safety-critical DO-178B Level A compliance using Rational Test Real Time. This involved writing test scripts for every file/function of C code in the system to ensure they worked correctly and fulfilled the associated requirements.

I didn't work there very long (GD suddenly offered me an interview and then a job, and I had been aiming to work there for a long time so took it, which also let me move back to Ottawa), but in that short time I ended up being the 'go to' guy for asking about tricky C code (such as the odd function pointer necessary to test the main() function), and had developed a simple checkbox system for showing that all necessary code points were tested, and what test cases in the script they were tested in.

Other activities I performed at Aviya:

  • Peer-reviewed tests of co-workers on a regular basis; known for being good at catching issues.
  • Performed requirement-test tracing and change impact analysis.
  • Assisted in writing batch file script for running tests remotely, resulting in increased use efficiency of the limited number of testing stations.

Prof. John W. Chinneck / MProbe Project

Position:  Programmer/Analyst
Period:  May-Aug 2002 (co-op)
             May-Aug 2003 (co-op)

MProbe In brief, MProbe is a program that aids in maximizing/minimizing a function.  The variables of this function are usually constrained by a number of constraint functions. E.g., maximize f(x,y,z)=x*y*z given 10>x>3, x*y=15, z+x<0.  Problems often consist of several hundred to even millions of variables and constraints.

My first work term with Prof. Chinneck, one of main duties was to fix bugs in MProbe (mostly in the GUI).  At that time, it was written in Visual Basic 6.

During this work term, I discovered that MProbe was not sampling the variable space evenly.  It was over-sampling the middle region heavily, which was making some of the collected statistics incorrect.  I investigated the problem and wrote a report suggesting new sampling methods that would sample more evenly.  This (very visual) report is available here. During my second summer working on MProbe, I incorporated several new sampling methods into MProbe.

I also designed and programmed the "Points Workshop" window , which was the main new feature in MProbe v4.0..  This window is useful for inspecting and locating important points within the variable space of the system of equations.
MPSFileReader During my 2002 work term, I completed MPSFileReader (a DLL).  It is "a windows object for creating, editing, reading and writing MPS files (The MPS file format is an old but durable format for saving linear and mixed-integer programming models). [It] displays constraints and objective functions in a natural human-readable form.  [It] can evaluate functions directly and return the values to the calling routine.  [It] exposes convenient properties and methods."
MProbe uses MPSFileReader to read MPS files to input a system of equations to be inspected.
I also wrote documentation and a demonstration program to help developers use the object.
GAMSFileReader "A windows object for reading optimization models specified in the GAMS language, and then exposing a convenient set of properties and methods."
Started and completed during my 2003 work term.  Also used by MProbe.
I also wrote documentation (zipped .chm HTML help file) and a demonstration program (available on the GAMSFR web page) to help developers use the object.
Downloads Page
This is a page a person who wishes to download any of the above programs can use to download the software if they wish to be informed of updates.  It uses a couple perl scripts that write the info to plain text files (nothing too fancy).

Computing & Communications Services

Position:  Web Editor
Period:  Jan-Apr 2004 (co-op)

CCS Website
I made many changes to the CCS website during my work term there.
In addition to generating many new ideas for improving the site, I concentrated on increasing accessibility/usability and levels of standards compliance (though some things were out of my hands -- e.g., fixed-size fonts (can't be resized in Internet Explorer)).
Also, the download size of many pages were reduced dramatically to help modem users and save a few pennies on bandwidth.  This was done by replacing many instances of client-side Javascript with server-side ASP/VBScript and by compressing graphics to appropriate file formats.  If I recall correctly, 27kb+ were cut out of every page.  Some pages with many graphics had download times reduced by minutes.
Web Team Meetings
organized and ran these meetings every week or two, during which about 10 CCS employees met to propose, discuss, display, and review site changes.
Outages Page
Originally, whenever a system went down, someone had to manually edit the HTML of the outages page.  I created a system status database in MS Access that could be printed to the page using ASP and SQL.  I also quickly created a Visual Basic program that made updating the database very straightforward and fast.
Important system notices are also displayed on the front page of the site.
News Page Same deal as the Outages page! News is displayed, and employees have a VB application for adding news items to the site.
Site Statistics
I'm a big numbers person, so I also made it easy for CCS to view detailed statistics about how the site was being used.  What pages were most popular, what sites were forwarding users to pages that no longer existed (the site had been redesigned and reorganized just before I started working there), what browsers and operating systems were being used...
404 Tracking
I wrote a script to capture information about 404 requests (requests for pages that didn't exist).  This helped locate broken links within the CCS site and allowed us to contact other sites that had out-of-date links on their pages.  The 404 page also presents the user with a feedback form allowing CCS to email them the information they needed.
Update: My amazing 404 page no longer exists! You just get a search box now. A step backwards!

Misc. Website Design Jobs

Sigma Psi Alpha Sorority
HTML and CSS by me.  Graphics by Humera Ali.
X-Canada Quest
In grade 12, I was part of a teacher-selected team that made a section of the National Capital Commission's website. I was the lead HTML designer.
(No longer online)
I was originally asked (out of the blue) to take part in the research and writing of the project, but asked to do the website design instead, since that was a little more exciting to me ;)
I made a website for my high school when I was in grade 11.
(It has since been replaced)


page made quickly using Mozilla Composer (i.e. the coding is poor)