Quill
Quill was a startup building an alternative to Slack, with a different approach to threads and following up on work. I joined in March 2020 as an engineer on the iOS and Mac teams, and stayed until Twitter acquired the company in December 2021.

Keeping track of work
Quill took on a familiar problem with work chat. Several discussions share a channel, a question turns into a different topic, and something you meant to answer disappears into the history. Even after catching up, you still have to remember what needs a follow-up.
Quill organized chat around separate conversations. Threads could be moved or split when the subject changed, and the Activity feed brought together the discussions that needed your attention. You could pick up each one on its own. Passive mentions let people follow along without another notification.
Joining the team
Quill was still taking shape when I joined, about a year before the public 1.0 launch in February 2021. It was a great team to be part of, working on a problem I cared about.
Catching up on iPhone
I rewrote the iPhone Activity feed, which collected direct messages and team conversations in one list. You could open a thread, snooze it until you had time for it, or archive it when you were done. Reading a conversation didn't have to mean you were finished with it.
The rewrite used Combine and collection views with diffable data sources to update the list as conversations changed. The other screens here show the conversation list and social channels, where people could share photos and chat.
Getting started
I worked on onboarding, the welcome guide, and invite links. The guide introduced people to messaging and notification settings, while invitations brought them into a team. These were some of the first screens a new user would encounter, before they had any conversations to catch up on.
Setting up a team
I worked on team creation and management, including support for accent colors. Each team could choose an icon and a color that carried through the interface. These designs show the setup screen and a new team waiting for its first members.
Conversation details
I built the channel and thread detail screens, including the places to manage members and guests. I also worked on native link previews for URLs shared in a conversation. The designs here show thread invitations, membership lists, and the different ways a link could appear alongside a message.
Voice and video calls
I led the iOS work on group voice and video calls. I used SwiftUI and the Twilio SDK to get an early version into the app. The interface had to keep up as people joined or left a call, muted their microphones, or switched cameras.
I also worked on audio levels, using Accelerate to calculate levels from PCM samples and convert them to decibels for the interface.
Keeping chat in view
The team's call designs explored how much of the chat to keep visible during a call. One layout used a compact strip of participants so there was still room for messages. Another gave one speaker more space. These are two layouts from the original iOS Sketch files.
Coming back online
One connection bug showed up after Quill had been in the background for a while. When you came back, the backlog of events could exceed the WebSocket's frame-size limit. The app would disconnect just as it was trying to catch up. I raised the limit from 16 KB to 256 KB to handle those larger frames.
That fix came after a WebSocket rewrite. I had replaced Starscream with Apple's URLSessionWebSocketTask, then moved to WebSocketKit, built on SwiftNIO, after running into bugs with the Apple implementation.
I also added an in-app log viewer and adopted swift-log so we could send debug logs to Google Cloud Logging. Configurable alerts helped us catch problems during development and testing.
Windows and extensions
I moved the app to scenes so it could have multiple windows on iPad, and added Siri intent and Shortcuts support. Toward the end of my time at Quill, I was separating the code into smaller modules for a share extension and other extensions. That work was still in progress when Quill was about to be acquired.
I still miss Quill
Twitter acquired Quill in December 2021, and the service closed that month. The app didn't get much time beyond its first public release.
I still miss Quill every day I use Slack. I think there was something there. I still have to keep track of conversations scattered across work and remember which ones need a reply. Being able to snooze a thread and return to it without losing the discussion helped. I'd use Quill today if I could.















