Senior Technical Consultant
10/2022 - 04-2023
Philadelphia, PA (Remote)
- Built marketing iOS application to to bring in more customers. Used SwiftUI, RealityKit, SceneKit, Core Location, MapKit and HealthKit.
- Technical writing - wrote multiple articles covering topics such as actors, property wrappers, swizzling, and block chain data permanence.
- Maintain hybrid iOS and Android application built using Ionic, Capacitor, React, and Typescript.
- Updated web application built with React and Typescript.
Senior iOS Developer
12/2020 - 10/2022
New York City, New York (Remote)
- Consumer facing banking services application with over 100,000 users and 4.8 app store rating.
- Led feature teams consisting of QA, back-end, and front-end engineers. Answered questions around implementation details, removed blockers and assisted engineers in getting their job done.
- Team was having issues with keeping track of pipeline failures. Used GitHub APIs, Jenkins, and Fastlane to post pipeline failure messages to dedicated slack channel as well as direct message commit authors. This helped reduce sit time of pull requests.
- Team wanted to explore implementing new features in SwiftUI. Proposed solution to facilitate transition from UIKit to SwiftUI. This included styling, analytics and allowed for new SwiftUI code to be used in UIKit hybrid scenarios.
- Project was lacking unit test coverage. Added unit test coverage for essential functionality and included them in the CI/CD pipeline. Utilized code reviews and verbal communication to encourage teammates to write unit tests. This helped to prevent regressions, as well as gave peace of mind for larger refactors.
- Application was missing multiple third-party SDK integrations. Implemented several SDKs including Socure, Pinwheel, and Plaid. This helped the application reach essential functionality for production launch. This functionality included customer KYC, linking external bank accounts, and paycheck direct deposit.
- QA team had trouble duplicating bugs due to lack of network logging. Refactored networking code to include request and response logging which redacted customer personal private information. Also, added logging for decoding errors. This helped QA rapidly identify sources of certain bugs.
- Networking code was verbose, leading to hard to read code. Leveraged generics to make API calls not require response type to be passed into method calls. This reduced lines of code, as well as verbosity in higher level networking code.
- Back-end API responses would sometimes return unexpected results such as different types, empty lists, or null values. This resulted in unwanted decoding errors or undesirable UI states. Used property wrappers to allow decoding flexibility by checking if response types could be converted to desired type and allow default values. This reduce the UI getting into unwanted states and improved the user experience.
05/2019 - 11/2020
- Helped build out core functionality and architecture of new flagship application.
- Client was losing customers due to legacy Objective-C application being hard to use. Implemented new simplified workflow, that was built using Swift, that tied into legacy Objective-C code. Team increased test coverage from 0% to 8% and implemented black box testing to assure changes to legacy code did not break old UI and workflow. Received positive feedback from users.
- Team was having trouble with code hygiene and formatting. Implemented SwiftLint into flagship project and included it in the CI/CD pipeline and proposed rule set to team. Slowly turned on rules and refactored code. Sped up code reviews by reducing the number of comments and improved code readability.
- Application was having Core Data issues with efficiency, duplicate data creation, and schema design. Proposed a solution to fix schema design issues. This resulted in faster batch deleting, as well as removed edge cases where some objects could not be batch deleted. Additionally, cleaned up save code to be more concise and not duplicate objects.
- Needed to implement Bluetooth functionality into application, as well as make it testable. Proposed and implemented a solution that included creating protocol wrappers around Apple's BLE frameworks. This allowed grey box testing of the Bluetooth functionality with UI tests.
- Core Bluetooth
- Google Maps
- Core Location
- Core Data
- Grand Central Dispatch
- Core Animation
- Compass: Allows you to search for an address and the compass points you in that direction.
- AR Fun: Camera filter feature that overlays emojis over users face. Also includes feature for placing AR objects on vertical and horizontal planes.
- Thirsty Drink Finder: An iOS application that allows the user to search for mixed drink recipes.
- Odds of Catan: An iOS application for keeping track of probabilities in Settlers of Catan.
- Script set on a daily timer for keeping track of crypto portfolio and storing results in a CSV.
- Secret Santa command line script that emails participants who they will be giving to.
- Scripts to reformat crypto transaction CSVs for tax reporting.
Bachelor of Arts
University of Minnesota - Morris
Scholarly Horizons: University of Minnesota, Morris Undergraduate Journal 2014 Vol. 1: Iss. 2, Article 4.
Applying Genetic Programming to Bytecode and Assembly
- Professor submission only: representing top level work seen over professor's career.