Jonathan Trowbridge

Principal Software Engineer

About

I am a Principal Software Engineer based in Richmond, Virginia, with over 16 years of professional experience in developing mobile, web, and back-end software solutions.

Throughout my career, I have had the opportunity to work on a diverse range of projects across various technologies. I take pride in being a versatile full-stack engineer, capable of implementing complex mobile and web applications.

My passion for software development stems from my enjoyment of creating simple solutions to complex problems. I value the uniqueness and challenges of each project and how the insights gained can be leveraged to develop future solutions.

Below, you will find an outline of my academic and professional accomplishments, as well as a contact form.


Resume

Professional and Academic Achievements

Education

Bachelor of Science in Computer Science

  • Virginia Commonwealth University
    Richmond, Virginia
  •  2009 - 2013

Professional Experience

Lead Principal Software Engineer

  • Coinme
    Seattle, Washington
  •  Aug 2023 - Present
  • Led the migration of Android and iOS native mobile applications to Flutter, streamlining development processes and boosting developer productivity.
  • Developed a scalable and modular Flutter application architecture using Clean Architecture and Riverpod, enhancing code maintainability, testability, and accelerating feature delivery.
  • Authored comprehensive architectural and best practices documentation, guiding the mobile development team to ensure code consistency, quality, and maintainability.
  • Collaborated with the design team to provide technical feedback on design mockups, ensuring feasibility and addressing potential technical challenges early.
  • Facilitated cross-functional team communication with product management, QA, and backend development, ensuring smooth project collaboration and delivery.
  • Provided accurate and timely feature development estimations, based on technical requirements, design specs, and historical data, ensuring realistic project timelines.
  • Translated mockup designs into Jira stories and tasks, breaking down complex features into manageable units with clear requirements and acceptance criteria, streamlining development processes.
  • Delegated tasks based on team members' skills and workloads, ensuring balanced task distribution and maximizing team productivity.
  • Conducted technical interviews and evaluated candidates, contributing to successful hires and strengthening the engineering team
  • Led the onboarding process for new developers, providing training on development processes, tools, and best practices, resulting in faster onboarding and increased productivity.
  • Participated in hackathons, offering technical expertise to ideate and prototype innovative solutions and design patterns.

Senior Software Engineering Lead

  • Coinme
    Seattle, Washington (Remote)
  •  Jan 2023 - Aug 2022

Senior Android Engineer

  • Coinme
    Seattle, Washington (Remote)
  •  Sep 2021 - Dec 2022

Senior Mobile Software Engineer

  • CoStar Group
    Richmond, Virginia
  •  2019 - 2021
  • Led the development of an Android commercial real-estate listing management module and the supporting backend ASP.NET Core Web API.
  • Coordinated with internal and external teams throughout the software development lifecycle, ensuring consistent high-quality product releases.
  • Guided business and design teams to create a more intuitive and familiar mobile user experience.
  • Adopted Android architectural best practices and advanced Kotlin features, ensuring robust and maintainable code.
  • Facilitated constructive collaboration within the team, providing and receiving feedback to enhance project outcomes.

Senior Full Stack Software Engineer

  • CoStar Group
    Richmond, Virginia
  •  2019 - 2021
  • Developed internal and external commercial real-estate web applications using React, enhancing user experience and functionality.
  • Maintained and enhanced ASP.NET and NodeJS Web APIs, adding new features and supporting frontend web and mobile applications.
  • Designed and built databases for Microsoft SQL Server, ensuring reliable data storage and retrieval.
  • Created a reusable, application-agnostic .NET Core push notification library for AWS, optimizing notification services across projects.
  • Integrated push notifications into an existing iOS application, providing real-time information to CoStar researchers in the field.

Software Engineer

  • Mapleton Hill Media
    Boulder, Colorado
  •  2016 - 2018
  • Developed complex Android and iOS applications for skiing, agriculture, inventory, and shipping using Microsoft Xamarin Native and Xamarin Forms.
  • Implemented robust ASP.NET Web APIs to support mobile applications.
  • Collaborated in a four-person team to develop the Aspen Snowmass cross-platform mobile application for Android and iOS.
  • Wrote advanced PCL code to synchronize shipping and inventory data between devices using Azure Mobile App Service APIs.
  • Migrated monolithic APIs to smaller, single-responsibility services with comprehensive unit tests.
  • Designed and built databases for Microsoft SQL Server.
  • Crafted expressive LINQ queries, from simple data manipulation to complex parallelized asynchronous tasks interacting with various APIs.

Application Developer

  • Worldivew Solutions Inc.
    Richmond, Virginia
  •  2013 - 2016
  • Developed a Watershed Pollution Management module for the Virginia Department of Environmental Quality using Backbone, Marionette, and ASP.NET Web API, improving environmental monitoring efficiency.
  • Created a resource conservation management planning module for the Best Management Practice Tracking application used by the Virginia Department of Conservation and Recreation, enhancing resource conservation efforts.
  • Implemented a complex claims-based authentication workflow for the Storm Water Construction General Permitting application at the Virginia Department of Environmental Quality, increasing security and compliance.
  • Designed and deployed a claims-based user management web portal for a recruiting application used by the Air Force, streamlining user access and management.
  • Collaborated in a team to develop Practice Keeper, a comprehensive land and water resource planning software, optimizing resource planning processes.
  • Migrated a non-profit website promoting exercise in K-12 students from jQuery to Dojo, improving site performance and user experience.

Software Developer

  • Gallium Technology
    Richmond, Virginia
  •  2012 - 2013
  • Enhanced and deployed new features into an existing MVC web application, improving user functionality and experience.
  • Updated legacy components to comply with current web standards, ensuring optimal performance and security.
  • Maintained and administered PostgreSQL databases, ensuring data integrity and efficient database performance.

Quality Assurance Intern

  • Prematics Inc.
    Vienna, Virginia
  •  July 2008 - December 2008
  • Developed and executed unit tests using Perl and the Selenium browser automation framework, enhancing software reliability and test coverage.
  • Managed and maintained various Python plugins for the Trac wiki and bug tracking system, improving functionality and user experience.

Public Side Projects

Maneki Torrent Search (Deprecated)

Maneki is an open-source native aggregate torrent search engine for Android.

  • Native Kotlin code invokes an embedded Xamarin bindings library I wrote in C# for the popular open-source torrent search aggergation project, Jackett
  • Creating a bindings library for Jackett allows the Maneki project to delegate the responsibility of maintaining indexers to the Jackett project
  • Available for download on the Play Store

Game of Life Live Wallpaper (Deprecated)

A simple live wallpaper for Android based upon the cellular automaton, Game of Life.

  • Allows users to set their device home and lock screen as a customized instance of the Game of Life
  • Users may customize the colors, cell size, delay between generations
  • Available for download on the Play Store

Bit Cast (Deprecated)

Bit Cast is a free torrent download client and video player that aims to provide a simple interface for finding, downloading, and playing torrent videos locally or on Chromecast devices.

  • Follows recommended Android architecture by utilizing Android Jetpack Architecture Components
  • Media playback powered by a custom wrapper of the VLC libVLC library
  • Implements anonymous crash reporting and analytics
  • Uses Kotlin coroutines for asynchronous operations
  • Query for torrents within the app
  • Play media locally or cast it to Chromecast devices
  • Begin video playback before media finishes downloading
  • Support for all magnet links and .torrent files
  • Query for and apply subtitles of multiple languages in the local media player

Material QR & Barcode Scanner (Deprecated)

A barcode scanner that aims to be simple and easy to use. The primary goal of this project wasn't to be unique, but instead to experiment with machine learning and to learn about integrating AdMob into mobile applications. Due to the projects simplicity, it also has the added benefit of being a great reference for Dagger 2, Firebase Crashlytics, Firebase Analytics, Google AdMob, and the Google Maps API.


Simple VLC Player

An Android media player library powered by libVLC and Open Subtitles.

  • Significantly expands the types of media that can be played on Chromecast devices
  • Provides custom local media player and Chromecast controller
  • Queries and downloads subtitles using the free Open Subtitles API

Simple Torrent Android

An Android library that wraps frostwire-jlibtorrent

  • Supports sequential downloading of torrent pieces to help facilitate streaming
  • Can download via magnet URIs or .torrent files

FFmpeg Glide Video Decoder

A Glide resource decoder powered by FFmpegMediaMetadataRetriever. It expands support for extracting thumbnails from different types of video media.


AngularJS Recipe Manager

A simple, stylized recipe manager written in TypeScript using AngularJS and leveraging Google Firebase as a store.


Windows Game of Life Screensaver

A screensaver written in C# that implements the optimized algorithm discussed in Michael Abrash's Graphics Programming Black Book. The screensaver is fully configurable from the cell size to the starting seed generation density.


Game of Life JS

A port of the windows screensaver written in vanilla JavaScript. It is just as configurable as the original screensaver and utilizes a canvas target to draw generations. This project is shown at the top of this page.