Mathew Zaleski


 gpg:      public gpg key
 Address:       Golden, BC

Been Where Done What?
Currently,  I live in Golden, BC. In May 2020 I finished a five year, full time, "long term lecturer" contract at the University of Toronto. 

From 2008 until 2012 I worked remotely. First, a post doc at IBM research and then  for two big Silicon Valley companies: Adobe and Intel. My work, roughly speaking, was in the same field as my research -- dynamic compilation for Java and JavaScript.

I defended my dissertation in late December, 2007 at the Department of Computer Science, University of Toronto. (A year short of turning 50..) 

For those looking for a brief, business-style, description of positions I have held, please see my linkedin profile.

Brief synopsis of preceding 30 years

Up to about 2000, I was one of the partners of Mountain Lake Software Corporation. (An independent URL for no longer exists.) I was involved in planning and executing several interesting software projects since going into business with Ken Rother and Bill Tapscott in early 1994.

Prior to co-founding Mountain Lake, I participated in the development of Alias StudioPaint, a C++ image processing and conceptual design system for SGI computers. The GUI of the new product was built on top of Interviews and the image processing subsystem used SGI's ImageVision framework.

I spent five years at IBM in the compiler organization, initially developing the register allocator for TOBEY, the optimizer behind IBM's family of RS/6000 AIX compilers. (C, FORTRAN, PASCAL). Later, I used my UNIX skills to assist in the bringup of AIX 3.1. (serving as team leader for TOBEY's third release.) The optimizer was very successful. (See Steven S Muchnick, Advanced Compiler Design and Construction, Morgan Kaufman, 1997, Chapter 21.)

Earlier, I wrote fixed-price contract software for NASA Ames Research station and consulted at SoftQuad, a Toronto desktop publishing company, where I wrote early versions of the automatic hyphenator and PostScript device drivers for the sqtroff product.

My early schooling consisted of a BASc (Engineering Science, Computer Science option. UofToronto, 1983) and a MASc (Industrial Engineering, UofT, 1984.)

Academic and Research Interests

Modern languages are very dynamic. For various pragmatic reasons the initial implementation of almost every dynamic new language should be an interpreter. These are simple and easy to modify but perform poorly. Current method-based approaches to Just In Time compilation perform very well but are challenging to implement. Furthermore, today JIT compilers must duplicate much of the functionality already implemented by an interpreter. This makes extending an interpreter with a JIT a costly and time consuming process.

Supervised by Professor Angela Demke Brown, my dissertation focused on how an interpreter can be gradually extended with a JIT compiler. We identify and compile hot, interprocedural paths, or traces, instead of methods and describe a novel architecture for a high level language virtual machine.

Subsequently I was pulled into various prototype JavaScript implementations. I have a passing familiarity with the internals of both V8 and JSC.

Several years in the optimizing compiler business helped develop an appreciation for the intimate relationship between CPU architecture and compilation in the pursuit of good performance. I was lucky to participate in the evolution of super scalar machines and compilers for them.

In 1983, my MASc supervisor, Neville Moray, helped me understand the importance of managing the user's mental model of his or her software environment. Later experience at Alias underscored the value of carefully designing the mental model you want the user to have as well as making sure that application software carefully and consistently maintains it. That’s the “soft” side of my interests.

Professional Interests

Recently I've learned that teaching advanced courses is both very interesting and challenging. I'm trying to combine my academic, industrial, business and management experience to teach courses like "Computers in Society (CSC300)" as well as "Software Engineering CSC301" and "Technical Entrepreneurship (CSC2702)". I'm finding there is a lot to learn.

Post 2008 I've worked primarily as a VM engineer, modifying JIT compilers and their corresponding runtimes.. Consequently,  I have spent a lot of time designing and debugging at the machine level.

Most of the 1990's were spent in various leadership roles, starting from technical team leadership and culminating with client relationship and operational management of large client-facing projects.

I'm uncomfortable praising my own management and leadership abilities on a public web page, so I won't. I am confident that my references, when consulted, will vouch for my communication and leadership skills.

Defining complete application development projects, especially in the early stages is probably my principal technical strength. Object oriented application architecture was my main technical contribution during the 1990's. Retrospectively I can't say that the results have been as conceptually clean as I would have liked but they have resulted in real products that have been bought and used by real people. I am interested in, and have done a fair bit of, GUI development but (probably like so many others) really have trouble feeling like an expert in any particular development environment on any particular platform.

Personal Stuff
I aim to be a Renaissance man. Sometimes (apparently) I overshoot and wind up merely eccentric. Main city-side leisure activities are bike riding shockingly early in the morning and route climbing in climbing gyms.  I Hate traffic jams, hence commute by bicycle when possible. Main countryside activities are backpacking and rock and/or ice climbing. Some amount of paddling, windsurfing and backcountry skiing gets done in-between. Am quite keen on walking up, then sliding down powder snow. Happily married for 30 years. Two sons. One dog.