Sam MacPherson, Developer in Toronto, ON, Canada
Sam is available for hire
Hire Sam

Sam MacPherson

Verified Expert  in Engineering

Software Developer

Location
Toronto, ON, Canada
Toptal Member Since
February 23, 2017

Sam has over fifteen years of programming experience. He primarily does web development as a full-stack engineer, but is flexible and open to learning new things. Sam routinely deals with high traffic websites, and is comfortable dealing with solutions at scale.

Portfolio

Sexual Assault Center of London
Amazon Web Services (AWS), JavaScript, Ionic
Throw Away Games, Inc.
Three.js, WebGL, Vagrant, JavaScript, Sass, Ionic, Laravel, PHP
Real-time Graphics
Medialooks Platform SDK, Grunt, Phaser.io, JavaScript, PHP, C#

Experience

Availability

Part-time

Preferred Environment

Git, Atom Text, Windows

The most amazing...

...thing I've built is a cross-platform virtual dom library for web development in the Haxe language. It is on my Github account under haxe-dom.

Work Experience

App Developer

2016 - PRESENT
Sexual Assault Center of London
  • Built a hybrid app that allows victims of sexual assault to collect evidence by providing them with step-by-step instructions.
  • Built a cryptographically signed package that contains a verified timestamp of when the data was collected to be used in legal proceedings. The packages are stored on S3.
  • Worked directly with social workers and a prosecution lawyer to design the app.
  • Worked with an external company to match the app design with the website they developed.
Technologies: Amazon Web Services (AWS), JavaScript, Ionic

Web/App Developer

2015 - PRESENT
Throw Away Games, Inc.
  • Built a hybrid app using the Ionic framework called RelNuz. It is publicly available on Android/iOS.
  • Worked with both a designer and a back-end developer. Design was provided via CSS files and example HTML.
  • Contributed to the back-end PHP/Laravel service which supports the App API as well as the website.
  • Made changes to an Ionic open source plugin to get a video camera recording instance running without switching out of the app.
  • Built a web tool for viewing a 3D avatar created from cameras in real life.
Technologies: Three.js, WebGL, Vagrant, JavaScript, Sass, Ionic, Laravel, PHP

Developer

2014 - PRESENT
Real-time Graphics
  • Built a windows application in C# that delays broadcast video and can upload the delayed stream to various RTMP endpoints.
  • Built a windows application to monitor nine video feeds and freeze when the user taps the screen. This is being used for televised poker games.
  • Provided on-site development and web stream management for televised poker games going out to Poker Central and CBS.
  • Built a web app that reads in a poker game play-by-play file and reconstructs the visuals of the game on an HTML canvas element using the PhaserJS framework.
  • Built a web tool to filter for tweets containing certain hashtags and allow an operator to mark them to go live-to-air.
  • Provided ongoing consultation and development work to the owner of the company.
Technologies: Medialooks Platform SDK, Grunt, Phaser.io, JavaScript, PHP, C#

CTO

2012 - PRESENT
SandBoxd, Inc.
  • Built the SandBoxd.com web app, which is a gaming portal for browser-based games. The app and its games run on both mobile and desktop.
  • Built a virtual dom library for Haxe which is being used by SandBoxd to allow rendering pages on either the client or the server using the same code.
  • Built a push message server for chat and real-time notifications on the SandBoxd web app.
  • Built a multiplayer game called EverWorld, which is a real-time, infinite world MMORPG.
  • Built a public API for games developed on SandBoxd.
  • Built SDKs for the API on Java and JavaScript.
  • Built and deployed hybrid apps for EverWorld on Google Play and the Apple App Store.
Technologies: Amazon Web Services (AWS), Phaser.io, Cordova, Bootstrap, PixiJS, Less, JavaScript, Java, HaXe

Web Developer

2011 - PRESENT
Bombardier, Inc.
  • Built a web service that allows employees to bid on jobs they want to work.
  • Built the algorithm that selects the weekly job each employee is to work based on the union/company collective agreement.
  • Built a similar system to allocate vacation weeks for each employee for the year.
  • Expanded the system to manage the supervisor's call list for overtime work based on eligibility for the job.
  • Provided ongoing client support and maintenance for this system.
Technologies: HaXe

Web Developer

2016 - 2016
GSXP, LLC
  • Built a video platform using Node.js and React.js with full server-side rendering.
  • Built the back-end using Node.js and Express.js with a commonly shared model and view layer between the client and server.
  • Used Redux for managing the state.
  • Designed and set up all services to run on Amazon Web Services.
  • Services are designed for large amounts of traffic by use of caching and CDNs.
  • Backed by a MySQL database in Amazon RDS.
Technologies: Amazon Web Services (AWS), Sequelize, Express.js, React, Node.js

Web Developer

2014 - 2014
Lollipop
  • Built an interactive vehicle creator for the chevrolet.com website using the Fabric.js framework.
  • Worked with a UI designer to convert the example images he sent into SASS.
Technologies: Grunt, Fabric, JavaScript, Sass, HTML

Co-founder

2006 - 2012
GigaBlast Games
  • Developed a multiplayer, 2D shooter game called Pawn using Flash. The server was built using SmartFoxServer.
  • Managed and operated a website PawnGame.com which hosted millions of players.
  • Worked with the owner of CrazyMonkeyGames.com, who did promotion for the game on his site.
  • Built a sequel multiplayer, 2D game called Pawn: Tactics using Flash and Apache MINA in Java.
  • Built a third multiplayer, 2D game called Zed using Haxe compiled to Flash.
  • Built a game asset management tool using Java and Swing.
  • Dealt with security and obfuscation to prevent or deter cheating in all games.
  • Implemented a hash-based pathfinding algorithm for fast pathfinding in the Zed game.
  • Wrote a lighting GPU shader for Zed which cast shadows on walls when objects obscured your flashlight.
Technologies: Apache MINA, Java, SmartFoxServer, HaXe, Flash

PeerFact.zip

I built this Chrome extension in 2016. The extension identifies and flags fake news posts on Facebook.

You can run it by extracting the zip, then going to Chrome://extensions/ in the Chrome browser and checking the "Developer Mode" box in the top right. You then press the "Load unpacked extension..." button and select the containing folder for the extension. After this is done, posts from a preset domain list will automatically be visibly flagged on your news feed.

For example, posts from Theonion.com/ will be flagged as satirical.

Please note this extension uses DOM selectors to find where the posts are, and it may break when Facebook re-compiles its code.

Travel Planner

I developed a user-friendly web application for trip planning, where users can effortlessly add and manage their upcoming journeys. This application is built with a Node.js back-end combined with a React front-end.

Languages

HTML, HaXe, CSS, JavaScript, ActionScript 3, Java, SQL, Sass, Less, Python, Bash, C, C#, Objective-C, PHP

Libraries/APIs

Node.js, React, Fabric, jQuery, WebGL, Three.js

Storage

Amazon DynamoDB, NoSQL, MySQL, MongoDB

Other

Browsers, Cordova

Frameworks

Phaser.io, Ionic, Express.js, PixiJS, Bootstrap, AngularJS, Apache MINA, Laravel, Chrome

Tools

NPM, Gulp, Atom Text, Git, Grunt, Vagrant, Flash, Medialooks Platform SDK, Sequelize

Paradigms

Object-oriented Programming (OOP), Concurrent Programming, Functional Programming

Platforms

Android, Linux, iOS, Amazon Web Services (AWS), SmartFoxServer, Windows

2007 - 2012

Bachelor of Science Degree in Computer Science (Minor subject: Physics)

University of Waterloo - Waterloo, Ontario, Canada

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring