This page describes me and my work, and gives a slightly longer biography.
I'm a "middle-aged-ish" computer programmer with a fairly diverse technical background.
I took a long career break after my M.Sc. in 2012 until the time of this writing, April 2018.
I have my own small compute cluster and NFS server at home. I keep track of the DevOps, cloud and cluster computing world, and I work on small projects to keep my *nix skills fresh.
I'm also a self-taught digital systems engineer. Soon I'll be adding FPGA design to this pursuit also.
I'm currently looking for a long-term job. So, I decided to rework this page and add a blog so that you can find out about my skills. I've worked with a very broad spectrum of computing environments -- from scripting to compiled languages, to the OS layer and even down to microcontrollers.
I'm quite close to my immediate family so I'm searching for a telecommute position that lets me work in our home town of Victoria. Victoria is a lovely place to live with a thriving tech community, but I suspect that the global "remote job" marketplace holds more promise.
I've been a programmer since I was about 6 years old.
My first computer was at Christmas, age 5 (a Texas Instruments 99/4a circa 1982.) I learned to program its BASIC interpreter six months later and wrote small programs that flashed coloured text and moved characters across the screen.
Our family moved to Victoria, and eventually we purchased a 80286 8/12mhz PC. I could write batch files in DOS, but those did little other than to ensure that games and other programs didn't interfere with each other on boot-up. When we upgraded to a 486dx/25, I learned PASCAL in high school and learned a scripting language that came with the modem's terminal program. I started with C/C++ at 16 and got my first programming job: writing some faxmodem code for a local PC outlet.
Around that time I made quite a few friends through data-modem BBS systems; many of these were electronic engineers or software engineers, and I was able to borrow or swap compiler tools and other peripherals with my friends. Good times. I was also introduced to the internet around 1994, but I'd previously seen Usenet through various FidoNet bridges that many BBSes provided.
I found college to be a bit pedantic. My grades suffered a bit because I had the attitude that the curriculum didn't match the actual tasks of a real programming job, which I already had experience with. I also felt that I didn't need to re-learn the skills that college taught, and that real engineering expertise would come from real experience. I installed RedHat Linux when I was 20 and it soon became my favoured operating system (now Fedora.)
After being supported by parents for years, I eventually found work in Vancouver, first as a Perl programmer and tester, then as a lead Java developer and back-end system engineer. I kept adding languages and tools to my repertoire. I reasoned that if I kept learning about enough of them, I could adapt to just about any new language or SDK in the IT area. There are lots of new technologies released every year, and becoming an expert in any one of them still seems like an exercise in rote repetition. I've always favored breadth and generalization and novelty, so I guess I never really became a true expert in any particular one.
My other lifelong interest aside from programming is applied mathematics.
My university degrees focused on computational and numerical aspects of AI. I studied machine vision, machine learning, artificial intelligence, and wrote quite a lot of MATLAB code for these subjects.
My graduate degree focused on machine learning via numerical optimization. I was particularly interested in time-series and sequential data, and that's what led to my "heart sounds" project and thesis.
Some people like math because of its symmetry and beauty. I just like it because it lets one solve difficult problems, and solve them consistently.
I've always kept a mathematical approach at the top of my mind when trying to write programs. It led me into probability theory when I was young, and into artificial intelligence when I got older. So many of the world's problems can be approached with mathematical techniques.
Finally, I never lose sight of the fact that automation is replacing traditional office labour and information processing tasks for humans at an unprecedented rate. It's fairly easy today to write a program that can vastly outperform a human's abilities, and can be replicated infinitely or run on massive scale in cluster hardware, effectively destroying entire job pools. It's up to us, the authors of such software, to exercise prudence and consideration when designing such systems.
It has guided my own career path more than once.
Ask me about:
- My cat, "Link"