Chris Willmore
Profile
A senior software engineer with seventeen years of experience delivering key features and API in the Apple ecosystem, and a strong background in type design, music, mathematics, and computer science.
Areas of interest: typography and type design, music and audio, programming languages, compilers and interpreters, languages and international support, music and audio, data compression and indexing, statistical language modeling.
Skills
Proficient in Python, Objective-C, C++, Swift, Bash. Prior experience with Java, OCaml, Ruby, HTML, CSS, Javascript. Familiar with Haskell, Perl, Scheme, Lisp, x86 and ARM assembly, XML, XSLT, PHP, Metafont.
Recent experience includes macOS, iOS, AppKit, UIKit, Core Animation, Core Text, TextKit, Unicode, ICU, Git, Glyphs, Robofont. Previous professional experience includes Subversion, Git, SQLite, OCUnit, LLVM, Clang, Flex, Bison.
Other experience includes Linux, Apache, Phusion Passenger, Ruby on Rails, RSpec, PostgreSQL, MySQL, Pixelmator, LaTeX, Cocoa, GNU Make, Rake, Bundler, OpenGL. Some experience with Django, Windows, Visual Studio .NET, CVS, wxWidgets, OpenType.
Fluent in written Spanish and Portuguese. Experienced in typography and internationalization, including font design and engineering, line breaking, collation, transliteration, tokenization, text layout, and UI localization. Experienced in search methods for optimization problems including branch-and-bound, gradient descent, and simulated annealing.
Work Experience
Letterform Archive, San Francisco, CA 2025–present
Teaching Assistant, Type West
Facilitate the design classes and weekend workshops for Type West 2025’s in-person cohort. Provide students with technical assistance with font-editing software, design critiques, and project guidance.
- Glyphs
- Robofont
- Slack
Apple Inc., Cupertino, CA 2007–2025
Software Engineer, Cocoa 2019–2025
Maintained and extended the text-related components of AppKit (NSTextView, NSTextField, and the NSString/NSAttributedString drawing API) and TextKit 2. Accomplishments include:
- integrating TextKit 2 into NSTextView
- preparing and co-presenting the “Meet TextKit 2” session at WWDC21
- improving the performance of NSTextView when editing large documents
- improving the way paragraphs are broken into lines in AppKit, by
- implementing optimal line breaking in the style of Knuth-Plass
- implementing balanced line breaking, which puts a roughly equal amount of text on every line of a paragraph, including the last one
- tailoring line breaking behavior according to language and context
- implementing animations and menu items for the Writing Tools feature in AppKit
- implementing visually contiguous selection and cursor behavior for bidirectional text
- implementing descender avoidance for underlines in Core Text
- contributing to animated text in Messages
- contributing to text drawing and editing in SwiftUI
- Objective-C
- Swift
- C++
- AppKit
- Foundation
- Core Foundation
- Core Graphics
- Core Animation
- Core Text
- Swift
- SwiftUI
- ICU
- XCTest
Software Engineer, iOS Input Experience 2016–2019
Maintained and extended the iOS keyboard and autocorrect system (primarily the QuickPath path-based keyboard). Accomplishments include:
- implementing the recognition algorithm behind the QuickPath keyboard on iPhone, which converts a path traced by the user’s finger into a set of candidate words
- writing a system for evaluating the quality of the QuickPath keyboard by replaying recorded paths from testers and counting how many of them result in the correct word being inserted into the document
- writing a system for training the parameters of the autocorrect model using stochastic hill-climbing
- integrating machine-learning-based typing models into QuickPath
- improving the autocorrect experience for languages with diacritics and multiple keyboard layouts on iOS, including German, Spanish, and Turkish
- C++
- Objective-C
- UIKit
- ICU
- Git
- Bash
- Python
- XCTest
Software Engineer, Developer Tools 2014–2016
Maintained and extended the Swift compiler frontend. Accomplishments include:
- improving the reliability of the Swift parser and type checker, and expanding the type checker’s regression test suite
- improving the quality of the Swift compiler’s error messages when a program fails to type-check
- improving the behavior of the Swift parser in interactive contexts, i.e. when parsing code that is in the process of being edited
- updating the Swift parser and type checker to reflect changes to the language, including changes to syntax, implicit conversions, overload resolution, and generics instantiation
- improving incremental build times for large Swift projects
- implementing color and image literals in the Swift parser; this allows programmers to include colors and images directly in their code in Swift Playgrounds
- integrating the Swift standard libary’s
Set
type into the compiler - contributing to the Swift interface of Core Graphics
- implementing built-in functions supporting
os_log
in Clang - assisting Swift’s transition from an Apple-internal project to an open-source codebase
- C++
- Swift
- Objective-C
- LLVM
- Clang
- LLDB
- lit
- CMake
- Ninja
Software Engineer, iOS Keyboard and Text 2011–2014
Maintained and extended the iOS keyboard and autocorrect system. Accomplishments include:
- implementing retrocorrection, which allows autocorrect to change more than one word at a time and correct “well see” to “we’ll see” and “new york” to “New York”
- integrating next-word prediction and implementing the associated above-keyboard candidate bar
- implementing French dynamic accent key support
- implementing input transliteration for Tamil input methods (both Anjal and Tamil 99)
- writing custom ICU collators for matching user input with autocorrect candidates
- integrating autocorrection with the Natural Language framework, including extending and documenting the binary autocorrect dictionary format and designing a custom compression scheme for it
- integrating canned responses for the Messages app into the keyboard candidate bar
- converting the autocorrect source repository from SVN to Git
- fixing several build issues brought about by the autocorrect system’s unique cross-OS needs
- adding unit tests and supporting code
- C
- C++
- Objective-C
- UIKit
- Core Foundation
- Core Graphics
- Core Animation
- Core Text
- Unicode
- ICU
- Python
- Bash
- SQLite
- Xcode
- OCUnit
Software Engineer, OS X Software Updates Integration summer of 2007; 2008–2011
Carried out the dual missions of ensuring the quality of OS X software updates and writing the tools to automate said testing. Quality work includes OS-wide bug diagnosis, manual testing, and bug triage. Tools I contributed to include:
- an automated pre-submission testing service for OS X software update builds
- a test results database, consisting of a Rails/PostgreSQL server and an Objective-C framework client
- a service for quickly NetBooting into historical builds of OS X for bug regression
- a Ruby library for manipulating remote machines over SSH and SCP
- various regression tests for OS X, including kernel extension validation, moveable-apps functionality check, and UI-level tests for Calculator, Script Editor, and TextEdit
Other projects include:
- an effort to improve the performance of Colin Percival’s bsdiff tool
- a prototype note-taking app which automatically detects and displays cross-references between pages in the notebook
- a proof of concept for WYSIWYG inline equation editing in Cocoa’s NSTextView
- a search engine for internal projects’ source code
Smaller hacks include:
- extending the Python interpreter with Objective-C method invocation syntax, to make Objective-C method calls in PyObjC feel more natural
- work toward a general-purpose random-access compression algorithm (eventual goal is efficient file system compression of very large files)
- a Python bytecode interpreter in Javascript, which allows Python to run in the browser
- a Cocoa app that periodically prompts users to tell it what they are doing and appends it to that day’s page in their VoodooPad instance.
- C
- Objective-C
- Python
- Ruby
- Bash
- PHP
- PostgreSQL
- MySQL
- Ruby on Rails
- Sinatra
- Lucene
- AppleScript Bridge
Arxan Research, West Lafayette, IN summer of 2006
Programmer
Tested Arxan’s software tamperproofing solutions, including reverse-engineering binary x86 and PowerPC code; wrote automated tools to generate patches that neutralized the software protections; wrote parts of the floating-point unit for an x86 emulator for in-house testing.
- C
- C++
- Python
- x86 assembly
- PowerPC assembly
- OllyDbg
- IDA Pro
Purdue Genomics Database Facility, West Lafayette, IN 2004–2006
Student Programmer / Tester
Created a wxWidgets-based GUI for a pre-existing program suite for generational genetic recombination simulation using Markov chains. Administered Purdue’s local mirror of the Protein Kinase Resource, including extending its functionality to support user profiles.
- C
- C++
- Java
- Python
- Perl
- Ruby
- Bash
- Java JNI
- Struts
- Hibernate
- Ant
- Apache Tomcat
- Ruby on Rails
Guidant Corporation, St. Paul, MN (now part of Boston Scientific) summer of 2005
Programmer, UI Designer
Wrote a wxPython-based application to provide an intuitive graphical interface for writing requirements-testing procedures for Guidant’s programmer-reader-monitor device, which is used to communicate with their heart device line. Wrote a web service which analyzes the testing logs and reports on which tests are running into the most trouble.
- Python
- SQLite
- wxPython
- SAX
- XSLT
Patents
- US-20130321267-A1 “Dynamically Changing a Character Associated with a Key of a Keyboard”
- US-20130332822-A1 “Multi-Word Autocorrection”
- US-20150347379-A1 “Device, Method, and Graphical User Interface for a Predictive Keyboard”
- US-20150347383-A1 “Text Prediction Using Combined Word N-Gram and Unigram Language Models”
- US-20200356248-A1 “Systems and Methods for Providing Continuous-Path and Delete Key Gestures at a Touch-Sensitive Keyboard”
Education
Letterform Archive, San Francisco, CA 2024
Completed Type West, an in-person postgraduate certificate program in type design taught by Maria Doreuli, Chris McDonald, Grendl Löfkvist, Kel Troughton, Christopher Slye, and Miguel Sousa. Designed the revival Reckonly and the original type family Chough.
ILT Academy 2022
Completed the online course “Introduction to Latin Type Design” taught by Malou Verlomme. Designed the original type family Gnawbone.
Rensselaer Polytechnic Institute, Troy, NY 2006–2008
Masters in Computer Science
3.33 GPA (cumulative), teaching experience
Topics of research: social network analysis, graph clustering algorithms, programming language design
Thesis: “Timestamp-Based Correlation Measures for Finding Hidden Groups in Chat Rooms”
Member, Upsilon Pi Epsilon (organized biannual programming competition)
Purdue University, West Lafayette, IN 2002–2006
Bachelor of Science with Honors in Computer Science & Mathematics
3.87 GPA (cumulative), Dean’s List
Member, Phi Beta Kappa, Juggling Club, Math Club
Side Gigs
DJ 2017–present
Electronic music DJ (stage name: Treedub) performing primarily with the Ambient Mafia DJ collective. Frequent performer and stage manager on the Ambient Mafia’s weekly Sunday Sundowns show on Twitch, with more than 160 shows recorded and published on Mixcloud. Coordinated and promoted electronic music events and designed event flyers. Performed at Asiento, DNA Lounge, Hawthorn, Space 550, Duende, and various private parties in the Bay Area.
Choral singer 2016–present
Singer for several choirs in the Bay Area, including the International Orange Chorale of San Francisco (IOCSF) 2021–present, LALÒ 2025–present, The Choral Project 2017–2021, and Masterworks Chorale 2016–2017. Bass section leader and concert program designer for IOCSF. Sang in church services at the Congregational Church of San Mateo, the Congregational Church of Sunnyvale, St. Dominic’s Catholic Church in San Francisco, St. Robert’s Catholic Church in San Bruno, and Willow Glen United Methodist Church.
Type designer 2022–present
Participated in Fontober, a challenge to draw a new font or expand an existing one every day during the month of October, in 2023 and 2024.
In collaboration with Looking Up Arts, wrote software to convert the outlines of the letters in the “NO DANCING” sign from cubic splines to biarcs and generate an engineering spec sheet. This allowed the project team to fabricate the 12-foot-tall letters out of steel tubing using a manual pipe bender.
- Glyphs
- Pixelmator Pro
- Python
- ReportLab
- fontTools
Recording engineer 2020–2021
Podcast recording engineer for No Baton Needed, a podcast hosted by Daniel Hughes featuring interviews with choral conductors and composers including Stephen Schwartz, Jake Runestad, María Guinand, and Charlene Archibeque. Educated remote interview subjects on proper technique for capturing a high-quality interview recording. Edited, mixed, and mastered recordings and music into the final published podcast.
Theatrical sound engineer 2018–2020
Sound engineer or sound designer on the following Bay Area musical theatre productions:
- Once Upon a Mattress, West Valley Light Opera (WVLO) 2020
- She Loves Me, South Bay Musical Theatre (SBMT)2020
- Urinetown, Sunnyvale Community Players (SCP) 2019
- A Gentleman’s Guide to Love and Murder, SBMT 2019
- Thoroughly Modern Millie, SBMT 2019
- Big River, SBMT 2019
- 42nd St., WVLO 2018
- Mame, SBMT 2018
- Spamalot, WVLO 2018
- The Full Monty, Hillbarn Theatre 2018
- La Cage aux Folles, SCP 2018
Designed sound effects, wrote sound scripts for line-by-line mixing, designed sound reinforcement for the actors and pit orchestra, educated actors on proper mic technique and placement, recorded pre-show announcements, mixed the show’s audio live, and diagnosed and fixed sound issues during the show. Wrote a custom markup language for assigning mics to faders in the sound script’s text so that the scenes programmed into the mixing console stay in sync with the sound script read by the operator.
- Midas M32
- Behringer X32
- Yamaha QL5
- Wireless Workbench
- Tracks Live
- Audacity
- Logic Pro
- QLab
- Python
- CSS
- HTML
Competitive programmer 2010–2020
Participated in Google Code Jam in 2010 (advancing to round 2), 2016 (round 3), 2017 (round 3), 2018 (round 2), 2019 (round 3), and 2020 (round 2). All solutions were written in Python.
- Python
Event planner 2015–2017
Lead organizer for the San Francisco running of the DASH multi-city puzzle hunt in 2015 (DASH 7) and 2016 (DASH 8). Worldwide lead for DASH 9 in 2017. Recruited and organized event volunteers, scouted and mapped the hunt route, coordinated the story author and puzzle design team and city leads, wrote and tested puzzles, managed the event budget, permits, insurance, promotion, printing, and software stack.
Public speaker 2011–2017
Public speaker and member of Toastmasters International. Served the Macintalkers club as Sergeant-at-Arms, Secretary, VP Membership, VP Education, and President, as well as earning ACS and ALB awards. Organized the schedule for club meetings, liaised with the meeting venue, and led meetings and speech contests.