Interests

Programming Interests

As a Professional Engineer whose career has evolved in parallel with the evolution of the public internet, I have watched with fascination as larger and larger software systems (and companies) have been created, usually by assembling and integrating the efforts of smaller subsystems, communities and companies.

I am also interested in continuing to help develop ways for users to create simple applications themselves.

Google Apps Script, MIT App Inventor, Google App Maker are all current examples in this field. YEG Neighbourhood Open Data is a volunteer project that I originated in order to create some simpler Open Data subsystems for Edmonton students and teachers to assemble as they see fit.


Teaching

One of my personal hobbies is Ultimate Frisbee, and as I enter the second half of my career, I have become more and more focused on the human side of the software systems that I build.

One of the main truths in Moneyball was that

  1. you can't win with a game of baseball without runs, and
  2. you can't get a run without getting on base.

One of the main truths of Ultimate Frisbee is that

  1. you can't win with a game of Ultimate without points, and
  2. you won't get a point this possession if you turn the disc over to the other team through risky play.

Ultimate Stats is an app whose goal is to investigate whether it is possible to shift player mindsets from making higher-risk wild throws to making simpler, less dramatic throws, and whether this will result in more points and therefore more wins.


Metaprogramming

In 2000 - right at the end of the original dot-com bubble - I was a contractor at TELUS Communications.

One day I learned that a co-worker had written software that published other software. Ever since that day I have been fascinated with the idea of using code to generate code, a.k.a. metaprogramming.

Pickaxe is a metaprogramming example that allows the user to define simple objects and object relationships. The software then uses these configurations to dynamically behave as if software specific to that use case had been written.

The purpose of this tool is to explore how more generic systems can support the configuration of many similar use cases.


On Laziness as a Virtue

What do these interests have in common? It is my belief that in many fields it appears possible for individuals to produce similar results with less and less effort by leveraging the lessons learned by experience.