Will Fairclough

With 13 years of professional experience in software development, I pride myself on being a true polyglot, having mastered a diverse range of programming languages and always being eager to embrace new ones. My expertise spans the web platform, where I excel in multiple frameworks, as well as mobile development for both native iOS and Android (AOSP). I hold an advanced diploma in Photonics Engineering Technology from Algonquin College and furthered my education with part-time studies in Computer Science at Carleton University.

Ottawa, Ontario, Canada
+1 (613) 292-5351
wfairclough@gmail.com Website wfairclough.com GitHub github.com/wfairclough

Experience

SuiteSpot Technology, Toronto, ON

Senior Lead Software Developer - Platform Team

Nov 2017 - PRESENT

Early Team Member & SAAS Platform Architect Aided in the inception of the company and spearheaded the development of a SAAS platform assisting Property Managers in daily operations.

  • Designed a robust SAAS solution utilizing Node.js, RabbitMQ, MongoDB, TypeScript, and Angular.
  • Engineered an authentication service, facilitating user and API tokens across multiple tenants.
    • TOTP support to allow MFA using Authenticator Apps.
    • SAML support to provide SSO.
    • SCIM support for user syncing to the platform.
  • Crafted native iOS and Android applications using Ionic and Capacitor for AppStore deployment.
  • Developed multiple Capacitor native plugins, including:
    • A camera plugin for enhanced photo-taking efficiency.
    • A background task plugin ensuring data uploads prior to app closure.
  • Set up CI/CD on CircleCI, ensuring end-to-end testing of APIs and web apps:
    • Executed automated headless e2e tests with Protractor/Playwright, providing detailed reports and failure screenshots.
    • Containerized services using Docker to deploy to AWS and local clusters for testing.
  • Initiated a component library with Lit and web components, aligning with the SuiteSpot design system.
  • Seamlessly integrated legacy third-party Property Management systems through SOAP APIs, ETL files, and SFTP, supported by an S3 Bucket and Lambda functions.
  • Provided CLI tools, and small web apps to accelerate the development team with their tasks:
    • Rust CLI to inject cloud secrets into their environment if their AWS credentials allow it.
    • Backend web tools to inspect and onboard customer data.
    • Configure attributes/metrics and our logging infrastructure to more easily track down issues in the system.

Graphite Software, Ottawa, ON

Android Software Developer

Feb 2015 - Nov 2017

Contribute to Graphite Software's fork of the Android Open Source Project (AOSP) for the Secure Spaces Android multi-persona security solution.

  • Android application development on numerous components in the Secure Spaces product using Java and Kotlin.
  • Developed various features within Android's Application Framework layer.
  • Lead development on larger full stack projects (REST application server, API, Android client).
  • Created custom Gradle Plugins for use by other developers working on Android applications.
  • Android user interface design and implementation for apps.
  • Developed functional and unit tests for Android apps and framework.
  • Some lower layer C/C++ development in Android's System Services layer (netd, installd).
  • Building Linux kernel with added modules within the AOSP source tree.
  • Developed a Cloud based nightly build system using golang and Google Cloud Platform.
  • Create various Docker containers for continuous integration tasks.

Graphite Software, Ottawa, ON

Web Software Developer

Apr 2014 - Feb 2015

Worked on the full stack (database, server, web client, and Android client) as a software developer for Graphite Software security solution for Android based mobile devices.

  • Focused on delivering solutions based on the Typesafe Reactive Platform (Scala, Play Framework and Akka).
  • Build dynamic single page web applications using AngularJS by hooking the resources into the server side REST APIs.
  • Scala Play applications that manage a scalable MongoDB database using ReactiveMongo asynchronous database driver.
  • One of my biggest achievements was to spearhead a project to build an Over-the-air updating API to provide new Android build images to devices running out in the field.

Self-Employed Web Portal Project, Ottawa, ON

Web Developer

2014 - 2021

Project: Web Portal for Book Publishers

Objective Develop a modern web portal enabling book publishers to access sales and inventory data, replacing an outdated system.

  • Designed the portal from scratch using Node.js, NestJS, TypeScript, and MongoDB. Deployment in a Docker container on Google Cloud Platform using Cloud Run.
  • Partnered with a consultant to comprehensively address user pain points and enhance functionality.
  • Engineered an intuitive Ordering module, streamlining the order creation process and facilitating exports to their legacy system for efficient processing and fulfillment.
  • Amplified data retrieval by integrating a full-text search system, indexing customer data in ElasticSearch.

Outcome The portal was well-received by users, significantly improving their day-to-day operations and offering a substantial upgrade from their legacy system.

BLINQ Networks, Ottawa, Canada Area

Software Developer

Apr 2012 - Dec 2014

Team member for the wireless network management product used to manage a system of nodes, collect performance data, increase link performance, and assist with network planning.

WebUI:

Web front-end node configuration management for editing RF/IP settings of the wireless backhaul nodes.

  • Designed user interface mockups for web applications.
  • Developed a GWT front-end application with a wrapper around the ConfD javascript api to access the nodes configuration settings.
  • XML processing for wireless nodes performance data.
Node Management and Pre-Deployment Assistant:

Create Java Web Applications to manage live BLiNQ wireless nodes and optimize them to specific performance requirements. Plan wireless backhaul networks before deploying them with the Pre-Deployment assistant and simulator.

  • Developed Web Applications in JBoss application server using Enterprise JavaBeans.
  • Interoperability communication between MATLAB and Java applications using SOAP Web Services with J2EE standards.
  • Designed database schema using MySQL Workbench.
  • Used JMS for inter-application communication.
Digital Attenuator Controller:

Used the Raspberry Pi GPIO ports to control an in-house Digital Attenuator Circuit Board.

  • Developed a C++ application to communicate over the SPI pins of the GPIO to control the Digital Attenuator Circuit Board.

Superna.Net, Ottawa, Canada Area

Software Developer

Sep 2010 - Mar 2012

On-site role focusing on engineering applications tailored for optical and radio frequency network planning tools.

  • Engineered applications using Java and Python tailored for optical network planning tools.
  • Collaborated with a team of developers on a unified project, utilizing tools for issue tracking and version control.
  • Integrated both REST and SOAP-based Web Services and ensured seamless deployment using Tomcat.
  • Crafted applications in C# leveraging ASP.NET for radio frequency network planning, with a UI developed using HTML, CSS, Javascript, and jQuery.
  • Designed and implemented applications in Java and Python to deploy virtual simulators on VMware ESX systems via the VMware Infrastructure API.
  • Established and executed automation testing for a Java-based Network Management System using Python.
  • Regularly participated in weekly development meetings with software architect.
  • Proficient in agile and scrum development methodologies.

Education

Carleton University, Ottawa, ON

Computer Science

2011 - 2014

Studied part-time at Carleton achieving credits in most of the courses required for a Computer Science degree.

Algonquin College of Applied Arts and Technology, Ottawa, ON

Advanced Diploma - Photonics Engineering Technology

2007 - 2010

Studied full-time at Algonquin College achieving an Advanced Diploma in Photonics Engineering Technology.