Matthew Carroll, Developer in Atlanta, GA, United States
Matthew is available for hire
Hire Matthew

Matthew Carroll

Verified Expert  in Engineering

Full-stack iOS Developer

Location
Atlanta, GA, United States
Toptal Member Since
January 2, 2017

Matthew is a full-stack software engineer and a contributor to Apple's Swift project. He graduated from Georgia Tech with a B.Sc in computer science in 2002. Since then, Matthew has developed in C/Unix, Java/Spring, iOS, full-stack web, and Python—most recently, data-engineering pipelines at Elevance Health. Matthew is committed to software engineering excellence and is available to travel to client sites.

Portfolio

Carelon Digital Platforms/Elevance Health
Go, gRPC, Protobuf, Kubernetes, Rancher, Docker, Continuous Deployment...
Carelon Digital Platforms/Elevance Health
Snowflake, Pachyderm, PySpark...
Carelon Digital Platforms/Elevance Health
TypeScript, React, Tailwind CSS, GraphQL, React Apollo, Apollo Server...

Experience

Availability

Part-time

Preferred Environment

Amazon Web Services (AWS), SQL, MongoDB, Apache Kafka, Node.js, iOS

The most amazing...

...app I've developed is the location services, networking, caching, and data model of The Weather Channel’s production of the Apple watchOS app.

Work Experience

Data Engineer

2023 - PRESENT
Carelon Digital Platforms/Elevance Health
  • Served as a software engineer for a healthcare tech platform to provide access to FHIR (hl7.org/fhir) resources in a secure, restricted environment.
  • Developed gRPC services in Go that provided FHIR resources in Protobuf. Service definitions were written in Protobuf and generated into Go sources using Buf. Select fields in FHIR resources were tokenized and detokenized with Protegrity.
  • Developed unit tests for gRPC services in Go using GitHub Copilot.
  • Maintained Kubernetes configurations to deploy Docker images of various gRPC services to Kubernetes Pods managed by Rancher. The deployments were accessible via an admin console in Rancher and via the kubectl CLI.
  • Developed configurations for automated GitLab pipelines that linted, tested, and built Docker images of various gRPC services.
  • Built applications, services, and transformers of the platform in Docker, deployed to Kubernetes, and managed with Rancher. There were several layers of access control, including integrations of Auth0 and Istio.
Technologies: Go, gRPC, Protobuf, Kubernetes, Rancher, Docker, Continuous Deployment, GitLab CI/CD, SQL

Data Engineer

2023 - 2023
Carelon Digital Platforms/Elevance Health
  • Worked on the following project: an ETL pipeline that produced FHIR (hl7.org/fhir) resources in Protobuf. The data was sourced from Snowflake, processed by Spark jobs, transformed into FHIR resources by Python jobs, and stored in Pachyderm and Amazon S3.
  • Used the following techstack: Snowflake, Pachyderm, PySpark, FHIR, Protobuf, and Amazon S3.
  • Utilized the following Python stack: python-pachyderm, PySpark, NumPy, pandas, protobuf, Google FHIR, Jinja2, Pytest, boto3, Pyright, Pydantic, tox, and poetry.
  • Developed FHIR-based schema validation tests of FHIR resources in Python.
Technologies: Snowflake, Pachyderm, PySpark, Fast Healthcare Interoperability Resources (FHIR), Protobuf, Amazon S3 (AWS S3), Python

Full-stack Software Engineer

2020 - 2022
Carelon Digital Platforms/Elevance Health
  • Architected content models in our content management systems (AEM, Strapi, and Contentful) that served content to the production site anthem.ai.
  • Developed GraphQL APIs on the server that fulfilled front-end GraphQL operations for content from the CMS.
  • Worked on the development of front-end GraphQL operations and React hooks to run GraphQL operations to fetch data from the server.
  • Converted UI designs into React components and Tailwind utilities.
  • Developed database schemas and migrations as our data models evolved.
  • Built and maintained unit tests in TypeScript/Jest.
  • Architected configurations for automated GitLab pipelines that linted, tested, and built Docker images of the bundle and server and deployed them to the production environment.
Technologies: TypeScript, React, Tailwind CSS, GraphQL, React Apollo, Apollo Server, PostgreSQL, Node.js, Adobe Experience Manager (AEM), Strapi, Contentful, Jest, GitLab CI/CD

Full-stack Software Engineer

2019 - 2020
Anthem
  • Developed a back-end messaging system to deliver push notifications to the Anthem Sydney iOS and Android apps. The high-level tech stack of the system is Node.js, MongoDB, Kafka, and Amazon Pinpoint.
  • Built a Node.js microservice to consume push notification requests from a Kafka topic, send push notification requests to Amazon Pinpoint, process the response, and then produce messages to Kafka topics about the result of the Amazon Pinpoint requests.
  • Architected a Node.js microservice to update the message states in a MongoDB by consuming messages from a Kafka topic about the result of push notification requests to Amazon Pinpoint. The service produced Kafka messages if the database update failed.
  • Developed features for the Anthem Sydney iOS mobile app (Apps.apple.com/us/app/sydney-health/id1463423283). The team was composed of 20 iOS developers (for a sense of the scale of the project).
  • Built a large set of device integration features for the Sydney iOS app whereby users can sync their HealthKit and fitness device (Fitbit, Garmin, etc.) data with the Sydney app, using Validic as an integrator of health data.
  • Developed a Node.js microservice with REST APIs to update which fitness device users of the Sydney web, iOS, and Android apps use to track their fitness data. This service is used by the Sydney web and mobile apps.
  • Built a jailbreak detection and defense mechanism for the Sydney iOS app. This mechanism detects when the Sydney app is running on a jailbroken iOS device and prevents the app from running in those cases.
  • Implemented SSL certificate pinning in the iOS app.
  • Merged 16 Xcode projects in four Git repos into one Git repo and one Xcode project. This monorepo effort reduced overhead on the 20-person iOS dev team during feature development and PR management. I developed Ruby scripts to support the merging.
  • Implemented a security feature in the Sydney iOS app where the app logs out the user after a period of inactivity. I used GCD timers and the UIGestureRecognizers to observe touches on the UIWindow and log out the user after a time of inactivity.
Technologies: Amazon Web Services (AWS), Swift, Apache Kafka, MongoDB, Node.js, TypeScript, Swagger, JavaScript, RESTful Microservices

iOS Security Engineer

2018 - 2019
Yinkozi
  • Developed features for the Yinkozi iOS security container in Swift, C, and Objective-C. It is a library, unit tests, and a set of supporting bash and Ruby tools that provide security features for iOS apps that link with it.
  • Contributed to the security container that provides features for client iOS apps such as system call protection controls, device integrity controls (jailbreak detection), app integrity controls, binary hardening controls, app data protection, and certificate pinning.
  • Developed Swift APIs to provide iOS device integrity controls (jailbreak detection) to client apps and application integrity controls such as iOS app bundle validation and the App Store receipt validation.
  • Developed Swift APIs to validate the symbol addresses of imported iOS system symbols used by the container, such as symbols in the iOS keychain, FileManager, and security framework.
  • Implemented data protection for a client app in Swift and C, including encrypting/decrypting app data, writing to and reading from disk, encryption key wrapping, and iOS keychain wrapping.
  • Developed Swift APIs for SSL certificate pinning to provide server identification integrity for client iOS apps.
  • Developed a pre-built Bash script to configure the container's source code to be built for the configuration of the client app. The configuration enables client apps to set security controls.
  • Wrote a container post-build bash script to apply binary hardening to the client iOS app Mach-O, such as _cstring encryption, constants obfuscation, and Mach-O validation. Wrote scripts in Bash to obfuscate container and client app source code.
  • Developed a supporting Ruby script to install and integrate the Yinkozi iOS security container into client Xcode projects using the Ruby gem Xcodeproj: www.rubygems.org/gems/xcodeproj.
  • Wrote usage documentation for clients. The docs show clients how to integrate the container into their Xcode project, build the container's dependencies, import the container into the source of their iOS app, and use the container API in their app.
Technologies: OpenSSL, Cryptography, C, Swift, iOS

Senior iOS Developer

2018 - 2019
YouVersion
  • Developed new features in Swift 4 for Bible Lens, available in the iOS App Store with over 1 million installations.
  • Profiled the app's memory use with instruments to find the root cause of the app crashing due to excessive memory use. Analysis using instruments showed that the app was using 1.5-2GB of memory when parsing image metadata JSON files stored on disk.
  • Remodeled the app's image metadata in Core Data and refactored how the app cached, fetched, and presented the images and used the image metadata in the view layers of the app. This provided a large reduction in average and high water memory use.
  • Internationalized and localized the app to support multiple languages.
  • Developed an in-app language selection feature that allows the user to set the application language to one different from the device language.
  • Built delivering local user notifications showing newly available images in the in-app language the user has selected.
  • Implemented managing app dependencies with Carthage.
  • Used the Fastlane framework to deploy builds to TestFlight.
  • Used the Crowdin localization platform to translate localized application text (Crowdin.com).
  • Implemented caching and updated the app settings using the Firebase SDK.
Technologies: Crowdin, Fastlane, Carthage, Firebase, Apple Push Notifications, Core Data, Swift, iOS

Senior iOS Developer

2017 - 2018
Jumpnet
  • Developed features for the Jumpnet VPN iOS app, Jumpnet VPN iOS SDK, and Jumpnet VPN iOS Network Extension using the native iOS VPN subsystem. Jumpnet is a VPN that defines and implements a custom VPN protocol whose design and iOS implementation provides secure networking, seamless WiFi-cellular transitions, and better network streaming by simultaneously using the device’s WiFi and cellular interfaces; Jumpnet.com.
  • Implemented portions of the low-level Jumpnet VPN protocol in the Jumpnet iOS SDK in Swift and Jumpnet iOS Network Extension.
  • Installed the Jumpnet VPN iOS network extension (an application extension) as a NEPacketTunnelProvider using the NetworkExtension framework and iOS VPN system.
  • Developed an in-app purchase feature for users to buy various Jumpnet subscriptions (annual, six-month, and one-month).
  • Implemented client-side communication with Jumpnet server over DTLS using Open Transport on iOS. Open Transport is a macOS/iOS framework that establishes Secure Sockets Layer (SSL) sessions to facilitate secure communication between client and server.
Technologies: Datagram Transport Layer Security (DTLS), Transport Layer Security (TLS), SSL, NEPacketTunnelProvider, VPN, Swift, iOS

iOS Developer

2017 - 2018
TruePic
  • Developed the TruePic iOS SDK to upload verified media and its metadata to TruePic servers. This development was done from scratch completely in Swift 4. TruePic is a photo verification platform that authenticates photos as being unedited: Truepic.com.
  • Implemented end-to-end encryption using the new iOS crypto APIs released in iOS 10. The metadata is encrypted using a hybrid scheme of RSA and AES-GCM with a 256bit hash. The metadata and the media are signed with a 256bit HMAC.
  • Developed an advanced custom camera view that clients of the framework present in their apps to capture images and/or video. Media can be saved to the Photos Library or to disk.
  • Made use of iOS's more than ten AVCapture APIs that capture bracketed images. This allows the TruePic backend to analyze media uploads by the SDK and catch forged photos that are pictures of a picture.
  • Integrated the TruePic iOS SDK into the TruePic React Native consumer app available in the App Store: iTunes.apple.com/us/app/truepic/id1100089673?mt=8.
Technologies: Swift, iOS

Senior iOS Developer | Arduino Developer

2017 - 2017
Humidifall
  • Developed the Humidifall iOS app. Humidifall is a waterfall that can be mounted on a wall to control the humidity in an area. The iOS app allows the user to control the Humidifall as an IoT device; Humidifall.com.
  • Built the Arduino Yun back-end for the Humidifall system using C++. I developed the back-end to be an AWS IoT client (Amazon Web Services IoT) in order to send/receive messages to/from the Arduino and upload application data from the Arduino to store in DynamoDB.
Technologies: Internet of Things (IoT), Amazon Web Services (AWS), C++, Arduino, iOS

Technical Writer for the Stormpath Blog

2017 - 2017
Stormpath
  • Worked as the technical writer for Stormpath's blog.
  • Wrote articles about security topics in the context of developing iOS applications. I wrote an article for them about common authentication and authorization schemes used in mobile apps, how to implement them on iOS, and how to integrate the Stormpath iOS framework into an iOS app.
Technologies: Security, iOS

Senior iOS Developer

2015 - 2016
The Weather Channel
  • Worked in a team to develop The Weather Channel’s iOS app. All the development was in Swift, except for a few minor places of integration which was developed with Objective-C. The app has approximately 200 million users in 35 languages.
  • Developed the location services, networking, caching, and data model of The Weather Channel’s Apple watchOS Swift app. The watch app determines and uses the user’s current location to fetch a collection of relevant weather data to present to the user in five views on their watch, including complications on the watch face, glances, and weather notifications. The watch app can use the iOS app as a cache of weather data when the iOS app has fresh data via the WatchConnectivity framework.
  • Worked in a team to develop an iOS framework in Swift for client apps to use to fetch weather data from The Weather Channel. The framework included a public API and data model to represent the parsed JSON weather data from The Weather Channel’s weather data APIs that process weather data requests which number billions per day. The Weather Channel’s production iOS App uses the framework, and it has been made available to clients such as IBM and Weather Underground.
  • Developed an endpoint service type in the library that vended Observable<T> so that clients could observe weather data events for locations in the form of a latitude-longitude. For example, clients could observe a location (e.g. latitude 33.1, longitude -84.1) and then subscribe to next events in the stream. Then when the next event was observed in the stream, the client would update its view with the observed type T weather data for that location, or if the event was an error, handle the error appropriately.
  • Developed the prototype for The Weather Channel’s Apple TV app on tvOS in Swift. I developed the functionality to authenticate and authorize a user with their cable provider using REST services provided by Akamai Identity Services.
  • Integrated Mapbox into The Weather Channel’s iOS app in place of MapKit. We switched to Mapbox to implement custom drawing in OpenGL of weather conditions in the radar view of the app.
  • Worked in a team to develop custom weather alerts, user profiles and their persistence, sign-ups, and logins with Facebook, analytics, and weather-related remote notifications, in Swift for The Weather Channel’s iOS app. Custom weather alerts include alerts in the form of remote notifications about seasonal weather events: for example, winter weather alerts. Also included was the necessary back-end support to save the user’s profile locally in Core Data and pushing and fetching it from the back-end.
Technologies: JSON, REST, Apple Watch, Mapbox, MapKit, RxSwift, Core Data, tvOS, WatchOS, iOS

Senior iOS Developer

2014 - 2015
Chick-fil-A
  • Developed iOS applications for restaurant owners and staff. Implementations were done in Swift 1.0 starting in the fall of 2014.
  • Developed an iOS framework from scratch that provides single sign-on for users of all Chick-fil-A apps on their devices. All Chick-fil-A apps require authentication and authorization with Chick-fil-A back-end services. The framework allows users to authenticate and authorize in one app and then switch to another app on the device and not have to login again. The framework defines keychain entitlements across the apps using the Chick-fil-A development team. The user’s credentials are stored in the keychain. The app also supports authentication with Touch ID.
  • Developed Chick-fil-A podcasts from scratch—an iOS app that streams educational and news videos to restaurant owners and staff. Content metadata is fetched from Brightcove's web services, cached locally in Core Data, and streamed via the AVFoundation and MediaPlayer frameworks. I developed a custom video player and UI controls for the app, implemented in Swift 1.0., I integrated Chromecast support with the Chromecast SDK for the app to support playing videos via Chromecast. The app also supports receiving remote notifications via Urban Airship.
  • Designed and developed Chick-fil-A contacts-sync from scratch—a Swift 1.1 iOS app to synchronize the user’s Chick-fil-A contacts provided by Chick-fil-A web services using the AddressBook framework. The app fetches the user’s contacts from the back-end and caches them locally using Core Data.
  • Developed Chick-fil-A Campus—an iOS app that uses iBeacons and Core Location to provide location information and guiding services about the Chick-fil-A corporate campus to users as they tour the campus. Portions of the app were done in Swift 1.1.
Technologies: Media Players, Keychain, JSON, REST, AVFoundation, Core Location, iBeacon, iOS

Senior iOS Developer | Scala Back-end Developer

2013 - 2014
Pharmaceutical Dimensions
  • Developed the Mobile Quick Returns iOS app for Pharmaceutical Dimensions. Mobile Quick Returns is a client-server app for Pharmaceutical Dimensions to inventory items returned by pharmacies to drug manufacturers. The iOS app fetches and updates inventory from the back-end and scans new inventory using the camera and barcodes.
  • Developed the Mobile Quick Returns' back-end for Pharmaceutical Dimensions. The back-end is written in Scala with the Play framework.
Technologies: Play Framework, Scala, iOS

Senior iOS Developer

2013 - 2013
Stable/Kernel
  • Collaborated with Joe Conway on the design and development of the Richtree Market Pass iOS application for Natural Markets Food Group, available in the App Store. The app provides a UI for users to register a credit card with PayPal's Card.io and pay for meals at a tech-enhanced food court in Toronto. Thoughtworks developed the back-end services.
  • Developed the Richtree Market Market Pass Android application.
Technologies: JSON, REST, Card.io, Core Data, Android, iOS

iOS Developer

2012 - 2013
GoPago
  • Developed the iOS GoPago app, available in the App Store. The GoPago app is a mobile storefront and payments app. Users register a credit card with Jumio Netswipe, browse, order, and pay for items at GoPago merchants; then receive their order at the store without having to wait in line or pay.
Technologies: Jumio, JSON, REST, Core Data, iOS

iOS Developer

2012 - 2012
Wahoo Fitness
  • Worked in a team to develop Cruise Control—an iOS app that helps people maintain their pace during exercise by listening to music within a target range of beats per minute.
  • Developed the Music Analyzer—a module the app uses to analyze the songs on the device by determining the beats per minute of each song, downloading song metadata from Echonest’s REST service, filtering out songs that are not within the target beats per minute, and presenting the list of available songs to the user. Metadata is cached locally using Core Data.
  • Developed BlueSC Odometer—an odometer app for the BlueSC, a low-energy Bluetooth cycling computer from Wahoo Fitness. The odometer app connects to the BlueSC via Bluetooth, downloads the user’s mileage data, and presents the distance ridden history to the user. The app was developed using Core Bluetooth.
Technologies: Core Bluetooth, iOS

iOS Developer

2011 - 2012
QuantiSense
  • Worked in a team to help develop an app for Lululemon Athletica, an athletic wear maker. The app scans barcodes of items in their stores and fetches a configurable set of analytics data about the item from the back-end services.
  • Developed the scanner component of the above app to scan barcodes using either the camera on an iPhone, or a LineaPro infrared scanner using the External Accessory framework on an iPod Touch. The analytics data is then fetched from the back-end services and presented to the user.
Technologies: Web Services, JSON, External Accessory, iOS

iOS Developer

2011 - 2011
Third Cup
  • Designed and developed Wine Memories, a wine cellar application available in the App Store. More can be found in the portfolio section.
Technologies: iOS

The Swift Project

https://github.com/apple/swift/pulls?q=is%3Apr%20author%3Amatthewcarroll
I developed a few improvements to the Swift compiler's diagnostic system to warn the user and provide better recovery for invalid syntax.

Another contribution I made was to enhance the Swift driver by adding the terminating signal number to the parsable output of the driver when a process terminates.

All of the development was done in C++. These pull requests were then merged into the Apple/Swift master and all of my pull requests are listed at the link above.

Jumpnet

Jumpnet is a VPN that implements a custom VPN protocol whose design and iOS implementation provides secure networking, seamless WiFi-cellular transitions, and better network streaming by simultaneously using the device’s WiFi and cellular interfaces.

I developed features for the Jumpnet VPN iOS app, Jumpnet VPN iOS SDK, and Jumpnet VPN iOS network extension using the native iOS VPN subsystem.

Bible Lens

Here, I developed new features in Swift 4 for Bible Lens, available in the iOS App Store with over 1 million installations.

• https://www.youversion.com/bible-lens

Algorithmics Exercises

https://github.com/careercup/CtCI-6th-Edition-Swift
I developed Swift solutions to exercises in the book "Cracking the Coding Interview." I maintain the repository of the Swift solutions to the exercises in the book. There are solutions in 16 languages.

The Weather iOS App

https://github.com/matthewcarroll/TheWeather
The Weather is an iOS weather app using the OpenWeatherMap API.

The app demos use of the OpenWeatherMap API, and uses CoreLocation to fetch the device location. The UI is simple, with views of the current conditions, the five day forecast, and a detail view of any one of the days selected by the user.

Functional Programming Principles in Scala

https://github.com/matthewcarroll/Functional-Programming-Principles-In-Scala
My programming assignments for Martin Odersky's "Functional Programming Principles in Scala" course.

https://www.coursera.org/learn/progfun1/

Functional Programming Design in Scala

https://github.com/matthewcarroll/Functional-Programming-Design-In-Scala
My programming assignments for Martin Odersky's "Functional Programming Design in Scala" course.

https://www.coursera.org/learn/progfun2

Wine Memories App

Here, I designed and developed Wine Memories, a wine cellar application available in the App Store, in iOS 3.

Sydney Health

https://apps.apple.com/us/app/sydney-health/id1463423283
Sydney Health is an iOS Swift app that provides services for Anthem members. I developed a large set of Device Integration features for the Sydney iOS app whereby users can sync their HealthKit and fitness device (Fitbit, Garmin, etc) data with the Sydney app, using Validic as an integrator of health data: Validic.com.

Languages

Swift, Objective-C, JavaScript, TypeScript, SQL, GraphQL, Python, C++, C, Ruby, Java, Scala, Bash, YAML, Snowflake, Go

Platforms

iOS, Apache Kafka, MacOS, Apple Watch, Docker, WatchOS, tvOS, Amazon Web Services (AWS), AWS Lambda, Mapbox, Android, Firebase, Crowdin, Arduino, Keychain, Parse, Parse Server, AWS IoT, Kubernetes, Rancher, Contentful

Frameworks

Express.js, Core Data, UIKit, XCTest, Core Location, WatchKit, Tailwind CSS, Media Players, Play Framework, Core Bluetooth, External Accessory, Address Book, MapKit, React Native, Swagger, gRPC, Jest

Libraries/APIs

Node.js, REST APIs, iOS Extensions, React, RxSwift, OpenSSL, Alamofire, Facebook SDK, Google Analytics API, Common Crypto, CocoaPods, Firebase iOS SDK, Mapbox iOS SDK, Fabric, PySpark, Protobuf

Tools

MongoDB Shell, Interface Builder, Auto Layout, Charles, AWS IAM, VPN, iOS Instruments, Instruments, Apple Push Notifications, Fastlane, Crashlytics, GitLab CI/CD, React Apollo, Adobe Experience Manager (AEM)

Paradigms

REST, Microservices, Microservices Architecture, Service-oriented Architecture (SOA), Object-oriented Programming (OOP), Functional Programming, Fast Healthcare Interoperability Resources (FHIR), Continuous Deployment

Storage

MongoDB, MySQL, JSON, Amazon S3 (AWS S3), PostgreSQL

Other

Amazon Pinpoint, RESTful Microservices, System Design, APIs, Code Architecture, Technical Leadership, iOS Camera, Back-end, AVFoundation, Carthage, GCD, UI Testing, iBeacon, Card.io, Jumio, Web Services, NEPacketTunnelProvider, SSL, Transport Layer Security (TLS), Datagram Transport Layer Security (DTLS), Cryptography, Internet of Things (IoT), Security, Urban Airship, Bonjour, Software Engineering, Pachyderm, Apollo Server, Strapi

1999 - 2002

Bachelor of Science Degree in Computer Science

Georgia Tech - Atlanta, GA, USA

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