Monthly Archives: March 2013

Searchpath invoices and automation

Here’s a great post from Derek Sivers on not automating everything. Instead, sometimes it’s better to just hire a real person to do some extra work:

“It’s fun for techies to try to find the tech solution to everything, but don’t forget that even a tiny touch from a real person can be the best algorithm, and a massive business maximizer.”

I hit a brick wall related to this with Searchpath. I launched a little early, and hadn’t yet finished the invoicing system so that customers automatically got an email receipt for each charge. Then life and other work got in the way, and weeks later I still hadn’t shipped it. I wanted it to be completely perfect and automated, so that I never had to think about it.

But I did think about it. I thought about what would happen if I sent a receipt with the wrong dollar amount, or the wrong product name, or the wrong wording so that customers got confused enough to cancel their subscription.

So I built half a system first. I’m manually clicking a button to send out receipts, and in the process reviewing them to make sure that customers are being invoiced correctly. It won’t scale much longer — in fact, many receipts were already sent late — but for now it gets the ball moving forward again, and brings some confidence to finish the missing pieces.

Hotline servers

Benj Edwards writes a Hotline retrospective for Macworld:

“The Hotline system consists of three parts: servers, clients, and trackers. Anyone with an Internet connection can host a Hotline server for free; it’s software that provides for multi-user chat, message boards, and file transfers. Clients are special programs users run to connect to Hotline servers. And trackers are special servers that exist to facilitate connections between clients and servers; they keep an active list of available Hotline servers that wish to be listed on the tracker.”

I remember Hotline. I was building web sites by then, but it still had obvious appeal reminiscent of the earlier BBS and AOL/eWorld days. This article from Macworld is important because it will serve as a sort of Hotline software “about page” for future internet searchers. For many apps that were popular in the 1990s, it’s now very difficult to find an online record that they even existed.

Register a domain name

I like this idea from Dan Gillmor, encouraging each of his students to register a domain name:

“Of course, the students and most of their parents have a presence on Facebook, LinkedIn, Twitter, Google+, Tumblr, Flickr and all sorts of other places. The value of conversation and sharing in general is enormous, and these services offer great convenience. But to cede our online presences – in a way, our very identities – to these entities strikes me as a mistake.”

Using Facebook or Twitter or LinkedIn exclusively for your content is like an artist who picks their own colors but still stays within the lines of a paint-by-numbers kit. A domain name is your own canvas. The simple act of saying “I own this” makes all the difference for the scope of what you can create.

Climber for ADN

Toward the end of this week’s Core Intuition, we talked a little about the App.net file storage API and mentioned the new iPhone app Climber. The developer, Rob Brambley, [has posted a nice write-up](http://blog.alwaysallthetime.com/climber-from-hackathon-to-app-store-submission-in-two-weeks

) of how the app was built and shipped in less than a month:

“All Climber posts are more or less like any other post to App.net, but with a link to our website where the video can be watched. Our video pages simply rely on App.net post data to retrieve links to video files contained in personal App.net file storage. If a user chooses to delete their App.net post, or even just delete the video file in their file storage, then it can no longer be viewed on our website.”

This separation between the app and the hosting is a great advantage over services like Vine or Instagram. If the Climber app goes away or their web site is down, the videos are just .mp4 files on App.net. You can download them to your computer with any App.net file browsing client.

There’s a lot of activity around App.net file storage right now. I think we’re going to see some great things built with this.

iCloud sync narrative

Rich Siegel joins the discussion of iCloud syncing problems, adding the most technically comprehensive essay I’ve seen yet:

“Corrupted baselines are another common obstacle. While attempting to deploy iCloud sync on Mac OS X 10.7, we ran into a situation in which the baseline (a reference copy of the synchronization data) would become corrupted in various easily encountered situations. There is no recovery from a corrupted baseline, short of digging in to the innards of your local iCloud storage and scraping everything out, and there is no visible indication that corruption has occurred — syncing simply stops.”

I learned a lot by reading this. Also check out the post from Brent Simmons on why controlling your own web services is so important.

Pretty sure we hit a tipping point in the iCloud just doesn’t work narrative this week. Whether that judgement is fair or not, Apple should drop everything to focus on making iCloud totally robust in time for WWDC. (And I say that even though I use neither Core Data nor iCloud, and probably never will.)

iOS text cursor swipe

While I was writing my review of ADN clients, I wondered aloud if Riposte or Felix or some other app entirely was the first to support swiping to move the text cursor. It seems a nice enough trick that someone should get credit for trying it first.

Here’s my brief description of how this gesture works from the Felix part of the blog post:

“Felix also added a clever trick in its post composition window. You can swipe the text view to move the selection cursor one character over, or use two fingers to swipe across an entire word at a time. This saves a lot of time tapping-and-holding and fiddling with the magnifying glass.”

It turns out that many apps support it: Diet Coda, Pages, Just Type, and TextCrafter are some that people mentioned. There are also hacks from the jailbreak community to make it work system wide.

And farther back, there’s the fantastic YouTube concept video of what text selection using drags on the keyboard might look like. I’d still love to see that implemented by Apple.

Apple and the impression of being small

Jonathan “Wolf” Rentzsch at the C4 conference in 2007 defined indie as simply “non-large”. This covers not just the small, one- and two-person companies, but also the bigger software development shops like Realmac, Smile, Panic, and Omni that have 10-40 employees but still feel independent. They’re all part of the community. Panic may have a bunch of employees now but it appears from the outside like it’s not that much more complex of a company than if Cabel Sasser, Steven Frank, and their friends were building great apps out of someone’s apartment.

Small is personable, nimble, and bright. Small makes customers feel like a company is not that different than the rest of us.

One of the magic tricks that Apple has pulled off is somehow maintaining a similar feel even as they have grown to be the world’s largest tech company. They’re bigger in revenue than Microsoft, Google, Oracle, and a dozen other software companies that have a much more obvious over-sized, bureaucratic feel. But you walk into an Apple Store to chat with an employee at the Genius Bar, or browse apple.com looking for a product, and it’s almost as if nothing has changed in the last decade. The complexity of the supply chain, of too many products, of layers of management — it’s all hidden.

Why aren’t Apple employees allowed to blog? Part of it is secrecy, sure. But too many voices also creates noise, and noise makes simple things messy, confusing. Apple still gives the impression of being smaller than they really are because our view of them is heavily filtered. What we see is the beautiful tip of a massive iceberg.

And maybe that’s why pundits keep waiting for Apple to fail. Because the company doesn’t look that different, the doubters just can’t comprehend how big and unstoppable Apple has become under the surface.

Little Outliner

Yesterday Dave Winer and Kyle Shank launched Little Outliner, an impressive JavaScript outliner that uses HTML5 local storage. It’s also completely hosted on S3:

“Thanks to the W3C and to Werner Vogels (for persisting in getting the ability to access the root of a domain from an S3 bucket). As a result, we get unlimited scaling with zero investment. Consider this an endorsement for both innovations.”

I used Frontier a lot back in the earlier days of the web, so I’m always looking out for what Dave does next. It’ll be fun to see what they build on top of this.

Three ADN clients for iPhone

Lots of new people are joining App.net. If you’re one of them, welcome! In this post I’m going to briefly review 3 of the most popular iPhone clients: Netbot, Felix, and Riposte. You can’t really go wrong with any of these three apps. And if you’re looking for a Mac client, my current favorite is Kiwi.

Netbot

Netbot is nearly identical to Tweetbot. It shares most of the same source and all of the same UI design. That common heritage is great because it’s familiar to fans of Tweetbot, and it allowed Tapbots to launch onto App.net in a big way, leapfrogging all other clients that were under development at that time.

But the familiar design is a double-edged sword. Not just because the App.net API will evolve and diverge from the Twitter API, but because if you switch between both Tweetbot and Netbot often, you may need to be careful that you remember which app you’re posting from. This was a problem for me since I no longer post to Twitter, and the last thing I wanted to do was accidentally leave a new post there after a 5-month absence.

All the usual features you’d expect are present in Netbot: timeline, mentions, private messages, multiple accounts, and sync with Stream Marker. It even has an iPad version, which you may want to pick up even if you chose a different primary app on the iPhone.

Netbot also has one big feature that most App.net clients don’t have: post search. This is not part of the core App.net API. Tapbots rolled their own search server so that they could offer this feature inside the app.

Sidenote plug: if you want search for all the posts from anyone you’re following, and your own posts, consider my web app Watermark. You can subscribe on the web or in the iPhone version.

Felix

Felix is possibly the most mature and actively maintained of the App.net-exclusive apps. You can tell from his App.net posts that the developer is passionate about App.net and determined to keep making his app better.

The current version supports all the basic features as well as push notifications, narrow inline image previews that take the full width of the screen, iCloud sync for drafts, starred conversations, and a brand new feature in version 1.5: collapsing posts you don’t want to see, similar to Twitterrific 5’s muffling. The only omission is that it does not yet support multiple accounts.

Felix is also unique in that it is the only one of these 3 apps that is not free. The other apps are counting on the Developer Incentive Program to send them a check each month instead of relying on traditional sales. Felix is a good value at $5, though, and the price shouldn’t stop you from trying it out, especially as it is a very small amount compared to the paid App.net subscription itself.

There are a number of gestures in Felix. One interesting shortcut — which may also be familiar to users of Twitterrific 5 — is swipe right to quickly start a reply. I personally found that this breaks the illusion of gestures as direct manipulation, though. Since swiping to the left pulls forward the conversation, doing the reverse swipe should go back to the timeline. (Update: There’s actually a setting in Felix to switch this behavior.)

Felix also added a clever trick in its post composition window. You can swipe the text view to move the selection cursor one character over, or use two fingers to swipe across an entire word at a time. This saves a lot of time tapping-and-holding and fiddling with the magnifying glass. Felix is packed with little details and shortcuts like this.

Riposte

Riposte is beautifully done, with a clear design and a simple left/right gesture system to navigate through anything in the app. By default, there is no toolbar or tabs; everything is full-screen. Following Netbot’s lead, the developers of Riposte have decided to make their app free, and they have written up some thoughts on why.

Multiple accounts are handled well and it’s easy to switch between them. Like Felix and Netbot, push notifications are supported. Riposte uses large square inline images. It’s got a great interactions view that shows users who have recently followed you or starred your posts.

Riposte mirrors Felix’s compose text view gestures, and Riposte was the first to introduce 2-finger swipes in that text view. I love that both apps now support these gestures about equally, and hope to see many more apps steal this feature soon.

Since it doesn’t have tabs, switching between timeline, mentions, global stream, and other views is done through a slide-out panel, popularized in early apps like Facebook, Path, and Sparrow, and now very common everywhere, including my own Twitter app Tweet Library. It’s a swipe and a tap instead of the single tap of Netbot or Felix, but it is space-efficient and fits the flow of gestures in Riposte.

While Riposte holds its own against the competition, I think it will be chosen most not for its features but for its design. The striking full-screen look and consistent, discoverable gestures make this app feel great. It also has probably the most readable conversation view of any app I’ve used, where the focused post appears immediately and then is surrounded with the full conversation using smaller text. That design is even maintained in HTML email when sending a conversation from the app.

Start small

xkcd

Every once in a while, I’ll think about this xkcd comic strip. It’s a reminder to me that great things can start small, unambitious. I never would’ve guessed that a web comic artist starting so plainly would later produce a single strip that’s so incredible.

Maybe we should all find our app’s version of stick figures, good jokes, and consistency. Then work long enough and hard enough and suddenly a couple years later, it feels within reach to build something amazing, something beautiful. Something big.

No new Apple products yet

Don McAllister is worried that Apple hasn’t announced anything new this year:

“I don’t know about you, but I’m starting to get a bit twitchy about the lack of product announcements from Apple. […] It’s usually quiet after Christmas, but by this time last year we’d already had the iPad 3 launch and the announcement of Mountain Lion.”

A few replies on App.net to Don’s post also caught my eye. Simon Wolf said:

“As a developer, a bit of breathing space between iOS and OS X versions is actually rather nice.”

Like many folks, I have a mountain of work to do and I always seem perpetually behind schedule. Apple’s aggressive releases add even more anxiety about updating apps to keep up with the latest APIs and hardware. I would be perfectly happy with Mac OS X and iOS releases on alternating years, and new hardware either when it’s ready or at predictable event dates like WWDC.

Moving off SendGrid

I’m not going to comment specifically on the substance of the SendGrid and PlayHaven mess because it’s complicated and completely out of hand already. It’s a pretty sad situation for everyone.

But as it turns out, I am a SendGrid customer. I use the free plan to send email in a few of my web apps. I started using SendGrid because they offered it as a simple Heroku add-on, not because of any particular research or opinion about what they were doing well.

So it’s a good time to move away, to a company that I can pick based on merits and attitude and not just because it was the default choice. I’ve long been a Beanstalk customer; I use it for all my private Subversion and Git repositories. The makers of Beanstalk, Wildbit, have a second product similar to SendGrid that looks like what I need: Postmark.

Wildbit also had a good blog post yesterday from some of the aftermath of the controversy as it relates to SendGrid (and Postmark) competitors:

“We’ve been doing this a long time, 13 years as a company, 8 years since launching our first product. There’s this rule, this gentleman’s agreement I thought existed. When someone you compete against is suffering, especially as a result of any kind of infrastructure issues, shut up and keep your head down. You do not use this situation to gain a few customers eager to jump ship.”

I like what I see in Postmark. I’ve set up an account and should have my apps switched over to Postmark this weekend.

Smartphone religion

Stephen Hackett of 512 Pixels, commenting on a Wired essay by Mat Honan:

“Maybe it’s just the headache I’ve had since the Samsung Galaxy 4 event or the fact that Apple’s turning up the heat, but I find the increasingly defensive views held in the technology community increasingly offensive.”

I got into the Mac in the 1990s during the lead-up to Apple’s certain doom, so I spent quite a lot of time arguing with Windows users. The problem with the new version of that debate, Apple vs. Samsung and the smartphone wars, is that I’m not sure it’s ever going to end. There are good phones on either side, the pundits can’t wait for Apple to fail but Apple is strong, and there’s no hope to escape the noise for those of us who just want to build some apps.

App Store old app maintenance

David Smith on cleaning up the App Store:

“The App Store currently has around 800k active apps listed. I suspect a significant number of these haven’t been updated in more than 12 months. An app that is listed for sale but is no longer under active development creates the possibility for bad user experience. It is like a grocery store that leaves expired produce on its shelves.”

He makes a good argument for removing old apps from the store, but I’d probably hesitate going all the way to actively take them out. There is certainly too much clutter in the App Store — too many apps that aren’t providing much value, some with little chance of an update. But I also dislike the already fragile state of App Store inventory. iOS apps require much more active maintenance than traditional, direct download Mac apps, which can be hosted anywhere and stay available without constant attention from the developer.

At one point on episode 14 of The New Disruptors podcast, Glenn Fleishman talked with John Gruber about apps as a unique art form unlike paintings or novels or even film because apps are never done. John Gruber from that show, talking about software:

“To me it is an art form. But it is the one thing that is continuously diddled with. You write a novel and it’s done, it’s out there. Once it’s published, it’s published. You make a movie, it’s done. George Lucas gets a lot of flak because he keeps revisiting his old Star Wars movies and making a change here and there, but it’s not like every year he comes out with a new version of Star Wars. […] But software — an app that has a vibrant and still-growing user base — it’s the same thing, constantly being iterated. It’s the only art form that is like that.”

There are always bugs, always missing features, and always (as is David’s point above) new hardware to adapt to. It’s an art form that won’t stay still, so maybe there is an inherent impermanence to it.

But if apps are an art form, an important part of our culture, then it shouldn’t require so much work to make sure they don’t disappear forever, so quickly. This happened to me just this week, actually. I forgot to renew my iOS developer program account and my apps were automatically removed from sale for a few hours while I scrambled to pay my $99 again.

Maybe there’s a compromise solution in here somewhere. Instead of being removed from sale, abandoned apps could switch to an archived state. They would no longer show up in top lists or even search, but could still be found with a direct link. With the right kind of fallback like that, Apple could be even more aggressive about gearing the App Store user experience around new apps and modern devices, without sacrificing what is good about the long tail of old apps.

Twitter API v1.1

My apps Watermark and Tweet Marker were recently updated to version 1.1 of Twitter’s API. I’ve also finished the coding changes in Tweet Library to support 1.1, but it has not yet been submitted to Apple. I expect it to be another week while I wrap up a new feature included in the update.

I don’t like having my release schedule dictated by others, but that’s life as a Twitter developer. And why I no longer post there.

This matters today because Twitter is running an API blackout test. Tweet Library will not be able to load new tweets this afternoon for about an hour (3pm PST) while v1 is unavailable. I’ll post again here and from @riverfold on App.net when the new version of Tweet Library is shipped off to Apple and live in the App Store.

Kevin Lynch at Apple

John Gruber has a series of posts questioning Apple’s judgement in hiring Kevin Lynch. This one best sums it up:

“I get that the guy worked for Adobe and had to play for the home team, but as CTO he backed a dying technology for years too long. In 2007 when the iPhone shipped Flash-free, that was one thing. But for Adobe to still be backing the Flash horse in 2010 when the iPad came out — they just looked silly.”

All of that is true. But instead of reflecting poor judgement, I think Kevin Lynch joining Apple could be good news in what it says about Apple. They didn’t hire him blindly. Apple knows what Kevin has been working on, knows what he’s said in public, and at this moment probably knows much better than we do what it was like to be at Adobe those last few years. For all we know Apple cares more about his work on Creative Cloud than Flash.

Kevin also has a rich history that is closely tied with the Mac. He worked as a developer on FrameMaker. He worked at General Magic alongside old-school Apple engineers. He worked at Macromedia when they started building web tools.

I heard him speak much later at SXSW in 2002, for a joint presentation he gave with Jeffrey Veen. At the time I disagreed with Kevin’s vision for Flash and the web, but the SXSW talk was interesting enough that I referenced it afterwards and again later. Kevin was so good that he somehow demonstrated he got the web even as he pitched a product that was increasingly at odds with it.

Was he wrong about Flash? Yes. But I choose to view his move to Apple as an indication that he was at the wrong company more than that he was completely wrong-headed. Maybe it was time for something new, a course correction back to the earlier part of his career. Skepticism about this hire is fine, but to treat him as an outsider is to forget the other great things he’s worked on. Once you’ve built Mac software, no matter how long ago, you’ll always be one of us.

I hope Apple sees it that way too. Because if Apple is confident of anything, it’s that they can’t get stuck in one old way of thinking, can’t discount good people because of one unforgivable bad idea. That Apple is able to brush aside the Flash debate as yesterday’s news — even accept as a VP someone who was at the heart of that debate, and on the wrong side — shows to me that they’re only looking forward.

Replacements for Google Reader

With the success of Tweet Marker, several people suggested I should build a sync server for RSS. This was last year and earlier this year, before Google Reader officially shut down, but after it was clear that we needed something better. I jotted down some notes for a couple ideas but ultimately decided not to do it. I’ve already got my hands full with my current shipping products!

Luckily many great developers are now on this. Feed Wrangler from David Smith, hopes for a possible NetNewsWire Cloud, more interest in Fever, and other established web apps like NewsBlur and Feedly. As Marco Arment said, this could end up being a great thing for innovation in blogs and RSS again.

But just because I’m going to watch on the sidelines for the server sync part of RSS, doesn’t mean I’m going to completely skip building better RSS support into my own products. There’s a lot I’d like to do with client-side RSS support in Watermark.

Bitsplitting podcast

My friend Daniel Jalkut has launched his new podcast, Bitsplitting. The first episode is an interview with Guy English, and future episodes will follow a similar interview format with other developers and tech folks. I especially love that it’s an interview show because Daniel and I were never able to coordinate having regular guests on Core Intuition. I think it makes a great complement to our show or one of your other favorite podcasts.

And it’s a great time for developer podcasts! Some of my other recent favorites include Debug, Identical Cousins, and the new show from Marco Arment, Casey Liss, and John Siracusa, Accidental Tech Podcast. Plus old favorites like Developing Perspective, NSBrief, iDeveloper Live, The Talk Show, and another half dozen I subscribe to.

I talked to a few people at NSConference last week who couldn’t get podcasts worked into their routine. If that’s you, consider that you may actually be missing out on some great content now. Even if you don’t have a commute to listen during, try picking up the earbuds next time you go for a walk or work outside or do the dishes or whatever else away from the computer. Those are the perfect times to listen to a good show, and Daniel’s is a great one to start with.

Pricing changes and Watermark Mobile 1.1

I tend to be pretty stubborn about not changing my price. Tweet Library sat at $10 for two years before I finally lowered it, and the price for Clipstart has never changed from the $29 it shipped at. I think there is something to be said for price consistency so that users feel like software is stable and doesn’t have arbitrary value. (Many people disagree with this, which is why I’d classify my opinion as equal parts instinct and stubbornness rather than a proven formula for success.)

But I’m making two pricing changes today: Tweet Library goes up to $7.99, and Watermark down to just $4/month. I’ve come to believe that the previous price changes for both products were too far in either direction. I hope this corrects that. In the case of Watermark, I will eventually be offering different plans at higher tiers for more storage, and want the entry-level price to be as appealing as possible. (All existing Watermark customers have been switched to the discounted plan.)

The little iOS app for Watermark has also been updated to version 1.1 and now features auto-renewing subscriptions. This means you can sign up directly in the iOS app and have your iTunes account charged each month. Watermark Mobile launched mostly as a convenient search interface, but it should now start receiving more regular updates.

For another recent discussion about pricing, check out part 3 of Kevin Hoctor’s excellent write-up of talks from NSConference.