Hello, my name is Matt. I'm currently employed as a full-time firefighter with a major metropolitan fire department in Alberta, Canada. My previous career track was in software development and I remain involved in various technology projects to this day. My wife and I are amateur sailors aspiring to greater voyages.
My operating system of choice is FreeBSD but I used Linux for nearly 23 years until 2017 when the systemd debacle caused me to switch away. I've also run OpenBSD from time-to-time but haven't been able to commit to it due to a lack of virtualization support, among other things. Plan 9 and derivatives interest me but like everyone else, I have other things in life I'd rather spend time on. I have an in-depth understanding of BSD and GNU systems and have written and deployed software on Mac and Windows platforms.
I have used a wide variety of computer languages over the years. My preferred areas of expertise include Bash and Bourne shells, Java (on Android), Perl and Tcl/Tk. I am conversant in Assembly (x86), C and to a lesser extent, Lisp and employ PostgreSQL and SQLite on a regular basis. Whenever possible I'll edit code using GNU Emacs generally accessed through a tmux session. For terminal emulators I use urxvt with the Terminus font either bitmapped or TTF. I've tried a variety of programming fonts over the years but I always end up returning to a crisp font face to avoid eye strain. Fossil is my favourite version control system but if a project is already using git, SVN or CVS I'll happily use those, too.
This is an incomplete list of the various software projects that I've worked on over the years and the time frames that I was involved with the projects.
Stock Market Analysis, Decision Making and Execution (SMADE)
Currently under development at Radical Dynamic, SMADE is a comprehensive set of tools for stock market analysis, decision making and automatic trade execution with capacity for integration with multiple brokers and data streams. SMADE incorporates intelligent risk analysis, portfolio management and reporting mechanisms.
SMADE is written primarily in Tcl/Tk, R (for Statistics) and uses PostgreSQL as a persistence layer. Version control and issue tracking are handled by Fossil. Development efforts have included Rtcl, a new Tcl extension written in C that embeds an interpreter for the R programming language inside a Tcl interpreter. Rtcl source code is managed in Git.
Hose Testing Tracking System (HTTS)
06/2017 - Present
Written for the Calgary Fire Department (CFD), HTTS replaces a paper-based process and enables CFD to track the testing results of 6,000+ lengths of fire hose conducted on an annual basis by crews at over 42 separate locations across the city. HTTS is configured by back-office staff to accommodate changes to apparatus and station/facility hose complements, so that fire crews see up-to-date entry forms that reflect the stations they are working out of and the hose complements assigned to their specific apparatus. HTTS uses hose length asset data coming from an external inventory system and incorporates workflows that flag out-of-date hose, unknown hose numbers and duplicate entries as well as permits crews to identify lengths that have failed service testing. Reports may be quickly and easily run from HTTS to display the progress of hose testing across the department and identify apparatus and stations requiring service testing of fire hose.
In addition to being the primary designer and developer of this project, I wrote documentation and edited manuals for end-users, produced voice-over tutorial videos and wrote supporting documentation for Corporate IT.
HTTS was written in Tcl/Tk and uses an SQLite persistence layer. Version control and issue tracking was made possible with Fossil. MPS was deployed on Microsoft Windows 7 and 10 for station desktops and is designed for CFD's tablets and laptops with an interface that supports touch-screen entry.
Monthly Productivity System (MPS)
09/2015 - Present
Written for the Calgary Fire Department (CFD), MPS replaces a previous system that relied on over 160 individuals to report on monthly productivity numbers by performing direct entry in one of four Excel spreadsheets. MPS displays simple, domain-specific data collection forms to staff in over 42 separate locations across the city and assigns responsibility to each entry by identifying the person who made the entry. Where applicable, data entry forms display number of tasks completed vs. expected tasks thereby permitting staff to plan workloads and view progress at a glance. A report generator compiles data recorded by senior firefighters on a platoon-by-platoon basis enabling management level oversight.
MPS was written in HTML for Applications (HTA), VBScript and utilizes Microsoft Excel as a persistence layer. Version control and issue tracking were handled in Fossil. MPS was originally deployed on Microsoft Windows 7 with Office 2010.
02/2015 - Present
FireNotes.ca was created to give firefighters and people in the fire service industry a place where they can easily and freely contribute resources, articles and notes for the benefit of everyone. Since 2015, this project has involved the organization of hundreds of resources and accepted contributions from dozens of interested parties. FireNotes.ca is a personal project and is not associated with any specific organization or company.
FireNotes.ca is based on a customized version of the Oddmuse wiki and is primarily written in Perl. It is currently deployed on an Apache webserver.
08/2010 - 02/2012
Previously developed by Radical Dynamic, Group Complete was an endeavour to create a truly mobile, robust and powerful data collection & aggregation platform for Android. It was developed and supported from August 2010 until February 2012. Based in part on the Open Data Kit project, it was the first serious mobile project to use Apache CouchDB for Android. Group Complete won "best in show" at CouchConf 2011 in San Francisco. Although Group Complete garnered interest from dozens of organizations, it was abandoned in favour of my pursuit of full-time employment as a structural firefighter and I released the source code in the hopes that someone else might find it useful.
The Group Complete Android client (since released as open source) was written in Java for the Android platform. It used a customized distribution of Apache CouchDB on Android as the persistence layer. Version control was managed using Git.
04/2006 - 05/2010
During my time with Cypress Interactive, I worked on a successor to the original EDSuite. EDSuite is a domain-specific content management system (CMS) used by economic development corporations across the United States to advertise and communicate information about economic and governmental assets to prospective businesses. I introduced the Drupal CMS as a framework upon which we wrote EDSuite v2 as a set of reusable modules. The introduction of Drupal enabled EDSuite to take advantage of the significant infrastructure provided by the Drupal ecosystem.
EDSuite v2 was developed using PHP and MySQL as the persistence layer. Version control was managed through Subversion.
03/2003 - 04/2005
During my time with Morcor Solutions, I led the technical design and development of XpanceNet, an extension to the Xpance asset management and pre-press ad tracking systems for newspapers throughout North America and beyond. XpanceNet enabled online "web proofing and booking" for advertising customers. I provided continued guidance to a small development team, produced and maintained documentation for internal and client use and applied processes and tools to streamline collaboration and improve productivity.
XpanceNet was prototyped in PHP with MySQL as the persistence layer. It was later re-written using Perl and deployed as a hosted solution on Linux and Mac OS X. Version control was handled via Subversion with issue tracking in Jira.
Membership Management System (MMS)
09/2001 - 09/2002
Implemented for Scouts Canada by Deloitte & Touche LLP, MMS was a large-scale project intended to encompass registration workflow and management of membership information for members of Scouts Canada across the country. Previously handled independently by regional councils, MMS unified registration and membership data for the entirety of Scouts Canada and permitted reporting on a national level. I was primarily responsible for testing, data conversion and import from separate council databases stored in Microsoft Access. During this project I employed a variety of tools including Perl, Awk, Sed and Microsoft Excel.