Making Vesper, NetNewsWire & OmniOutliner: A Top Dev Interview With Brent Simmons

Adam Rush
Brent Simmons at Golden Gardens beach, staring at baby unicorns in the sand, that are on fire, at sunset.

Brent Simmons at Golden Gardens beach, staring at baby unicorns in the sand, that are on fire, at sunset.

Welcome to another installment of our Top App Dev Interview series. Each interview in this series focuses on a successful mobile app or developer and the path they took to get where they are today. Today’s special guest is Brent Simmons.

Brent is a prolific technologist, technology writer and speaker. He is best known for being a developer at The Omni Group, the developer of Vesper and creator of NetNewsWire.

When he’s not busy programming, Brent is either writing on his blog or speaking at various conferences around the world, including AltConf & CocoaConf.

Focus

Brent, you’ve worked on a number of popular apps such as NetNewsWire, MarsEdit, Glassboard, Vesper, OmniFocus, and more. Out of all of these apps you’ve worked on, what is the one you are most proud of, and why?

The answer probably depends on my mood — I’d give a different answer every time you ask!

But today — maybe because my old boss and friend Dave Winer recently visited — I’d say Manila. Manila was a very early blogging system that shipped in 1999, when I was working at UserLand Software. After Dave had the idea and did the foundation and design, I took over as lead developer and shipped it.

And it was awesome. It had “Edit this Page“ buttons so that if you were looking at something on your blog, you could edit it. This was new at the time. We had hundreds of thousands of users on our free service — some well-known blogs such as Daily Kos and Robert Scoble got started on Manila.

This was the first big project I ever did and, even though it’s not still around, it did help start the blogging revolution, which was a big part of the open web, which is one of my passions.

You’ll note that almost everything I’ve done — certainly the best things — have to do with reading and writing on the web. That’s been the theme of my career.

That’s a great point. In addition to being well known for development, you also are a prolific blogger, podcaster, and conference speaker. These kinds of things obviously take a lot of time and energy – why do you do it and what benefits have you seen in your life from these pursuits?

Although Manila is the product I’m most proud of, if we expanded this to ask what *thing* I’m most proud of, the answer would be obvious: my blog. I’ve been writing it for 17 years. When I was a kid I wanted to grow up to be a writer, and I *am* a writer. My blog isn’t a side thing: it’s the main achievement of my career.

I wasn’t sure that I’d like speaking at conferences. I’m extremely introverted. I like reading and writing, which are things I can do alone in a room. But, to my surprise, I found there’s a part of me that’s a little bit of a ham. I like performing for a crowd — and I definitely think of speaking as a type of performance. I even like playing music for people as a Conditional Breakpoint.

My uncle is an actor. I never understood the appeal of acting, and I figured he was from outer space — until, sometime in my 40s, I started to become comfortable on stage, and I started to understand and really enjoy the connection you can make with an audience. Now I get it, at least a little bit.

What I try to do when speaking is pretend it’s just you and me sitting in a bar. I shoot for relaxed and conversational and intimate and, hopefully, a little funny. I tell stories. I’m not afraid to be weird. I prepare a bunch (more as time goes by), but with the goal of making it seem like nothing, as if I just got up and started talking to you. (It should be no surprise that my approach to writing is similar.)

Let’s go back to apps. Some of your apps are now managed by other companies – for example, NetNewsWire is run by Black Pixel, and MarsEdit is now run by Red Sweater. Why did you decide to transition these to other companies rather than maintain the apps yourself, and how did you perform the transition in practice?

NetNewsWire by Brent Simmons

NetNewsWire by Brent Simmons

With MarsEdit, I had just started working at NewsGator. NewsGator’s initial focus as a company was RSS, and so NetNewsWire was the priority. I couldn’t do a good job with both NetNewsWire and MarsEdit, so rather than shut down MarsEdit, we found it a great home with Daniel Jalkut.

We sold NetNewsWire to Black Pixel many years later. I’d been working on NetNewsWire for nine years, and it was clear to me that to do syncing well and maintain iPhone, iPad, and Mac versions, it needed a bigger team. At the same time I had an opportunity to start a new company (Sepia Labs) and create a new group messaging app: Glassboard. There was no way I could work on NetNewsWire part time, when what it needed was more people, not half of me. So we looked for a good home.

Part of the transition is coming up with a deal that both sides like. These tend to involve some cash, some revenue-sharing for a period of time, and some incentives for the purchasing company to put resources into the app.

The second part is turning over the code and related resources. I’ve always made myself available for technical assistance after the sale, but there’s been very little of that needed.

Given your success and senior status, you must have a large number of ideas for new apps to work on, or opportunities to collaborate with other people on new projects. How do you decide which opportunities to pursue?

This part has actually gotten easier. I’m 48 years old right now, and I have a day job. This means I can do one or two more serious apps, and that’s it. Probably just one.

It happens that there are just two app ideas I’ve been obsessed with for a couple decades. I picked the one of the two I’m most passionate about, and I’m working on that.

There are other ideas and opportunities that come up that sound really, really fun. But then I remember that time is limited, and there’s this thing I want to make and maintain for the rest of my career, and that’s that. So I stick with that one thing.

Surviving as an Indie

Recently, you and John Gruber announced that you are shutting down your app Vesper, which although it was popular hasn’t earned enough money to make it a financial success. If you had to pinpoint the #1 reason why Vesper didn’t earn as much as you had hoped, what would you say it was?

Vesper by John Gruber, Brent Simmons, and Dave Wiskus

Vesper by John Gruber, Brent Simmons, and Dave Wiskus

If we had done as John suggested in his recent post on Daring Fireball — designed the iOS app first, but then shipped the Mac app before shipping the iOS app — I believe it would have had a much better shot.

Also: I’d probably use Cloudkit for syncing. It didn’t exist when we started, and then it did exist but didn’t have a web API, and we were strongly interested in doing a web version of Vesper. Now that Cloudkit *does* have a web API, it would have suited our needs. This would have saved us a bunch of time and money.

This isn’t the isn’t first time that you pointed out that it’s hard to make a full-time living as an indie iOS developer these days, due to the saturated market, downward price pressure, and other problems. However you have pointed out it’s easier to be an indie macOS developer. Why do you think indie Mac developers are having more success?

Some people are finding success on the iOS App Store — and I congratulate those folks. This includes Omni, where I work.

But I do think it’s far more difficult to make a living as an indie iOS developer in 2016 than it was as a Mac developer in 2005. My suspicion is that in the Mac market, 2016 is not very different from 2005, and you can still make money there. But iOS is like a giant curtain laid across the map, so people don’t see the opportunity.

The thing about Mac users, at least with productivity apps, is that they’ve always been willing to pay for value. They love their Macs, and they love apps that help them get their work done, and they’re very happy to root for and support indie developers. Mac users *want* great apps, and they want us to succeed.

It’s a much smaller market than iOS, sure, but it’s full of people who love apps and let it show. I love writing Mac apps in large part *because* of Mac users. They’re the best. They’re our partners.

What advice would you give someone who would love to quit their job and try being an indie developer?

In 2008 I wrote Advice for Indies, which includes these lines:

“But you have to actually build it. You have to work every day. You have to sit in the chair and stay seated. And sleep and come back to the chair. You need to wear out that chair and then buy a new one and then wear out that one.”

I’ve worn out a few chairs. So much of it is work ethic. Keep doing it. You might want to go play Destiny or watch Doctor Who — but you’ve got a feature to finish and bugs to fix.

That’s not to say that you shouldn’t have a life. You should, absolutely. But recognize that it really does take a lot of constant work. You have to be in that chair.

Brent's desk at The Omni Group using his favourite camera app, Bitcam.

Brent’s workspace at The Omni Group using his favourite camera app, BitCam.

Indie Dev vs. Full-Time

You have a great history of your own successful projects as an indie developer, and also working within a team like The Omni Group. Which do you prefer and why?

OmniGraffle, one of the many apps made by the Omni Group.

OmniGraffle, one of the many apps made by the Omni Group.

They’re different, for sure, but in each case development is very social. It’s rare that great apps come fully-formed from the head of a solo developer.

I wasn’t sure if I’d like the more traditional environment of Omni. I take the bus to work, sit in my office, have lunch with the company (at 12:30 every day), and talk to and communicate with people throughout the day. It’s nice to be on a team. Everyone pulls their weight, and the company is full of smart and dedicated people. It turns out I *do* like it.

It’s also nice that when I’m not there, I’m not there. As an indie I worked at home and thus I was always at work. It’s good for the soul to have a dividing line.

Can you please describe the process of moving from prototype to shipped feature within The Omni Group, and how that compares to a similar process when you are an indie developer?

At Omni and at Q Branch the process is pretty similar: the designers figure out how a thing should work, then write it up and provide mock-ups — and then I ask questions, and that may or may not trigger further revisions — and then I go and build the feature. Which may then trigger further design and revisions, sometimes small and sometimes large. It’s iterative.

For my personal projects, I’m both designer and builder — and so I run a bunch of things (though not every single thing) by my beta testers. Sometimes I absolutely know what I want and I do it and there’s no need for early feedback. Other times I just need a sanity check. Other times I’m trying to pick from a few options. And then sometimes I really just have no clue how feature X should work.

And, of course, my beta testers — who are so much more than beta testers, since they’re in on everything from way before the beta — often have ideas I hadn’t thought of. They’re absolutely critical to building great apps.

Swift

What do you think of Swift? Are you using it in your projects? If so, what benefits or challenges have you found using it?

Brent is in love with Swift!

Brent is using Swift at Omni and on personal projects

I love Swift, and — both at Omni and on my personal projects — I write new code in Swift. And sometimes port old code over to Swift.

I think, however, it’s important to think critically about our tools, and not just love shiny new things for their shininess.

Example: I’m a protocol-oriented-programming partisan since before Swift. Objective-C and Cocoa are very much about delegates, protocols, and composition-over-inheritance, and that’s where I learned it.

And yet, one of the most natural uses for protocols is to make it so you can have a collection of heterogenous items that all implement the same interface. Think of an email client. You might have an Account protocol, and different classes for IMAP, POP, Gmail, etc. that conform to that protocol.

Somewhere in your data model you’ll have a collection of these Accounts. I tend to use sets, because I want to ensure uniqueness and because any sorting should be done at or near the UI level. Can you have, in Swift, a Set, where Account is a protocol? No, because you can’t make a protocol Hashable.

There are workarounds, for sure, but that doesn’t change the fact that a thing that ought to be natural and simple isn’t.

But it’s early days. The language is still evolving. And the things that bug me – this particular problem and others — are likely to get fixed in the future.

The project we’re all on as a community now is not just about evolving the language but also experimenting and trying new things in the process of defining idiomatic Swift. This takes longer than language evolution, by necessity, but it’s absolutely critical to Swift’s future, so that collaboration (on a team, on an open source project) works well.

In other words, we’re all working on defining what is insane gibberish Swift and what’s normal. That process involves writing a lot of insane gibberish Swift! But that’s not bad, really. That’s just how the process works. And it’s fun.

Inspiration

What is the best tool you have used to help with day to day work?

My most constant tool has been BBEdit. I’ve been a BBEdit user since version 2 — which must have been about 20 years ago. Great app, great company.

A close runner-up is MarsEdit, which must be going on 12 years old now. I write my blog entirely in MarsEdit.

Another important tool is Slack. I keep it open on my Mac. I hate the app so very, very much — but it’s also great. If only it weren’t a webview wrapper. Ugh.

What else do you consider “great apps”?

Outside of mine and Omni’s apps:

Who do you look up to? Who do you consider a success, either in our industry or otherwise?

My heroes when I was getting started were Mac developers in the ’90s: Dave Winer, Peter Lewis, Mark Alldritt, Chuck Shotton, Rich Siegel, and a few others. I wanted to do what they did.

I’m not sure that there’s anyone I “look up” to these days, not exactly — but there are a ton of developers I respect. Many of them are my friends, though certainly not all. The list isn’t limited to the people I follow on Twitter, but that’s a good place to start.

I consider as a success any developer who sets out to write great software and then does. I don’t care about the business side any more than I absolutely have to — I care about the craft. If the craft is good, then I call it a success.

Where To Go From Here?

And that concludes our Top App Dev Interview with Brent Simmons. A huge thanks to Brent for sharing his journey with the iOS community :]

We hope you enjoyed this inspiring interview and that you take Brent’s advice to heart when it comes to becoming an indie app developer or working with a company like The Omni Group.

If you are an app developer with a hit app or game in the top 100 in the App store, we’d love to hear from you. Please drop us a line anytime.

If you have a request for any particular developer you’d like to hear from, please post your suggestion below!

Adam Rush

Adam Rush is a passionate iOS developer with over 6 years commercial experience, contracting all over the UK & Europe. He's a tech addict and #Swift enthusiast.

When he's not writing code, he enjoys watching sports, Netflix and spending time with his beautiful wife and son. You can reach him by email or on Twitter.

Other Items of Interest

Big Book SaleAll raywenderlich.com iOS 11 books on sale for a limited time!

raywenderlich.com Weekly

Sign up to receive the latest tutorials from raywenderlich.com each week, and receive a free epic-length tutorial as a bonus!

Advertise with Us!

PragmaConf 2016 Come check out Alt U

Our Books

Our Team

Video Team

... 19 total!

iOS Team

... 73 total!

Android Team

... 20 total!

Unity Team

... 11 total!

Articles Team

... 15 total!

Resident Authors Team

... 18 total!

Podcast Team

... 7 total!

Recruitment Team

... 9 total!