I’m : a programmer, writer, podcaster, geek, and coffee enthusiast.

Moving up the stack

From Benjamin Stein’s great post about geek-tech pioneering that you should read right now, before continuing:

In those days, it was really easy to see where consumer technology was going. You could just look at the nerds and know that’s what you’d probably look like in 2-5 years.


But then something strange happened. Lots of people switched to Apple laptops. But the nerds didn’t move on. My nerdiest programmer friends use the same computer as my wife.


So my question is, why haven’t the nerds moved on? Where are all the alpha geeks and what are they doing? I look around and I don’t see them anywhere.

It’s a great question.

Part of my own transition was what I called grown-up computing five years ago, after a year of “adult” life:

Grown-up computing is, put simply, the way I use computers and my attitude toward them now that I’m out of college and settling into the 9-to-5 world. It differs greatly from “young computing”.


The last thing I want to do is figure out why some program isn’t working or reinstall my operating system. I see these as zero-gain activities: generally, I learn nothing new, I don’t enjoy myself, I’m not being entertained or enriched, and my effort only results in maintaining the status quo.

I’d rather get a computer that didn’t require any maintenance and simply allowed me to do productive work. I’d like to have something to show for all of my clicking and typing instead of simply making information balloons go away. I’d rather write an article for this site than type my serial number again. I’d rather search the internet for interesting or entertaining information to read instead of looking for the solution to an obscure problem for which I only have a useless generic error message. I just want things to work.

It’s likely that most geeks that Ben and I know are in or near our age group, and are probably “computing adults” in a similar sense: they’d rather use computers and related technology to accomplish a goal greater than just messing around with their computers.

But what if this effect, on a larger and less age-specific scale, is the bigger trend that Ben’s seeing?

What if most geeks today really are just buying Macs instead of building their own overclocked Windows PCs from Newegg parts?

What if PC gaming really is on a decline because only a very small slice of the population is willing to pay $500 for a giant, hot, loud video card and endure the Great PC Gaming Pain-in-the-Ass Trifecta of drivers, patches, and copy protection, leaving almost every gamer to just stick with game consoles for a fraction of the cost and hassle?

And what if a big slice of even the most hardcore geeks have abandoned their netbooks for iPads because they just work so much better most of the time?

Even geeks (like us) have their limits of reasonability. At some point, we often decide that what we’ve been doing or what we think we should enjoy just isn’t worthwhile.

Ever build a carputer? (Yeah, that’s a computer in your car.) I attempted it when I was 18: it was a bunch of old PC parts inside a Dremeled-out Rubbermaid tub with a gamepad next to my parking brake to control Winamp so I could play MP3s. It was ridiculous. I had to wait until my carputer booted Windows 98 before it could play music. Even I couldn’t take this thing seriously. It lasted about 3 days until I drove over a speed bump and the CPU fell out of the slot. I scrapped it and just bought an MP3-CD player (the second one ever released) instead.

More recently, I even stopped using my geeky pfSense router when I moved to this apartment because I wanted 802.11n support and WDS, and the AirPort Extreme Base Station was just easier than trying to wedge those things into my geeky alternative. And it happens that the AirPort Extreme is actually much nicer, because it Just Works™ with new crazy things like WDS and UPnP and Xbox Live and MobileMe, and I never need to think about it.

Aging technologies fall out of favor even among geeks. Even excellent programmers avoid writing assembly code because they know that it’s almost never worth doing. Nobody’s using those Linux phones (did they ever?). PC self-builders rarely mess with Creative’s dumb sound cards anymore because every motherboard’s onboard sound has been good enough since 2001. I don’t think anyone really uses water-cooling anymore, and I bet the [H]ard|OCP Forums peaked in popularity a while ago.

We may just be past the era in which many geeks were interested in messing around with their computer’s (or phone’s) hardware or software internals.

And as many major technologies and platforms become dominant, we stop tinkering at those levels. We’re all happily using Ethernet and TCP/IP instead of trying to invent new protocols at those layers. Nobody’s writing a PC OS from scratch in this decade. Nobody’s even writing their own web search engine anymore. It wouldn’t surprise me if we’ve seen the last new social-network giant for the next decade.

What if we’re also settled on the current handful dominant OSes, mobile platforms, and hardware manufacturers?

I’d argue that, if that’s the case, we’re better off. That was an interesting time, but it’s time to move up the stack and mess around at higher levels.

xkcd: Online Communities 2

I’m so proud that, after having the prior edition hanging on the wall at Tumblr for three years, Tumblr itself has become big enough to have its own island in the map (near the northwest corner of the Sea of Opinions).

I hope that Instapaper is on the map by 2013, possibly as a ferry route across the mouth of the Bay of Flame (in the Blogosphere core region).

My great photo from Deluxe Tilt-Shift Generator ProMatic Filter Plus for iPhone.


I’m usually Tiff’s second shooter when she photographs weddings. She was shooting lineups with both big cameras when I saw this opportunity, but my iPhone filled in nicely.

An open enhancement request to the Mobile Safari team for sane bookmarklet installation or alternatives

My iOS app, Instapaper, relies on the installation of a Javascript bookmarklet to be effective, because it needs a way for users to easily send URLs from Mobile Safari to Instapaper.

Many other iOS apps have similar needs:

There are only three ways to send URLs from Mobile Safari to apps today:

Instapaper supports all three, but very few people use the first two. Customers prefer the workflow that the bookmarklet offers.

Most Instapaper customers install the bookmarklet directly in Mobile Safari. The process of doing this is extremely complex and user-hostile, and a large percentage of them abandon the process and are extremely dissatisfied with Safari, my app, and me as a result. I get emails like this almost every day:

(And this was one of the nicer ones.)

The current procedure:

  1. Send the user to a placeholder web page, with the Javascript code in a textarea. The user must Select All of the text in it and Copy it.
  2. The user must Add Bookmark for that page, then tap Done.
  3. The user must then open their Bookmarks, locate the newly created placeholder bookmark, tap Edit, and tap the bookmark (but not in the “delete” or “move” accessory areas) to select it for editing.
  4. The user must tap the Address line (which is not labeled as such when it is populated), tap the X “clear-contents” accessory, tap again in the Address line to invoke the pasteboard menu, then tap Paste.
  5. The user must tap Done to dismiss the editing sheet, then tap Done again to leave the Bookmarks editing mode, and then tap Done a third time to dismiss the Bookmarks sheet.

Needless to say, this is extremely error-prone and tedious, and even skilled users often miss a step.

Proposed solutions that make bookmarklets unnecessary

The best way to solve this problem is to eliminate the need for hacky bookmarklets entirely:

But I recognize that such a system would require major changes and is unlikely to ever be high-profile enough to be implemented in iOS. Other potential solutions would still be incredibly helpful:

In both cases, the user would be prompted by the OS and given an opportunity to decline.

These require changes to the public iOS APIs, so I recognize that they’re still less likely to be implemented than simpler fixes. So here are some alternatives that I assume are even simpler and therefore more likely to be implemented:

Proposed solutions, still using bookmarklets

Installing bookmarklets could be dramatically improved with any of these simple changes:

Again, any of these would be a huge help.

Developers: We need your help

Apple prioritizes API changes and new features in part by how many developers have filed bug reports requesting them. It’s an unofficial voting channel for SDK changes.

If any of these changes could benefit your apps, please file your own bugs asking for them. You can do that here. Copy sections of my text if you want to, or write your own.

Thank you for casting your vote for Apple to make this a priority for a future release.

Apple: Thank you

Thank you to anyone at Apple who has read this, regardless of whether you’re on the team that can implement any of these proposals.

Relevant reports so far:

Whenever I’ve brought this up in the labs at WWDC, every Apple employee recognizes how terrible the status quo is, but I still haven’t managed to campaign enough or to the right people to get it done.

I’ve been told repeatedly by Apple employees to keep filing bugs, even if they duplicate bugs that I’ve filed in the past. So I’m going to keep bringing this up and campaigning in the WWDC labs every year until it’s improved.

Thank you for your time and consideration.

It’s pretty hard to teach a kid who has been raised by the television, when he hasn’t eaten breakfast, when the family has been kicked out of their home, when he has to work a job to help feed the siblings, when the parents have just gotten divorced or lost both of their jobs, when no-one at home speaks English, or when their most alluring role models are dope dealers, pimps, or gangsta rappers. Imagine, then, trying to teach a room full of such trauma cases. […] If you want better schools, work for more stable incomes, families and neighborhoods.

Robert Freeman (via AZspot), addressing the biggest problem our modern educational system faces: not bad teachers or bad schools, but the downward spiral of poverty and the decimation of the middle class.

It’s okay to be driven a little crazy by someone who is so consistently right.

John Sculley on the frustrations of working with Steve Jobs’ perfectionism.

The new MacBook Air

The new MacBook Air was released today, and it’s a hell of an upgrade. It got much better and it’s at an extremely compelling price.

It’s a great computer, but it’s not for everyone. It’s like a two-seater car. Read on if you think it might be for you.

The Air’s limitations

I previously owned an Air as my only laptop (but not my only computer). Its size and weight made carrying and traveling with it a pleasure, but after a while, its hardware was too limiting and I had to upgrade to a 15” MacBook Pro.

What got in my way the most that’s now alleviated:

What got in my way most that’s still true with the new Air:

Noteworthy changes from the first Air

It has a few huge improvements:

And one minor downgrade:

One thing that fortunately hasn’t changed: the screen still has the original-MacBook-style plastic-glossy finish with the metal bezel, not the far more reflective glass over a black bezel as seen on the MacBook Pro.

In addition to the annoyance of the extreme reflectivity, the Pro’s glass is very heavy and requires a thicker lid. The Air can’t afford the weight or thickness, so it gets the much more reasonable (and much less reflective) plastic-glossy.

It certainly raises the question of why any Apple laptops — which can’t afford excess weight, thickness, or versatility-limiting factors like reflectivity — have glass screens at all, when most of the benefits (color, contrast) are just as effective with the much more practical plastic-glossy screen.

Maybe there’s hope of losing the glass on the next MacBook Pro.3 But I wouldn’t hold my breath.

11” or 13” Air?

The 11” looks impressively tiny, but realistically, most people are unlikely to see significant benefits in portability or practicality from the 11” over the 13”. There are very few situations in which you’d be able to comfortably carry or use the 11” but not the 13”.

The 11” screen resolution of 1366x768 is great for its size, but it’s going to be very cramped, especially vertically. Screen size is very important and noticeable in everyday use, and it’s often the limiting factor for how much work advanced users can comfortably get done on a laptop.

The 11” is also significantly slower and with less battery life, and lacks the SD-card slot, although these are less important factors.

So, tentatively (I still haven’t seen these in real life), I wouldn’t recommend the 11” for most people.

John Gruber makes an excellent point in response:

I think what he’s missing about the smaller 11.6-inch model is that it might appeal to frequent air travelers (and anyone else who works in a cramped space).

Subjectively, I used the old 13” Air on some plane rides, and the 15” MacBook Pro on some others, and they both require you to adapt a fairly uncomfortable screen angle if the person in front of you leans their seat all the way back. (As my own quiet form of social environmentalism, I never do that.)

The 11” looks like its lid is shorter by enough to be a significant benefit for this particular use. So if your primary use for the laptop is to be used in coach on airplanes, the 11” is a better bet. But in nearly all other cases, I imagine the 13” will be much more useful.

13” Air or 13” MacBook Pro?

Before today, Apple effectively offered three sensible laptop choices:

The new Air comes close to merging the low-cost and ultralight categories. But it doesn’t quite make it.

Compared to the new 13” Air, the 13” MacBook Pro is 50% heavier (more if you include the two laptops’ respective power bricks), a lot thicker on the wrist edge, a lot more expensive when equipped with an SSD of the same size, and with a much lower screen resolution behind a highly reflective, glass-only screen.

But the MacBook Pro has better battery life, a CD/DVD drive, much faster CPUs, a higher RAM ceiling, Firewire 800, Gigabit Ethernet, and options for much larger (but much slower) hard drives — and if a RAM stick or hard drive dies or needs to be upgraded, you can replace it cheaply and easily, even if it’s out of warranty.

And, critically for many, the Pro is versatile, fast, and expandable enough to be your only computer. The Air probably isn’t.

If the application you use most frequently begins with “Adobe” or costs more than $100, you probably won’t be well-served by an Air. (And you should probably skip the 13” class entirely and look at the 15” MacBook Pro with the high-resolution screen upgrade.)

So if you already have another Mac as your primary computer, especially if it’s an iMac or Mac Pro, and you want an ultralight laptop for travel, the new Air is probably a great secondary computer, as long as what you’d need it to do won’t be hindered too much by the hardware limitations.

Air or iPad?

If forced to choose between bringing an Air and an iPad on a trip, to a meeting, on a train, on a plane, or pretty much anywhere, I’d choose the Air. (Even the 11”.)

Most of what I do on computing devices either can’t be done or would take much longer on an iPad, and I’m impatient and demanding with my hardware.

If you can say the same about yourself, an iPad probably won’t replace a laptop for you.

OK, I want a 13” Air. Which configuration?

The base 13” model at $1299 is compelling.

For all configurations, I highly suggest the 4 GB built-to-order RAM option for the extra $100. You can’t upgrade the RAM later. It’s permanently mounted, like the first Air. The original Air’s 2 GB RAM limit significantly impeded its performance, and even with SSDs, you’ll notice performance issues when you hit that wall.

The highest-priced configuration, the 13” at $1599 with a 256 GB SSD, is a big jump: it’s an extra $300 for only 128 GB more storage. Notably, though, it’s the only configuration that has a 2.13 GHz CPU option (up from 1.86 GHz) for an extra $100. It seems nice to get the extra CPU power, but realistically, anyone who would notice the speed difference probably wouldn’t be well-served even by a 2.13 GHz CPU and should probably get a MacBook Pro instead.

Storage is obviously the biggest difference between the $1299 and $1599 models (if you ignore the CPU option, it’s the only difference). $300 is a lot for an extra 128 GB of space, and if you really need the space, 256 GB probably isn’t enough, either. But you probably can’t upgrade this later, either.

If the money’s less important to you, a maxed-out Air is only $1799. And if you don’t need the extra space or speed, the 13” base model with the 4 GB upgrade for $1399 is a great deal.

  1. The 15” MacBook Pro has the same screen resolution as the new 13” Air by default, 1440x900, but has a $100 option to raise it to 1680x1050. For reference, 1680x1050 is similar to many standalone 20” LCDs. ↩︎

  2. A few people have pointed out that the new Air’s storage technically isn’t an SSD: an SSD is a swappable, hard-drive-shaped bundle of fast flash memory, a (hopefully) high-performance flash controller optimized for PC hard-drive use, and a SATA controller.

    The new Air’s storage module isn’t in an enclosure and is probably not swappable, but it still needs the (hopefully) high-performance flash controller and some kind of interface — and it ends up that it’s SATA, connected via what might be an mSATA port. So I think it’s fair to call it an SSD — it’s just not in a 2.5” hard-drive case and has had its chips physically rearranged a bit.

    The part that matters the most here is the flash controller, which is what makes Intel and SandForce-based SSDs so much faster than the rest. It looks like Apple used a Toshiba controller, which isn’t likely to be a screamer, but should still beat hard disks handily. I’m hoping it’s significantly faster than the old Air’s Samsung SSDs, which were faster than hard disks most of the time but generally terrible compared to modern SandForce and Intel SSDs. ↩︎

  3. Today’s MacBook Pro has a great “anti-glare” option, but only on the 15” and 17”. For whatever it’s unscientifically worth, I have the 15”, and my kitchen scale says it weighs 5.18 lbs., whereas Apple says it’s supposed to weigh 5.6 lbs. with the glass screen.

    Ideally I’d weigh a glass 15” on my scale to compare more fairly, but I don’t have one, and I don’t yet have the balls to walk into an Apple store with my kitchen scale. ↩︎

Like the Ministry of Truth, it appears that Apple is deliberately attempting to usurp the meaning of the word Flash in the computing industry and redefine it.

Jeff Rock makes a great point

The Nook Color is ingenius.

Not because a backlit LCD screen is better for reading than e-ink — it isn’t.

And not because the Kindle’s grayscale screen is often a problem for what most people read — it isn’t.

But because anyone comparison-shopping between the Nook and the Kindle, who has never owned either, will assume that color is better and choose the Nook, putting Amazon in the unenviable position of trying to explain why their screen is better to people who probably haven’t seen one in real life.

Fortunately for Amazon, there aren’t likely to be many people who actually see both devices and comparison-shop, since there probably isn’t a lot of overlap between the two retailers’ respective customers. And those who do see both aren’t likely to appreciate the Nook Color’s $249 price over the Kindle’s $139.

To give B&N credit, though, they did solve a significant usability issue from the original Nook: on the Color, the two screen types won’t be confusingly competing for your attention and touches. (The case-strap issue persists.)

WWDC session spotlight: API Design

One of the surprisingly useful sessions from WWDC 2010 was #138: API Design for Cocoa and Cocoa Touch.

The title wasn’t a very good expression of its content. It’s more fairly (albeit verbosely) titled, “Conventions, naming styles, and structural guidelines that Apple has used for the Cocoa APIs, and how and why you should adopt them.”

Some tips included, from my notes:

Apple’s developers have made their style and API design decisions with far more time, wisdom, and experience than any individual developer is likely to have. There will always be exceptions to conventions in real-world use, but when you can more fully appreciate why those conventions are in place, you can more responsibly choose when to break from them.

This was one of the sessions that has had the most lasting value for me,1 but I attended it by chance: there was nothing else pertinent to me during that hour, so I ducked into this one, thinking it was about entirely different matter. I’m glad I did.

If you’re a registered iPhone developer, get it: go here (you’ll need to log in), follow one of those iTunes links, select the “Application Frameworks” category, and download Session 138.

  1. Besides the interface-design session, of course. But you saw that one live, right? It’s #103 in Application Frameworks. ↩︎

The new MacBook Air’s SSD performance

AnandTech calls the new MacBook Air’s SSD “Not Half Bad”:

Overall I’m pleased with Apple’s SSD selection. It could’ve been a lot better but it could’ve been a lot worse. The MacBook Airs in their default configuration have better IO performance than any other standard config Mac sold on the market today, including the Mac Pro.

This is much better than I expected.

There’s a big difference in performance between various SSDs. The worst ones can actually be slower than hard drives in some important operations, so you need to be careful when selecting one. Apple’s SSD offerings, to date, have been average (the optional SSDs in the MacBook Pro, iMac, and Mac Pro) to poor (the original MacBook Air’s SSD).

I had low hopes for the new Air’s Apple-branded, Toshiba-controlled SSD, but it’s actually pretty decent — and compared to SSDs used by Apple in the past, it’s great. It’s nowhere near an Intel or SandForce SSD (hey), but it’s still much faster than hard drives and most “bad” SSDs.

A lot of customers and tech review sites put too much emphasis on the sequential read and write speeds, but the differences in these benchmarks between various SSDs have little impact for most people. The most important benchmark for real-world SSD performance in most usage is the 4KB Random Read test:

As you can see, standard hard drives perform so poorly in this benchmark — the most common operation that most people need their hard drives to do — that it’s no wonder that SSDs feel so much faster than hard drives. It’s not even close.

Most good reviews of the new Air have published only whole-system benchmarks and declared it faster than most shipping Apple laptops. I initially thought this was unfair because the other laptops weren’t tested with SSDs, and having an SSD is really what’s responsible for most of the new Air’s performance in these tests.

But the SSD options on the others are so expensive that most people won’t get them, so if the goal was to show real-world results, and the Air is the only laptop in the lineup likely to have an SSD in the real world, I guess such tests were accurate.

The Mac App Store isn’t for today’s Mac developers

Apple’s recently announced App Store for the Mac is a Really Big Deal™, for reasons I’ll get to in a moment. But a lot of existing Mac developers have pointed out major issues or unknowns that need to be addressed:

Since almost all of these are likely to be inconvenient at best (and often dealbreakers) for current Mac developers, it’s easy to miss the likely intention and likely effects of this.

The likely intention

I’m guessing this is what Apple has in mind. If not, this is at least what I think is likely to happen:

Actually, the scale’s off.

This is the much more likely outcome:

…for a few reasons.

Apps as entertainment

In high school, my friends and I went to the movie theater almost every weekend, usually not even knowing what was playing, and decided how to spend our $5-10 when we got there. We knew it would buy us a few hours of entertainment, and we knew that most of the movies would be mediocre, a few would be horrible, and a few would be great. The predictability and low cost of these outings gave us a reliable way to be entertained on a regular basis.

One of the reasons the iOS App Store is so successful is that app-buying has become a form of casual, routine entertainment for iPhone and iPad owners. We gladly go and browse the App Store even when we don’t “need” anything at the moment, with the intention of going and spending a few bucks on whatever’s new that looks good.

This requires a few conditions to be ideal, all of which are true on the iOS App Store:

Today, on the Mac, almost none of these are true. And if the Mac App Store is only populated by a subset of today’s Mac software, a few key points (such as “Inexpensive”) still won’t be true. This is why I believe that the Mac App Store will be dominated by (and become known for) apps that don’t exist on the Mac today.

Appeal to iOS developers

Much of what made the App Store so compelling to developers will begin to apply to Mac software with the Mac App Store:

So I expect a lot of iOS developers to start making Mac apps, especially individuals and very small teams.

And these are the average selling prices I expect for non-free software:

In other words, a lot like iPad-app pricing, but shifted slightly higher. And even considering the lower prices than current Mac software, and Apple’s 30% cut, the value in exposure will overcome those for most good apps, and developers will be able to make a lot of money.

What about today’s Mac developers?

They’ll be fine.

Today’s market for Mac software isn’t going anywhere. People will continue to find (or not find) traditional apps in the traditional ways, and will continue to buy (or not buy) them in retail stores and from the vendors’ websites at about the same rates. In fact, as the Mac’s marketshare grows, this market will continue to grow with it.

But a huge new market is about to open next door. And yes, it’ll probably be dominated by Angry Birds and other inexpensive, often trivial apps. When this happens, a lot of traditional Mac developers are going to look down on it. But those with a bit of free time to develop their own inexpensive, often trivial apps might have a different viewpoint entirely when they see their sales numbers.

As both a Mac user and an iOS developer, I’m incredibly excited for the potential of this market.

Explaining that your app has to be installed differently (and why) is going to be a rather thankless task. Anyone who plans on going this route should start working on their phrasing now. I recommend not blaming Apple, but boasting about the advantages of your approach. “Hand-crafted uniques”, not “Down with Walmart”. Make customers feel good about their purchase, not bad about the world.

Part of Neven Mrgan’s response to this