I have a mild curiosity with how other people accomplish their tasks. It is not so much that I am looking for ways to improve my workflow. I just enjoy seeing how two people can accomplish the same task through two completely different means. It is because of that I regularly enjoy episodes of the Mac Power Users Podcast.
Talking about complex technical topics in audio form is ridiculously hard. If you have ever tried to listen to an audio only podcast on programming, you already know this. That is why I think Mac Power Users works so well. Rather than doing audio tutorials on specific apps themselves, they have smart people on the show regularly to talk about how they are using apps in their daily lives from a birds eye view rather than a step-by-step walkthrough for completing a specific task.
The most recent episode featuring my Internet pal Merlin Mann in a marathon of productivity porn where he allows you to step inside his brain and discusses how he uses a variety of Mac and iOS apps. He may be the only person not sporting a winter beard who confesses an undying love for the OPML format, but he makes a compelling (and entertaining) argument for it. That’s why we love Merlin.
I don’t listen with full attention to shows like this because my mind has a habit of wandering pretty easily, but my ears always perk up when I hear the word Elements or my first name. It’s like throwing a bat signal out in audio form. I stop whatever I am doing and listen like a vain school girl to see what is being said about me.
My little app Elements came up quite a bit in his discussion of text editors for iOS he uses. In general, he is a fan which always boosts the nerd ego a bit. You want people to like your stuff and, more importantly, like it enough to tell their friends about it.
During his discussion of Elements and the other apps, Merlin mentioned that he has a habit of breaking these apps because of his more than 2,400 text files he tries to store in the apps and search through. In his case with Elements, search is unresponsive for him for several seconds at a time because it is searching so much data.1 Merlin goes so far as to describe himself as an “edge case” because he is trying to use these apps for something outside their typical use cases. While I agree to a point that Merlin is reaching the boundaries of the app, that is not an excuse for it to behave poorly.
Any developer worth his salt hears about issues like this and their skin starts to crawl. Software development is about dealing with those edge cases gracefully and ensuring that an app has a fairly decent experience for a person who has 24 files and someone who has 2,400. It is our job to hate our code and find every which way to break it. Whether that is tossing 10,000 text files in a text editor like Elements or subscribing to 10,000 RSS feeds in NetNewsWire, a key part of the building great apps is finding those edge cases and squashing them when you come upon them.
Resolving edge cases such as Merlin’s may not make a difference to the vast majority of users of a product, but the 2% that are reaching those current maximums are showing that they are some of your most passionate users by embracing the app with so much data. Take care of your most passionate customers and they will take care of you by continuing to emphatically recommend your product.
-
For the nerds out there, what is actually happening is Core Data is iterating through the text of every single one of those 2400 files and checking a value. Since iOS doesn’t have Spotlight search support, I have to maintain a normalized datastore of the text in each file to allow it to be searched. The solution is to push the search off to a background thread and then push the results back to the main thread. It may not speed the search up on a timed test, but it will certainly feel faster.↩
