Hi, I'm Anthony Cameron

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

Work Experience

Senior 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 loved it, and we were quite proud of it.

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

After that, I was working in our new Waterloo office on Plus engineering efforts. I was responding to a variety of engineering efforts that affect our Plus merchants: new features, bug triage / acceleration. I was responsible for building out most of the infrastructure our sales team used to do their job at the time, and also created some in-office TV dashboards that displayed live sales data (among other things).

Since around May 2016, I've been 100% working from home in Waterloo. I spent approximately 1 year in the Shipping team, and delivered: an improved shipping zones UI, and allowing all Shopify merchants access to Shopify Shipping carrier-calculated rates. I also championed our bulk label printing project, a new user flow that allows merchants to buy & print multiple shipping labels at a time.

Nowadays, some Shipping teammates and I have splintered off to form a new team, but I'm not permitted to speak too much about it at this time!

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, 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.

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


Bachelor of Computer Science @ 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 was perhaps my most substantial and successful personal project to date. It aimed to provide web-based anonymous chat, collaborative coding and drawing, as well as WebRTC audio & video calls.


μ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.


I also contribute to OSS (my own and others) on GitHub.