Curriculum Vitae
Last updated: September 2024
After working for a number of years as a full-time employee at various companies, I went independent at the end of 2019. I’m currently focusing on my own apps and open source projects while doing freelance and contract work for various clients.
Need an iOS developer? You can hire me for consulting, contracting,
and freelance work for iOS. If you are interested in working with me,
you can learn more here.
Indie Software Developer
Remote • Aug 2019 — Present
Independent app development. See hexedbits.com.
Independent Contractor (iOS)
Remote • Feb 2022 — Present
Returned to Duolingo as an independent contractor after some time away. (See below.) I worked on the ‘User Delight’ team (again) as well as the ‘Client Architecture’ team, working on the main iOS app. I reported to Peter Chapman.
- Implemented a custom main thread watchdog for tracking and logging excessive work on the main thread.
- Identified and resolved various performance-related issues. Superfluous disk access, excessive networking, etc.
- Optimized Makefile project bootstrapping to avoid unnecessary pod installs and xcode project generation via xcodegen.
- Worked on implementing downloading content for offline lessons.
- Worked on major app-wide refactoring with the goal of making code more testable. This involved identifying and improving inadequate design patterns, removing implicit globals, and implementing dependency injection.
- Improved infrastructure to facilitate writing tests. Created various test helpers/mocks/utilities and organized them into reusable frameworks for feature teams to utilitize in their tests.
- Diagnosed and resolved thermal state performance bugs. The underlying issues pertained to excessive disk access and bugs in caching.
- Diagnosed and resolved thread explosion issues. Resolved by implementing Grand Central Dispatch (GCD) modern best practices.
- Integrated my open source library, ReactiveCollectionsKit, to standardize how lists and collections are built across the entire app.
- Discovered and resolved significant performance bugs pertaining to frequent disk access on the main thread. Wrote a new component for managing files on disk for all other teams to use to prevent future issues from reocurring.
- Worked on and developed strategies for incrementally migrating to Swift Structured Concurrency.
- TBA / in-progress
Independent Contractor (iOS)
Remote • Apr 2023 — Jul 2023
Hired as an independent contractor to build the iOS SDK for Causal. This work was subcontracted through Fullsend Solutions. I was responsible for writing the entire Causal iOS Client SDK. Causal is a session tracking, feature management, and A/B testing tool.
- Built the entire initial SDK for iOS. This included defining the entire public API for iOS and writing Mustache templates for Causal’s Swift code generation.
- Drafted a development plan and coordinated closely with Causal and Fullsend on development, and provided timely updates on project status.
- Wrote complete documentation for the SDK with 100% coverage, including a ‘Getting Started’ guide and an example project demonstrating the SDK.
- Wrote a comprehensive unit test suite with ~80% code coverage and implemented CI on GitHub Actions.
- Published SDK via CocoaPods and established release process.
- Wrote developer documentation for working on the SDK.
- Assisted with onboarding and knowledge transfer for new team members who eventually took over the project.
Independent Contractor (iOS)
Remote • Jul 2021 — Jul 2022
Hired as an independent contractor to work on the Hopscotch iOS app. While I did work on a few user-facing features, a large portion of my time was spent on infrastructure work — paying off some technical debt, automating the release process and other tedious development tasks, improving code quality and organization, and improving developer productivity.
- Implemented the “Open Project” language feature, which allows users to link to other projects.
- Implemented local variables language feature. Previously, the language only supported globals.
- Performed significant project-wide refactorings to improve developer productivity and facilitate easier feature development. This involved reconfiguring the app into sensible framework modules.
- Improved general project infrastructure and automation. Automated project setup and CocoaPods installation with Make.
- Automated tedious development tasks using GitHub Actions: generating snapshots, labeling PRs, and assigning milestones to PRs.
- Improved testing infrastructure to reduce test flakes and speed up CI.
- Implemented CI/CD using Bitrise. Automated generating builds and commenting on PRs with build status.
- Automated portions of code review with Danger.
- Automated release process: creating release branches, bumping version numbers, opening milestones, uploading to the App Store, etc.
- Wrote documentation for the project, testing infrastructure, and CI setup.
- Interviewed potential candidates and helped refine interview process.
- Produced resources for conducting interviews (questions, sample projects, rubrics for evaluation).
Independent Contractor (iOS)
Remote • Jan 2020 — May 2021
Hired as an independent contractor for the ‘User Delight’ team, working on the main iOS app. I reported to Peter Chapman.
- Built a custom, internal, in-app ‘shake-to-report’ bug reporting tool that communicated with the Jira API to create tickets, and the Slack API to post some reports directly to specific channels. Reports included device and OS metadata, user and app metadata, screenshots, and logs.
- Built a user-facing version of ‘shake-to-report’ for users in the Duolingo Beta Program, which sent reports to Zendesk using the Zendesk SDK.
- Implemented an app-wide maintenance mode that could be triggered when backend services were experiencing outages. This utilized a middleware layer in the networking stack to pause all network activity in the app and periodically ping a status micro-service to check if the API was available again.
- Built a custom frame rate tracking and logging tool to detect areas of the app with low FPS and where frames were being dropped. This also included an internal FPS debugging tool that developers could activate and observe FPS in real time while running the app.
- Worked closely with designers to implement Dark Mode for the entire app, which required significant refactoring in the legacy codebase.
- Worked closely with designers to implement various animations and UI polish throughout the app to ‘delight’ users. This included character animations and progress bar sparkle animations during lessons.
- Implemented various sound effects throughout the app.
- Implemented custom crash reporting using PLCrashReporter.
- Most features shipped behind experiment flags using Duolingo’s custom experimentation framework.
- Provided regularly, timely updates on the progress of projects via Jira and Slack.
Independent Contractor (iOS)
Remote • Oct 2019, Oct 2020 — Aug 2021
Hired as an independent contractor multiple times over a span of a couple years. I reported to Rustin Reese. Note: RxSaver was acquired by GoodRx in May 2021.
- Helped rewrite legacy Objective-C app in Swift.
- Focused on implementing iOS best practices and general code quality improvements.
- Migrated CI from BuddyBuild to Bitrise.
- Optimized Bitrise workflows, automated pull requests with Danger, implemented SwiftLint.
- Increased unit test coverage.
- Rewrote, optimized, and stubbed network requests in UI tests, resulting in 2.3X faster execution.
- Implemented saving recent search terms.
- Implemented push notifications.
Software Engineer (iOS)
San Francisco, CA • May 2017 — Jul 2019
Note: PlanGrid was acquired by Autodesk in November 2018.
- Shipped a number of features: polygon annotation tools, multiple assignees and followers for Tasks, user groups, Tasks ‘rewrite’ to include planned work and issues (‘sheetless tasks’), advanced filtering and sorting for Tasks. All features included local database migrations and syncing with backend, as the app must be completely functional offline. We used SQLite directly and maintained our own SQLite DSL in Swift.
- Contributed to a number of mobile infrastructure improvements, including building out internal frameworks, adding pull request automation with Danger, and improving code quality with SwiftLint.
- Helped release and maintain open source framework, ReactiveLists.
- Acted as Release Captain to manage biweekly releases, which includes triaging bug/crash reports, managing branches and fixes, and submitting final build to AppStore Connect. We used Fastlane to automate much of the process.
- Helped refine interview process for new candidates, including developing questions and quizzes.
- Mentored new hires and junior teammates.
Software Engineer (iOS)
Menlo Park, CA • May 2015 — May 2017
- Shipped updates to the App Store on a weekly schedule.
- Launched the immersive video viewer and IG Events on Search and Explore (Wired, Recode, Mashable).
- Worked on mobile infra team to refactor the main feed and co-author the open source framework, IGListKit (Blog post).
- Launched and maintained the new IG Direct (TechCrunch).
- Rewrote entire Direct messaging infrastructure on the iOS client using IGListKit, including moving to protocol-oriented, immutable models.
- Deployed new features and experiments via Facebook’s A/B testing frameworks.
- Acted as Release Captain to manage biweekly releases, which includes triaging bug/crash reports, managing branches and cherry-picks, and submitting final build to AppStore Connect.
- Mentored new hires and junior teammates via 1:1 talks, as well as code reviews.
Software Engineer (iOS)
San Francisco, CA • Sep 2013 — May 2015
- Released and maintained the Advanced Languages app. It was previously named Advanced English For Business.
- Used CoreText and speech recognition engine to build a read-along learning activity.
- Built vocabulary cards, matching, and other learning activity frameworks.
- Authored over a dozen internal frameworks (private CocoaPods) in efforts to build up mobile infrastructure.
- Worked effectively with remote teammates.
- Authored and published the company’s first ever open-source projects.
Independent Contractor (iOS)
Remote • Jan 2013 — Apr 2013
A collaboration with designer Michael Schultz and funded by Affinity Biotech. Hemoglobe was an iOS app for staying in touch and meeting new people with bleeding disorders. It was shutdown in early 2016 and is no longer available.
- Built the entire app and collaborated with Michael on implementing his designs.
- Used Parse BaaS for backend.
- Features included a feed of nearby users, private 1:1 messaging, and user profiles.
Indie Software Developer
Remote • Jan 2012 — Jan 2014
Independent app development. See hexedbits.com.
I’m working on a number of side projects, indie apps, and open source projects. You can find an overview of my projects here. My open source projects are hosted on GitHub, and my indie apps are available at Hexed Bits.
I have spoken at conferences and meetups around the world to share my thoughts, ideas, and experiences about programming,
software, and community — particularly open source, iOS, Swift, and Objective-C.
You can find a complete list of my talks here, including slides, videos, and sample code.
-
try! Swift India, Bangalore 🇮🇳 — 19 Nov 2017
-
iOS Conf Singapore, Singapore 🇸🇬 — 19 Oct 2017
-
WWDC Swift Panel, San Jose 🇺🇸 — 06 Jun 2017
-
Swift Summit, San Francisco 🇺🇸 — 08 Nov 2016
-
FrenchKit, Paris 🇫🇷 — 23 Sep 2016
-
Forward Swift, San Francisco 🇺🇸 — 28 Jul 2016
-
WWDC Swift Panel, San Francisco 🇺🇸 — 13 Jun 2016
-
try! Swift Tokyo, Tokyo 🇯🇵 — 04 Mar 2016
-
Swift meetup (SLUG), San Francisco 🇺🇸 — 28 Jan 2016
-
Swift meetup (SLUG), San Francisco 🇺🇸 — 14 Apr 2015
- Swift •
- Objective-C •
- iOS SDKs •
- C •
- C++ •
- JavaScript •
- HTML •
- CSS •
- SQLite •
- MySQL •
- Ruby •
- Java •
- Git •
- Mercurial •
- CI/CD
Volunteer
Oakland, CA • Jan 2019 — Apr 2020
Volunteered directly with former Black Panther, Aunti Frances Moore. The Self-Help Hunger Program is run primarily by Frances. She provides a meal every Tuesday at Driver Plaza in North Oakland. My primary role was cleaning up and washing dishes. You can learn more here.
Instructor
Oakland, CA • Aug 2018 — May 2019
Taught high school students how to code using HTML, CSS, and JavaScript at Emiliano Zapata Street Academy. Code Nation equips students in under-resourced high schools with the skills, experiences, and connections that together create access to careers in technology. Their entire curriculum is on GitHub. Note: Code Nation was formerly named ScriptEd.
B.S. Computer Science
Evansville, IN • Aug 2008 — May 2012
Mathematics minor, graduated Cum Laude, GPA 3.56.
Awards, scholarships, and notable activities listed below.
- Senior Design Award in Computer Science, 2012.
Awarded for best senior project in Computer Science, judged by local industry members and university professors.
- Class of 1927 Golden Anniversary Award in Engineering and Computer Science, 2012.
Awarded to one student for Outstanding Leadership and Service to the Campus Community at UE, nominated by the dean of the College for Engineering and Computer Science.
- Dean’s List, 2008-2012
- ACM Chapter President, 2010-2012
- ACM Collegiate Mid-Central Regional Programming Contest, 2010-2011
- Kappa Mu Epsilon Mathematics Honor Society, 2010-2012
- Al Neuharth Free Spirit Scholarship, 2008
- Bette Bennett Hammond Scholarship, 2008
- Blue Sky Foundation Scholarship, 2008
- University of Evansville Academic Scholarship, 2008-2012
- Study Abroad: Harlaxton College — Grantham, England — Fall 2009
- Study Abroad: Amauta Spanish School — Cusco, Peru — Summer 2009
Computer Science Supplemental Instructor
Evansville, IN • Sep 2010 — May 2012
Tutoring funded by the Computer Science department.
- Tutored students in Computer Science classes who desired help outside of class.
- Coordinated with professors on class material that needed to be revisited during tutoring sessions.
Visiting Undergraduate Research Fellowship
Bloomington, IN • Aug 2012 — Jul 2013
Visiting Undergraduate Research Fellowship (VURF) in Cognitive Science. Awarded to only one or two students each year. I took graduate-level courses, earning a 3.60 GPA. I worked on the following research projects.
- Advisor: Dr. Randy Beer. Researched evolutionary algorithms, evolutionary robotics and dynamical systems approaches to behavior and cognition. Developed software to support the evolution of model agents controlled by continuous-time recurrent neural networks that exhibited minimally cognitive behavior.
- Advisor: Dr. Colin Allen. Joined the Indiana Philosophy Ontology (InPhO) Project development team in building new and improving existing mechanisms for facilitating expert feedback in digital philosophy that utilize crowd-sourcing techniques in order to improve the InPhO model. The InPhO Project is an attempt to model the discipline of philosophy, which leverages expert knowledge by augmenting it with machine reasoning.
- Advisor: Dr. Rob Goldstone. Developed an iOS app to facilitate research in collective decision-making. The app is a game that prompts users to answer various trivia questions, after which all responses are displayed and each user has the opportunity to re-evaluate his or her answer based on the group’s collective response.
Undergraduate Researcher
Tampa, FL • Jun 2011 — Aug 2011
Research experience for undergraduates (REU) summer program, funded by NSF. I conducted research in Ubiquitous Sensing under the supervision of Dr. Jay Ligatti and Dr. Larry Hall.
- Researched mobile mapping applications and mobile device sensors.
- Developed a trail mapping application for Android OS that uses only sensor data, not GPS, to map trails in real time.
- Produced a research paper and poster on the project.
- Awarded 1st place in the REU Poster Competition.
- Presented at Math, Engineering and Science Conference (MESCON) 2012 at University of Evansville.