Who are you, and what do you do?
I'm a software developer from Nashville. And while I still do web development occasionally, my focus (and love!) for the last seventeen years has been building products for Apple's platforms - especially macOS.
How did you get interested in that?
My father was a high school English teacher in the 1980s. And part of his job was teaching the school's typing class. Back then, the curriculum also taught students a few weeks' worth of BASIC programming lessons. So when we bought our first family computer in 1992, he showed me a few simple commands, and I immediately fell in love with programming.
I think many young people find their way into writing software through web development because there's a low barrier to entry - most of the tools are free. But since I learned how to program before residential internet took off, my only option was building simple games and programs for DOS and Windows.
And while I love using and building apps for iOS, I think that early learning experience cemented my love of desktop software more than anything else. When I bought my first Mac in college, I immediately wanted to write software for it. So I dove in, learned the platform, and never looked back - even when the iPhone came out five years later, and mobile apps started to take over the world, my love for designing and building desktop software has remained.
I like to joke that I make all my money writing iOS apps during the day to pay for my hobby of writing Mac apps at night.
What resources could you suggest to people who want to learn how to do what you do?
Specific resources are constantly changing and usually no more than a Google search away. So rather than providing a list that will be outdated soon, let me describe how I think you should learn to build software.
I find it extraordinarily difficult to learn things in the abstract; I need context and, more importantly, a reason to learn what I'm learning.
So my first suggestion is don't try learning how to write apps (or any software at all) until you have a spark of an idea of something you want to build - preferably something that solves a small problem of your own.
Once you have that idea, you'll have a reason to learn, which will motivate you to keep working through the inevitable challenges of learning any new skill.
My second suggestion is to be comfortable "not knowing" and not having a clear plan. Software development, especially when you're first learning or starting a new project, is often nothing like real engineering. You're not a carpenter building a table with precise measurements. And you're not a construction worker with the blueprints for a skyscraper. Those first steps are more like a sculptor with a new block of clay. You start by slowly molding it into a general shape, and then, over time, it gets closer and closer to its final form. You'll often find that the final product doesn't look anything like what you first had in mind.
And that's OK!
So don't start by googling "How do I build an iPhone to-do app?". Instead, identify and learn the very first step you need to take. Once done, figure out the second step, and so on. Keep building your knowledge on top of the last thing you learned. Don't look for a paved road through the forest. Just find a starting point and wander naturally. See where it takes you.
Learning happens best when you feel safe to play, experiment, and make mistakes. The computer science parts and the "real" engineering practices that our industry always seems to get so uptight about can come later.
What routines & habits help you get your work done?
I try very hard to go for a walk each day. Sometimes it's right after dropping my kids off at school before I start my workday, and other times during lunch. I leave my phone behind and walk for two or three miles - about half an hour to an hour. It's very meditative for me. It allows my mind to naturally work its way through whatever anxieties I'm currently feeling. Usually, by the halfway point, my head is clear enough to start thinking about the development tasks ahead of me. While some people have their best ideas while taking a shower, I'll often solve problems and have eureka moments while walking and thinking about something unrelated.
My seventh-grade Geography teacher taught me that you have to take notes twice. The first time, during a lecture, you frantically write down all the information coming at you. You don't have time to think. And then, later, you review your messy on-the-fly notes and rewrite them for clarity into some structured form.
I still apply that methodology to my work as an adult. I jot down notes and thoughts haphazardly throughout the workday and during meetings. I type on my Mac, thumb-tap into my iPhone, dictate a quick idea with my Apple Watch, or handwrite a note onto the small pad of paper I keep in my backpack. I collect ideas, reminders, and notes constantly all day long. But at the end of the day, or the next day before work begins, I'll review and process everything I previously wrote down into a final resting place. I may never actually refer to these notes again, but the simple habit of rewriting them a second time forces me to digest the ideas and make connections I probably would have missed.
Programmers often talk about getting into a flow state where you're hyper-focused on the task at hand. It's when you do your best work. And as I've gotten older, I've noticed that the time of day when I'm most likely to reach that level of focus changes. It used to be late at night, but more often, it's now in the morning. Regardless of the time of day, what's consistent is that you can't force yourself into that state of mind. It happens, or it doesn't. There are days, and sometimes weeks, where I slog through work, uninspired.
The insight I finally had about ten years ago was to give myself a bit of grace. Sometimes you'll have an unproductive day and accomplish nothing, and you must learn to be OK with that and permit yourself to be bad at your job. It happens. Rather than fight against it, take the crappy days in stride and have confidence that the spark and excitement that made you choose this career, and made you good at your job, will come back.
Your apps are elegant and simple in that they do their respective jobs well. I think a lot of people have a problem with trying to put all their ideas into a single app and delaying shipping it. When do you figure that enough is enough and it's time to ship? (I imagine you're going through this now, with Iris?)
The short answer: Practice.
The long answer: After working on many of my own apps (some successful, many failures, many more never released) and projects for other companies, I've developed an intuition for when enough is enough.
But more helpful is I've failed so many times (often in public) that I've learned to stop being afraid of failing. If you're OK with getting things wrong, that reduces the need to be a perfectionist who never finishes anything. I can't remember who said this, but there was a quote along the lines of "If you're not embarrassed by your version 1.0, then you're waiting too long to ship."
It's funny that you bring up Iris in the context of this question because I really should take my own advice. Most of my apps are very narrow in focus, so there's a usually clear minimal bar of functionality to meet that I can identify.
But I've described Iris as my "white whale." I've been thinking about this app for over ten years and actively working on it for three. It's the most personal app I've ever built, and I hope to continue working on it for a long time. I have a clearly defined minimal set of features I want to ship with. But it's a very long list, and I feel like I only have one chance to get them right - to make a first impression. Each time I think I have three months of work left, it turns into six more.
You asked, "When do you figure that enough is enough and it's time to ship?" With Iris, I struggle to answer that question every day. Despite my advice above and experience with other apps, I'll gladly admit that I'm stuck at the moment.
I love the app icons, especially for Fastmarks & Ears. What are the qualities of a good app icon?
I think a good app icon should pass two tests.
- If you squint and blur your vision, the icon should be recognizable by color alone.
- Removing color entirely and making a black-and-white outline of the icon's shape should also be recognizable.
I hate so much, that Apple brought the icon design language from iOS over to the Mac. App icons used to be a playground of creativity and whimsy with unique personalities. But now my Dock is a bland mess of round rectangles that are difficult to scan and identify at a glance.
You're slowly encroaching on 500,000 words over 16 years. Why do you blog?
Honestly, after sixteen years, I'm embarrassed it's not many more words than that.
It was a running joke among my family that when my grandmother gave someone a present (birthday, Christmas, etc.) she would preface the gift with a long, drawn-out story about where she found it and why she thought it would be a good gift. You'd hold an unopened box in your hands for ten minutes, waiting for her to finish talking about the present you hadn't yet opened.
I say all that to let you know that I inherited her tendency to be a storyteller. My favorite blog posts are the ones where I meander for a thousand words or more before revealing my point. There can be joy in getting lost in a story instead of rushing to a conclusion.
Those are the types of articles I enjoy writing the most. But other times, blogging is more pragmatic. As a programmer, I've written many posts in the style of "Here is Problem X, and Here is Solution Y" to help anyone else encountering a similar problem.
What do you enjoy about developing macOS and iOS apps?
I love the freedom and expansiveness of developing for macOS. Apple keeps trying to lock down the Mac to be a more controlled environment like iOS, but for now, there's so much more you can do on a Mac - as both a developer and as a user - than you can on iOS. The creativity and possibilities available to you can be intoxicating.
On the other hand, iOS enforces many more constraints. Not just in regards to what Apple allows you to do but also by virtue of the smaller screen sizes and different interaction patterns. Users spend much less time using your app on iOS versus macOS. Paradoxically, all those constraints force you to be more creative. It makes you reconsider how to design and build software.
What can Apple do to make either the development or business side of things easier for devs?
The App Store is not a safe and trusted storefront like Apple claims. It's overrun by scams and casino games for children. If they dared to ween themselves off the 30% cut they take from each in-app purchase, they should reimagine the purpose of the App Store from the ground up.
Instead of maintaining their monopoly on app distribution, they should focus on curating and selling the very few, best apps from each category and use case. They should treat their digital shelf space with the same level of quality and scarcity as their physical retail shelf space.
As things are today, since they are the only way to distribute apps on iOS, Apple is forced to allow any app onto the App Store. And App Review has proven they're not up to the task of safely vetting each app or applying guidelines consistently.
The current App Review process does not scale to the volume of submissions they receive. It's an impossible problem to solve with human curation despite their claims. They need to pivot and instead sell only the best of the best, kick everything else out of the store, and allow alternative means of distribution for apps that don't make the cut.
Adding a way to bypass the App Store would allow third-party developers to iterate more quickly and take more considerable risks with the type of apps they build. It would encourage a new wave of innovation we've missed out on because Apple has taught other companies and developers to be risk-averse regarding the App Store and app review process.
I enjoyed the "A Pirate Looks (Nearly) at Forty" post, though unfortunately, I think the media space has only fragmented further since then. I notice you mentioned Plex on your Now page (talking about your most listened to albums). How do you manage your media?
I have an M1 Mac mini on a shelf in my home office, running Plex, Roon, and Iris. It's connected to 24TB of external storage with our family's movie, TV show, music, and photo libraries.
Movies and TV shows are exclusively managed with Plex and streamed to all our devices - inside and outside our home.
The music goes through Plex, Roon, and the Sonos app, depending on the situation.
Photos are served through Iris to other copies of Iris :-)
How do you relax or take a break?
I'm sad it took me 40 years to figure this out, but over the last 18 months, I finally discovered the benefits and joy of regular exercise. In addition to being forty pounds lighter, I now have an outlet I can turn to when I'm stressed, sad, angry, or just need to shut off my brain for a while.
I also watch a lot of baseball and try to listen to two or three new albums each week. Oh! And I recently bought a Steam Deck to take my collection of Super Nintendo and N64 games on the go.
Whose work inspires or motivates you, or that you admire?
I can't sing or play music. But when you hear a really intricate piece of music, especially a live performance, and witness an artist who has mastered their craft - it's awe-inspiring. And, for me, the high of coming away from seeing someone else so good at what they do can help me recommit to being better at my work. It's the very definition of inspiring.
As for specific people, I'm currently obsessed with listening to Billy Strings play guitar. Pamela Adlon's TV show "Better Things" is hysterically funny and grounded in a way that hits me in all the right places as a parent. I frequently turn to John Prine's lyrics and Kurt Vonnegut's books when I need advice. And I hope to make a Mac app as good as Flexibit's Fantastical one day.