Doug Sparling, Developer in Montreal, QC, Canada
Doug is available for hire
Hire Doug

Doug Sparling

Verified Expert  in Engineering

Platform Developer

Montreal, QC, Canada

Toptal member since January 26, 2015

Bio

Doug is driven by a need to improve himself, his colleagues, and the products they build. He has experience with many web, back-end, and mobile platforms, most prominently those that are Java-based, such as JVM or Android. Doug's comfortable working at multiple levels at once, from twiddling bits on the wire or providing technical guidance to teams and C-suites alike.

Portfolio

OnyxCorp
API Design, Continuous Delivery (CD), Git, Jakarta EE, CoffeeScript, Kotlin...
Cyberdeck Consulting Corp (Self-employed)
Writing & Editing, Prototyping, Geofencing, WordPress, PHP, HTML, Ruby...
Manitoba Telecom Services (via Protegra)
Git, Jakarta EE, Windows, Android, Java, Node.js, Android SDK

Experience

  • Java - 15 years
  • Test-driven Development (TDD) - 10 years
  • Android SDK - 6 years
  • Protocol Design - 5 years
  • Go - 5 years
  • DevOps - 3 years
  • Kubernetes - 3 years
  • Writing & Editing - 2 years

Availability

Part-time

Preferred Environment

Linux, Git, Sublime Text, Android Studio, IntelliJ IDEA

The most amazing...

...service I've created is a stateful, real-time, highly-available distributed system deployed to Kubernetes, handling 20+ thousand simultaneous user connections.

Work Experience

Technical Lead for Android, Back End, and DevOps

2015 - PRESENT
OnyxCorp
  • Joined as the sole developer, reporting directly to the CTO and inheriting a suite of secure communication and productivity apps that were in rough shape. Prepared server and client apps for production readiness and successfully launched that year.
  • Implemented TCP socket servers with Golang for custom binary messaging protocols, tuned for high-latency, low-bandwidth networks. These servers maintain complex client state and scale horizontally to support tens of thousands of concurrent users.
  • Containerized Golang and Node.js services and migrated to a distributed data storage to maintain high availability, and for ease of scaling, deployment, and monitoring.
  • Implemented DevOps practices across Golang projects to run integration tests, build docker images, and publish automatically to Kubernetes via Argo CD.
  • Implemented encryption for mobile data at rest and in motion using secure local storage for Android, and end-to-end encryption with forwarding secrecy across multiple products, including key management, APIs, and protocols.
  • Created a Dropwizard-based SMTP gateway to seamlessly encrypt and decrypt PGP email for inter-operation with external email clients.
  • Implemented a C++ Envoy plugin for L4 sticky load balancing based on the content of custom protocol messages.
  • Helped design and patent a system of key splitting that developed into a major product feature. Implemented the client and server for this system and documented it for inclusion in future products.
  • Published internal specs, blog articles, and hosted webinars to coordinate implementation efforts across teams and disseminate knowledge.
Technologies: API Design, Continuous Delivery (CD), Git, Jakarta EE, CoffeeScript, Kotlin, Jira, Writing & Editing, SSL, Protocol Design, Transmission Control Protocol (TCP), Underscore.js, Functional Programming, Gulp, Dropwizard, FoundationDB, Android, SQL, Linux, JavaScript, Java, Test-driven Development (TDD), Socket Programming, TCP/IP, SMTP, Protocol Buffers, Node.js, Kubernetes, Go, Android SDK, Docker, Applied Cryptography, REST APIs, RESTful Development, gRPC

Consultant

2014 - PRESENT
Cyberdeck Consulting Corp (Self-employed)
  • Served as a ghostwriter to small companies and provided content to help drive traffic to their site via SEO.
  • Developed small proof-of-concept prototypes for clients, including telephony integration, content management, and geofenced advertising.
  • Subcontracted for a research agency to develop interactive reports for their clients.
Technologies: Writing & Editing, Prototyping, Geofencing, WordPress, PHP, HTML, Ruby, Android SDK

Consultant

2014 - 2015
Manitoba Telecom Services (via Protegra)
  • Built an Android app for a local telecom to show customers their data usage, bills, and notifications, to enable bill payments, and more.
  • Implemented several asynchronous REST calls using Retrofit, including multi-level caching of results, an offline mode, and sophisticated error handling.
  • Used Node.js to mock client web services for testing purposes.
  • Wrote a detailed developers guide for hand-off to the application maintenance team.
  • Executed and wrote test cases for a variety of Android phones and coordinated fixes with QA.
Technologies: Git, Jakarta EE, Windows, Android, Java, Node.js, Android SDK

Consultant

2011 - 2014
Manitoba Blue Cross (via Protegra)
  • Mentored many new staff on the effective use of Hibernate, Spring, and Java.
  • Designed and implemented rich JavaScript-driven interfaces with the help of analysts for editing and viewing complex insurance information.
  • Helped design and develop a JSON REST web service to provide data from an ODS.
  • Built batch processes to perform billing, exporting to legacy systems, and letter printing.
  • Aided in the creation and extension of common utility libraries for internal use by dozens of projects and developers.
  • Created and delivered presentations on functional programming, best practices, design patterns, and test-driven development.
Technologies: API Design, Git, Jakarta EE, Spring MVC, Windows, HTML, SQL, JavaScript, Web Development, Java, Test-driven Development (TDD), Spring

Programmer, Analyst

2006 - 2011
Winnipeg Transit
  • Added new features to a Swing application to allow transit controllers to monitor real-time locations of GPS-enabled buses, create and view incident reports, and communicate with bus operators.
  • Designed, implemented, and supported an Oracle-based ODS containing transit service information, supplemented by an in-memory store of real-time data.
  • Architected and helped with the implementation of a Rails-based website redesign to deliver real-time service information to customers.
  • Helped create an integration REST web service using Java and Cocoon. Developed a Ruby gem for consuming the service from internal Rails apps.
  • Introduced continuous integration with Jenkins, artifact management with Nexus, simplified building and deployment with Maven, and version control with Git.
  • Pushed for the introduction of Ruby on Rails to the organization and succeeded. Trained existing Java developers for the transition.
Technologies: API Design, Git, CSS, GIS, Jetty, Oracle, Windows, Apache, SCSS, Functional Programming, HTML, Ruby, Linux, JavaScript, Web Development, Java, Swing, Java Message Service (JMS), Scala, Jakarta EE, Ruby on Rails (RoR)

Winnipeg Transit Website

https://winnipegtransit.com
I was a principal developer on Winnipeg Transit's website redesign, which launched in 2009. It is built with Ruby on Rails with a Java back end and displays real-time schedule information to hundreds of thousands of transit customers.

MTS MyAccount Android App

https://play.google.com/store/apps/details?id=ca.mts.myaccount&hl=en
I was one of two developers on the small team that built the Android version of this app for MTS, a telecommunications company. It allows customers to view and manage their account, pay bills, monitor data usage on their devices, and more. It had received a 4.5/5 rating after launch.

XTAMTMPL Open-source Project

https://github.com/OnyxCorpInt/xtamtmpl
I open-sourced an internal tool that we use as a Kubernetes init container. It fetches secrets and certificates from the Xton Access Manager (XTAM) and populates configuration file templates that are consumed by production services.
2002 - 2007

Bachelor's Degree in Computer Science, Philosophy

University of Manitoba - Winnipeg, Canada

Libraries/APIs

RxJava, Node.js, Q Promises, Apache Lucene, Retrofit, jQuery, REST APIs, React, Cocoon, Underscore.js, Java Message Service (JMS), Reactive Extensions

Tools

Subversion (SVN), Git, IntelliJ IDEA, Sublime Text, RxAndroid, Bamboo, Mocha, Jenkins, Apache Maven, Gradle, Android Studio, Android Jetpack, GIS, Jira, Ansible, Gulp, Apache Ant, Jetty, Apache

Languages

C#, Go, Java, Ruby, Kotlin, JavaScript, CoffeeScript, HTML, SQL, Haml, CSS, Scala, SCSS, PHP

Frameworks

Android SDK, Hibernate, Dropwizard, Rx, Dagger, Ruby on Rails (RoR), Express.js, Spring MVC, Jakarta Server Pages (JSP), Apache Struts, Spring, gRPC, Swing

Paradigms

Testing, Unit Testing, Test-driven Development (TDD), Concurrent Programming, DevOps, Continuous Delivery (CD), Socket Programming, Continuous Integration (CI), Functional Programming, Agile Software Development, REST, Database Design, RESTful Development

Platforms

Jakarta EE, Kubernetes, Linux, Android, Docker, WordPress, Oracle, Heroku, Windows

Storage

FoundationDB, MySQL, PostgreSQL

Other

Protocol Design, Protocol Buffers, Web Development, TCP/IP, Data Encryption, SMTP, Applied Cryptography, APIs, Containers, SSL, Transmission Control Protocol (TCP), API Design, Writing & Editing, Analysis, Prototyping, Geofencing, Middleware, Content Management Systems (CMS)

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