Ian Foote


I am an information technology professional with more than 20 years of experience.

I have developed cutting edge technology for a variety of industries, including food services, insurance, aerospace, telecommunications, correctional services, telemedicine, farming, entertainment, automotive, higher education, medical translation, fishing, and promotions.

I have experience with project management, requirements gathering, software architecture, front end development, server side development, database design, mobile application development, software testing and cloud development.

I have many years of experience as a lead developer, and I have many years of experience working with remote teams.

I am currently pursuing remote development opportunities.

Please scroll down to review my technical experience, my work experience, my volunteer history and my hobbies and interests.

I invite you to contact me at contact@ianfoote.com

Technical Experience

2020 - Ubuntu Linux, nginx, PHP, PostgreSQL, HTML5, JavaScript, jQuery, CSS3, Bootstrap

2019 - Ruby, Rails, Node.js, React, GraphQL, Liquid, git version control

2017 - C#, .NET 4.5, ASP.NET, IIS, MS SQL Server 2016, Cassandra NoSQL database, RabbitMQ message queues, Node.js, Express web application framework, HTML5, JavaScript, TypeScript, Angular 4, jQuery, JSON, CSS3, LESS/SASS, TFS version control, git version control

2016 - MS SQL Server 2014, SQL Server Reporting Services, C#, .NET 4.5, IIS, ASP.NET, Entity Framework, HTML5, Bootstrap, CSS3, JavaScript, jQuery, AngularJS, REST, WCF Services, XML, DTD, Thunderhead, TFS version control, Git version control, SignalR

2014 - JavaScript, HTML5, CSS, WebRTC, WebSync, Android SDK 4.4, IceLink, .NET 4.5, ASP.NET, C#, IIS, Entity Framework, Mono, Ubuntu Linux, Windows Server 2012, Amazon Web Services, Java, Scala, The Play Framework, jQuery, Xamarin Forms, Bootstrap, Bootbox.js, Chrome browser extension framework, Firefox browser extension framework, ffmpeg, Linux shell scripting, Twilio telephony library, the Google App Engine, OAuth2.0, ExtJS JavaScript framework, TFS version control, Subversion version control, Git version control, Mercurial version control, FogBugz, Jira, Android Studio 2013, Eclipse with ADT

2011 - Java, JSP, XML, XSLT, XPath, XSL-FO, Web APIs, XHTML, JavaScript, CSS, Groovy on Grails, PHP5, Wordpress

2010 - Joomla 1.5, MySQL 5, XHTML, CSS, PHP5, JavaScript, WebAPIs, XML, jQuery, Superfish JavaScript library

2008 - Windows 2003 Server, CentOS, MS SQL Server 2000, MySQL 5, Oracle 10g, Subversion, Selenium browser testing framework, PHPUnit, phing, Trac, salesforce, Excel, PHP5, memcached, YUI JavaScript framework

2004 - Windows 2000 Server running ASP on IIS and T-SQL on SQL Server 2000, serving custom built web applications using HTML 4.01, JavaScript, CSS and B2B communications via XML/Web APIs

2004 - Ubuntu Linux running Apache, PHP, MySQL, serving custom built applications using HTML 4.01, JavaScript, CSS

2002 - Windows 2000 Server running .NET 1.0, ASP.NET, VB.Net on IIS and T-SQL on SQL Server 2000, serving custom built web applications using HTML 4.01, JavaScript, CSS and B2B communications via XML/Web APIs

2000 - Windows NT 4.0 Server and Windows 2000 Server running ASP on IIS and T-SQL on SQL Server 7, serving custom built internet applications using HTML 4.01, JavaScript, CSS, Visual SourceSafe version control

Work Experience

Bribe the Band Incorporated

Bribe the Band is my side hustle. It is designed to allow people all around the world to create a bid to entice their favorite entertainers to come and perform at their favorite venues. End users can create a list of entertainers. End users can create a list of venues.

End users can then create a bid, choosing a list of entertainer and a list of venues, indicating which start dates and times are acceptable, what the minimum show length must be, how much they are willing to pay for a ticket, and how many tickets they require. They then place their credit card information on file with Stripe, the world leader in secure online credit card transactions, and make a legally binding offer to purchase tickets that match the parameters established in the bid.

End users may cancel at any time up until the moment the bid is accepted and they are given a ticket. They will also be able to share their bid on social media, so their friends and followers can copy their bid, alter it if they wish, and place a bid of their own.

Musicans may then log in, see what money is being offered to them, and if they like the numbers they see, they may send a message to the venue owner, asking if they are interested in booking a show. If the venue owner agrees, all parties involved have given their consent to proceed, the credit cards are billed, and the tickets are issued.

I founded Bribe the Band Incorporated. I registered the company. I opened bank accounts, registered the domain name and set up mail servers. I set up service accounts with Spotify and Stripe. I set up servers in the cloud running on Ubuntu Linux. I designed a scalable architecture that runs on nginx, PHP/Hack and PostgreSQL. This architecture is designed to use master-slave replication together with sharding to achieve massive scalability.

It is currently incomplete.

Senior Developer (Remote)

Worked as a senior software developer responsible for writing powerful and eloquent code that improved Shopify’s point of sale offering and helped them overcome internationalization issues relating to currency, shipping and taxation.

Technologies used include Ruby, Rails, Node.js, React, GraphQL, Liquid, HTML5, JavaScript, Typescript, JSON, CSS3.

Senior Developer (Remote)

Worked as a remote developer maintaining and extended the functionality of the software responsible for global order processing for a major restaurant chain.

This software used a modern, service-based architecture, with a custom services layer that integrates information from legacy systems, enables new forms of ecommerce such as mobile ordering and deliver without introducing cost-prohibitive changes to existing back end infrastructure.

Used distributed computing techniques and technologies to achieve performance, scalability and reliability, enabling dramatic gains in throughput and allowing upgrades without interruption to current transations, mitigating cost of system downtime

Enabled 1 billion transactions per year at less than $0.005 per transaction and provided a maximum throughput on par with Amazon’s busiest days, in excess of 350 transactions per second

Technologies used include C#, .NET 4.5, ASP.NET, IIS, SQL Server 2016, Cassandra, RabbitMQ, Node.js, HTML5, JavaScript, Typescript, AngularJS, jQuery, JSON, CSS3, LESS/SASS.

Version control and project management using TFS, git

Morneau Shepell
Lead Developer

Developed peer to peer screen sharing functionality to allow members of the public to share their browser with a call center representative for technical support. This functionality requires no software to be installed, and requires no browser extensions.

Integrated functionality into Morneau Shepell"s portal software, allowing call center representatives and administrators to view connected end users, and initiate a screen sharing session with them. Users at both ends of the session may pause, resume and conclude the session. All screen sharing sessions are preserved for future reference.

Developed using C#, .NET 4.5, SignalR, Entity Framework, HTML5, CSS3, Javascript, AngularJS

Global Aerospace Inc
Senior Developer

Developed approximately 30 different reports of varying complexity using SQL Server Reporting Services, SQL Server 2014, T-SQL with views and stored procedures

Developed a reporting portal to display SSRS Reports using C#, .NET 4.5, Entity Framework, HTML5, Bootstrap, CSS3, Javascript and jQuery.

Developed a prospecting website for insurance agents using C#, .NET 4.5, Entity Framework, HTML5, Bootstrap, CSS3, Javascript, jQuery

Developed a public facing portal to allow agents, brokers and members of the public to purchase and review insurance policies. This portal was designed using AngularJS for the client, with an external facing server in the DMZ written in .NET and C# that communicates with the AngularJS client via REST, and communicates with servers in the internal network using WCF Services

Developed XML Schemas and Document Type Definitions to allow B2B communication with the Thunderhead document generation service, and created templates within Thunderhead to allow PDFs of insurance documents to be generated and returned to clients

Collaborated with software testers in the QA department, and with developers in the US and UK

Developed using Visual Studio 2015, SQL Server Enterprise Manager

All work was done using Agile development methodologies

Frozen Mountain Software Inc.
Senior Developer (Remote)

Developed a real time audio video communications system for the prison services industry. This system included a client that runs in a standard browser using Javascript, WebRTC and HTML5 for public use, a client that runs on Android devices for use by inmates developed using Android SDK 4.4 and Icelink, and a server component that acts as an intermediary between the public and the inmates, which in addition to relaying data, captures all frames, saves them to disk and routes them to prison supervisors. Included capabilities for supervisors to cut communications. The server component was developed using .NET 4.5, C#, Entity Framework, Icelink and Websync. Also designed software to stress the system by creating an arbitrary number of clients and streaming dummy data, and demonstrated that the software met the requirement to handle 200 simultaneous conferences. Tuned the software to run on Mono on Ubuntu Linux and created documentation to assist clients with server tuning. Conducted extensive testing using Amazon Web Services

Developed real time P2P audio video communications software for telemedicine. This system included a server component written with Java, Scala and the Play Framework that schedules appointments and integrates with existing record system, a client component that runs in a browser using Javascript, jQuery, WebRTC, HTML5, Icelink and Websync, and client that runs on Android and iOS devices using .NET 4.5, C#, Xamarin Forms, Icelink and Websync. Supports connecting multiple medical devices from each client.

Developed real time P2P audio video communications for a client that does 3rd party user testing. Included a client component that runs in the browser using Javascript, jQuery, WebRTC, HTML5, Icelink and Websync, Bootstrap, and Bootbox.js. Developed Chrome browser extension that allows screen sharing from the browser, developed Firefox browser extension that allows screen sharing from the browser. Developed a server component using .NET 4.5, C#, Entity Framework, Icelink and Websync that secures the services, handles scheduling appointments, and connects to the conferences as an invisible peer, saving audio and video to disk. Developed a server component that uses ffmpeg which joins the various audio and video files into a single video file.

Developed real time P2P communications software for a client that provides VOIP services. This included that included a client component that runs in the browser, supporting telephone calls using Twilio to integrate with POTS networks, real time P2P audio video using WebRTC, instant messaging and file sharing. Developed Gmail application that resides within Google servers and adds links to emails allowing users to initiate telephone calls and video conferences directly from Gmail using Javascript and OAuth2.0.

Extended existing software serving the dairy industry. This software downloaded up to date prices for various commodity including cattle feed and milk, and allowed farmers to receive text messages when targets they set are met. Updated stored procedures using T-SQL, developed technology to send text messages using Twilio, generated reports, extended user interface using ExtJS.

Conducted requirements gathering interviews with clients, participated in architecture design meetings, worked with remote developers, often worked remotely from my home office.

Managed source code using Subversion, Git and Mercurial. Managed projects using FogBugz and JIRA. Wrote code using Visual Studio 2013, Eclipse with ADT, Android Studio

Teamspace Canada Inc.
Lead Developer

Senior developer assigned to Viacom's entertainment division

Maintained legacy websites for MTV, VH1 and Country Music Television stations using Java, JSP, XML/XSLT on the server and HTML/Javascript/CSS

Senior developer on the project to replace the existing code base for MTV, VH1 and CMT websites with new technology built using Groovy on Grails

Videoconferenced daily with producers in Viacom offices in New York to plan future developments

Mentored and trained junior developers

Built websites for various Viacom events including the Do Something awards, the Critics Choice Movie Awards and other properties

Built command line tools to bulk update various smaller Viacom websites running on Wordpress

Bright Crow Media
Full Stack Developer

Created a powerful Joomla 1.5 component called "Automap"

Conducted requirements gathering and produced design specification

Designed and diagrammed the database schema using MySQL

Wrote component code using XHTML/CSS/PHP5/XML/Javascript

Delivered AJAX/Web 2.0 functionality using jQuery and Superfish libraries

Created a multi-dealer version to drive the core site, a hosted-client solution that integrates with the core sites database while using a separate database for the Joomla install, and created a single-dealership-stand-alone version for sale to third parties

Azorus Inc.
Internet Application Developer / Software Tester

Reverse engineered existing database schemas for development version (MS SQL Server 2000, MySQL 5, Oracle 10g)

Created database diagrams and documentation

Re-designed database schemas, normalized database, enforced referential integrity, reduced schema size by over 50%

Interviewed staff and created requirements documentation for the system

Created a new scope for the project

Established version control systems using Subversion and restructured development environment around it's use

Designed unit tests for the system using Selenium browser testing framework, PHPUnit unit testing software and phing

Tested the development daily, rebuilding the databases on each run

Integrated the test suite into the version control system so after each commit, the suite of tests would be run and errors sent to the development team and upper management

Established bug tracking with Trac, and administered the assignment of tasks for bug fixes and other development until the system was ready for launch

Designed and implemented custom analytic software for internal sales

Designed PHP5 scripts to import data into MySQL database using web logs, salesforce.com exports, Excel spreadsheets, flat files.

Optimized core product offering for high throughput, setting up memcached in the data abstraction layer and re-designing the system to work well on high performance clusters

Developed using CentOS and Windows Server 2003

Lead Developer (Remote)

Reverse engineered existing SQL Server 2000 schemas, creating diagrams and documentation

Re-designed database schemas, reducing schema size by over 30%

Normalized database and restored data integrity while migrating to new schema

Updated ASP code to interface with new schema

Front end designed in HTML 4.01, Javascript, CSS

Develop new SQL Server 2000 databases for new applications

Install MySQL and set up open source intranet applications

Monitor, test and tune database and application performance

Design and implement database replication

Develop and run DTS jobs and reports using T-SQL and VBScript

Plan, document and implement disaster recovery plans

Create safe strategies for deployments of custom system upgrades on live server

Migrate server to a virtualized environment

Apply database, application and OS patches to servers

Develop B2B integration systems using ASP, T-SQL and XML over http

Meet and collaborate with client companies and their technical reps

Collaborate with international developers remotely on development

Design and implement project management software for localization

Design and implement QA software for localization

Automate Trados translation applications via COM+

Develop live web reports deliverable in MS Word, MS Excel, MS Access, PDF

ISL Web Marketing & Development
Lead Developer

Conducted requirements gathering interviews with clients

Created use case diagrams and user stories for client approval and sign off

Designed code-generation engine to consume user stories and create code

Designed database architectures for numerous custom solutions, including Clearwater Foods website, Naturally Nova Scotia's website, etc

Implemented database design in SQL Server 2000 using T-SQL

Implemented web interfaces with .NET 1.0, ASP.NET, VB.NET on IIS, HTML 4.01, Javascript, CSS

Monitor and tune database and application performance

Troubleshoot database and application problems

Upgrade existing CMS system from NT 4 and SQL Server 7 to Windows 2000 and SQL Server 2000

Design and implement B2B integration with Purolator and UPS via XML

Management of source control with Visual SourceSafe

The Promotions Factory
Lead Developer

Conducted requirements gathering interviews with staff from each department

Created use case diagrams and designed the high level project management system

Set up web server with Windows 2000 and SQL Server 7

Migrate existing websites from Windows NT 4.0 to Windows 2000

Design database architecture based on requirements gathering interviews

Implement database design with T-SQL (writing stored procedures, triggers, views, etc)

Implement web based user interface for new system using ASP on IIS, HTML 4.01, Javascript, CSS

Designed, implemented and maintained database backups and disaster recovery strategy

Migrated data into the new system from flat files, Excel spreadsheets, Access databases

Restored servers and databases to operation after hardware failure using backups

Designed small custom web applications for client use (HP Asia, Telstra, Mazda Australia)

Designed Microsoft Access applications to interface with SQL Server database from finance department

Hobbies / Volunteer Work

While I do love technology, I try to maintain a work life balance.

I am a harmonica player. I enjoy playing blues and rock. I've played with a couple of bands over the years, enjoy performing at open mic events, and I performed at my first street music festival in 2018 for an audience of approximately 200 people.

I enjoy urban gardening. While I am not currently associated with any urban gardens, I helped build Common Roots Urban Farm, and I was elected coordinator of the Prescott Street Community Garden Society in 2014.

I also enjoy mixed martial arts. I trained in Karate in junior high school. I won four provincial gold medals as an amateur wrestler in high school. I trained in Capoeira with Dende do Recife in Halifax under Contra-Mestre Azeitona. I trained in Muay Thai at Fit Plus in Halifax, Nova Scotia. And, finally, I trained in Muay Thai and No-Gi Brazilian Jiu-Jitsu at Centre Evolution in Gatineau, Quebec. I also have some training in Bataireacht.

I have always felt a connection to the outdoors. I grew up in rural Nova Scotia, Canada, surrounded by forests and lakes. I was a member of the Boy Scouts when I was young. I was a Beaver from ages 5-7, a Cub from ages 8-10, a Keeo from ages 8-10, and a Scout from ages 11-12.

I am a veteran of the Canadian Infantry, attached to the Princess Louise Fusiliers Light Infantry Regiment based out of Halifax, Nova Scotia. I took an honorable discharge from the military after almost dying in a car accident.

I have studied Salsa dancing with Halifax Salseros, although I am a little rusty. And, I love jumping into a mosh pit at a heavy metal or punk show.

I am also interested in 3D printing technology, and built my own 3D printer from scratch. I try to stay up to date on the latest developments over at reprap.org.

I also volunteered with the St. John Ambulance Brigade, administering first aid at music festivals, figure skating competitions, motorcycle races and other similar events.

I also volunteered with We Bite Back providing technical support and moral support. We Bite Back was a pro-recovery community for people with eating disorders created by my former common law wife. It is no longer in operation.

I am not a big poetry reader, but a childhood love of Iron Maiden led me to Samuel Taylor Coleridge's Rime of the Ancient Mariner, and I love reciting Kubla Khan aloud.

I have developed an interest in Japanese music recently, and have been teaching myself Japanese with the expectation of taking a working vacation to Japan someday. I am a huge fan of Gacharic Spin and Doll$Boxx, and I have developed a bit of a crush on their bass player F チョッパー KOGA.

I also enjoy a good game of Settlers of Catan or Texas Hold-em when the opportunity arises.

I would like to take the opportunity to again invite you to contact me at contact@ianfoote.com

Stay cool!