Archive for January 2011

Monday, January 31, 2011


Steve Hayden:

When Jobs introduced the spot at Apple’s annual sales meeting in Hawaii in October 1983, he cast IBM in the role of Big Brother. That was never our intention. The real villain was our collective fear of technology, not a corporation either real or imagined.


Ironically, Jobs had questioned the buy in the first place. He said, “I don’t know a single person who watches the Super Bowl.” Well, of course you don’t. You’re Steve Jobs.

Thursday, January 27, 2011

Frustration With Google AdWords

Patrick McKenzie:

In normal markets, I would be strongly tempted to take my business to vibrant competitive offerings. Sadly, Google is pretty much the only game in town for viable CPC advertising: even if Microsoft/Yahoo exorcized the abominations haunting their UIs, they would not have enough inventory to matter for me in my niche (I’ve tried before).

I tried Yahoo a while ago and was appalled at how little inventory they had. I think it took almost a year for them to spend whatever the minimum payment was. On the other hand, Google’s system encourages you to overpay for keywords that no one else wants.

Transmit 4.1.5 Now Half-Available

Cabel Sasser notes that Panic has been holding back Transmit 4.1.5 since January 6, because they wanted to release it simultaneously for their direct customers and in the Mac App Store. However, after three weeks in review (for a 0.0.1 update!) Transmit 4.1.5 is still not approved, so they’ve decided to half-release it. I hope that developers will, for once, not think “WWPD,” but instead ship updates right away, not to penalizing their customers for Apple’s delays. Though it’s perhaps reassuring that a top developer like Panic doesn’t seem to be getting special treatment (though some top-grossing apps have had multiple updates approved since the store opened), it’s cold comfort for those who worked through the holidays to submit before the December deadline and still haven’t heard anything from Apple.

Complete Friday Q&A

Mike Ash’s excellent series of blog posts about Cocoa and Objective-C is now available for iBooks and Kindle.

Tuesday, January 25, 2011

Instapaper’s Long Tail

Marco Arment (interviewed by Michael Lopp):

Most people assume that online readers primarily view a small number of big-name sites. Nearly everyone who guesses at Instapaper’s top-saved-domain list and its proportions is wrong.

The most-saved site is usually The New York Times, The Guardian, or another major traditional newspaper. But it’s only about 2% of all saved articles. The top 10 saved domains are only about 11% of saved articles.

Monday, January 24, 2011

The Future of Dropbox

Arash Ferdowsi:

If you give Dropbox to a user that is not technical at all, they will have lots of problem figuring it out. The reason for this is that Dropbox does not have a lot of user interface exposed on the desktop. The user needs to have a basic understanding of how their operating system works [to use Dropbox]. The fact that it is so invisible and behind the scenes is why they [non-technical users] don’t know how to use it.

Some interesting upcoming features are easier sharing and automatic file viewing and transcoding.

iPhone Mail Auto-Scrolling

Basil Safwat (via John Gruber):

If you’ve only scrolled down a little bit and you happen to get a new email, you’ll be returned to the top (which is no big deal, because you knew you were only a little bit below the top, so it’s easy to get back to where you were), but if you are deeper in your inbox, getting a new email does nothing.


Legendary Selections, Dude

Mike Lee:

When you think you’ve figured it out, try this: close the test folder and reopen it so you can start fresh with no selections at all. Then, shift-click folder 6. That should select folders 0-6. Shift-clicking folder 4 selects folders 0-4. Shift clicking folder 8 selects folders 0-8.

Now, with folders 0-8 selected, command-click folder F on and off again. Then, shift-click folder A.

Shift- and Command-clicking in Mac OS X lists is probably more complicated than you thought.


BMScript is an Objective-C class that abstracts the process of running scripts (Python, Ruby, shell, etc.) via NSTask (via Jonathan Rentzsch).

Friday, January 14, 2011

An Encoder Is Not A State Machine

Chris Adamson:

What’s most atrocious to me about VP8 is that open-source has trumped clarity, implementability, and standardization. VP8 apparently only exists as a code-base, not as a technical standard that could, at least in theory, be re-implemented by a third party.

State of Sync

Cultured Code’s Jürgen Schweizer looks at various ways they could have implemented syncing for Things. To my knowledge, Apple has never said why Sync Services is not available to third-party developers on iOS (via either MobileMe or USB). Lots of developers are either reinventing the wheel or waiting to see what Apple does.

What If Flickr Fails?

Doc Searls:

Regardless of whether or not you think the online advertising business is a bubble (which I do right now, but I’m a voice in the wilderness), we should face the fact that we are seriously exposed when we place our businesses and online lives in the hands of companies that make most of their money from advertising, and that aren’t diversifying into other businesses that aren’t based on guesswork.


Self-hosting is the future we’ll have after commercial hosting services like Flickr start to fail. Fortunately, self-hosting is what the Web was meant to support in the first place, and the architecture is still there. We’ll have our own Flickrs and Zoomrs and Picassas, either on servers at home (ISP restrictions permitting) or in a server rack at the likes of RackSpace. But somebody needs to develop the software

The problem is that Flickr is not WordPress, where you can just move your data to a different provider.

Wednesday, January 12, 2011

Time Machine Failure

Alan Snyder describes a situation in which Time Machine doesn’t back up a new file (via Jonathan Rentzsch). Clever backup systems can be faster, but it’s also harder to verify that they’re doing the right thing. Time Machine is over three years old now, deployed on probably tens of millions of Macs, and from Apple. So you’d think it would be reliable, yet most knowledgable Mac users don’t seem to trust it, and my own experience bears this out.

Monday, January 10, 2011

Intel and ARM

Horace Dediu (via Jonathan Rentzsch):

This is a quirky idea so I’ll repeat it: since the device is not good enough it has to be integrated, including the processor, which being good enough, has to be conformable. The processor has to bend to the will of the device market not vice versa.

This then puts Dr. Hauser’s point in perspective: a modular business architecture for microprocessors is a necessary condition to being successful supplying devices. The corollary is that Intel’s integrated business model is obsolete in a device world. No amount of polishing of the Atom will help.

Sunday, January 9, 2011

Mac App Store Unanswered Questions

Manton Reece:

It’s not just review times, or e-mails that go into the void, unanswered for days or weeks or ever. It’s that Apple isn’t able to communicate about the fundamental issues that will make or break businesses.

No answers before the store opened, and now developers have even more questions and Apple is still in a communication blackout. The main value of Apple’s 30% cut is access to a larger market, but it still doesn’t look good that companies such as PayPal, eSellerate, and E-junkie charge much less and provide great service. I can e-mail or call those companies and get answers right away.

Friday, January 7, 2011

C Macro Tips and Tricks

Mike Ash:

gcc provides two built-in functions which can be useful for building macros.

The first is __builtin_types_compatible_p. You pass two types to this function (__typeof__ comes in handy here) and it produces 1 if the two types are “compatible” (roughly, if they’re equal) and 0 if they aren’t.

The second is __builtin_choose_expr. This works like the C standard ?: operator, except that the predicate must be a compile-time constant, and the type of the entire __builtin_choose_expr expression is the type of whichever branch gets chosen; the two branches are not required to be similar types.

A good compilation of notes.

Unique Mac App Store Bundle IDs

Lucius Kwok:

Turns out I should have picked a new, unique Bundle Identifier. Unique in the sense that it can’t be the same as the one from the previous version of the same app. Currently it’s com.felttip.SoundStudio. Something like com.felttip.SoundStudio.mas would have fixed it. But I never thought about doing that, because then it would mean that the preferences and document associations with the old app would not carry over to the Mac App Store version.

Being that my applications aren’t yet approved for sale, I’m trying to figure out whether I made the right choice in registering separate bundle IDs for my Mac App Store builds. I thought this made sense because, even with the same version numbers, the features will be different. However, there are certainly disadvantages to unique IDs as well, and now I’m leaning the other way. It’s unfortunate that Apple has been silent on this and so many other issues.

Update (2011-01-09): Apple advised Lucius Kwok to use the same bundle ID.

Twitter for Mac’s UI Design

Tim Morgan:

I had a remarkably different experience upon opening the app. Much like with the App Store itself, the head-scratching UI left me bewildered and confused more than once.

John Gruber:

Twitter for iPhone follows this model to a tee: accounts, tweets, tweet details — arranged left to right, with animation as you move between them. In today’s new Twitter for Mac, though, the sliding animations when you switch between tabs add nothing contextually. They’re not merely harmless eye candy, either. As Morgan notes, these animations create a false sense of stacking where no stack exists. They’re technically excellent, but conceptually misleading.

I think Tweetie 2.0 (a.k.a. Twitter), though great in many respects, is a bit over the line in terms of custom user interface for the sake of looking cool. Custom UI makes sense when you have a problem that the standard controls and conventions don’t solve, but too often there doesn’t seem to be any design benefit from the deviations. I like having the title bar, toolbar, and search at the top of the window. I like being able to move the cursor without stuff fading in and out beneath it. It just seems very busy. I’d like to vote with my Dock and am tempted to use Hibari, but it doesn’t support multiple accounts yet.

Update (2011-01-09): John C. Welch comments and Tim Morgan follows up.

Update (2011-01-26): Riccardo Mori’s thoughts on the new Twitter for Mac.

Thursday, January 6, 2011

Trouble in the House of Google

Jeff Atwood:

Anecdotally, my personal search results have also been noticeably worse lately. As part of Christmas shopping for my wife, I searched for “iPhone 4 case” in Google. I had to give up completely on the first two pages of search results as utterly useless, and searched Amazon instead.

People whose opinions I respect have all been echoing the same sentiment—Google, the once essential tool, is somehow losing its edge. The spammers, scrapers, and SEO’ed-to-the-hilt content farms are winning.

Marco Arment:

Google was designed to play the role of a passive observer of the internet: web content was created for people, not specific Google queries, and Google would look around, take inventory of what was available, and give it to people who asked. Google’s general, big-picture algorithms probably haven’t changed much since the days when this was relatively accurate.

But that’s no longer what web content looks like.

I’ve been noticing these problems, too. Very specific, phrased queries used to be gold, but now they often bring up perfectly tailored spam pages.

A Better Text Find & Replace User Interface

Mark Alldritt:

This design seems to allow one to have a minimalist Find & Replace panel within an editing window while still offering a usable and discoverable range of search options to the user.

Inline Find bars work great for quick searches, but for Find and Replace I want a resizable, moveable window with large fields, large buttons with keyboard shortcuts, etc. It seems like popover-style attached windows combine the disadvantages of both approaches.

Update (2011-01-09): Andy Lee comments.

Making Too Much of TDD

Michael Feathers:

If you take a program with structure A and want to transform it to structure B, how large are the steps you have to take to get there? In a low-level language you can make many small changes to get from A to B, but as the level of the language rises, it’s often easier to rewrite some bit of code than to refractor it into a different shape. […] To me, this is granularity. When you use lower level constructs, you have more waypoints. I don’t think this is good or bad necessarily, but it does make the work different. When the grain of a language is coarse, we may have fewer steps when refactoring, but we may also have a bit more work to do to see the next step. When the grain is fine, we can often have more confidence that we are going to get to the structure we’d like to arrive at and we’re tempted to take it a little slower, with many more intermediary steps.

Monday, January 3, 2011

ATPM 17.01

The January issue of ATPM is out: