Resume

Hi, I'm Anthony Cameron

I'm a software engineer with a passion for the web and computer graphics.

Work Experience

Software Developer

Shopify

Oct 2013 Now

In my first year, I worked primarily on the admin team – the section store owners use – implementing features, fixing bugs, filing issues, and writing maintenance tasks. Since Shopify encourages a strong culture of ownership, I'm always looking out for potential problems regarding user experience across project and team boundaries.

I worked with the client-side MVC framework Batman.js before we started to move to a custom in-house server-client hybrid approach. This launched me from no previous CoffeeScript experience to relative expertise, imparting in me a thorough love of the language.

My role shifted from front-end to full-stack in our transition: As a team of 8~10, we've developed a powerful system that allows the server to be the primary source of truth in rendering, but still gives us enough flexibility that at first glance, you might think we've made a single-page app. It drastically reduced our mean development time for new features, and greatly simplified bug fixes. Everybody loves it, and we're all quite proud of it :)

I loved our new web paradigm so much that I extracted it into 2 open source libraries, Twine and TurboGraft, which I steward to this day.

Shopify is the largest company (and codebase) I've ever worked for, allowing me to improve my collaboration skills with both my immediate team, and even some people I've never met in person. I've been called the "powerhouse of the issues list".

These days, I'm working in our new Waterloo office on Plus engineering efforts. We concern ourselves with all engineering efforts that affect our Plus merchants: new features and bug triage / acceleration. I was responsible for building out most of the infrastructure our sales team uses to do their job.

UI Developer

Exinda Networks

Aug 2012 Aug 2013

At Exinda, I was working on a large-scope single-page JavaScript application. We used Backbone to structure our core application, Underscore and jQuery for developer convenience, and Handlebars and i18n.js for templating. I was deeply involved in the design and implementation of many interactive modules (e.g., line and bar graphs) at the core of the application. We unit tested our frontend with Sinon, Chai, Mocha, and Jasmine. I wrote many acceptance tests using Cucumber (Capybara & Watir).

It was at Exinda that I first got really involved with JavaScript-based developer utilities: node, bbb, jshint, and many others. I wrote an intercepting proxy in Ruby to aid with manual testing when targeting different versions of our RESTful API. Combined with Apache2 load balancers, this proxy also enabled us to simulate low-latency and unreliable-link scenarios while developing UI components, discovering bugs preemptively.

I was responsible for the creation of a set of utilities that added dummy data for demonstration purposes. These utilities were also used for creating fixtures for acceptance tests. Git became a part of my daily workflow; I could not do without it.

Freelance Web Developer

Uptown Creative Inc, ShirtsByMe, others

Dec 2009 Aug 2012

Uptown Creative Group specializes in providing clean, cross-browser, interactive HTML5 websites. During my time there, I participated in the creation of many static and CMS-driven sites, with a heavy focus on interactive maps, dynamic map searches, Yelp and weather integration. I also tailored 3rd party feeds, themed iHomeFinder sites, and provided integration for search, filtering, and pagination of MLS results.

As a freelance web developer, I was responsible for the entirety of the development phase: I received a set of design documents, and from there I created semantic HTML5 mark-up using HAML (to insure well-formedness), sensible and minified CSS with the SASS compiler, and image spritesheets for anything that couldn't be done without them.

jQuery was employed heavily on nearly every site for interactive widgets, image lazy loading, and more. From this shell template, we moved on to PHP or WordPress, depending on client needs.

In this time, I improved my web accessibility knowledge by creating responsive layouts and mobile-aware sites. While the sites I create greatly benefit from JavaScript, I make sure to always provide room for sensible graceful degradation.

Web Developer (co-op)

University of Waterloo, Special Projects Group

Jan 2009 Apr 2009

At the University of Waterloo, I participated in a small team of around 6 students and 6 full-time developers, working under an agile methodology. Daily scrum is no stranger to me! We had fluid teamwork, using Microsoft Team Foundation Server for version control. We developed pages for an application in C#.net, with a heavy focus on AJAX. During this time, I took initiative to learn jQuery UI design principals, and as a result, created a fully functional widget to replace the <select> element.

I've had a few other co-op positions, but I've omitted them here.

Education

Bachelor of Computer Science, Honours, Co-op

University of Waterloo

Key Courses: Introduction to Computer Graphics, Medical Image Processing, Distributed Systems, Introduction to Artificial Intelligence, Computer Networks, Numerical Computation, Algorithms, Computer Security and Privacy, Operating Systems

Awards: University of Waterloo Merit Scholarship, 2006

Personal Projects & Open Source

In my spare time, I'm either playing video games, spending time with my wife, or working on software.

echoplexus

echoplexus is perhaps my most substantial and successful personal project to date. It aims to provide web-based anonymous chat, collaborative coding and drawing, as well as WebRTC audio & video calls. Please see https://echoplex.us for a full description of all features!

μv

μv (pronounced mew-vee) is a Rails 4 application that I've recently started working on in hopes of replacing XBMC as my home streaming system. Right now, it's able to query external datasources ( thetvdb.com, omdb ), gather metadata, download posters, and generate screenshots from video files. It groups episodes by series and displays a Netflix-esque interface, streaming video down to any web client in your home.

Others

Please visit http://anthonycameron.com for a picturesque overview of some things I've worked on.

I also contribute to OSS (my own and others) on GitHub, and write at https://blog.echoplex.us.