Connect with the amazing community surrounding the Omni Group’s award-winning products.

Nov. 20, 2019, 6 a.m.
Jim Correia, OmniFocus Engineer

Jim Correia — OmniFocus engineer, man-about-town — joins the show to talk about some of the things he and the team have been working on since WWDC: Dark Mode, multiple windows, and Shortcuts.

Show Notes:

We also talk about his humble beginnings with his trusty TI-99/4A by his side, his search for exotic mesons, and his work at Bare Bones on BBEdit and Yojimbo.

Jim’s also a runner and dog-partner to Rosie (who’s widely recognized as the best dog). You can find Jim on Twitter @jimcorreia.

Some other people, places, and things mentioned:


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. Mu…sic.


Brent Simmons: I'm your host, Brent Simmons. In the studio with me today is Jim Correia, OmniFocus developer. Say hello, Jim.

Jim Correia: Hello Jim.

Brent Simmons: So to start off, we have a listener question from Evan McNulty. Of course, he's an Omni employee, but he is also a listener, and he asks, are you right?

Jim Correia: Yeah. You say he's a listener, but I'm going to answer under protest. I'm going to say that I am right more often than I am wrong.

Brent Simmons: Okay.

Jim Correia: How about we go with that?

Brent Simmons: That sounds good. So the answer is bet on Jim. It'll work out slightly more often than not. All right. So you're an OmniFocus developer and the OmniFocus lead developer, technically?

Jim Correia: Yeah, I'm technically the lead engineer for OmniFocus.

Brent Simmons: Okay. So what have you been working on this summer and fall, since WWDC?

Jim Correia: So this summer and fall, the two major things I've been working on, it's all been stuff for iOS 13, but I've been working on Dark Mode for OmniFocus, as well as multiple window support for OmniFocus.

Brent Simmons: So did you start with Dark Mode? That seems maybe the easier of the two, I don't know.

Jim Correia: Yeah. Dark Mode has been done — and if you could see me, there were little air quotes around "done" — for quite a long time. Dark Mode was interesting because OmniFocus has had Dark Mode for many years now. I forget exactly how long. So we did Dark Mode before the OS supported such a thing, and now that the OS supports it, it was actually nice to be able to go in and rip out a bunch of our custom code. So now we do it the OS way. We've tuned the colors so that we fit in with the OS better. And give people a look that they've been asking for quite a while.

Brent Simmons: So the look actually matches the OS preferred semantic colors, or whatever those are.

Jim Correia: Yes. We're using the Apple semantic colors. So the background colors in OmniFocus will match that in Mail, for example.

Brent Simmons: Mm-hmm (affirmative). Okay. All right. So Apple's already gone ahead and designed all this, in a sense, and we're just picking that up. That's cool. These days, what do you use, asset catalogs for colors, and there's like a whole infrastructure for this, right?

Jim Correia: Yeah, there is. Since we did Dark Mode years ago, we had our own theme file format, which was essentially property lists with a bunch of metrics and colors in it. So one of the first things I did this summer was write a little bit of code, which converted all the colors in that property list into asset catalogs. And then went through and deleted all the colors we didn't need anymore, because we're using the Apple semantic colors.

Brent Simmons: That's cool. So, you got the chance to delete a bunch of stuff, which is always nice.

Jim Correia: Yeah, there's a bunch of custom code that just no longer exists anymore. And while it was code that many people were proud of, I'm also happy to delete it.

Brent Simmons: That's true. Well that's, you know, the mark of a professional engineer is that that person will delete even their own code, even if it's good, if it's time. So how about the automatic switching? Was that any difficult there, a person changes their preference or has auto switching turned on or whatever?

Jim Correia: No. If you're building a brand new application, and you have all stock UI elements, it's essentially free. If you have custom UI elements, you just have to make sure you go in and respond to the trait collection changes, and make sure you update your colors. And even then, depending on how you've built your stuff, it's sort of rare that you actually have to do work. Most of it happens for free if you're using asset catalogs and the modern infrastructure.

Brent Simmons: My personal iOS experience basically stops with iOS 6, so I don't even know what trait collections are, other than generally. So OmniFocus may be out by the time people are listening to this? But it is, it's at least in TestFlight, so you can see our new Dark Mode. So the other thing was multi windows, multiple windows, and that's just an iPad thing, right?

Jim Correia: That is just an iPad thing. And that was a much bigger lift than Dark Mode. That has consumed most of the rest of my summer, as well as my colleague Reid's summer.

Brent Simmons: Reid who was on the show recently?

Jim Correia: Yes.

Brent Simmons: Why was this a big lift? What had to happen here?

Jim Correia: So OmniFocus for iPad, it's hard to believe that the code base is almost 10 years old already, and in those 10 years almost every corner of the app assumes that there is only going to be one instance of the UI. It's pretty straightforward to make it work, to support multiple windows. But there was a lot of code to touch. Most corners of the application that were not underlying model and infrastructure code were touched for this release.

Brent Simmons: Interesting. So of course the model, which is shared with the Mac is prepared for this, because the Mac can have multiple windows, but so it was user interface layer and related controllers. So tell me about the quick entry window. We talked about that a little in the pre-interview.

Jim Correia: Yeah. Quick entry was sort of interesting because we got away with sort of a shortcut before, because we knew that there was only one possible at a time, and that you couldn't be editing anything else anywhere in the application while the quick entry window was up. But as soon as you add a second window that's no longer true.

Brent Simmons: And that's a very big thing to be different.

Jim Correia: Yeah.

Brent Simmons: Yeah.

Jim Correia: So fortunately we had the underpinnings of what we needed to solve this problem, which was the code that drove quick entry on macOS, so one of the things I did this summer was move that code out of the Mac application down into the model layer where arguably it should have been all along. I extended it to meet the needs of OmniFocus iOS, and now that drives quick entry in both applications.

Brent Simmons: That makes sense. I imagine this entire project in multiple windows has been the case. So you think it's this amount of work, and then as you dive you're finding more and more corners and so on?

Jim Correia: Exactly. Early in the summer, we sat down and we tried to scope the work, largely so that our product manager could have a sense of, what is it that Reid and I are doing? And we had a vague idea of what we needed to do. And then as we started to peel back layers of the onion, we were like, "oh we forgot about this thing, which also needs to be touched, and this thing too." And in fact before I came up here today, I was fixing what I hope is the last one of those surprises.

Brent Simmons: Getting close. It's an interesting subject, because you could always have imagined that multiple windows would come to the iPad, but you never know exactly how that would work or whatever. So what about preparing in advance for a feature like that? Do you do that? Because the work could have been done five years ago, for instance.

Jim Correia: Yeah. I mean I think this rumor has been floating around for a while that iPad should have multiple windows. So when do you do that work versus other priorities in customer-facing features that you want to ship today, and the other problem is, is what if you guess wrong and you've done all this work and it's not a really great match for what Apple eventually shipped. Now that said, there are lots of places in the application where we should have not been using a global reference to an editing context or to the current outline controller. We could have done better there, but software is not always clean, sometimes it's messy, but it ships and it works.

Brent Simmons: Yeah, right and that's the key thing, you ship what you need to ship when it's time. Yeah, likewise there, I'm sure have been similar rumors on Macs for years about different things and like you could have prepared for all of them and been wrong.

Jim Correia: Yeah. There's one in particular I remember, and this is an old rumor that is pretty well known so I don't feel bad about perpetuating it at this point because it's certainly dead. The rumor was we going to have floating menus or tear-off menus. And when I was working on BBEdit, this was, I don't know, a decade and a half ago, the way BBEdit enabled and disabled menu items before the menu dropdown, it was not a good match for if menus would be floating invisible on the screen all the time. So I went through and I turned BBEdit's menu validation code inside out and the result was much cleaner and nicer, and was probably worth doing. But the floating menu feature never came.

Brent Simmons: So I imagine, speaking of cleaner and nicer after all this work, OmniFocus's code is cleaner and nicer a bit too as a result of adapting to multiple windows.

Jim Correia: It is, we're pretty happy with the architecture that we came up for OmniFocus 3 for iOS and this cleans it up a fair bit. It doesn't change it drastically. It just cleans up the loose edges where people were referring to a single instance of the UI and now it's all parametrized. So clearly we can have three OmniFocus windows on your iPad if that's what you need.

Brent Simmons: Sure. That's cool. Those big iPads. Yeah. Why not? Kind of nice to be able to see three different perspectives or whatever. I imagine there are just a number of bug fixes, iOS 13 compatibility issues. That kind of stuff in general.

Jim Correia: Yeah. There's always bug fixes and performance tweaks that we're working on. There's also another big feature we've been working on, shortcuts and automation. So Omni Automation for OmniFocus is still in beta, but what will ship with the iOS 13 release of OmniFocus is a bunch of shortcuts.

Brent Simmons: So Shortcuts have been beefed up in iOS 13.

Jim Correia: They have. If any of you remember Automator from old macOS, it's sort of its kindred spirit.

Brent Simmons: We have parameters now, right, and we didn't use to?

Jim Correia: We have parameters and we have a nice shortcut that lets you do an advanced query of your tasks, and then you can process your tasks that way. I think it's going to be great for sharing tasks with your teammate, for generating a report, various things like that.

Brent Simmons: Okay. Can you query on basically the same kind of things we can create perspectives out of, or what do those parameters look like?

Jim Correia: The rules are slightly different than the perspective rules. They're quite flexible, and I'm embarrassed to say I don't have all of them in my head, because I have not been doing that work. My colleague Andrew has been doing the work.

Brent Simmons: Andrew Burkhalter, who hopefully we can get him on the show and talk about shortcuts and automation. One of these days.

Jim Correia: Yeah, we can see.

Brent Simmons: Yeah. We'll drag him up here. He's on the third floor, listeners. We're recording on the fourth floor. So we'll go downstairs, throw him in the elevator, bring him up. So you've been here for about 10 years. So have you been on OmniFocus the whole time?

Jim Correia: I have. I guess when I arrived, it was unclear exactly what I was going to work on, and I did a quick prototype, I think for OmniOutliner for iPad, and then we decided that I should work on OmniFocus. And that was just fine with me, because I love OmniFocus.

Brent Simmons: Yeah. How'd you come to Omni in the first place? You're from New England, so this is a bit of a hike.

Jim Correia: I am from New England. This story is sort of not terribly interesting. I had been at Bare Bones more than a decade, and had essentially been working on the same problems for more than a decade, and was ready to try something new, and pick up some new challenges. Everything aligned so that it made sense for my family to pick up and move from New England out to Seattle. So we did.

Brent Simmons: That's… that's not that interesting.

Jim Correia: No.

Brent Simmons: I'm glad we got that out of the way. It wasn't a Craigslist ad, though.

Jim Correia: No, it wasn't a Craigslist ad.

Brent Simmons: Half the company's answered a Craigslist ad.

Jim Correia: I had known Tim for years through WWDC and other conferences.

Brent Simmons: Sure. Yeah. Well you and I have known each other at least online for… '90s sometime, probably.

Jim Correia: I think I was an undergraduate when we knew each other.

Brent Simmons: Yeah. Okay.

Jim Correia: And now I'm an old man.

Brent Simmons: Yeah. Listeners, you'll have to watch. We'll post photos of Jim. You'll be able to see that, yeah, he's an old man. So as you say, before Omni, you were at Bare Bones. You worked on all the apps? BBEdit, Yojimbo?

Jim Correia: I worked on everything we shipped.

Brent Simmons: Mailsmith too?

Jim Correia: BBEdit, Yojimbo and Mailsmith, over time. I think over time, I probably did less work on Mailsmith than anything.

Brent Simmons: That was always kind of Rich's baby in a way, it seems like.

Jim Correia: It was, and I was also the domain expert on several things in BBEdit, so it made sense for me to work on BBEdit. I did come over to the Mailsmith project for a while to work on the application framework, and a lot of those pieces ended up in the modern version of BBEdit that became the one that we shipped on Mac OS X eventually.

Brent Simmons: Oh, okay. That was a Carbon app when it shipped on OS X.

Jim Correia: Yeah, It was a Carbon app on OS X, before that it was an HIToolbox app, because Carbon didn't exist.

Brent Simmons: Right, right. And Carbon really is HIToolbox evolved.

Jim Correia: Yes.

Brent Simmons: I helped Carbonize exactly one app in my life and immediately switched over to writing in Cocoa, and was very happy. Now did you start Yojimbo? It's got the name "Jim" in it. What's the story there?

Jim Correia: No, so it's actually named after a Kurosawa film, the product originated out of an idea that my colleague Steve had for years about an app he wanted to build, and he's a big fan of the film.

Brent Simmons: Oh, okay.

Jim Correia: It was actually the second proposed name for the application. We had a great name, and—

Brent Simmons: Nova?

Jim Correia: No, see as lawyers often are, they're not fun, and they said "No, you can't name it that. That's going to cause you all kinds of grief." So Yojimbo it was.

Brent Simmons: Can you say what that name was or are you still, lawyer's going to come after you?

Jim Correia: I probably shouldn't say.

Brent Simmons: Okay. After the show, I'm going to ask you again.

Jim Correia: I'll have to make sure that the tape is off.

Brent Simmons: How did you get into computer programming in the first place? Were you one of those kids who had an Apple II Plus at home, and your parents are computer programmers?

Jim Correia: No, not at all. I ended up with a TI-99/4A, and I forget how old I was. I was fairly young, and it arrived one Christmas by way of my grandmother. And I have no idea how this happened, because she was not a computer person, at all. And in those days when you got a computer and you turned it on, it didn't do anything. So you learned how to program it in BASIC. And that's what I did. And then when I had the computer, I didn't have a floppy disk drive. I didn't have a tape drive. So every time you turned it on, it was a clean slate, and you wrote something new.

Brent Simmons: Yeah. Ah, that's amazing. Oh God, and if the electricity were to go out, like whatever, start over. Yeah.

Jim Correia: Yeah. I got really good at hunt and peck typing. And eventually in high school I decided to take a typing class, and man, it was painful to unlearn those habits.

Brent Simmons: Yeah. I never took a typing class. We had them, when I was in schoo,l of course. And my typing style is still derived from age 12, typing on an Apple II Plus, it is not correct. So in high school were you, did they have computers? Were you a part of that whole scene, the kids in the math lab?

Jim Correia: Yeah, I was heavy into math and science, and we did have computer programming classes in high school, and we had a computer team, and our school is actually pretty good and we'd go to the various competitions. What's interesting though is that at that time…. So I guess I could date myself and say that I graduated in '91, I believe? See, I'm so old, I can't remember the year I graduated in. And my guidance counselors at the time gave me an interesting bit of advice. They're like, "I know you're good at this, and that you find it interesting, but it doesn't look like a place where there's going to be a lot of growth. So you might want to look into other fields to go to school for."

Brent Simmons: No growth in computer science?

Jim Correia: Yeah. Well, or that there was going to be a glut of people.

Brent Simmons: Oh, okay. Too many. Yeah.

Jim Correia: So I did what you do when your guidance counselor tells you not to go to school for computer science. So I went and got a degree in physics.

Brent Simmons: Naturally. So where'd you go to school?

Jim Correia: I went to UMass, one of the small campuses, the Dartmouth campus. What was interesting about being a physics student there was it was a really small department. My graduating class was three people.

Brent Simmons: Wow.

Jim Correia: But for a school that was largely undergraduate, the physics department was heavily research based. We had a professor doing solid state research, and we had two groups doing high energy physics at Brookhaven National Lab.

Brent Simmons: Wow.

Jim Correia: I was lucky enough to, as an undergraduate, go with one of the groups to the lab and work with them for the summer when they were running their high energy experiment, looking for exotic mesons.

Brent Simmons: That just sounds really, really cool.

Jim Correia: It does, I mean exotic mesons makes it maybe sound more interesting than it was, but it was still a great experience.

Brent Simmons: Yeah. Science is dry in the way science is dry, and that's fine, but yeah, exotic mesons.

Jim Correia: The interesting bit about that summer was that it happened to be the summer that funding in this country was cut for the Superconducting Super Collider.

Brent Simmons: Ah, yeah.

Jim Correia: Not exactly a good time to be a physics student who maybe is deciding whether or not they're going to be interested in high energy physics.

Brent Simmons: Sure. So now there's a glut of high energy physicists and not enough tools.

Jim Correia: There is, and apparently some of them went on to create financial instruments that we probably shouldn't talk about.

Brent Simmons: That's a whole other topic. Good Lord, our friend Luke Adamson could discuss that.

Jim Correia: Yeah. So I get back to campus that fall and said, "okay, well clearly high energy physics is not a thing." And it turned out that the math department just got a large grant from the National Science Foundation to do innovation and teaching and some of it was going to be software-based. We're going to teach kids calculus in non-traditional ways that were more experience-based.

Brent Simmons: Okay.

Jim Correia: So I worked for them for two years while I finished my undergraduate degree, and since I didn't know what I was going to be when I grew up, I stuck on and worked another two years with them while I took masters physics classes.

Brent Simmons: Oh. Okay. Now you have a foot in both places doing physics and doing programming.

Jim Correia: Yeah. And it turned out that the software we were writing on that grant was all software that ran on a Mac.

Brent Simmons: Oh, okay. And was that really your first exposure to Macs?

Jim Correia: My first exposure to Macs was, I think when I was a freshman in college, and I started doing HyperCard work.

Brent Simmons: Oh cool.

Jim Correia: And for the same grant, a lot of the prototypes were in HyperCard, And then we got to the point where like, "okay, now it's time to write real software." And I'm like, "okay, I guess I'll learn C++, this will be an adventure."

Brent Simmons: Was PowerPlant out by that time?

Jim Correia: PowerPlant was out. Our app was actually built in PowerPlant, and we used something called the animation class library to do our virtual worlds.

Brent Simmons: Okay. Did you ever have to have any of those really lousy jobs? Like me, I was a dishwasher, busser kind of thing. You ever do retail, restaurant work, to get by as a high school kid?

Jim Correia: Oh. I ended doing retail, commission sales in Sears, but I started doing dishes. I stocked the shelves, I did the dairy cooler, I took the trash out, for a small convenience store meat market near my house, and that was definitely a character building job. I recommend everybody have at least one of those.

Brent Simmons: Yeah, if not several. I had a ton, apparently I needed a lot of building. But back to your writing software for the math department, at some point you're out of there, you're going to join the real world. How do you get from that point to Bare Bones?

Jim Correia: Well, I was finishing up my master's coursework, and still unsure what I was going to be when I grew up. And the professor I worked with was saying, "Well, you should be like me, and go into a PhD program for math and science ed." And the whole time while I was writing Mac software, I was a BBEdit user and a Frontier user, which is how I knew you. And I would send Rich bug reports about BBEdit, and then at some point he made me a beta site, and then at some point he invited me up for lunch, because he decided that I'd reported enough bugs that he should just offer me a job so that he can make them my problem.

Brent Simmons: That seems fair. And so you got a job and stayed 10 years there.

Jim Correia: Yeah. I think it was 13 by the time I finally left.

Brent Simmons: 13, wow. How big was the company around, so Steve was there too. Patrick, Rich.

Jim Correia: The company has always fluctuated in size over the years, but it's always been fairly small. It's sometimes I think that I didn't have enough fingers to count the people using two hands, but usually around that size.

Brent Simmons: Stay in touch with Rich?

Jim Correia: Oh yeah. I talk to Rich several times a week these days.

Brent Simmons: Someone's got to keep him on an even keel after all. I guess that's your job.

Jim Correia: Yeah. I don't know how I get stuck with it, but yeah, we're in touch all the time.

Brent Simmons: That's great. So when you're not making software happen, you're a runner.

Jim Correia: I am. Which was sort of unexpected. I think back to my days in New England where the idea of running was not all that interesting, because it's hot, it's humid, it's cold. And then I came out to Seattle and the weather here is temperate most of the year, and I just—

Brent Simmons: You can run in literally every single month.

Jim Correia: Yeah. And most of the year I run in shorts. Not everybody does, but I do. It's sort of interesting how—

Brent Simmons: I bundle up like crazy. I wear long running pants, even in like July.

Jim Correia: Yeah. I can tell that I'm getting older now, because my hands get cold when I run. It was sort of surprising to fall into running, because I was definitely a pro couch potato, and then a friend of ours was diagnosed with lymphoma. Somebody suggested that as a show of support, we all run with Team In Training. So we did, and running just sort of stuck. So it was a surprise but a nice one.

Brent Simmons: Yeah. What do you like about it? What does it bring to you?

Jim Correia: It's a pretty efficient way to stay healthy, because while it takes a lot of activation energy to get up and actually get out there and do it, you don't have to run for very long to get a lot of cardio benefit from it. It's also a good time to think. Lots of bugs are actually solved while I'm out running, not when I'm sitting in front of the computer.

Brent Simmons: When you run, do you have a distance you generally go for, or do you tend to mix it up?

Jim Correia: Well these days I've kind of fallen off the wagon, and I just do short runs a couple of times a week, but for a long time I would do anywhere… a short run would be three, a long run would be 10. It depends. I used to train a lot for half marathons, and these days not so much.

Brent Simmons: You have done a marathon.

Jim Correia: I've done one marathon. It didn't go as well as I would hope, so that means that rather than totally writing off the idea of running marathons, I'm going to have to do another one.

Brent Simmons: Uh huh. Right. Is it just a matter of training enough or training in the right way to hopefully have it go better the next time?

Jim Correia: I think so. The marathon's an interesting distance because it's beyond the distance that most people can pack enough glycogen for, so you need to overcome that and deal with nutrition on the run. I love the half marathon distance, because you get up, you run a half marathon, you're done, and then you go about your day.

Brent Simmons: I've not done a half marathon, but I do enough running that yeah, I think I could do that. I wouldn't be like wiped out for a month or something, but a marathon, somewhere along mile 20 or something, or mile 17 it must just get brutal.

Jim Correia: Yeah. For me it was about mile 18, where I'm like, "Oh, this is not great." And it's funny, the perspective you have at that point because I'm like, it's only seven more miles. How bad could it be?

Brent Simmons: Right. Pretty bad.

Jim Correia: It turns out, yes. The other valuable lesson I learned about the marathon is that when your friend says to you, "Oh, you should sign up for this marathon and run it with me, it's a flat course", don't believe them.

Brent Simmons: Don't believe which part? Don't believe that it's flat?

Jim Correia: Yes.

Brent Simmons: Okay. Because this was Curt, wasn't it?

Jim Correia: It was Curt. And it turns out that it was like a 2,500 feet elevation course.

Brent Simmons: Oh geez. To Curt, that's flat. But yeah, to regular humans...

Jim Correia: I mean, to be fair, I think maybe in his mind he remembered it being flat because it was all a blur, but it's definitely not flat.

Brent Simmons: Yeah. So you also take care of Rosie the dog.

Jim Correia: Yeah. Rosie is a good busy dog.

Brent Simmons: Busy by temperament, by breeding.

Jim Correia: Yeah. She's a border collie mix, so she's a great dog. She loves to come to the office and just chill. But whenever she notices that I'm not busy, it's time to pay attention to the dog.

Brent Simmons: Mm-hmm (affirmative). Right. She kind of demands that a little bit, huh.

Jim Correia: Yeah. It's funny too that if somebody comes to my office to work on a problem, and she notices that we're both idle, and my colleague Andrew thinks what she's actually picking up on is the fans running, because Xcode is doing a big build. She wanders over and says, "You guys aren't busy, you should pet the dog."

Brent Simmons: Yeah. That's what big build time is for. Yeah. That's cute. So when you're at home, do you have to walk her a bunch? Or she just like hang out?

Jim Correia: A little bit of everything. Sometimes she'll put herself to bed early, which is always surprising. She'll like look up at the stairs, and look at me, and look at the stairs and I'm like, you can go to bed, I'm not going to bed. But often, she'll get bored and she'll do what I call the Rosie dance, where she just crouches in front of you, and she clearly wants to play tug, or go for a walk, or she just wants me to move over to the couch so that she can jump up and sit with me.

Brent Simmons: Well that's nice. I picture the two of you watching television, you're petting the dog, pretty good night. We're just going to stop there. With the image of you petting your dog, and watching TV on the couch. Thanks Jim. How can people find you on the web?

Jim Correia: On the web. You can probably find me on Twitter. I don't post a ton these days, but I'm @jimcorreia on Twitter.

Brent Simmons: Okay. That'll be in the show notes too, because listener, you probably can't spell "Correia."

Jim Correia: Oh, they can probably spell it like five different ways.

Brent Simmons: That's true. That's true. 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.