Scroll To View More
Matthew Carroll, Swift Developer in Atlanta, GA, United States
Matthew Carroll

Swift Developer in Atlanta, GA, United States

Member since October 13, 2016
Matthew is an iOS, watchOS, and tvOS developer, and a contributor to Apple's Swift project. He graduated from Georgia Tech with a BS in computer science in 2002. Since then he has developed in C/Unix, Java/Spring, and iOS—most recently developing on iOS at The Weather Channel. He has been developing in Swift since the fall of 2014. He highly values clear communication and is available to travel to client sites.
Matthew is now available for hire

Portfolio

  • Yinkozi
    iOS, Swift, Cryptography, OpenSSL
  • YouVersion
    iOS, Swift 4, Core Data, User Notifications, Firebase, Carthage, Fastlane...
  • Jumpnet
    iOS, Swift, VPN, NetworkExtension, NEPacketTunnelProvider, SSL, TLS, DTLS...

Experience

  • iOS, 7 years
  • REST APIs, 6 years
  • Core Data, 6 years
  • Swift, 4 years
  • Common Crypto, 2 years
  • Functional Programming, 1 year
  • tvOS, 1 year
  • watchOS, 1 year
Atlanta, GA, United States

Availability

Part-time

Preferred Environment

iOS, watchOS, tvOS, Xcode, Git, REST/JSON

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.

Employment

  • iOS Security Engineer

    2018 - PRESENT
    Yinkozi
    • Developed features for the Yinkozi iOS security container in Swift and Objective-C: Yinkozi.com.
    • Wrote a script in Ruby to install and integrate the Yinkozi iOS security container into client Xcode projects, using the Ruby gem Xcodeproj: Rubygems.org/gems/xcodeproj.
    Technologies: iOS, Swift, Cryptography, OpenSSL
  • Senior iOS Developer

    2018 - PRESENT
    YouVersion
    • Developed new features in Swift 4 for Bible Lens, available in the iOS App Store with over 1 million installations.
    • Used Instruments to profile the application’s memory use to determine 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.
    • Solved the issue by modeling the image metadata in Core Data and completely refactored the way the app cached, fetched, and presented the images, and used the image metadata, in the view layers of the app. This resulted in a tremendous reduction of memory use with high water memory usage averaging around 200-300 MB when generating and loading app images.
    • Internationalized and localized the app to support multiple languages.
    • Developed in-app language selection feature that allows the user to set the language of the application to one different than 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.
    • Pushed builds to TestFlight using Fastlane.
    • Used the Crowdin localization platform to translate localized application text (Crowdin.com).
    • Implemented caching and updating app settings using the Firebase SDK.
    Technologies: iOS, Swift 4, Core Data, User Notifications, Firebase, Carthage, Fastlane, Crowdin
  • 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: iOS, Swift, VPN, NetworkExtension, NEPacketTunnelProvider, SSL, TLS, DTLS, Open Transport
  • 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: iOS, Swift
  • 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: iOS, Arduino, C++, Amazon Web Services (AWS), IoT
  • 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: iOS, Security
  • 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 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: iOS, watchOS, tvOS, WatchConnectivity, Core Data, MapKit, Mapbox, REST/JSON Services
  • 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: iOS, Keychain Services, iBeacons, Core Location, AVFoundation, MediaPlayer, REST/JSON Services
  • 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: iOS, Scala, Play Framework
  • 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: iOS, Android, Core Data, Card.io, REST/JSON Services
  • 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: iOS, Core Data, Jumio Netswipe, REST/JSON Services
  • 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: iOS, Core Bluetooth
  • 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: iOS, External Accessories Framework, LineaPro Scanner, JSON Web Services
  • 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 3

Experience

  • The Swift Project (Development)
    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 (Development)
    https://www.jumpnet.com

    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 (Development)
    https://itunes.apple.com/us/app/youversion-bible-lens/id1383341283?ls=1&mt=8.

    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 (Development)
    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 (Development)
    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 (Development)
    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 (Development)
    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 (Development)

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

Skills

  • Languages

    Swift, Objective-C, Ruby, Java, Scala, SQL, Bash, YAML
  • Frameworks

    Cocoa Touch, Cocoa, iOS SDK, Core Data, UIkit, ZURB Foundation, XCTest, Core Location, WatchKit, Address Book, MapKit, React Native
  • Tools

    CocoaTouch, Interface Builder, Auto Layout, Xcode, Git, Charles, Xcode Playgrounds, iOS Instruments, Instruments, Apple Push Notifications, Fastlane, Crashlytics
  • Platforms

    iOS, watchOS, tvOS, Arduino, Keychain, Parse, Parse Server, AWS IoT
  • Libraries/APIs

    iOS Extensions, REST APIs, Alamofire, Facebook SDK, Google Analytics API, Common Crypto, CocoaPods, Firebase iOS SDK, MapBox iOS SDK, Fabric
  • Paradigms

    Object-oriented Programming (OOP), Functional Programming
  • Storage

    JSON
  • Other

    AVFoundation, Carthage, GCD, UI Testing, Internet of Things (IoT), Back-end, Security, Urban Airship, Bonjour

Education

  • Bachelor of Science in Computer Science
    1999 - 2002
    Georgia Tech - Atlanta, GA, USA
I really like this profile
Share it with others