Will Fairclough

With 14 years of professional experience in software development, I am a polyglot developer specializing in backend and fullstack development. I excel in designing and building resilient, scalable systems that enhance user experiences and drive business success. I have a proven track record of leading teams to deliver high-quality software solutions, integrating complex systems, and optimizing performance. My expertise spans multiple programming languages and frameworks, and I am passionate about innovating and building software that makes an impact.

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

Experience

SuiteSpot Technology, Toronto, ON

Senior Lead Software Developer - Platform Team

Nov 2017 - PRESENT

I lead a team of talented developers in designing and developing SaaS applications. I utilize my proficiency in Web Technologies such as TypeScript, Angular, Ionic, and Node.js to spearhead the creation of resilient solutions like authentication services, scalable full-text search, and analytics APIs/Dashboards. These advancements enable clients to swiftly make informed decisions regarding their property management processes.

  • Designed a robust SAAS solution utilizing Node.js, RabbitMQ, MongoDB, and Angular using TypeScript.
  • 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.
  • 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.
    • Python apps to process logs and data for debugging and analysis.
    • Configure attributes/metrics and our logging infrastructure to more easily track down and fix bug and performance problems.

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.

Founding Partner and Software Developer, Ottawa, ON

Web Developer

2014 - 2021

Independently developed the Dispilio Publisher Portal, a SaaS solution for publishers and warehousing companies, using TypeScript, Node.js, ElasticSearch, MongoDB, Angular, and Go.

Achievements

  • Established partnerships with consulting firms to collaborate with publishers like MacMillan and Kodansha.
  • Deployed the project to Google Cloud Platform using services such as Cloud Run, Functions, and Kubernetes
  • Improved inventory management, and sales tracking for stakeholders.
  • Implemented 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. After 7 years I sold my shares to the consulting firm for project continuity. This project showcases my ability to innovate, collaborate, and deliver value in software projects.

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 with high GPA scores in the majority 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.