Jonathan Trowbridge

Lead Principal Software Engineer

About

My name is Jonathan Trowbridge and I'm a Senior Software Engineer currently residing in Richmond, Virginia. I have over 16 years of professional work experience developing mobile, web, and back-end software solutions.

Throughout my career I've been fortunate enough to work on a wide variety of projects utilizing various technologies. I take pride in being a full-stack engineer that is fully capable of implementing complex mobile and web applications.

I'm passionate about software development because I enjoy building simple solutions to complex problems. I appreciate how each project is unique and challenging in its own way, and how the experience gleamed from each one can be applied to create solutions in the future.

Below, please 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
  •  2021 - Present
  • Succesfully led the migration of the company's Android and iOS native mobile applications to Flutter, resulting in a more streamlined and efficient development process and increased developer productivity
  • Spearheaded the development of a scalable and modular Flutter mobile application architecture based on Clean Architecture and MVVM, resulting in a more maintainable and testable codebase, improved developer productivity, and faster delivery of new features
  • Authored comprehensive architectural and best practices documentation for the mobile development team, providing a clear and concise guide for developers to follow in order to promote consistency, quality, and maintainability of the codebase.
  • Collaborated with the design team to provide technical feedback on design mockups, ensuring feasibility and identifying potential technical challenges early in the design process
  • Communicated effectively with cross-functional teams, such as product management, QA, and backend development, to ensure smooth and efficient collaboration and delivery of projects
  • Provided accurate and timely estimations for new feature development work, based on technical requirements, design specifications, and historical data, ensuring realistic project timelines and expectations
  • Translated mockup feature designs into Jira stories and tasks, breaking down complex features into manageable units of work and providing clear requirements and acceptance criteria for developers to follow, resulting in a more organized and efficient development process
  • Delegated work to developers on the team based on their skills and workload, ensuring a balanced and fair distribution of tasks and maximizing team productivity and efficiency
  • Conducted technical interviews and evaluated candidates' technical skills and fit for the team, resulting in successful hires and a strong engineering team
  • Led the onboarding process for new developers, providing guidance and training on the company's development processes, tools, and best practices, resulting in faster onboarding and increased team productivity
  • Participated in hackathons, providing technical expertise and feedback to ideate and prototype new features or design patterns, resulting in innovative and impactful solutions

Senior Mobile Software Engineer

  • CoStar Group
    Richmond, Virginia
  •  2019 - 2021
  • Lead developer of an Android commercial real-estate listing management module and the supporting backend ASP.NET Core Web API
  • Coordinated with internal and external team members throughout the software development lifecycle to ensure consistent high-quality product releases
  • Provided guidance and feedback to the business and designers to help create a more familiar mobile user experience
  • Continuous mindful adoption of Android architectural best practices and Kotlin language features
  • Provided and received feedback through constructive collaboration with team

Senior Full Stack Software Engineer

  • CoStar Group
    Richmond, Virginia
  •  2019 - 2021
  • Implemented internal and external commercial real-estate web applications using React
  • Maintained and added new features to existing ASP.NET and NodeJS Web APIs to support frontend web and mobile applications
  • Designed and built backing databases for Microsoft SQL Server
  • Wrote a reusable application agnostic .NET Core push notification library for AWS
  • Implemented reusable .NET Core push notification library that integrated with AWS
  • Integrated push notifications within an existing iOS application to send information to CoStar researchers in the field

Software Engineer

  • Mapleton Hill Media
    Boulder, Colorado
  •  2016 - 2018
  • Developed various types of complex Android and iOS applications including, but not limited to, skiing, agriculture, inventory, and shipping using the Microsoft Xamarin Native and Xamarin Formsk
  • Implemented multifaceted ASP.NET Web APIs to back mobile applicationss
  • Worked as part of a small, four-person team, to develop the Aspen Snowmass cross-platform mobile application for both Android and iOS
  • Wrote complex PCL code for synchronizing shipping and inventory data between devices using the Azure Mobile App Service APIs
  • Migrated parts of large, dated, monolithic APIs to smaller more manageable single responsibility services backed by unit tests
  • Designed and built backing databases for Microsoft SQL Server
  • Commonly wrote expressive LINQ queries varying from simple data manipulation to complex parallelized asynchronous tasks interacting with various APIs

Application Developer

  • Worldivew Solutions Inc.
    Richmond, Virginia
  •  2013 - 2016
  • Created a Watershed Pollution Management module for the Virginia Department of Environmental Quality using Backbone, Marionette, and ASP.NET Web API
  • Developed a resource conservation management planning module for the Best Management Practice Tracking application utilized by the Virginia Department of Conservation and Recreationn
  • Implemented a complex claims-based authentication workflow that is utilized within the Storm Water Construction General Permitting application for the Virginia Department of Environmental Qualityy
  • Created a claims-based user management web portal for a recruiting application utilized by the Air Force
  • Worked as part of a team to develop a land and water resource planning software called Practice Keeper
  • Migrated a non-profit website used to promote exercise in K-12 students from jQuery to Dojoo

Software Developer

  • Gallium Technology
    Richmond, Virginia
  •  2012 - 2013
  • Developed, documented, and deployed features into an existing MVC web application
  • Updated legacy components for compliance with current web standards
  • Maintained and administered a PostgreSQL databases

Quality Assurance Intern

  • Prematics Inc.
    Vienna, Virginia
  •  July 2008 - December 2008
  • Developed unit tests using Perl and the Selenium browser automation framework
  • Managed various Python plugins for the Trac wiki and bug tracking systemm

Side Projects

Maneki Torrent Search

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
  • Approximately 124 daily active users with a 4.0 rating
  • Available for download on the Play Store

Game of Life Live Wallpaper

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

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
  • Written in Kotlin

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.