Reid Callan — Scout’s and Keiko’s human, basketball player, yeller-at-friends — joins the show to talk about OmniFocus, particularly the work this summer which is all about supporting new features in iOS 13.
Reid started at Omni in 2015 as an intern, then left to finish his last year of school, and then returned to Omni as an employee — where he landed on the OmniGraffle team, before recently moving over to OmniFocus. When Reid’s not working on OmniFocus, he’s playing basketball. Or Destiny.
You can find Reid — well, not Reid, but his dog Scout, a good and helpful boi — on Instagram at scout_tails.
Some other people, places, and things mentioned:
- iOS 13
- WWDC 2019
- Jim Correia
- OmniFocus
- Siri Shortcuts
- Tim Ekl
- Git
- Subversion
- OmniGraffle
- Harvey Mudd College
- Kristina Sontag
- Liz Marley
- Curt Clifton
- Pomona College
- Claremont Consortium
- Robert Ludlum
- Rose-Hulman Institute of Technology
- Basketball
- Harlem Globetrotters
- Scout
- Keiko
- Portland
- Destiny
- Asteroids
Brent Simmons: You're listening to The Omni Show. Get to know the people and stories behind The Omni Group's award winning productivity apps for Mac and iOS. Music.
SFX: [MUSIC PLAYS]
Brent Simmons: I'm your host, Brent Simmons. In the studio today is Reid Callan, an engineer on the OmniFocus team. Say hello, Reid.
Reid Callan: Hello, Reid.
Brent Simmons: So you're working on OmniFocus and we're recording in the very beginning of September. And this is always a very special time in the life of every Mac and iOS developer.
Reid Callan: A very hectic time in the life.
Brent Simmons: Yeah, right. So WWDC happened a couple months ago and all these new features, and we have beta Xcode and tools to work on them. So how's it going? What are you working on?
Reid Callan: It's generally going well. I am currently working on getting multiple window support in OmniFocus, along with Jim Correia, another OmniFocus engineer. Earlier in the summer I made sure to get the new iOS 13 presentation mode in there. The new card presentation that you can swipe away from the top of-
Brent Simmons: Oh, yeah. Right.
Reid Callan: So we got that in there and then the next-
Brent Simmons: Was that fairly straight forward, or?
Reid Callan: Yeah. Yeah. They added some nice clean API to get that done. But the big hill that we're climbing right now is multiple window support. Pretty much the entire stack on top of OmniFocus's data model relied on only one thing interacting with the data at any given time.
Reid Callan: And so now we have up to three of your windows all pointing at the data store at the same time, if you have two next to each other and one in an overlay on a big iPad. So we need to handle editing tasks in every window properly.
Brent Simmons: So if you edit in one, the right changes have to show up in the other places it's relevant.
Reid Callan: Exactly, yeah.
Brent Simmons: Yeah, got it.
Reid Callan: Or if you edit and cancel in one you need to make sure the in-progress changes don't show up in the other one as well.
Brent Simmons: Right, sure. Now on the Mac, we had support for multiple windows. So there must be some place where things are a little different between the two apps.
Reid Callan: Yes. We create a bunch of temporary fake data stores on the Mac. So whenever you start to edit a new task on the Mac, we create a complete fake database with only your task in it. And we just haven't been doing that on iOS. So that's the next thing we're getting in there.
Brent Simmons: Okay. So a lot of refactoring, essentially, right?
Reid Callan: Yes. About 90% refactoring work, so far, and about 10% actually adopting new capabilities.
Brent Simmons: It's interesting because it's impossible to architect knowing what Apple's going to do.
Reid Callan: Exactly.
Brent Simmons: So if we had known this, we might've done this a while ago, but … you don't know.
Reid Callan: Yeah. Given where Apple was going at the time for the past 10 years, it was one window forever and always. So everything has grown organically on top of that assumption since then, and now we need to peel back those layers of abstraction and make them play nice with the new world.
Brent Simmons: There's other new features going on too. Who's working on what?
Reid Callan: A couple of the other big features in iOS 13 are expanded and smarter Siri shortcuts. So Andrew Burkhalter is working on those right now. One of the other big ones was they added new and more intuitive context menu behavior that plays much more nicely with drag and drop. And Andrew Burkhalter also already worked on that. I believe that is either done or almost done at this point.
Brent Simmons: Yeah, I saw a demo of that. It's looking good. I liked that new feature in general.
Reid Callan: Yeah, absolutely. I know from when I was working on Graffle, context menus and drag and drop often seemed like they were fighting each other, but they made them play nice with each other, essentially.
Brent Simmons: What about dark mode? Are we doing dark mode? Didn't we already have our own dark mode?
Reid Callan: We did have our own dark mode, and then Jim ripped out our dark mode and put in Apple's dark mode underneath our old abstraction, and now everything just seems to work. So we have that in there too.
Brent Simmons: Oh, that's good.
Reid Callan: Yeah. Like I said, the last big hill is multiple window support before we get everything out the door.
Brent Simmons: Right, sure. Then we can get onto a TestFlight beta and so on, and get this thing done.
Reid Callan: Yeah. Hopefully those are coming soon.
Brent Simmons: So Tim Ekl has been really concentrating on our Git conversion.
Reid Callan: Yeah. We've been missing having his helping hand on most of the iOS 13 work. He's had a couple of small bugs here and there, but by and large he's been focused on getting the whole company moved over to a new tooling system. So it makes sense that he's been busy.
Brent Simmons: Yeah. Moving to Git after being on Subversion for, I don't know how long, 20 years, 15 years?
Reid Callan: Yeah, it's got to be.
Brent Simmons: But that's pretty much wrapping up now, it sounds like.
Reid Callan: Yeah, at this point we're using Git in our daily workflows. We're pretty much completely migrated over, save for I think documentation and maybe one other small subsystem that hasn't moved over to the new world yet, but they're getting there.
Brent Simmons: So how's it been? Some summers are a little bit rocky between bugs in the beta OSes, beta versions of Xcode, simulator bugs, all that kind of stuff. Has this summer been more or less easy?
Reid Callan: This summer hasn't been that hard. It's just been a lot. We got a couple of weeks delayed into working this summer because we were getting subscriptions out the door and getting the last bits of the first run flow to get new users ready and able to immediately start working with OmniFocus.
Reid Callan: So we started a couple of weeks late into June, and at the same time, this is a huge summer's worth of work. So it's been really hectic.
Brent Simmons: Yes, particularly on iOS.
Reid Callan: Yes. Yeah. I don't know how much, if any, work we've done on the Mac so far. It's been almost exclusively iOS.
Brent Simmons: May not have needed anything.
Reid Callan: Yeah, I think the conversion to Catalina is pretty straightforward. There's the usual couple of UI things missing or not quite drawing right here and there. But as far as I know, the Catalina conversion has been really stable.
Brent Simmons: I've heard that there's been some sandboxing bugs in the simulator.
Reid Callan: Yes, yes.
Brent Simmons: Is that kind of thing ... OmniFocus is not really a document based app.
Reid Callan: So yeah, the only place that OmniFocus has hit that is if you try and go and add an attachment to a task in the simulator.
Brent Simmons: Ah, of course. Those are stored as separate files on disc?
Reid Callan: Exactly. So that doesn't work right now, but since you can sign into your sync account in iOS simulator, you can put your files in the right place on the Mac and then sync them over to iOS and that works fine. But that's made working on our document based apps tough this summer, because they can't create a new document or save documents that they're working on. So that's been kind of a bummer for them. But luckily I've been shielded from that mostly by working on Focus.
Brent Simmons: That's nice. And by the time this comes out, maybe that's all been fixed anyway. So yeah.
Reid Callan: Hopefully we are on the seventh Xcode beta right now, and it's still in there. So here's hoping for number eight.
Brent Simmons: Yeah. Come on lucky number eight.
Reid Callan: Yeah, it's a nice cube number, you know.
Brent Simmons: Yeah, that's right. Everyone likes a cube number.
Reid Callan: Yeah.
Brent Simmons: You haven't been on the Focus team all along. You started in December. Before that you were on Graffle, right?
Reid Callan: Correct. Yeah.
Brent Simmons: What'd you do on Graffle?
Reid Callan: On Graffle I worked mostly in the model code, so figuring out bounds of shapes and how lines draw and what paths they take for our orthogonal lines, that kind of thing. The very lowest level geometry that the app does is what I ended up working on.
Brent Simmons: Do you prefer to work on like lower level stuff, versus UI?
Reid Callan: Absolutely, yes.
Brent Simmons: A lot of developers agree. Yeah.
Reid Callan: Yeah. My idea of a good day is finding a problem in our orthogonal line routing algorithm and figuring out how to fix that while not breaking your general cases, rather than "this button has a drawing artifact somewhere." That's less fun to me.
Brent Simmons: Graffle's been around awhile. When you first started working on that model code, were you updating like really, really old code or…?
Reid Callan: Yes. Yes. Most definitely. Most of the Bézier path code we have was written in the early 2000s, and I came in and started working on it in 2017-ish. So somewhere between 13 and 18 year old code, more or less. So there were a lot of crufty bits that I needed to clean up just to figure out what was going on in the first place in order to be able to start working.
Reid Callan: But a lot of it has, as I've been working through there, has gotten updated to more current code styles. And so that's also helped enable some of the other Graffle teammates to start working in there as well, which has been nice.
Brent Simmons: That's cool. I recall, we did some OmniGraffle releases that had updates to orthogonal line routing. So that was your work?
Reid Callan: Yeah, that was my baby right there. I think it was about a year ago, I think it was either OmniGraffle 7.8 or 7.9. Maybe both of those had a bunch of line routing updates. That was the product of me sitting in my apartment for six months figuring out what was going on and bringing things up to date and adding in the new changes that we wanted. Yeah, that was a lot of fun to work on.
Brent Simmons: In the pre-interview, you said something about your desk being covered with—
Reid Callan: Yes. So my desk at home, the surface of the desk is a whiteboard itself. So I had my laptop sitting like in the back center of the desk, but everything else was completely covered in whiteboard marker.
Brent Simmons: Never occurred to me to use a whiteboard as a desk. That's a great idea.
Reid Callan: Yeah. As soon as I found that desk, I knew this was the one. I don't have to get up and walk across the room to work on my whiteboard. I can just continue sitting there and being just a little bit lazy to continue my work.
Brent Simmons: So once we got the line routing updates out, did you run into that age-old software issue of, well, when you have so many users, some of them start to rely on the bugs.
Reid Callan: Yes. Yes. We most definitely hit that. Right when we released 7.8 we immediately got a ton of support tickets with, "My document doesn't look right. I opened it and now everything is awful." And so I think that's what 7.9 was, was bringing back the old behavior for lines that have not yet been modified post-7.8.
Reid Callan: So if you haven't changed your line, we made it so it'll continue drawing the way it was. But if you change the line, it'll adopt the new line routing algorithm.
Brent Simmons: So you have two copies of this algorithm, different algorithms.
Reid Callan: Yeah. We took Graffle's model from before I started working and shoved it into the app alongside the new model so that we could still use the old logic to get your old line routes if we needed to.
Brent Simmons: Right. That sounds exactly like something Omni would do. Yep.
Reid Callan: Yeah. I think we might have—
Brent Simmons: But, y'know, it's important to customers. It is. So I get it. Yeah.
Reid Callan: Yeah. I was hoping we could rip it out one day, but I think we are stuck with two copies of the Graffle model in there from now on.
Brent Simmons: So you started off here actually, not answering a Craigslist ad, like so many people do. You were an intern four years ago-ish?
Reid Callan: Yes. I was an intern the summer of 2015. I didn't quite answer a Craigslist ad, but I went to a career fair at Harvey Mudd, which is kind of like an in-person Craigslist for students. So it's close enough.
Brent Simmons: Do you remember who from Omni was at the career fair?
Reid Callan: Yes, Kristina, the test manager, Liz and Curt, who are no longer with Omni. But Liz was a tester at the time and Curt was an OmniFocus engineer at the time.
Brent Simmons: Curt's now at Apple. Liz is at Nordstrom.
Reid Callan: Yes, that's right.
Brent Simmons: In case anyone wants to keep up on them. Let's see. So did you go to school at Harvey Mudd?
Reid Callan: I did not. I went to school at Pomona College, but Pomona is in the Claremont consortium, which is five schools down in Claremont, California. And Harvey Mudd is one of them. And they're known as one of the better tech schools around. So I took pretty much all of my computer science classes in there and they let me sneak into their career fair.
Brent Simmons: Nice. Claremont consortium sounds like a Robert Ludlum spy novel from the '70s or something. The Claremont consortium. It's almost—
Reid Callan: Yeah. It's a bunch of-
Brent Simmons: It's like sinister and official all at the same time.
Reid Callan: Exactly, exactly. A bunch of liberal college kids conspiring to change the world.
Brent Simmons: No! That's so evil. So you worked here as an intern.
Reid Callan: I did.
Brent Simmons: What did you do? What'd you work on as an intern?
Reid Callan: The first third of the internship was Omni essentially just bringing myself and the other interns up to speed with iOS development. So—
Brent Simmons: There was three of you as I recall, right?
Reid Callan: Correct. Yeah. Me and two other interns who were from Rose-Hulman where Curt used to be a professor. We spent the first month of the internship program working through two textbooks. One was Objective-C 101, essentially, and the other was iOS development 101.
Brent Simmons: Sure, because in 2015, Objective-C was still a thing, not really Swift yet.
Reid Callan: Exactly. Yeah. There were rumors of Swift maybe happening at some point in the near future, but everything production was still Objective-C, so that's what we learned. After we were brought up to speed with how to do work, we were plopped right into the development teams.
Reid Callan: The other two interns worked on OmniGraffle and I worked on OmniFocus. We were all just helping get the apps ready for iOS 9, I believe.
Brent Simmons: Okay. Yeah, sounds about right. 13 minus four is nine. Yeah, okay.
Reid Callan: Yeah. The math checks out.
Brent Simmons: Yeah. Yeah, I believe it. So were you doing ... I can't imagine you were doing any large refactorings. You were just fixing bugs and things?
Reid Callan: Yeah. I was chasing those little iOS version number increment UI bugs, essentially. Your table view animation changed and now something doesn't look quite right, or some view controller containment things that changed. Pretty much exclusively the little nitpicky stuff here and there.
Brent Simmons: Right. That's a good way to get your feet wet, though, and see what it's like.
Reid Callan: Exactly.
Brent Simmons: Then you went away and then you came back and you're an employee. How did that happen?
Reid Callan: At the end of my internship, I had an exit interview with Ken, and he said, "If you want to come back and work here, we'd love to have you." And I said, "I would love to come back and work here if you'll have me." And so about a week later I had an offer letter from Omni. And I think that was before I even started going back to class my senior year. So I was very happy about that.
Brent Simmons: Yeah, no kidding. So for your senior year, did you do anything at all?
Reid Callan: No. I had signed up for classes, I don't know, sometime before my internship, and as soon as I had the offer letter, I think I dropped a class that I didn't really care all that much about. Or no, I think I dropped two classes that I didn't care much about, and picked up two PE classes in order to bring me up to the minimum number of credits I needed to continue playing basketball.
Brent Simmons: Basketball, tell me about basketball. How tall are you?
Reid Callan: I'm 6'6.
Brent Simmons: 6'6, that's a fairly tall person. I'm lucky to be 5'8.
Reid Callan: I feel tall in the real world, and then I feel kind of normal on the basketball court.
Brent Simmons: Yeah. Sounds about right. Have you always been a basketball fan, even before you were this tall?
Reid Callan: Yeah, absolutely. I've always been "this tall". I think when I was in the sixth grade I was six feet tall. So I've always been a larger human. But some of my earliest memories are me being out in the front yard with my parents and a very, very low basketball hoop and trying to throw one of those little kids size balls through, and just thinking, "That six foot hoop is so high. How can anyone ever do this?" But it's—
Brent Simmons: I still think that when I see a six foot hoop.
Reid Callan: It's been pretty much a constant throughout my life. It's by far my favorite way to work out. I don't like to go on runs. Weightlifting's fine, but it's not that entertaining to me. I need something to go chase. I need something to go keep my attention so that I'm not thinking about working out. I'm thinking about, "I need to get here so I can pass to this person from this spot" or what have you.
Brent Simmons: Right. You're playing a game, not just repeating something mindlessly.
Reid Callan: Exactly, exactly.
Brent Simmons: That makes sense. Me, I just run. But what keeps my mind active is music, listening to music.
Reid Callan: Of course. That works. Yeah. Maybe I should get myself some AirPods and try running again. We'll see.
Brent Simmons: I don't know. Basketball is working for you though. Did you play baseball, football, anything else in school?
Reid Callan: I played baseball until the third grade, and my last at bat in my third grade baseball career… This was the last game of the season. I had a full count, so I knew this was going to be the last pitch of the year. And then I hit my first and only home run.
Brent Simmons: Done.
Reid Callan: And so I decided to call it while I was at the top. Never played baseball ever again, until I got to college and the basketball team had an intramural softball team.
Brent Simmons: Oh, well.
Reid Callan: But that's not quite a full on like real competitive sporting event.
Brent Simmons: Sure, right. It's funny that a team would have a little side project as a team in a wholly, completely different sport.
Reid Callan: Yeah. The basketball team really enjoyed having side sports that we competed in. We had a inner tube water polo team—
Brent Simmons: Of course you did.
Reid Callan: ... a dodgeball team, and then the softball team.
Brent Simmons: Dodgeball.
Reid Callan: Yeah.
Brent Simmons: Nobody wanted to go against you in dodgeball.
Reid Callan: No. We definitely won the intramural championship on that one.
Brent Simmons: Yeah. Mainly through intimidation and people running away scared.
Reid Callan: Exactly. Yeah. A bunch of 6'4 to 6'9 guys running around the court throwing dodgeballs. Yeah, it was a lot of fun. And a couple of the guys… So the dodgeball team was coed, and a couple of the guys' girlfriends were on the softball team. So we had ringers all around, because those ladies had an arm.
Brent Simmons: Yeah, no doubt. So you played all four years at Pomona?
Reid Callan: Yes. I played all four years at Pomona. That was one of the best experiences in my life. It was so much fun. Just coming into practice every day with your best friends, playing the sport that you all love. There's nothing better.
Brent Simmons: Yeah. And you're still playing some kind of adult league of some kind?
Reid Callan: Yeah, the athletic club I'm a member of has a handful of traveling teams, and I'm on the one for the young people. So we travel around the country and play in basketball tournaments against other similar clubs. A couple of years ago we played in Las Vegas and Seattle, and last year we played in Detroit and Portland.
Brent Simmons: Wow, that's nice. Have you played the Harlem Globetrotters yet?
Reid Callan: We have not played the Harlem Globetrotters. I don't think we would win that game.
Brent Simmons: Because they're really, really good.
Reid Callan: Exactly. Yeah. They build up their act to be funny, but they are incredibly skilled basketball players, in order to be able to do the things that they do. It's wild to me.
Brent Simmons: Followers of the micro blog and Twitter account will know that you have at home Scout the Golden Retriever and Keiko the cat.
Reid Callan: Yes. They are both incredibly cute and cuddly. They are my companions while I'm sitting at home on the couch working.
Brent Simmons: Nice. But I imagine you have to take Scout out for walks on a regular basis, being a dog and all.
Reid Callan: Yes. Absolutely. Those are my mental breaks, when Scout decides it's time to go outside. He's kind of the arbiter of my day while I'm at home. I wake up, I feed him. I work for a little bit, he lets me know it's time to go outside. We go take a break and walk around for a little bit.
Brent Simmons: That's nice to have a built-in distraction every now and again.
Reid Callan: Exactly. It's someone forcing you to take a break and it's often when I really need it. So he is a good and helpful boy.
Brent Simmons: Wow. Yes, he is. Now are Scout and Keiko friends? Do they cuddle all the time?
Reid Callan: Keiko tolerates Scout. So—
Brent Simmons: Sounds like a cat.
Reid Callan: Yeah, Scout just absolutely adores Keiko.
Brent Simmons: Sounds like a dog.
Reid Callan: Uh-huh (affirmative). He gets right up about an inch from Keiko's face and just sticks his nose in there and just wags. He wants to play—
Brent Simmons: Like his whole body just wagging?
Reid Callan: Yeah. It's a full body wag, which you don't see too often. And Keiko takes this as an invasion of his personal space. And so he meows back angrily and sits there for about 20 seconds before giving Scout a light clawless boop on the nose and running away. So Scout tries, and Keiko tolerates.
Brent Simmons: Yeah, that's fair. Does Keiko provide that 20 seconds so that you have time to take a photo?
Reid Callan: Yes, exactly.
Brent Simmons: Is that the idea there? Smart cat.
Reid Callan: Yeah. All of the adorable photos of them together were taken in the short window before the inevitable freak out occurs.
Brent Simmons: That's delightful. So you're one of our few but I think kind of growing number of remote workers.
Reid Callan: Correct.
Brent Simmons: That's going pretty well? You're down in Portland. You have no commute. You visit occasionally.
Reid Callan: Yeah. The biggest thing for me is having the no commute. That is by far my favorite perk of working at home. I miss the coworkers. I miss the massages. I miss the three meals a day.
Brent Simmons: Now, is that the correct order?
Reid Callan: Ummm… I think so, yeah. Maybe the food might take precedence over the massages because those are only every two weeks. But the massages are really nice. But—
Brent Simmons: And you can always chat with your coworkers.
Reid Callan: Exactly. I have the robots that I drive around the office. I have the chat apps. I come up to the office a couple of times every year. I love all my coworkers, but nothing beats having someone provide three meals a day for you.
Brent Simmons: That's right, and they're good meals too.
Reid Callan: Yes, absolutely. I'm pretty sure I saw on the menu for tomorrow there is a bacon hash. And I haven't seen this on our menu before and I don't know exactly what it is, but I know I want it.
Brent Simmons: You can tell just by the name.
Reid Callan: Exactly.
Brent Simmons: Yeah. You're in the office again tomorrow?
Reid Callan: Yes.
Brent Simmons: Good, all right. So you'll get it. Yeah. Are you part of that shadowy, mysterious cabal of Destiny players?
Reid Callan: Yes. Yes.
Brent Simmons: I ask people the question, sometimes they say no, and I think they really are. I can't quite identify…
Reid Callan: And I'm really happy that I made you say the word cabal because for anyone who plays Destiny, they know that's a thing in the game. That's one of the enemy factions that you fight against as your space wizard self.
Brent Simmons: Is it the Claremont consortium cabal?
Reid Callan: If only. If only. I'm sure there are a handful of my former classmates out there fighting some space monsters with us, but I think they're going to be against that cabal, unfortunately.
Brent Simmons: I'm a little behind the times and I haven't played a new video game since Asteroids.
Reid Callan: Of course.
Brent Simmons: So is there any chat component to this? I mean, is it a social thing?
Reid Callan: Yes, it is absolutely a social thing. I actually don't ever play Destiny when it's just me.
Brent Simmons: Okay.
Reid Callan: I occasionally turn on my Xbox and see that there's no one online and I turn it back off and go do something else.
Brent Simmons: It's just not worth it.
Reid Callan: Exactly. So we all have our headsets and microphones, and those pipe in the game sound as well as the party chat, all at the same time. So it can get kind of chaotic when there's six people trying to work together to do something, and there's explosions everywhere and everyone's yelling instructions at each other. And it essentially comes down to whoever yells the loudest is the one whose voice gets through. So it's a lot of fun.
Brent Simmons: Can you give us a demo? I want to hear, what are you yelling in Destiny? Yell something.
Reid Callan: Of course. All right, let me think about exactly what I need to say.
Brent Simmons: Yell it at Jake maybe.
Reid Callan: Tim, drop the rift! Jake, pick up the orb! Wolf, jump over there!
Brent Simmons: All right. That sounds like fun.
Reid Callan: Yeah. It's a great time.
Brent Simmons: And other people are playing, they're just hearing you in their ears, and game playing…
Reid Callan: Yeah, we're all hearing each other yell just absolute chaos at each other. We have a raid scheduled for tonight, so we'll see if we can tone the chaos down a little bit and actually finish this time. But we'll see what happens.
Brent Simmons: That's cool. Well, on that note, the yelling note, I'll say, thanks Reid. Where can people find you on the web?
Reid Callan: I have a very small web presence, but you can find Scout on Instagram at scout_tails.
Brent Simmons: Cool. I'll make sure that's linked in the show notes, of course.
Reid Callan: Perfect.
Brent Simmons: That's cool. I'd also like to thank our Intrepid producer, Mark Boszko. Say hello, Mark.
Mark Boszko: Hello Mark.
Brent Simmons: And especially, I want to thank you for listening. Thank you. Music.
SFX: [MUSIC PLAYS]