Category Archives: Links

Stagnation Or Stability?

Michael Lopp is moving on from Things, a popular to-do management app.

That’s an understatement. The title of the post is “R.I.P. Things,” and he wastes no time explaining that he is “throwing away” the app. This sounds juicy. What could have him so riled up?

How can I trust that I’m using the state of the art in productivity systems when I’m using an application that took over two years to land sync I could easily use? What other innovations are they struggling to land in the application? Why hasn’t the artwork changed in forever? What is that smell? That smell is stagnation.

The nut of Lopp’s rationale for tossing Things to the curb is the relatively slow pace of its development over the years. Delays in delivering long-desired features, namely sync, made him conclude that the software will not evolve in ways that suit his needs moving forward. He’s not giving up on Things because of specific shortcomings, but because of anticipated shortcomings and a loss of confidence in the developers of the app.

This line of reasoning gets my hackles up in part because I’m a cautious, deliberate developer. I tend to add features, rework user interfaces, and adopt new platforms at a pace that frustrates even my most loyal customers. I’m slow, but I’m good! When Lopp attacks Cultured Code, the makers of Things, and questions their core competence, I feel that I am being attacked as well.

But what really frustrates me in this case is the software has served him perfectly, and he thanks it with a slap to the face. It’s one thing to denigrate a product for failing to meet your expectations, or for exhibiting a clear lack of craftsmanship, but Lopp admits that those problems do not apply:

Part of me has been fine with this lack of change because I don’t need my productivity system to do much more than capture a task, allow me to easily categorize and prioritize tasks, make it easy to search and filter them, and do all this work frictionlessly. “Things does these things well,” I thought to myself, “I don’t need anything else.”

He applauds the app for allowing him to do his work “frictionlessly.” How does a software developer achieve this level of performance? By first building a quality product and then working deliberately over months and years to address the minor issues that remain. Woodworking makes a reasonable analogy: after a chair has been carved and assembled the job is functionally complete. It’s a chair, you can sit in it. It’s done. But customers will gripe with good cause about its crudeness unless the hard work of detailing, sanding, and lacquering are carried out. Only then will it be considered finely crafted.

As a seasoned software manager, I know Lopp appreciates how hard it is to achieve the stability Things has provided for him. But as a user, he’s as excited as any of us to see new, fresh designs. As an onlooker, it’s easy to associate dramatic change and motion with competence, and quiet refinement with laziness. We must draw on our own experiences attempting to build great things to appreciate how much work takes place in stillness, to have faith that even though things may appear stagnant, a benefit of frictionlessness is resulting. An app at rest may be in that long, arduous phase of becoming finely crafted.

There is a time for dramatic change as well, but it comes with costs. If after years of careful refinement a product is found to be lacking in some important way, bring out the hatchets. Chop it all to bits and rebuild from scratch. The possibilities of positive change in major reworks are exhilarating as a developer, and tantalizing to customers. But every reworked component of a product also resets that process of refinement.

Software should be criticized. Even apps that consistently wow me with their intuitiveness and polish leave me scratching my head about perplexing, nuanced failures. But criticize an app for its failure to do something important, not for an unspecific failure to change in general.

I’ve whined about stagnation, too. I waited years for an update to Keynote and over time, become more and more grumpy about the lack of change. The fact that it’s just about the best application I’ve ever used slowly lost sway in my judgement of the software and, by association, the team of developers who build it.

The next time I’m tempted to think harshly of a developer working at a slower pace than I’d like, I’ll try to step back and appreciate that I care enough about their software to be concerned. And more importantly to appreciate that they care about their software too. So much that they work slowly, deliberately, painstakingly in the pursuit of a frictionless experience for myself and other users.

Mercurial Plugin For Xcode

Raphael Sebbe (@rsebbe) put together a nifty plugin for Xcode (version 4 or 5!) that coerces Xcode into substantially supporting Mercurial, in addition to its native support for Git and Subversion.

The plugin builds upon an existing script that essentially acts as a Git-facade around Mercurial. Swapping the script in for Git is sufficient to cause Xcode to think it’s dealing with Git, when in fact it’s dealing with Mercurial. Pretty clever. The plugin takes this a step further by appyling some runtime patches on Xcode to improve the handling of Mercurial repositories.

Although Raphael calls it a plugin, and it does extend Xcode, it’s important to recognize that Xcode doesn’t provide an official plugin mechanism. Not even for revision control solutions. This makes the achievement even more admirable, but should also inspire you to proceed with caution if you choose to try the plugin out.

As explained in the project documentation, the plugin is still experimental and doesn’t support all of Xcode’s Git-based features. Still, it’s a nice start, and I appreciate the spirit of rallying Mercurial fans to fill the void that Apple has left in choosing not to officially support Mercurial.

Bitsplitting With Jason Snell

Episode #10 of the Bitsplitting podcast features my friend Jason Snell of IDG and The Incomparable podcast.

Jason’s role as editor of Macworld made him familiar to me as a Mac enthusiast and indie software developer. After I acquired MarsEdit in 2007, I had the opportunity to chat a bit with Jason about his own use of the app. Over the years since then, I’ve had the fortune to meet with Jason during WWDC and occasionally when he visits the Boston area for his work.

Thanks for joining me on Bitsplitting, Jason!

Bitsplitting With Marco Arment

Episode #8 of the Bitsplitting podcast features my friend Marco Arment. We got to know each other at first on a professional level when he was the lead developer at Tumblr. When I was working on initial Tumblr support for MarsEdit, Marco helped by adding a number of enhancements to the Tumblr API.

Since then Marco has left Tumblr, founded Instapaper, sold Instapaper, founded The Magazine, and sold The Magazine. That’s among other things, and not necessarily in that order. I’ve had the good fortune of getting to know Marco better as a friend and colleague as we each pursue our indie software development, blogging, and podcasting ambitions. Thanks for joining me on the show, Marco!

Bitsplitting With Buzz Andersen

I’ve just published Episode #7 of the Bitsplitting podcast, featuring my friend Buzz Andersen. Buzz and I got to know each other online after I somewhat embarrassingly called him out for, get this, declining to participate in the Cocoa Radio interview podcast.

In the intervening years we have gotten to know each other better through our frequent run-ins at WWDC, and from, for a short while, both living the New York City area. In chatting with Buzz I learned more about his childhood growing up in Denver, the things he values in cooking and mixology, and many other nuanced aspects of Buzz’s approach to life and work. Thanks for coming on the show, Buzz!

What’s That Color?

For a long time I’ve been interested in Adobe’s Kuler, dedicated to the art and science of choosing aesthetically pleasing color combinations. Or unpleasing color combinations, if that’s your thing.

Today, Adobe released an iOS app for capturing and tinkering with color palettes. The palettes can then be automatically saved for retrieval through the Kuler web site, or shared via email or Twitter.

Playing around in my office, I pointed Kuler at the Milton Glaser “View from Greve” print on my wall (graciously gifted by Glenn Fleishman). Obviously, Mr. Glaser deserves most of the credit for choosing this color scheme, but Kuler earns some points for picking up on some of the key elements:

User interface of the Adobe Kuler iOS app.

If you don’t like the colors Kuler latches on to, you can move the camera slightly to provoke it to rejigger its choices. Or, tap the screen to freeze the camera, then move the sample points on the image to precisely the color of interest.

Another tool I’ve used in the past is Color Identifier, which has a more streamlined utility for capturing solitary colors while further attempting to give a name and HTML-style hex color string to the captured value.

UI of the Color Identifier app.

I love this class of iOS app because it follows through on the promise of using a combination of technologies to grant superpowers to users. A camera or a computer by itself is of limited value for quickly cataloging something as precise as a set of colors from the environment, but a camera and computer united by clever software, all in the palm of your hand, is an exciting tool indeed.

Bitsplitting With Amanda Wixted

The latest podcast episode is live, featuring Amanda Wixted of Zynga and Namco fame. I met Amanda several years ago at (I believe) the second C4 conference in Chicago. Since then I have had the opportunity to run into her at various conferences, and was honored to have her join me in New York for the iOS Radio Hour, along with Buzz Andersen and Marco Arment.

I was surprised to learn that Amanda grew up primarily in Europe and the Middle East, and yet she wound up attending High School in Pebble Beach, California, near my home town of Santa Cruz. I hope you enjoy learning more about her story and the path that led her to a career as a professional mobile game developer. Thanks for joining me on the show, Amanda!

Bitsplitting With Brent Simmons

Episode 5 of the Bitsplitting Podcast is up, featuring my friend Brent Simmons of NetNewsWire, MarsEdit, and Glassboard fame.

After getting to know Brent a bit online through the developer community, I finally got the chance several years ago to meet him in person at the very first C4 conference. It was only a short time after meeting that he approached me about acquiring MarsEdit. The rest, as they say, is history. I now have the pleasure of seeing Brent once or twice a year. I always have a blast chatting, laughing, and sometimes singing with him.

It was a great time talking with Brent about his upbringing in the greater Philadelphia area, his frustrated attempts to finish college, and the circuitous path that led him to starting his own software company. Thanks for joining me on the show, Brent!

Bitsplitting With Jacqui Cheng

I’ve just posted the third episode of the Bitsplitting Podcast, with my friend Jacqui Cheng from Ars Technica.

I have known Jacqui for many years, but have rarely had the opportunity to sit down and chat about sundry topics technical and otherwise. I learned a great deal about Jacqui’s background as a software engineer, her many hobbies, and the evolution of her own self image.

It’s been gratifying to finish up three episodes so far, and to be so happy with each of them. I think this is really working out well. Thank to all who are tuning in.

Why Mention Android

Facebook is apparently due to launch an Android-based phone next week. John Sherrod wonders why they bother to mention the Android brand at all (emphasis mine):

Lately the trend has been for companies to develop phones and tablets based on a heavily customized version of Android and not even mention Google’s OS in their press events. The mention of Android is particularly surprising given all the ways that Google and Facebook compete with one another.

Google has been ridiculed in the years since Android’s debut for failing to profit much from the technology, in spite of using it to stake out a modicum of control over a large segment of the mobile industry.

Let’s assume for the sake of argument that the Facebook product is a success. Let’s assume they make a ton of money off of it. What better way to rub it in a competitor’s face than to make it very clear that you succeeded not in spite of but thanks to their technology. That you succeeded with it in a way that they couldn’t?

Mentioning Android today sets the stage for a graceful postmortem, regardless. If Facebook’s phone is a flop, they can assign some blame to Android (c.f. Motorola Rokr). If it’s a huge hit: “Google, we pwned you!”

(Via Daring Fireball)