Thursday, October 2, 2014

iPhone 6: Pay less with a little-known T-Mobile plan

TL;DR: If you have the cash to buy an unlocked iPhone 6 upfront, don’t mind running on the T-Mobile network, and mostly care about data as opposed to voice, you can save well over $500 over a period of two years compared to mainstream plans by AT&T, Verizon or even T-Mobile’s flagship plans.

NOTE: The following post is specific to the US smartphone market.

Over the last 2 years I have been on an AT&T business plan [1] which was not a bad deal by US standards:

  • Upfront cost for the iPhone 5: $363.74 [2]
  • Monthly cost: $74 ($69.99 plus taxes, fees and phone subsidy)
  • Monthly data: 3 GB
  • Contract duration: 2 years

I usually stayed under the included 3 GB, but occasionally went over and had to pay an extra $10 for an additional 1 GB. I made very limited use of voice and text.

As I wanted to get a new iPhone 6 Plus, I considered my options. With that same AT&T business plan, here is what the cost would have been for the next 2 years:

  • Upfront cost for the iPhone 6 Plus 64 GB: $435.91 ($399 + tax) [2]
  • Monthly cost: $74
  • Monthly data: 3 GB
  • Contract duration: 2 years
  • Total cost of ownership: $2,211.90 ($92 / month)

The price of an unlocked iPhone 6 Plus 64 GB, bought directly from Apple, is $927.53 ($849.00 without sales tax). If we spread the total cost over 2 years, we get the following breakdown:

  • Monthly device payment: $927.53 / 24 = $38.65
  • Monthly service cost: $92 - $38.65 = $53.35

Looking at the monthly cost over the same period of time is useful as it allows us to do meaningful comparisons.

Now let’s look at the T-Mobile plans advertised for the iPhone 6. They give you quite a bit (unlimited talk, text and data with data throttling), but they are not cheap: they range from $50 to $80 per month, “plus taxes, fees and monthly device payment”, that is without phone subsidy. They mainly differ by the amount of 4G LTE data you get (from 1 GB to unlimited, and then “your data speed will automatically convert to up to 2G web speeds for the remainder of your billing cycle”). [3]

For my data usage I would probably need the $60 plan (which, remember, doesn’t include taxes and fees, so is probably at least $65 in practice) to have something equivalent to my AT&T plan. This is about $12 more per month ($288 more over 24 months) than my previous AT&T service.

In short, T-Mobile is not a particularly good deal if you care mostly about 4G data. [4] And, by the way, AT&T now has comparable prices as well.

But luckily there is more: T-Mobile also offers prepaid plans. And although the flagship prepaid plans that T-Mobile advertises are the same as their regular plans, you will find, hidden in plain sight, the following:

$30 per month - Unlimited web and text with 100 minutes talk

100 minutes talk | Unlimited text | First 5 GB at up to 4G speeds

Now get unlimited international texting from the U.S. to virtually anywhere included in your plan—at no extra charge.

This plan is only available for devices purchased from Wal-Mart or devices activated on

I had heard of this plan from friends who have been using it for quite a while with Android phones. T-Mobile clearly doesn’t want you to know too much about this: it is a little bit buried, and details of the plan are lacking. But it’s there! [5]

The question now is: does this work with the iPhone 6 Plus? The answer is yes, it does work! Here is what you have to do:

  1. Buy your unlocked (“Contract-free for use on T-Mobile”) iPhone 6 (or 6 Plus) from Apple. [6]
  2. Order the T-Mobile SIM Starter Kit with nano SIM. The kit is $10 but T-Mobile sometimes has promotions (I bought the kit for one cent).
  3. Don’t activate the T-Mobile SIM which comes with your iPhone. [7]
  4. Once you receive the SIM, place it in your iPhone.
  5. Proceed with activation online [8] and choose the $30 plan. [9]
  6. Profit!!!

So now let’s look at the total cost of ownership of this solution over two years:

  • iPhone 6 Plus 64 GB, unlocked, with sales tax: $927.53
  • Monthly cost of plan: $30 [10]
  • Monthly data: 5 GB
  • Total provider cost over 2 years: $30 × 24 = $720
  • Total cost per month including the iPhone: $68.65
  • Total cost of ownership: $1,647.53
  • Savings over my earlier AT&T plan over 2 years: $564.38

Of course, this is still not cheap overall, but it’s a bit better, and in addition I get:

  • 2 GB more 4G data per month than with the AT&T business plan
  • tethering [11]
  • an unlocked phone which I can use on many networks around the world
  • no contract commitment whatsoever
  • the ability to upgrade the phone at any time (just sell it and buy a new one!)
  • the pleasure of giving money to a company a little bit less evil than AT&T and Verizon

There are drawbacks to this solution, in particular:

  • It is unclear whether I could have ported my phone number and still qualify for a “new activation”. I did not try it because I use Google Voice to forward my calls anyway.
  • You are on the T-Mobile network, and this means that you won’t have as much coverage as with AT&T or Verizon.
  • This can be seen as a benefit or a drawback: you have to pay upfront for the phone, and T-Mobile won’t help you pay for it when you get prepaid plans.
  • There are way less voice minutes (an option to call regular phones is using Skype, Google Hangouts, or other VoIP solutions).
  • It is unclear whether fancy features such as Wi-Fi calling [12] or VoLTE are or will be enabled. But since these are voice features and this solution is for people who care more about data than voice, it doesn’t matter much to me.

No matter what, I will see how this fares over the next few months, and in the meanwhile I hope this post will be useful to others!

Disclaimer: This has been working for friends with Android phones and appears to be working for me so far with the iPhone 6 Plus, but I cannot be held responsible if you go this route and have issues of any kind.

For another article comparing plans by major providers, see iPhone 6 Plans Compared: AT&T, Verizon, Sprint, and T-Mobile. Keep in mind that this looks at and iPhone 6, not 6 Plus (so about $100 of difference) and only 2 GB / month plans.

  1. If you have a company, I recommend you ask AT&T about these plans. You have great customer support, and contrary to business cable, you get more for your money compared with consumer plans.  ↩

  2. This is of course not the full price of the phone. It is a downpayment you make on it, and you pay for your phone as part of your monthly plan, in ways which until recently were usually not detailed by providers.  ↩

  3. T-Mobile also has a “Simple Starter 2GB Plan” for $45/month, which includes 2 GB of 4G LTE data, but then cuts out your data. This is not really an option for me.  ↩

  4. T-Mobile also has business plans, but for one line the prices are the same.  ↩

  5. In fact, it is surprising that they even have this plan at all on their site. It makes sense at Wal-Mart, but online? Could it be that they legally have to list it on their site if they provide it at Wal-Mart? I would be curious to know.  ↩

  6. That’s what I did. It might be the same if you get it from T-Mobile, but I haven’t tried.  ↩

  7. I didn’t try to activate it, but I suspect that the activation instructions would lead you to the regular T-Mobile plans without including the $30 prepaid plan. Since the SIM kit was $ 0.01, I figured I would go the safer route. But even for $10 the price remains reasonable.  ↩

  8. Ignore the voice-based activation which starts when you turn on the phone. Also, I had some trouble with Chrome and then switched to Firefox.  ↩

  9. The plan is marked “for new activations only”, and I am not sure what it means, although by any definition of “new activation” I can think of, mine was a “new activation”.  ↩

  10. And by the way the plan is a round $30 per month: there is are no additional taxes or fees.  ↩

  11. With some devices, such as the Nexus 5, tethering is disabled by T-Mobile, while it works fine with the Nexus 4. It is entirely possible that T-Mobile will disable tethering on the iPhone 6 when they get to it. But for now it works.  ↩

  12. Although the T-Mobile site says “WiFi Calling for all T-Mobile customers with a capable device”.  ↩

Tuesday, September 30, 2014

Reading plan: October checkin

My goal for the month of September was making progress reading Intuition Pumps and Other Tools for Thinking. I am now at page 60, so I consider that this was a success. It does help to have small, achievable goals!

Monday, September 15, 2014

Reading plan: September checkin

 My goal for the month of July was:
  • continue on the synthesis and try to have a closure on it, spending about 2 more hours
I didn't have any goals for August.

I only managed to spend another hour in July, and I don't have a closure. So I have decided to park this work for a while.

The good news is that I have just started reading Daniel Dennett's Intuition Pumps and Other Tools for Thinking this month, one of the books on my reading plan for 2014.

I have decided to read this book not in digital format, but on good old paper. I have also decided to allow myself to trash this book with highlights and annotations as I see fit.

My goal for the rest of the month is simply to make progress reading this book.

Saturday, September 13, 2014

Rationalizing the iPhone 6 Plus

iPhone 6 and 6 Plus

Daniel Miessler asked himself which iPhone 6 to get and I did the same. Here are my thoughts.

First, whether considering the 6 or 6 Plus, there is definitely a decrease in pocketability. But I see the move to larger screens as necessary [1] as we use the devices we call phones more and more as computers-which-you-carry-in-your-pocket. [2]

After Apple’s keynote, I hesitated a little bit between the iPhone 6 and the 6 Plus. Initially I was pretty sure that I wanted the larger size. Then I printed the templates and realized that the Plus was larger than I had expected. I started having doubts about whether I would like the larger device, in particular:

  • Will it fit in a pocket relatively comfortably, or will it be a constant annoyance? [3]
  • Will I be able to use it with a single hand at least part of the time? [4]

In the end I decided to get the 6 Plus and to consider it an experiment: a device so different from the ones I have had so far (iPhone 3G, [5] iPhone 4, iPhone 5) might change my habits in some interesting ways.

I am also experimenting in another way: I have had AT&T contracts since the iPhone 3G in 2008. This time around I ordered an unlocked iPhone 6 Plus for use on the T-Mobile network. [6] I like the idea of having an unlocked device, as well as having more options for plans. I will probably try to get one of the T-Mobile prepaid plans (which they don’t advertise much). [7]

Here are the features specific to the 6 Plus I am looking forward to:

  • Improved camera with optical stabilization. I have kids and I consider the camera which I carry with me at all times important. [8]

  • Bigger screen. Many activities should be more comfortable with a larger screen. Will I use my phone for reading more? Will I still be interested in getting the next Kindle?

  • Improved battery life. Depending on which feature you are looking at, the battery life is supposed to be better across the board. For example, Wi-Fi browsing is 10 % longer and standby 60 % longer.

I am also looking forward to the following features shared by the 6 and 6 Plus:

  • Improved speed. The CPU improvement announced is “only” 25% over the iPhone 5S, but the 5S was about twice faster than the 5, so that will be a nice improvement.

  • The new hardware design. I like the rounded body, which looks more like the original iPhone and should make the device pleasant to hold. The iPhone 3G, while plasticky, was also great to hold due to the curve of its back, and from this perspective the iPhone 4 to iPhone 5S design was a step back.

  • Apple Pay. I don’t need to pay in stores all day long, and this won’t revolutionize payments, [9] but I am intrigued by this combination of Touch ID and NFC. Will it work as reliably and fast? Will it work in stores I am likely to visit? The US is finally implementing “Chip and PIN” cards to help prevent fraud. This means that it might become a little slower to pay with cards than it has been so far, as you will have to enter your PIN. [10] Could Apple Pay be slightly more interesting due to this move?

I am looking forward to retire my beat up iPhone 5!

  1. We can say it now that Apple is finally in the race!  ↩

  2. Not in all pockets in the case of the iPhone 6 Plus, Galaxy Note, or the 6" Nokia Lumia 1520. There is word that Google might come out with a large Nexus phone soon as well.  ↩

  3. If not, I can always consider 5.11 TacLite Pro Pant. I don’t think I can consider a European carryall.  ↩

  4. The iPhone 6 Plus has a feature called Reachability to help with this: a double-tap of the home button brings down the content to make it reachable by the thumb.  ↩

  5. Steve Jobs referred to the original iPhone’s screen as “giant”. Times have changed.  ↩

  6. I already knew the price of the device, but it was still a bit of a shock to see the final price in the shopping cart (almost $1,000 with sales tax!). It is a neat trick that the big US carriers have pulled to subsidize the price of devices over 18–24 months. I would bet that a large majority of smartphone users do not know the actual price of the device.  ↩

  7. I don’t have an absolute guarantee that this will work out. But the phone will be unlocked and T-Mobile has a “bring your own device” option so I am hoping things will be smooth.  ↩

  8. The camera of my iPhone 5 has gathered dust inside, and I find myself reaching for my wife’s iPhone 5S regularly. I also take my SLR on specific occasions.  ↩

  9. For two reasons: because the major credit card companies are still involved, and because the system is limited to the Apple ecosystem.  ↩

  10. This American Express FAQ says: “If you have a Chip and PIN enabled Card, you must use your PIN (Personal Identification Number) when prompted, to pay for goods and services”.  ↩

Wednesday, July 16, 2014

Reading plan: July checkin

My goals for the month of June were:
  • spend 3 quality hours
  • complete synthesis of the organ book
I spent 5 hours in  June, which is good as that means I did more than planned! However that was not enough to complete that synthesis.

It's already mid-July and I have spent another hour on the synthesis. For the rest of the month, I will continue on the synthesis and try to have a closure on it, spending about 2 more hours.

For next month, I want to separate the tasks:
  • planned reading
  • writing about what I read
I do not plan to write about all the books I read, certainly not in depth. Still, if I want to read at least one other book this year, I better start doing the reading part regularly, and if writing is needed consider that a separately planned task.

Tuesday, June 3, 2014

Thoughts on the Swift language

What it is

I am not a language designer but I love programming languages, so I can’t resist putting down a few rough thought on Swift, the new programming language announced on Monday by Apple. It is designed to make Objective-C, the main language used to build apps on iOS and OS X, a thing of the past. I think it’s fair to say that this was, for developers, the highlight of Monday’s WWDC keynote.

Objective-C is a dinosaur language, invented in the early 1980s. If you know any relatively more modern higher-level language (pick one, including C#, Scala, even Hack), it is clear that it has too much historical baggage and not enough of the features programmers expect.

John Siracusa captured the general idea in his 2005 Avoiding Copland 2010 article and its revision, Copland 2010 revisited: Apple’s language and API future, and has kept building a really good case since, in various podcasts, that Apple had to get their act together. Something, anything, had to be done. [1]

There was a possibility that Apple would keep patching Objective-C, moving toward a superset of a safe subset of it. But I don’t think that anybody not working at Apple saw Swift coming that, well, swiftly. [2]

Why this is good for programmers

Reactions to Swift so far seem mostly positive. (I don’t tend to take the negative reactions I have seen seriously as they are not argumented.) As Jeff Atwood tweeted: “TIL nobody actually liked Objective-C.”. I share the positive feeling for three reasons:

First, I believe that programming languages matter:

  • they can make developers more or less productive,
  • they can encourage or instead discourage entire classes of errors,
  • they can help or hinder reuse of code,
  • they can make developers more or less happy.

With brute force and billions of dollars, you can overcome many programming languages deficiencies. But it remains a waste of valuable resources to write code in an inferior language. Apple has now shown that it understands that and has acted on it, and they should be commended for it.

Second, concepts which many Objective-C developers might not have been familiar with, like closures, immutable variables, functional programming, generics, pattern matching, and probably more, will now be absorbed and understood. This will lead to better, more maintainable programs. This will also make these developers interested in other languages, like Scala, which push some of these concepts further. The bar will be generally raised.

Finally, arguments over the heavy, ugly syntax of Objective-C, and its lack of modern features can be put to rest: Apple has decided the future path for iOS and OS X developers. That ship has sailed.

Where it fits

What kind of language is Swift? I noticed on Twitter that many had a bit of trouble positioning the language. Did Apple reinvent JavaScript? Or Go? Is Swift functional first? Is it even like Scala? What about C#? Or Clojure or XQuery?

I haven’t seen anything in Swift that is not in other programming languages. In fact, Swift features can be found in dozens of other languages (in Lattner’s own words, “drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list”), and that’s why many have found similarities with their language of choice. So Swift is not “innovative”. Instead it is a reasonable mix and match of features which make sense for the Apple ecosystem.

Here are a few essential aspects of Swift which are not language features but which put it in context. These all appear to be essential to Apple:

  1. Owned by Apple: Swift is fully owned by Apple. It does not depend on Oracle (Java/JVM), Microsoft (.NET), or Google.

  2. Objective-C integration: Swift is designed to integrate really well with Objective-C. In fact, this is likely the second most important reason Apple felt they had to create their own language (in addition to ownership). There are precedents: Groovy, Scala, Clojure, Kotlin, Ceylon and others are designed to interoperate well with Java; CoffeeScript with JavaScript; Hack with PHP; Microsoft’s CLR was designed from the get go as a multi-language VM. This is important for initial adoption so that existing code can be reused and the new language progressively introduced. It would have been possible, but much harder, for Apple to pick an existing language.

  3. Static typing: Swift is a statically-typed language. There is type inference, which means you don’t have to actually write down the types everywhere, in particular within functions. But types are there nonetheless. So it looks more like dynamic languages, but is not one. [3]

  4. A dynamic feel: This is part of the “modern” aspect of Swift: a move toward concision which appeals to programmers used to dynamic languages, but with the presence of static typing under the hood. This combination of terseness and static typing is something Swift shares with Scala.

    Swift has a REPL and Playgrounds (the interactive demo by Chris Lattner looked impressive), which includes what some other environments call “worksheets” and a bit more. Clearly that’s the direction development tools are taking. All of this is becoming mainstream, which again raises the bar.

  5. Native compilation: Swift is compiled down to native code, like C, C++, Objective-C, Go, and Rust. There is no interpreter or VM, as in Java, JavaScript, C#, Ruby, PHP, or all dynamic languages, besides the small Objective-C runtime. Also, it doesn’t have a real garbage collector: it uses automatic reference counting (ARC).

    Swift is a bit odd in that native compilation and lack of full garbage collection make it closer to systems language, yet it is clearly designed to build applications. I wish the balance had moved more toward the higher level rather than the lower level, but it’s an interesting middle ground.

What’s disappointing

Here are a few aspects of Swift which, at first glance, disappoint me a bit. Keeping in mind that this is a first version of Swift which has room to grow:

  1. Openness: So far Apple has not announced that the Swift compiler would be open source, like the Objective-C compiler. This is a big question mark. It would be the right thing for them to do to open the compiler, and I am hopeful that they will.

  2. Garbage collection: It’s likely that Apple considered that ARC was good enough in most situations, and it makes interoperability with Objective-C (compatibility in terms of memory management) much easier to handle. Still, this would give me trouble. Lack of proper garbage collection means more memory bugs to hunt down.

  3. Concurrency support: Swift doesn’t have async/await, like C#, Scala, and soon JavaScript, or futures and promises. Async support is important in client apps as much as in server apps.

  4. Type system: The type system appears very simple. This might be seen as good or bad. The reference book doesn’t even mention the word “variance”. (I suppose Swift picks a default, but doesn’t allow programmers to control that.)

  5. Persistent data structures: There doesn’t seem to be persistent data structures (which are truly immutable yet can be updated efficiently thanks to structural sharing), as in Clojure and Scala. These are incredible tools which many programmers have now found to be essential. Immutability, in general, gives you much increased confidence about the correctness of your code. I would miss them in Swift.

  6. Well, innovation: Dart, Go, Hack, and Swift show that it is very hard for big companies to come up with something really unique in their programming languages. Academia remains the place where new ideas are born and grow. Still, it would have been nice if there was one or two new things in Swift that would make it special, like for example Scala’s implicits which have turned out to have far-reaching consequences (several of which I really like).

Browser and server

I am curious to see if Swift will see adoption on the server, for services. It might make sense for Apple to use Swift internally for their services, although having a language is not enough: you need proper infrastructure for concurrent and distributed computing. Swift is not there yet. But it could be in the future. This is a bit less important to Apple than the client at this time.

What about the browser? Could one conceivably create a Swift-to-JavaScript compiler? I don’t see why not. JVM languages, from Java to Clojure to Scala, now compile to JavaScript. Swift currently uses ARC, but in a browser environment it could probably work with the JavaScript VM’s garbage collector.

So there might be room, in years to come, for Swift to conquer more environments.


Where does Google stand with regards to this? It’s curious, but I think now that it’s Google which might have a programming language problem! Android uses Java but, as famous programming languages guy Erik Meijer tweeted, “Swift makes Java look tired.” (To be fair, most languages make Java look tired.)

Google also has Dart, which so far hasn’t been positioned as a language to develop Android or server apps. But maybe that will come. Go is liked by some for certain types of server applications, but is even more of a “systems language” than Swift, and again Google hasn’t committed to bringing it as a language to write Android apps.

Will Google come up with yet another programming language, targeted at Android? The future will tell. If it was me, which of course it isn’t, Scala or a successor would be my choice as a great, forward-looking language for Android. And Google could point their Android developers to Scala and say “Look, it looks very much like Swift which you already know!” ;)

Did I miss anything? Let me know in the comments or on Twitter.

  1. Back in 2009 I even tweeted:  ↩

    MS has Anders Hejlsberg (C#). The JVM world has Martin Odersky (Scala). Apple should work with Odersky on the next language for OS X.

    Obviously it wasn’t Odersky, but Chris Lattner, who got to be the mastermind of Swift.

  2. Good job by Apple, by the way, to have managed to keep it under covers so well since July 2010!  ↩

  3. There is a difference with with languages that have optional types, like Dart and Hack. Dynamic, optionally typed, and statically typed languages can, from a syntax perspective, look very similar. But under the hood some pretty different things take place.  ↩

Monday, June 2, 2014

Reading plan: June 1 checkin

My goals for the month of May were:
  • 3 quality hours of reading
  • complete synthesis of the organ book
  • pick the next book to read and start
I did manage to do a bit more than 3 hours of planned reading, so that's a success! Now "reading" is a bit of a misnomer because all of this time was spent working on the synthesis. But that was not enough to complete it, so the success is only partial.

Surely, 3 more hours in June should allow me to complete the synthesis this time? Ok, that's the plan.