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

The Serious Hat

Last year:

@tiffanyarment: Me: Stop it. I'm using my serious voice. Marco: You should get a serious hat. That would be awesome.

This year, with my newfound Zazzle skills, I made it a reality:

I don’t think anyone else will find this funny enough to actually purchase one for themselves. I thought the same thing about the Useless mug, and this is far less funny and will appeal to far fewer people.

But if you really want your own Serious Hat, here it is.

Instapaper for Android

It’s now available in all three major Android stores: Google Play, Amazon Appstore for Android, and Nook Apps.

I talked a lot about the rationale behind this on the podcast this week. Here’s the short version.

I always had three reasons not to develop Instapaper for Android myself:

  1. I didn’t think there was enough of a market for paid Android phone apps.
  2. Android tablets were selling very poorly, but more than half of Instapaper’s business comes from the iPad because of its reading nature, so it seemed like working on an app mostly for a phone platform might not be worthwhile.
  3. I didn’t have time to take any effort away from the iOS app to do it myself, and I hadn’t found anyone else (who I could afford) who I’d trust to do it well.

I don’t know whether the first is still true. Time will tell how well Android phone apps really sell.

But it’s less relevant, since the second is no longer true: the Nook Color, Nook Tablet, and Kindle Fire have sold well. These 7” tablets are sold primarily as reading devices, and their tightly integrated payment systems seem to have created a viable market for paid apps.

Instapaper has had a very popular feature for the e-ink Kindles that’s used by more than 75,000 people. That was definitely worth doing. I managed to develop it myself, but only because it was easy, it has very few features (limited by the device’s capabilities), and it doesn’t require much ongoing maintenance time.

But e-ink readers are being largely replaced by 7” tablets, especially the Nook Color, Nook Tablet, and Kindle Fire. Neither Barnes & Noble nor Amazon publish sales figures, but industry estimates suggest that these products, combined, have sold over 10 million units. Even though I like e-ink readers better than 7” tablets, the industry is clearly moving away from e-ink and toward tablets. E-ink isn’t going away, but it’s being marginalized.

Simply put, Instapaper needs to be on popular reading devices. That category now includes at least three 7” Android tablets, probably with more to come. I realized last winter that I needed to address this demand, but I couldn’t do it myself.

I asked my friends at Mobelux if they were interested in developing the official Instapaper Android app under a revenue-sharing agreement instead of a traditional hourly model, which I couldn’t afford for the quality and amount of work that this would require. We discussed the risks on both sides, and we both agreed that we were willing to accept them for the potential of what could become a great new business for both of us.

Now, six months later, 1.0 is done. Mobelux made a great app, and we hope it does well.

And I can highly recommend Mobelux for other developers’ needs: I’ve known them for much longer than this project, and their work is top-notch.

Heat and fan noise from the Retina MacBook Pro

Since the Retina 15” MacBook Pro still uses high-wattage mobile CPUs and a high-powered discrete GPU, I had some concerns about heat and fan noise. I had hoped that it would use lower-wattage CPUs or drop the high-powered GPU to reduce heat and noise, but Apple didn’t do either, opting for maximum-performance components instead.

The asymmetrical fan blades are an interesting trick to attempt to address this problem in a different way: rather than reducing the cooling load, they made the fan noise more pleasant.

Jason Snell graciously indulged my extreme nerdiness and let me test the fan noise on Macworld’s review unit last night. I couldn’t monitor temperatures or RPMs, but I could hear the noise and feel the heat. The results were promising but unsurprising:

Effectively, heat and fan volume are the same as the previous model, but the fan noise has a less irritating tone. If the previous 15” MacBook Pro design was too hot or loud for your preferences, the Retina model probably will be, too.

Back to the Mac

Almost a year ago, I decided to sell my Mac Pro and MacBook Air, consolidating instead into one decked-out 15” MacBook Pro. At the time, having been annoyed by inconveniences and impracticalities of having multiple computers, I wrote:

But multi-computer usage still sucks for so many reasons, because most files, applications, and settings don’t sync. And if your laptop has a smaller capacity or lower performance than your desktop (as it probably does), it’s going to be less useful than you need, more often than you think.

It hasn’t gone as well as I would have liked. For the most part, it has worked, but with a few big drawbacks.

While it has a decent amount of CPU power, I frequently need more. And when I’m stressing the CPU, the fans speed up so much that it’s annoyingly loud. The noise becomes worse than an annoyance if it happens when I’m trying to record audio.

I already need more disk space than this laptop can hold, and with a new baby, I’m taking more pictures and videos than ever. External hard drives are slow, loud, unreliable, and ugly, and I hate the desk clutter they cause. I tried alleviating this somewhat with a Mac Mini server for archive storage and Time Machine, but it’s also slow and finicky.

The dual-GPU setup in the 15” has big drawbacks as well. When the discrete GPU is active, battery life is much worse and the laptop runs much hotter, and Lion is very bad at managing the switching: in practice, the discrete GPU is almost always active.

The discrete GPU always runs when connected to an external monitor. (Not that it does a very good job: I frequently see annoying video glitches and choppy video performance while running in dual-monitor mode.) Running in clamshell mode is impractical: the GPU runs hot and ventilation is reduced, so the fans tend to spin up faster and more frequently, and it runs hot enough that it would be unwise to run it in clamshell all the time.

But clamshell mode is exactly what I need. I hardly ever move the laptop from my desk. I even said as much when justifying this laptop last year:

I work at home now, and when I go on quick day trips, I hardly ever bring a laptop, preferring an iPhone and optional iPad instead. When I do bring my laptop somewhere, such as when traveling, I want more power and screen space than the Air offers so I can get work done. …

I need more time to form a concrete opinion, but it seems so far that this CPU’s awesome performance definitely comes at a cost of increased heat and reduced battery life. For my intended usage as a desktop most of the time, that’s an acceptable tradeoff.

What I failed to predict at the time was that this would result in the worst of both worlds. I had confined myself to the limitations of a laptop, but I really used it as a desktop the vast majority of the time. Even when I could take it away from my desk for a little while, I wouldn’t, because I didn’t want to disconnect all of the cables and rearrange all of my windows.

I went from having an awesome desktop and an awesome laptop to having one machine that served both roles poorly.

A few months ago, I decided to go back to the Mac Pro as soon as an updated model was available, and either keep the 15” for travel or trade it for an inexpensive 13” Air.

This week, the WWDC hardware updates happened, and the choice became more difficult.

The not-new Mac Pro

The Mac Pro was “updated” this week, sort of: it’s still the same two-year-old hardware, but with slightly tweaked CPU options (within the same two-year-old Xeon family) to adapt to Intel’s dwindling production of these old chips.

I was disappointed, to say the least. All indications suggest that we won’t see another new Mac Pro for over a year.

The new 15” Retina MacBook Pro

This looks like a great machine, but of all of the problems I have with my current 15”, it would only really solve one: it’s faster.

Almost nothing else would be meaningfully improved. Its single SSD that maxes out (very expensively) at 768 GB would actually make my storage problem worse. And it would be a complete waste for me to get a beautiful Retina screen only to keep it closed or ignored during the vast majority of my use.

I’d love to have a Retina-screened Mac, but not this Retina-screened Mac. I’d be better served by waiting for a Retina MacBook Air and a Retina Cinema Display.

(MacBook Air owners tempted by this Retina 15”: If you really want to buy one, make sure you’re not going to regret it when we presumably get Retina MacBook Airs within a year.)

John Siracusa is definitely making fun of me now

Neither option is ideal, but neither is my current setup, so I did something crazy.

I ordered a new-old Mac Pro.

It’s the 3.33 GHz 6-core model, which got a $700 price reduction in Monday’s “update”. It’s now “only” $3000, which sounds like a lot unless you’ve ever bought a Mac Pro with a fast CPU configuration, in which case you’ll probably recognize this as a low-midrange price.

I know first-hand that this is a very powerful machine: my wife bought this exact model for photography work when it was released two years ago. Even though this is two-year-old technology, $3000 is a decent price for this much power. I’d have to spend $3750 on a Retina MacBook Pro to get its highest CPU configuration — still slower than this Mac Pro — with a 768 GB SSD.

This new-old Mac Pro will make me very happy for the next 12–18 months until the next model comes out, and then I’ll decide what to do. If the next one sucks for some reason, I can skip it. And if it’s good enough to buy, I’ll sell this one, probably losing about $1000 on it. To me, it makes sense to buy 12–18 months of high-end computing happiness for about $1000.

Predicting the next Mac desktops

Intel’s roadmap is generally a very strong predictor of when new corresponding Macs will be released.1 But after the complete update of Apple’s laptop lineup at WWDC, the Mac Pro and iMac were untouched, despite suitable new Intel CPU families being available for both.

Then an email from Tim Cook confirmed that new Mac Pros are coming “later next year”, and Apple PR strongly implied that new iMacs were coming later this year.

Why did Apple just release new MacBook Airs, MacBook Pros, and a Retina MacBook Pro, but no new iMacs or Mac Pros? And why are the iMacs probably being updated this year while the Mac Pro update won’t happen for 12–18 months?

As usual, I have some guesses.

My core theory: Apple believes that Retina displays are the only way to go from this point forward, and they’re waiting to update each family until it can be Retina-equipped.

Now, an obvious question: why were the MacBook Airs and Pros just updated without Retina displays? My best guesses:

But the iMac has higher margins, sells in far lower quantities, and is under less competitive pressure to keep an aggressive update schedule. It’s plausible that Apple can start selling Retina iMacs in a few more months. And since the iMac is often bought for shared family use, it’s a great product to release right before the holiday shopping season.

I’m guessing, therefore, that we’ll see new iMacs with Ivy Bridge CPUs, and probably with Retina displays, in October or early November.

But the Mac Pro is very different. It’s sold separately from its display, its customers will pay whatever Apple wants to charge for it, and it can be updated whenever Apple feels like it because it’s not targeted at mainstream consumers. So why is it delayed until “later next year” despite perfectly good Xeon E5 CPUs being available today?

Interestingly, that’s probably far enough in the future to skip the Xeon E5 entirely and use Haswell Xeons. But I bet that just decides which month they get released in, not which year. UPDATE: Responders have pointed out that the Xeons usually trail the mainstream CPUs by one process generation, and since the E5 series is Sandy Bridge-based, next year’s Xeons are likely to be Ivy Bridge-based, with Haswell Xeons probably not appearing in 2013.

I bet the Mac Pro update is being held up until “later next year” because a standalone (27-inch?) Retina Display can’t be released until then, and Apple wants to release them simultaneously to capture a lot of buzz and profit in the pro market.

Why a standalone Retina Display can’t be released until then is also worth asking. My guesses help solidify the theory:

Thunderbolt is probably going to get its first speed upgrade “in late 2013”. That’s pretty convenient timing.

So I’m guessing we’ll see a new Mac Pro in late 2013 with Haswell Ivy Bridge Xeons, faster Thunderbolt, and available standalone Retina Displays.2

UPDATE 2: I’ve now heard from multiple sources that while an iMac update is indeed coming this fall, it will not have Retina displays. Oops. Can’t win ‘em all.

  1. The big exception is the Mac Mini, which Apple doesn’t update regularly or with any strong correlation to Intel’s roadmap. I don’t even try to predict Mac Mini updates. ↩︎

  2. Such Retina Displays probably couldn’t even work with Macs with the “old” Thunderbolt ports. Presumably, the other Mac models would see corresponding faster-Thunderbolt updates around the same time, probably as they’re all updated to Haswell CPUs.

    It also wouldn’t surprise me if the Haswell MacBook Airs are the first Airs to have Retina displays. ↩︎

Microsoft’s developer problem

One of the biggest problems Microsoft will face with the Windows 8 platforms is that they’re effectively starting from zero apps. What can Microsoft do to encourage developers to create great Windows 8 and Windows Phone 8 apps?

In Developers don’t rush to new platforms, I suggested that developers are heavily swayed by three factors when deciding which platforms to develop for:

Platforms that can satisfy all three will usually have very strong developer support, which is why the iPhone and iPad have had such incredible developer momentum and such amazing apps. But poor performance on one or two of these factors can make good developers stay away from a platform even if it ranks well in another factor.

It’s safe to assume that Windows 8 for PC-like hardware will have a large installed base. If the ARM-class Surface sells well, Windows RT will succeed, too.1

But will Windows 8 app development be very profitable? A large installed base alone doesn’t guarantee that. How easy will payment be for customers? How many Windows 8 PCs and tablets will have payment accounts already configured, ready to buy apps with almost no effort, from many countries? Because that, more than anything else, is why paid apps can exist reasonably profitably on iOS and why they usually suffer by comparison on Android and BlackBerry.

The even bigger problem, I think, will be the lack of dogfooding: most developers of the kind of apps Windows 8 needs don’t use Windows.

The term “developers” includes quite a lot of fairly different professions, but the kind of developers that Microsoft needs to consistently build killer Windows 8 and Windows Phone apps are generally developers who enjoy working individually, in smaller companies, or in startups, building consumer-facing apps or services.

By 2005 or so, most of those developers were working on web apps. The web was the platform for that kind of work for most of that decade.2

And during that decade, almost every such developer I knew switched to the Mac if they weren’t already there, partly because it was better for developing web apps.3

That’s one of the biggest reasons there was so much pent-up developer interest in the iPhone before the App Store opened: these consumer-product developers were all using Macs already. As the dominant consumer platform shifted from the web to apps over the last four years, most talented consumer-product developers built products for their app platform of choice during that time: the Apple ecosystem.

Many Windows developers were upset that iOS development had to be done on a Mac, but it didn’t hurt Apple: the most important developers for iOS apps were already using Macs.

But the success of Windows 8 and Windows Phone in the consumer space requires many of those consumer-product developers, now entrenched in the Apple ecosystem, to care so much about Windows development that they want to use Windows to develop for it.

How likely is that?

Anything’s possible, but that’s going to be an uphill battle.

  1. Windows Phone 8 probably won’t do much better than Windows Phone 7, unfortunately, because Microsoft hasn’t meaningfully changed any of the conditions that made WP7 fail. And they’ve burned bridges with the few WP7 adopters by having no upgrade path to WP8. ↩︎

  2. I still don’t know what to call the decade from 2000–2009. ↩︎

  3. Myself included. I was a die-hard Windows PC user (and builder) until 2004, which may surprise anyone who’s new to my site. ↩︎

The Nexus 7

I ordered a Nexus 7. This may come as a surprise, but I think it’s an interesting device.

First, I could use it to broaden my Android test-device pool, which currently contains only a relatively ancient Nexus One, a Nook Tablet, and a Kindle Fire, none of which have fast hardware or a remotely modern version of Android.1 It’s also nice for me to have a couple of Android devices for browser testing when coding Instapaper’s website and

But I also wanted to try it because I’m legitimately curious about what Google’s doing over there.

Most of my Android experience is on the Kindle Fire, which paired shitty hardware with shitty custom software to reach a bargain-basement price. The Nexus 7 seems to have combined mid-grade hardware with much better (and much newer) software for the same $200 price. It’s clearly a showcase of the best software experience and features that Google has to offer in Android today.

Finally, Android has something comparable to an iPod Touch: a non-phone device that runs a modern version of Android, contains decent (I think) hardware, and is very inexpensive with no cellular contract. What’s more interesting is that this role is being filled as a 7” tablet, not a 3.5” iPhone-like pocket device.

This will probably be the go-to device for people who want to try Android without much commitment or investment, such as iOS developers considering going cross-platform2 and geeky writers wanting to see what it’s like on the dark (or bright green) side.

I don’t expect this to replace my iPad, but I bet it will be a lot more interesting to geeks like me than the Kindle Fire.3

  1. Even though Mobelux is handling the development and support of Instapaper’s Android app, I still want to be able to use it periodically so I know what’s going on over there. ↩︎

  2. Responsible developers can’t, unfortunately, have the Nexus 7 as their only Android testing device: the vast majority of Android devices in use today are running much older software, and there’s a huge variety of hardware capabilities in the wild. ↩︎

  3. I’m sure Amazon’s releasing a new Kindle Fire soon. I don’t care, honestly. The first one was so bad that I don’t trust them to ever make a good one, especially since most of the flaws are in software. Maybe the new one will run Amazon’s shitty software faster. ↩︎

PHP Addiction

I wrote Tumblr, Instapaper, and Second Crack in PHP. I continue to use it because I know it extremely well, it’s very easy to use and deploy, and it’s nearly maintenance-free on servers. When you’re a programmer forced to also be your own sysadmin, that’s very attractive.

But I hate it. It’s limited, often clunky, outdated, and deeply flawed.

Jeff Atwood hates it far more than I do, but pragmatism forced him to consider it:

I’m starting a new open source web project with the goal of making the code as freely and easily runnable to the world as possible. Despite the serious problems with PHP, I was forced to consider it. If you want to produce free-as-in-whatever code that runs on virtually every server in the world with zero friction or configuration hassles, PHP is damn near your only option. …

The best way to fix the PHP problem at this point is to make the alternatives so outstanding that the choice of the better hammer becomes obvious.

Instapaper has too large of a codebase to make a new-language rewrite practical, so I decided a while ago that I at least wouldn’t start any new projects in PHP. But when I wanted to write Second Crack, I went right back — it was a quick little project that I only wanted to spend a couple of days on, so it didn’t justify the overhead of learning a new language.1

I’m addicted to PHP.

When I do finally break this addiction (I can stop whenever I want!), I’ve always thought that the next language choice was clear: Python, which seems to fit my style better than Ruby. But I’m really not qualified to know for sure.

Whichever language I choose to replace PHP will have its own problems that will take me years to master, but by the time I know whether I chose the “right” language, I’ll have invested far too much time in it to practically switch any meaningfully sized project to another language: exactly the situation I’m in now with PHP.

The fear of making the “wrong” choice actually makes the familiar, mastered PHP more attractive. That’s the problem Jeff’s identifying, and it’s very real. If you can get PHP programmers to agree that they need to stop using it, the first question that comes up is what to use instead, and they’re met with a barrage of difficult choices and wildly different opinions and recommendations.

The same problem plagues anyone interested in switching to Linux (Which distro? Which desktop environment? Which package manager?), and the paralysis of choice-overload usually leads people to abandon the choice and just stick with Windows or OS X. But the switching costs of choosing the “wrong” programming language for a project are much larger.

  1. Such a small-but-useful project is exactly what I should have learned a new language with, since making the “wrong” choice would have much lower stakes than, say, the start of a potentially major web app.

    But that would have turned this minor project into a much more time-consuming one at a time in my life that I couldn’t afford any more projects and distractions. I shouldn’t have written it at all, but I’m glad I did, because I really like using it. ↩︎