Software Engineer Consultant - Freelance
(2013-09)
I've worked for clients such as Sam's Club, Walmart, and Constant Contact to name a few, primarily (but not exclusively) developing Android and iOS applications.
- Sam's Club - Implemented various features and bugfixes for the Sam's Club app, primarily focused on Scan & Go and Fuel. I also single-handedly executed one of the largest refactors that the SnG codebase had ever seen, leveraging and improving existing legacy code to deliver an entirely new Audit flow, instead of rewriting it, saving the company many months worth of development costs, while also freeing up the rest of the Android team to begin writing a new app on Walmart's Glass platform
- Walmart Labs - Implemented various features and flows for Walmart's new grocery shopping app. Majority of the contract was spent writing Kotlin code for the Android Glass platform. But the last few months, I was moved to the iOS team and wrote Swift code. The work consisted mostly of implementing Zeplin designs and consuming GraphQL APIs
- Constant Contact - Sped up SQLite query for contact search in the Toolkit app by over 300 times by implementing FTS4, wrote over 100 unit tests covering all client/server interactions, built the drag and drop email campaign editor for Android, implemented a color wheel picker, added tablet support, and implemented custom animations for interacting with all the widgets
- InfoWorks - Wrote the CGS Medicare application for both Android (Kotlin) and iOS (Swift). Wrote the backend REST server with node.js, deployed via Heroku at first, now deployed as a Firebase function
- Tully - Contributed significantly to the Tully Android app, implementing the Superpowered Audio SDK to record and playback lyrics synchronized to a beat track, the core functionality of the app
- Lightspeed Systems - Built the Classroom agent, a Windows app that: runs in the background (with a system tray interface), monitors Student Web Browser activity, allows Teacher Remote Control of Student's machine (lock screen, close tab, etc.). Built with Ably, WebRTC, REST, and web browser plugins. Written mostly in .NET C# with some C++ interoperability and Javascript for web browser extensions
- Atrium Health Wake Forest Baptist Medical Center - Ported the Sugar Sweetened Beverage iOS app to Android
- Nito (acquired by AOL) - Developed the macOS and iOS versions of the Nito app. Wrote OpenGL code and integrated proprietary face tracking technology to render a 3D avatar that reflects your facial movements. Utilized the Superpowered Audio Engine to allow users to customize the audio output of their recorded avatar videos before sharing on social media
- UpdateZen - Ported the UpdateZen iOS app to Android. Utilized the following libraries: auth0client, gson, pulltorefresh, android-inapp-billing-v3, google play services
- Canopy - Wrote the Canopy EAP application for both Android (Kotlin) and iOS (Swift)
- Qorum - Contributed significantly to the Qorum iOS Swift app, which allows users to get free Uber rides after spending an hour or more at participating bars/restaurants. Utilized the following libraries: Facebook, Twitter, Fabric, Google Maps, CardIO, Stripe, Uber, Firebase, SnapKit
- Sirius Signal - Wrote the Afloat Plan Home app for both Android (Kotlin) and iOS (Swift)
- WiActs (acquired by LogMeIn) - Wrote the MVP of the NoPassword Android app
- Alkami Technology - Worked as part of a team on the iOS side writing Objective-C and some occasional Swift code to maintain existing banking apps, involving a complex custom system of customization on top of a vanilla core app
- Summoning Grounds - Designed and wrote the TCG Pull Sheet Processor app, written in Kotlin with JavaFX, used the Google Sheets API to automate order processing, deployed to Windows, macOS, and Linux seamlessly, using Hydraulic Conveyor
Software Architect / Software Engineering Manager - SciAps
(2014-01 - 2019-06)
I led a team of engineers to develop the Raman, XRF, and LIBS products, which are handheld Android-powered analytical instruments. Raman and XRF ran on a board that supported Android 5.1.1, while our LIBS product ran on Android 4.2. I architected most of our code to be shared where possible, both in Java and in C++.
The algorithmic portion of our C++ code was also shared with our Windows desktop applications used by our physicists and chemists, allowing them to contribute algorithms to the Android apps without ever opening Android Studio.
- Embedded Android development
- Managed AOSP environments for both OMAP and Qualcomm embedded Android systems
- Wrote modifications to the Linux Kernel to add support for new hardware: LCD screen, smbus battery, FPGA, and various sensors
- Implemented native C++ hardware service to manage all hardware interaction (X-Ray Tube, lasers, FPGA, mechanical stage, I2C, SPI Bus, UART, and GPIO) via the AIDL (Android Interface DefinitionLanguage)
- Algorithm Development in C++
- Apache CouchDB / MapDB
- Java Swing / Visual Basic (Desktop apps)
- I2C / SPI bus / FPGA / UART / GPIO
- DART-SD410: Qualcomm Snapdragon 410
- Android Lollipop 5.1.1 / Android Jelly Bean 4.2
- Integrated Travis CI for all of the major Android apps and the desktop app (replacing Jenkins)
- Spectroscopy
- Bluetooth iOS Lead Architect - Univision Communications
(2016-04 - 2017-01)
I led a team of 5 developers, spread across North America and South America, to develop Univision's top apps with millions of users: Deportes, Univision, and Noticias
- Implemented a shared Objective-C architecture
- Significantly refactored the codebases of Univision and Noticias into a single reusable CocoaPod, cutting each individual app's code down to a mere few classes
- Designed and wrote a video player from scratch to replace JW Player using the AVFoundation and MediaPlayer frameworks
- Integrated with the following libraries: NielsenAppApi, AdManager, Akamai, Urban Airship, AFNetworking, CHTCollectionViewWaterfallLayout, CocoaLumberjack, Crashlytics, Fabric, FBAudienceNetwork, Firebase, GoogleAnalytics, INSPullToRefresh, INTULocationManager, MMDrawerController, SDWebImage, TTTAttributedLabel, TwitterKit, XMLDictionary, YieldmoSDK
- Integrated with Buddybuild CI for both the Android and iOS apps
Mobile Software Architect - Ingo Money
(2013-03 - 2014-05)
I wrote the Ingo Money app for Android and iOS, an app that allows you to cash a check simply by snapping a picture of it
- I wrote the Android app in Java. I used Gson for handling all of the JSON serialization/deserialization, Urban Airship for our push notifications, Iovation for uniquely identifying users and devices, and the Facebook SDK for posting about successful check deposits to the user's wall.
- I wrote the iOS app in Objective-C. All of the user interface is captured via a storyboard or a xib file. The app utilized a separate storyboard altogether for iPhone 5 devices. The only external libraries I used were the iOS distributions of Iovation and Urban Airship. I also put together a complex custom camera view controller by manipulating the native UIImagePickerController via transformations and view obfuscations. This screen was responsible for taking check images and sending them as Bas
- Integrated with the A2iA Mobility library to OCR check images directly on the phone hardware
- Extracted the main check cashing flow into its own SDK, allowing customers to embed into their own app with their own branding
- The SDK also faciliated quick development of white label apps for financial institutions that did not have their own app
Lead Android Developer - Asurion
(2012-02 - 2013-03)
Transitioned from Java server development to Android development here. Within a few months, I was leading development effort on the AT&T Mobile Protection Pack application, in a team of 7.
- Developed various custom UI components surrounding contact and file syncing functionality
- Wrote the Technical Documentation for the functionality surrounding (AWS) Amazon Web Services Multipart upload, allowing our customers to backup their photos and videos larger than 5MB in multiple separate sessions
- Refactored the Android codebase to use Library projects, eliminating unnecessary resource abstraction
- Wrote extensive JUnit tests for various features such as Contact and File sync and XML validation tests for our network protocol using XMLUnit
- Played a vital role in providing client development estimates during Sprint planning for our internal projects
Java Developer / Big Data Engineer - Dataium (sold to IHS in 2015)
(2011-06 - 2012-02)
I developed data parsing algorithms for the Hadoop platform and wrote database loading routines in Microsoft SQL.
- Wrote Java code for the Hadoop platform
- Reverse engineered automotive websites to optimize data collection
- Wrote a nightly process that loaded car information from provided VINs, normalized the data, and inserted it into our database