Unlocking the iPhone is bad for Apple


Unlocked iPhoneIt took much longer than we expected, but there are now at least four reported solutions for unlocking an iPhone, two of them requiring software only. (Apple and AT&T needn’t worry about techniques that demand a soldering iron.)

Several people have claimed that these hacks, though obviously bad for AT&T, are good for Apple, because Apple gets to sell more iPhones.

Wrong.

In return for exclusivity, Apple has negotiated a share of the monthly service revenue - up to 10% by some accounts. The iPhone starts at $499, and Apple’s margin on the initial sale may be 50%, or $250. Let’s assume the average iPhone bill is $100 per month (about twice the national average). 10% of $100 per month on a two-year contract is $240, and Apple’s margin on that revenue is near 100%. That would be enough to double Apple’s profit on the sale of the phone. And why stop at two years? How many years have you owned an iPod? (more…)

Conferences and Carnivals


If any of you are going to the following events leave a note in the comments …

We’ll be at Motorola’s MOTODEV summit in San Jose, September 10-11, where we hope to learn more about the Motomagx platform. The people at Motorola have asked us to point out that there are two more summits in November in Beijing and London.

mocoNews have invited me to speak at a seminar in LA on September 20 entitled iPhone & Beyond: The Content Opportunities. Tickets are now on sale.

Finally, thanks to Darla Mack and Xen Mendehlson for including pieces from Skydeck in the Carnival of the Mobilists, their roundups of the best writing on mobile in recent weeks.

Open Access is the Solution


Tracy Ford, one of the editors of trade magazine RCR Wireless, wrote an article suggesting that allowing any device to run on our wireless networks would make life harder for developers and not necessarily increase the choice of handsets for consumers. I disagreed, and RCR published my reply:

Tracy,

I saw your article on RCRNews.com (Mobile Content & Culture Aug. 14) and wanted to offer a different point of view. I founded one successful mobile developer, Vindigo, and recently started another, Skydeck. I testified to Congress in favor of open access and together with 14 other entrepreneurs wrote to Kevin Martin in support of the principle.

You made two claims: first that there are 700 models of phone for sale in the U.S. but only 200 in the U.K., so consumers have lots of choice even without open access, and second that open access may be bad for developers like Skydeck because it would increase fragmentation—the problem of having to build versions of our applications for many different phones.

The first claim—700 phones for sale in the U.S.—doesn’t pass the smell test. What store can I visit to see 700 phones? (more…)

OCaml for the recovering Java programmer, part 1: objects and subtyping


The late, great Numo the hedgehog, courtesy of loosetooth.com

It’s said that the fox knows many tricks, but the hedgehog knows one big trick. If Java is the hedgehog, with objects as its one big trick, then OCaml is the fox, with lots of different tools for structuring code. Many of the things you’d use objects for in Java have simpler, cleaner, or safer alternatives in OCaml: tuples and records for structuring data, higher order functions in place of one-method anonymous inner classes, parametric polymorphism for collections instead of pervasive downcasts (although this has improved with the introduction of Java generics), functors and signatures in place of (compile-time) parameterization of code with interfaces.

Nonetheless, sometimes you want objects—as I did recently when interfacing with some object-oriented native code—and you can get them in OCaml too (objects are of course the O). But they aren’t quite the objects that you’re used to in Java. In Java, you can put two objects with a common superclass into a single List. I tried to do that in OCaml and got a mysterious type error. It took me some time, a little research, and a little profanity, but I got my code working and learned some things. (more…)

This is Broken: August


iPhone Bill

Our monthly roundup of what’s broken in the mobile market:

The first iPhone bills arrive and they are up to 300 pages long. AT&T itemizes every kilobyte downloaded. Rumor has it that AT&T will soon fix this problem … by charging for a paper bill.

Three years after they announced interoperability, you still can’t send a picture message from a Verizon cell phone to an AT&T phone and be sure it works.

Clarins’ advanced anti-pollution complex does not protect your skin from cell phone death rays, despite using a Magnetic Defense Complex based on Thermus Thermophillus.

And finally, roaming is even more expensive when you’re dead.

Credit where credit is due: T-Mobile’s new Hotspot@Home service is getting great reviews.

More reading in this week’s Carnival of the Mobilists.

Unit test in OCaml with OUnit


It’s pretty easy to get overly confident about the correctness of your code when you program in OCaml. After all, the strict type checking eliminates whole classes of bugs at compile time; you never fight them because your code never builds with them. Even so, I still love running automated tests. The compiler can’t catch all boundary conditions and it certainly can’t verify any situation that is dynamically built at runtime.

At Skydeck, we use OUnit for our unit tests. It’s really straightforward to use because, not surprisingly, it follows the typical n-unit pattern: set-up and tear-down test cases, implement individual tests, and gather them all into suites for execution. Similar to other implementations — cppunit for example — you need to write your own test suites with OUnit. It’s repetitive work, ripe for automation and almost makes you miss reflection (but not quite). So we threw together a module to automate this and hooked it into ocamlbuild. Now adding a new test is simple: we just write new test functions and OCaml does the rest. I love being able to add tests quickly even more than I love that feeling when all the tests pass.

Below is the code that generates the test suite. If you’re using ocamlbuild and want to integrate with it, I’ve included the relevant sections from our myocamlbuild.ml too. (more…)

Nokia: Twelve Phones Per Second


Nokia N95Nokia have a long-stated goal of capturing 40% of the worldwide market for cell phones. The biggest obstacle has been the US. US carriers have tight control over their market, as I may have pointed out before, and they are not about to give the farm away to some Finnish former footwear factory. In the last quarter, Nokia sold just 4 million handsets in the US, far behind Motorola, Samsung, and LG, and down 21% year-over-year.

That makes it all the more remarkable that Nokia are very close to achieving their goal of 40% of the global market. In Q2 they hit 38%; how?

(more…)

MOTOMAGX and the RAZR2


razr2-box.JPGA few months ago I wrote about Motorola’s embrace of open platforms. Several people pointed out that Motorola had never committed to releasing SDKs for writing native Linux apps, suggesting that the company’s investment in Linux was only for the benefit of Motorola and its carrier customers.

They had been hinting at it for a long time, but yesterday at Linuxworld Motorola confirmed that they will be opening up to third-party developers. Cynics may focus on the term ’select developers’, but I think this is consistent with a phased release of a major development platform.

Motorola also announced a set of web development tools based around WebKit, which represents another step towards open standards, although in this case they’re playing catch-up to Nokia and Apple. Motorola continue their campaign against vowels: collectively, their Java, Web, and Linux development platforms are now called MOTOMAGX.

Finally, they confirmed that the Razr2 will be the first Linux-based phone from Motorola to ship in North America. (You can buy an unlocked Ming at CompUSA or Amazon.com, but no carrier sells it.)

It’s not on sale yet, but we got our hands on our first Razr2 on Monday night. We don’t normally do this, but we thought we owed it to the gadget fiends out there to post the unboxing …

(more…)

Start Hacking in OCaml in 5 Steps


hacksaw.jpgWe love OCaml at Skydeck, as Jake has written about before, and we often hear from programmers with questions and comments about it. Some love OCaml, some don’t know anything about it, but many have it on their list of languages to try yet haven’t gotten around to it. Well, it’s pretty simple to get up and running — just download, build, and start hacking!

Really, it’s that simple. If you want to get there as quickly as possible, follow these five steps:

(more…)