iPhone 3GS Compass

So, if your game uses the compass and it’s being played in a moving vehicle, what happens….

The new iPhone 3GS has a compass in it, and most certainly it’s going to be used for precision game play at some point.

Then it dawned on me, one of the number one applications of the iPhone is to act as babysitter. You fire up a game and hand it to the kids in the back seat as you’re driving somewhere.

I’m wondering how this is gonna work as people try to play compass-enabled games while moving, say a car, bus, or train.

My first gut instinct is that initial QAing of games will happen seated, but their real use will be in an environment where there’s motion, and at that point this potential problem may start to get noticed. It may surface as bugs, where ‘the game’ did something unexpected.

As for me, I can’t wait to see how a few malicious sharp terms and exit ramps will affect future game play.

Found: The Best iPhone Development Book So Far

Want to write your own iPhone applications but Objective-C, XCode, Interface Builder, and the steep learning curve of Cocoa getting in the way? Have I found the book for you.

Warning: long and geeky post follows — iPhone wanna-be developers, read on!

Beginning iPhone Development - Exploring the iPhone SDKI’ve found it, finally, the best iPhone development book so far! Read on to see why.

Fairly recently, I decided to turn my attention to native iPhone application development, but I found the arena a little sparse when it comes to what I’d call good documentation.

For some perspective, I’m a software developer of 20+ years with background in Unix and Windows; I’m very well versed in C, C++, C#, and Java, among a good number of other higher-level languages, having produced a number of enterprise applications.

You’d think that picking up Objective-C and the Cocoa Touch frameworks would be a fairly simple task. However, the moment you step foot into the pool, you’re get a cold shock at how much you don’t know and it can feel daunting enough to want to retract back to familiar territory.

Don’t give up. It is easy.

Looking forward into the unknown presents a much more gloomy impression than when you’ve taken a few steps and looked back to see just how far you’ve come and in such a short period of time.

Here’s what’s happening: The Apple Frameworks represent a large and mature collection of some impressive code. The closest experience I’ve felt to it, and this is admittedly a horrible analogy, is Ruby on Rails.

With Rails, there’s so much going on by convention that you have to sling very little code to get impressive things to happen. This makes it hard to understand: there is no code to trace.

Same way with the Apple Foundation classes that are based on NeXTSTEP — a lot is handled for you, and often in new ways you might not have thought about because of limitations of other platforms, so that very little code is required to do something quite impressive. The problem is figuring out what that code is you’re supposed to write, and more importantly how’d you know to go about doing that in the first place. Hint: knowing the Foundation Framework is important to understanding the Cocoa Touch Framework.

This leaves one in the lurch that the sample code appears rather sparse, and the framework documentation overwhelming, with little guidance on how all the pieces fit together into a simple, cohesive whole. The problem is all too common.

My biggest gripe with many frameworks, especially Java and it’s auto-generated documentation, is that all you’re really presented with is a list of method signatures with very little discussion about what they do, purpose and limits to the input values, discussions of side effects, the importance of call order, and so forth. With other languages, you’re lucky if you can find the header file to include or the library file to link against. It’s all just expected that you somehow know this, and that doesn’t work when you’re learning a framework, though it’s fine if you just need a reference.

Apple’s online documentation is certainly comprehensive, but the reality is you’re going to be watching videos and reading tons of documentation, picking up crumbs of useful bits as you go. The cohesive moment of comprehension will come, but it will be a long and slow ride. You want something faster.

If you’re learning Objective-C at the same time, the ride is extra bumpy, because not only are there just a few language extensions sitting on top of C, but the ObjC library is actually doing some clever work that you want to know about, and this has additional implications because there’s a lot of convention going on as well. Further obscuring things is the fact that, due to historical reasons, the terminology you are most likely already familiar with doesn’t map nicely. A nice look under the hood solves this. Objective-C isn’t just some new keywords, it’s new application behavior.

What’s Wrong With Other iPhone Books At The Moment
As of early 2009, you’re going to find few iPhone books out there. Most of what exists is for the hacked version of the iPhone, and while that may even sound useful, the tearing apart of the SDK is rough and incomplete, not to mention the implementation to call is painful. This just isn’t applicable to the real world constraints of native mode development.

Think you can get by with a slightly out of date copy of a Cocoa book? Think again. The UIKit framework is just different enough that your approach needs to be slightly different. Tight, efficient, resource management becomes very important.

Also, unless you already know and understand Interface Builder, it can be a hard time following along when your book doesn’t match your software version. Apple keeps modifying Interface Builder, making it better, but the changes can come across as so dramatic, interface-wise, that to the new comer it looks like a totally different application each revision. Once you “get it” the sweeping changes are cognitively transparent. The iPhone SDK includes, you guessed it, a new XCode and Interface Builder.

What few modern iPhone books there are out there jump straight into a technical feast of SDK details, leaving the reader with a learning curve that’s as vertical as a brick wall.

What’s needed is a book that introduces only what you need to know, when you need to know it, explaining tips and tricks along the way, delving into the philosophies of why things are the way they are, what the developers were thinking, how the frameworks are structured, what the conventions are, and when those conventions aren’t followed. And, instead of showing you the end solution all refactored into a neat package, take the long way, when needed, to introduce you to what’s going on and then evolve into the optimal solution.

I’ve Found Such A Book!
The book, by Apress, is called Beginning iPhone Development – Exploring the iPhone SDK by Dave Mark and Jeff LaMarche. This book is about the fundamental concepts you need to understand in order to make the frameworks do their magic.

Its tutorials are very well constructed, easy to follow, and are specifically designed to teach the framework in such a way as you understand what’s going on and learn to fish for yourself.

This is in stark contrast to substandard books that merely cover a framework’s capabilities with cut’n’paste examples that have little bearing to real applications. This alone gives is five out of five stars by my standards.

My only complaint is a minor nit that there are a small handful of typos, and unfortunately, they happen in the code examples. However, they’re glaring, and you won’t get tripped up by them. (For example, on page 85, the tutorial is about UIImage. And, UIImage appears four times in a six line sample. The first one, however, says “jmUIImage” and the indentation is off. It looks like a macro expansion, a note, or the mangled initials of one of the authors. The code won’t compile with it, and it’s obvious from context what it should be.) To me, this is forgivable. Especially since it’s rare.

Tagging 1430216263I want to show you something.

I have a habit of tagging my books when I find an exceptional piece of information that I haven’t found elsewhere. I give a book high marks if it earns somewhere between three to seven tags, as the majority of my collection never gets any tags. Tagging, for me, is not note taking — it’s rare event.

I think the picture speaks for itself.

For Example…
So, at this point, I present for my own edification and future reference, some of that tagged content. Who knows, maybe something you see here might just get you traction on the learning curve.

– In Objective-C, colons are a legal character of the method identifier, they are not syntactic sugar.
– Even though a number of macros translate to nothing, void, zero, or null under the hood, their presence provides important hinting for data types and method calls.
– The NIB’s File’s Owner is a place holder for the class that loaded the NIB file.
– The NIB’s First Responder is the object the user is currently interacting with.
– The application icon is a 57×57 .png file, see Info.plist’s Icon File.
– The iPhone specially optimizes .png files so this is the best format.
– Reset the iPhone Simulator by deleting its directory from ~/Library/Application Support
– You want to use @property (retain, nonatomic) as often as possible.
– Interface Builder uses your defined accessors to properties, which use retain; that means you do need to deallocate Interface Builder objects, even if you didn’t instantiate them.
– There are four control states on a control, often you want UIControlStateNormal.
– Learn to use retain/release, there is no garbage collecting on the iPhone.
– It’s better to init/release than using factory methods; factories use autorelease pools, and while this will work, it often keeps resources around longer than you intend — avoid autorelease pools.
– Hog too many resources, whether CPU or memory, and the phone will reboot.
– Everything from UIApplication on down will fire messages to Delegate objects at certain well-defined times, you need to learn what these times are and what messages are sent; it’s not just subclass avoidance.
– You can Option-Click on a class or interface name in XCode and go right to the documentation.
– You can press ESC to cause auto complete to happen immediately.
– Command-equal_sign will size a control to fit.
– When you’ve got a lot of control hierarchies going on, use the View Mode button to see them as a list.
– Scaling an image takes computational overhead, avoid if you can.
– Set the Alpha slider to 1.0 in order to optimize the drawing sequence, it skips looking at the underlying background and factoring it in — it applies to the image drawn.
– Also set the Opaque checkbox in order to optimize the drawing sequence, it skips drawing the underlying background for the parts where the image is transparent.
– The Tag control allows you to assign a numerical identifier to controls to locate them later.
– You need to handle the Did End on Exit event in order to make the keyboard go away.
– You may also need a huge, invisible, custom button as well to make the keyboard go away.
– In XCode, use Option-Command-up_arrow to toggle between a header and its source file.
– In the Interface Builder, move the cursor over a view and hold down Option to see how many pixels there are between the item and its superview.
– Option-dragging a control in Interface Builder makes a copy.
– Nifty buttons are actually stretchable images, and Apple has buried a ton of them free for your use in the UICatalog sample code on their site.
– There are three different ways to handle layouts when rotation happens: autosize, reposition, and view swapping.
– The rotation callback passes you the orientation the phone came from, you need to use other means to get the current orientation.
– If you want to use Core Graphics, for things like view transitions, you need to link the framework into your application.
– Some frameworks, like Core Graphics, have one version for the iPhone hardware and one version for the iPhone Simulator.
– If you use the correct parameters, XCode’s build process can play games with the path and always target the right framework (use Relative to Current SDK, and do not select Copy items).
– Right-click the Resources folder and use Add / Existing Frameworks… to do this process in a safe way.
– If a view isn’t shown, it’s superview is nil.

…there’s plenty more, but you get the idea. The book is jammed with all kinds of useful things to someone who is new to iPhone development. This presentation of material makes the learning curve very approachable.

And, once over that hurdle, all those other books that I said were problematic suddenly make a whole lot of sense.

This book is the best first step I’ve seen in the journey to writing iPhone applications. Period.

Walt gives “Beginning iPhone Development” two thumbs up, five stars our of five starts, and a head nod of appreciation to the authors. Well done, guys. Well done.

Changes at the Apple Store – For the Better!

Apple has changed the Genius Bar policies and procedures. INCREDIBLE IMPROVEMENTS!

Anyone who’s been to an Apple Store, especially the one in Tysons Corner, VA, knows that Apple is experiencing some serious growth pains. Yes, as predicted, more and more people are starting to adopt Apple hardware and software and the cost/benefit factor becomes more apparent. The hardware is not that much more expensive, and if you take in to account all the stuff you get and all the stuff you don’t need to buy, it’s actually a pretty sweet deal for the total cost of ownership. Vista didn’t win any favors, Windows 7 is invoking similar fear, and Apple’s forth coming Snow Leopard looks like it’s going to be dealing a death blow. Meanwhile the number of ways to run Windows applications on a Mac, even the graphically intensive ones, are climbing — that a Mac won’t run Windows software is just not true.

Where Apple dropped the ball was the in-store support. If you walked into the store, all appointments were filled. Even if you registered in advance, you couldn’t be seen before hand. And turns were taken in the ordered registered — which meant if you had the identical problem as the person at the counter, and someone required 45 minutes of training in front of you, you had to wait. In short, it was awful and you had resort to gaming the system to get seen when scheduled.

As it turned out, my iPhone started wonking out on me when it came to WiFi. My connections would drop, and with the last firmware update, my WiFi connection would drop seconds after being established. Manually cycling WiFi, power cycling, rebooting, and even firmware reloading did not solve the problem. All I could use was Edge, even when someone next to me could see the network access point at full strength on their iPhone.

I loathed the idea of going in to the Apple Store with a real hardware problem, which would require seeing a Genius, especially a shopping day or so before Christmas Eve.

Unbeknownst to me, Apple had made substantial improvements in customer service, the likes of which exceeded all my hopes and expectations. Check this out!

The moment I crossed the store threshold, I was greeted with “Welcome to the Apple Store, is there anything I can help you with?”

“Uh, no, I’m here for a Genius Bar appointment, and I’m an hour ahead of schedule.”

“No problem sir, I’ll register you’re in-store, so head on over to the bar now, and we’ll see if they can take you early.”

Huh? Normally the Genius Bar has a crowd around it with very frustrated people, and four to six gurus working madly. However, as I looked over there were only two, and tons of empty stools, and zero crowd waiting. Meanwhile, the store looked busier than I have ever seen it.

I go over and take a seat. Again, I’m greeted, they ask my name, and they say they see me as appointment number 9. Usually that means that I can expect an hour and a half wait.

However, I’m watching as the two people there are taking cases, and the moment they require some hardware restore or check, they start the automated job and immediately start taking the next person. They’re working concurrently, and they are cranking through the list.

Less than five minutes later, it’s my turn.

“What seems to be the problem?”

As I’m describing it, I notice he’s typing. So I pause and ask what he’s doing.

He tells me, “I’m setting up an order in the computer to replace your phone with a new one. I’m going to flash the firmware, and if that solves it, I’ll press cancel and give you your phone back. If it doesn’t, I’ll hit submit. Either way, you’ll have a working phone in five minutes or less.”

My mouth drops.

“While I do this, do you mind if I take another customer?”

“Uh, no, of course not.” And he calls the next person in line. I’m shocked. I’m impressed. I’m please. And everyone at the Genius Bar starts socializing with one another. It’s turning into a little party.

As he’s talking to the other customer, he’s pulled out a box, moved the SIM card from my phone into the new one, and pushes the new phone and the paper work my direction. I sign it, and he says to me, “You’re all set. And 15 minutes before your appointment was supposed to start.”

That couldn’t be right, I was there an hour early. Looks like they bumped me up in line a few times when “Last call for Mr. Noshow” was hollered out.

I did get to talk with the Genius, and he stated that Apple now allowed them to take people early, as well as work concurrently, and group similar cases together. It was clear that this removed all congestion and put them ahead of the game.

For as I was talking with him, a floor person came over and said “I have a woman on hold, she was wondering if you could do a walk-in.” The Genius spread his arms and said, “absolutely, I have nothing but real-estate” and gestured at the empty bar.

The service was friendly, prompt, and I’d give it six stars on a five star scale.

Walt gives the new Apple policies and procedures at the Genius Bar two thumbs up!

Aurora Feint: Recovered

For some unexplained reason, Aurora Feint would no longer start on my iPhone. Starting the game exited back to the main menu. Here’s how I restored the game and recovered my previous game play.

Aurora Feint won’t start.

I’ve been playing Aurora Feint on the iPhone, and all of the sudden, it quit working. The game, not the phone. I’d go to start it, and then get returned to the main menu. Seems other people were having a similar problem. Some were lucky to get the game working again, others lost data.

Here’s how I recovered mine, preserving game play. Your mileage may vary.

0. Back up your iPhones by syncing it with iTunes.
1. Hold down the Aurora Feint button until the icons jiggle.
2. Press the (X) delete button over the Aurora Feint icon.
3. Acknowledge that you’re deleting the game and that all game files may be lost.
4. Hold down the power button on the phone, slide to Power Off.
5. Power phone back on.
6. Immediately go into App Store, select Search, enter Aurora Feint, and Install.
7. Acknowledge dialog that you already purchased this item and want to install again.
8. Let the game download and install.
9. Again, hold down the power button on the phone, slide to Power Off.
10. Power phone back on. For me the phone went through a very long boot cycle with the Apple logo.
11. Press the Aurora Feint icon to start the game.
12. For me, the screen went blank and stayed there — tap the center of the screen, movie controls appeared.
13. Unpause movie intro and let play to completion.
14. After a moment, I was returned to the map.

I’ve found that I always have the best of luck restoring the game when I’m at the map. Exiting while at the character page or in the middle of a mining activity does work, but not always; this causes the game to be fussy and exit prematurely to the main screen after start (unless you can intercept with a tap in the upper right corner).

Good luck.

New iPhones? Speculation at the Apple Store.

At the Apple store, I was given an interesting tidbit about an “event” that happened, and passed by rather silently.

Total speculation follows.

This weekend, I was at the Apple Store, and managed to get into a rather in depth conversation with someone, who, well, really knew their stuff. More so than other store employees I’ve chatted with, and some of them were pretty good.

I was passed the observation that an interesting “event” had occurred rather silently.

They ran out of iPhones.

This person explained to me that Apple does a really good job of keeping them stocked, since they were a major supplier for the area. However, they were clean out.

The only times that ever happened, was when Apple was about to change inventory on them. Killing the 4GB model was one. Going to the 16GB was the other.

A 32GB or 64GB iPhone seems likely, as iPhone customers want as much memory as an iTouch allows.

This would be a good time to add additional gestures, which, incidentally would help out with the lack of cut’n’paste.

But the real feature I’m looking for? The ability to push my contacts to other people with an iPhone. We’ve got the same device, the same applications, the same data, and bluetooth, there’s no technical reason I can’t give someone my ‘electronic business card’.

iPhone Registration Problem

Here’s a nifty little screen shot of an Apple web site error that provides a little insight into what’s happening back on the server.

Last year when I bought my iPhone, I tried registering it at the store with an Apple Genius at my side.

This popped up. Amusing as it was, I took a snap shot of it and had been meaning to share it for a while now.

iPhone Registration Problems

Perhaps it was a time when Apple’s servers were being over whelmed. Nonetheless, it might provide some insight as to what they’re doing.

NOTE: I tried later that evening and it worked fine; my iPhone has been operating just fine.

iPhone: American Express Came Through!

The nay sayers said it wouldn’t happen, but American Express came through. And stunningly so. That’s right, I got a refund on my iPhone. And you should see how clever American Express was about it.

Shortly after Apple announced the price drop on an existing iPhone product, without introducing a new one to take its place, I wrote about whether or not early iPhone adopters would get screwed. My take on the matter was, no, as Apple has a history of doing the right thing, at least in the long run.

American Express iPhone RefundNear the same time, a few people observed that the terms and conditions of their American Express card benefits would allow them a refund. Since it never hurts to go directly to the source and just ask, I did so, writing about my experience with American Express. Again, my take on the matter was that American Express, with no ultra compelling requirement to do could turn this into a massive marketing strategy right before the holiday season.

I learned two things.

First, I learned that there’s actually only a small number of rude people who don’t actually read posts before feeling they have to comment in the most vile language as they make false assumptions. (I’d clearly stated in a colorful sidebar box that I didn’t feel entitled to the refund, but that the opportunity could be used to build good will.)

Second, I learned that American Express came to the same conclusions I did about how to treat its customers.

Today I got a letter from American Express. In it, they explained that my recent purchase did not fall within the normal terms and provisions of the Purchase Protection Plan. However, as they value my business, they are processing the claim as an exception to the rule, and are crediting my card with $105. (They then sent me the actual terms, which covered a lot more than I was aware of.)

That made me, as a customer, feel special. And cared about.

With Steve Jobs’s refund of $100, with American Express’s refund of $105, I’m now $5 ahead.

I think American Express was smart.

They knew the product could have been returned completely, giving them a useless product, and me $300. And with my $100 from Jobs, I could have gotten a replacement phone.

They knew what I really would have liked, in the ideal case, was the $200 difference.

They most certainly knew that I’d be getting a refund of $100 from Apple, so they could just get away with providing $100 out of the kindness of their hearts.

And, but going $5 over that amount, which is trivial to them, it makes them look like the super good guys. The $5 bought a lot in terms of marketing.

At this point, as a customer, I’m so totally impressed with how well American Express took care of me, especially when they didn’t have to, that I’ll be using American Express for every major purchase, as well as now minor ones.

Prior to this I used Discover (for cash back) and Visa (when Discover wasn’t accepted).

American Express – you’ve won my heart this holiday season. Thank you.

Warning: iPhone AMEX refund isn’t dead yet

There was a blip of people who got AMEX to refund the difference, but that bubble is over. Or is it? I just got off the phone with AMEX and…

Let me clarify my position that I do not feel that I have an entitlement to a $200 refund.

That said, if I were running a company (like Apple or AMEX) where customer service is vital to my bottom line, I’d do everything in my power to build a burst of good will right before a holiday season.

For fun, let’s see of the sure fire headlines work.

Last night I went to the Apple Store in Tysons with a friend who bought his phone one week after me, putting him within the 14 day window. Apple credited him $200 on the spot.

I perhaps have one of the worse case situations, in that while early adopters have had their phone for a long time, I’m just outside of the 14 day window, meaning I don’t qualify for the price guarantee match, nor can I return my phone, nor did I get $200 of fanboy usage from the device.

Apple, however, was helpful and friendly. They looked up on my account and indicated that American Express was used to purchase the phone, and that I should call them. They even printed out a fresh copy of the invoice for me.

In the Jerry Seinfield and Superman commercial shorts by American Express, Jerry tells how, by using American Express, he’s protected from theft, damage, and so forth. Could it be true?

I looked at my American Express card, and found out I was a Platinum Member via Costco. Nice!

After looking up AMEX Best Value Guarantee with Google, seeing that a Gold Card Page mentioned BVG, and discovering Return Protection on Platinum Benefits, I felt it was worth a call to AMEX – given the Apple Store made the same suggestions as this newsworthy blog, this tech news article, and this tidbit.

I called 1-800-297-8019, and after a fairly long time on hold due to an enormous “unexpected” call volume, I reached a human who confirmed I had the right number. He explained that the Best Value Guarantee was discontinued in November 2006 (ah, the BVG article above was from 2003).

Turns out, the non-existent Best Value Guarantee would have meant AMEX would have had to pay $200. However, the “Apple won’t take my phone back [so I can purchase a new one at a cheaper rater] which is in affect puts them out $300 – though there’s the possibly you may have to send in your iPhone.

Follow along, cause this gets weird. Even if you paid $600 for the phone, a $300 credit from AMEX and a $100 from Jobs, gets you pretty darn close to the cost of getting a new phone (say if you’ve damaged yours dropping it or such); in fact, it might be just enough to make a point if you’re mad enough.

If you bought the cheaper phone, you very well could be beyond the break even point.

AMEX knows this, and they are well aware of the iPhone situation.

Because AMEX is getting hammered, they are looking for a compromise. Apparently there are enough people who are willing to return them iPhones that have been bricked in order to get $300 that AMEX doesn’t want to deal with that.

As such, they are looking at simply refunding the price difference (which is actually cheaper), especially if that means they don’t have to refund a larger amount and get stuck with a bunch of damaged phones with nothing in the file system and missing a SIMM card.

American Express took the date of purchase, the kind of iPhone, there price (with tax) of the iPhone, and the total cost of charges for the purchase and opened a case for me.

They claim they will review them individually, but the rep was fairly certain they’d be handled in bulk.

By bulk, I assume that means putting them in groups. Speculating here, I believe one group, will be the whining early adopters who will get nothing, another group will be those that are in the 14 day period and should be dealing with Apple, another group of questionable pro-rated matching, and a group that meets the intent of the policy (which is where I fall in), in that I’m just shy of being able to resolve it with Apple but haven’t had the long usage.

If AMEX comes though for me, then great, I will be using their card a lot more often.

If AMEX does anything, and I mean, anything at all, they come out looking like the heros, and have just secured themselves the holiday season as the card to purchase everything with.
Steve Jobs has one chance left to steal the thunder back, however. Tell people they are getting $100 back, but give a certain portion in the purchasing window $200 instead. Suddenly Apple looks beyond fair, but customer centric again.

I will note, however, that there were more people in line with iPhone receipts at Tysons than there were people buying the new iPods, while I was there. The early adopters are clearly gun shy.

iPhone TOS Rebuttal

I held off my iPhone purchase because of an article exposing the evils of the terms of service. However, those have been adequately rebutted, that I now own an iPhone.

One of the big things holding me back from buying an iPhone in the first place, aside from lack of SSH (which was soon resolved), was an article about the hidden evils in the Terms of Service contract.

Well, not sure about whether to take things at face value or not, I bounced my concern off my friend Phil, who’s extremely knowledgeable about telecommunications.

He wrote me back a wonderful point-by-point analysis, which swayed my decision. Feeling that other people might benefit as well, I sought permission from him to reprint it here.

iPhone Requires a 2-Year Contract with AT&T.
1. True; they make the 2-year contract requirement pretty clear. This isn’t a great thing but it’s pretty standard in the U.S. when you buy a phone.

Expensive: Requires $2,280, Over $1,730 in Wireless Costs.
2. Also true, though he overstates the price. The service plan runs about $60/month ($40 voice, $20 data); if that’s too expensive, the iPhone is probably a bad idea. That’s still less costly than a Blackberry or Treo (both about $80/month when you turn on the features needed).

Double Billing. You and the Caller Both Get Charged for the Same Call.
3. True, but not unique to the iPhone. Every cellular carrier in the United States save for a few Nextel plans will charge airtime on both incoming and outgoing calls. If you call another wireless phone user, I suppose you could call that double-billing (though if that other user is on the same carrier [ATT], the airtime rate is the princely sum of zero cents per minute).

All Use of the Networks Are Always Rounded Up to the Nearest Kilobyte or Minute.
4. Standard practice for the wireless industry. The per-kilobyte complaint is pretty funny, though, since the charge per kilobyte for domestic data usage is zero cents per kilobyte.

Customers Are Billed for “Network Errors” and “Network Overhead”.
5. I have no idea what he’s talking about, but it makes no sense.

Billed Even Though the Call Doesn’t Go Through.
6. Basically untrue. Billing in a wireless system begins when the call is answered, though the timer starts when the call is initiated. In other words, if a call rings for fifteen seconds and then is answered, the clock begins at 15 seconds and counts up from there.

Bogus Fees Added to the Bill: Regulatory Cost Recovery Charge
7. While I agree that regulatory recovery fees are basically bogus padding, I challenge him to find a wireless (or, for that matter, conventional wireline) carrier that doesn’t do this.

$175.00 Termination Fee.
8. The early termination fee is pretty well standard throughout the industry. There are certain circumstances where you can avoid paying it (for example, if they raise rates during your contract term).

International Messages Are Charged Additional Fees as Are Files Over 300Kbps.
9. International text messaging (i.e. SMS) costs extra on every cellular carrier I’m aware of. The picture/video messaging charging he complains about isn’t even relevant to the iPhone. And the “additional fee” for large messages that he talks about is irrelevant to the iPhone. My phone communicates directly with my IMAP server over SSL; there’s no way that ATT can tell how large a message is, let alone bill me for those messages over 300K.

Over Your Quota: Get Gouged: 40¢ Per Minute and 69¢ Roaming Offnet.
10. Once again, he’s whining about something that’s absolutely standard in the industry: if you go over your bucket of minutes, you pay a pretty high rate. He conveniently neglects to mention that UNUSED minutes from your plan roll forward into the next month and can be used to offset high usage up to a year later. If that’s not enough, just call and switch to a higher plan and ask them to make it retroactive to your previous month’s usage.

The Services Are Not Secure and Can’t Block Your Phone Number.
11. “Not secure” is a leftover from the days of ANALOG cell phones, which could be listened in upon pretty trivially. And they’re saying that when calling certain toll-free numbers, you can’t block your caller ID since the recipient pays for the call. There’s a MENU on the iPhone that allows you set the default for whether you send caller ID or not; you can also set it per-call. In other words: JUST LIKE A LANDLINE.

The Current Mobile Email Service Doesn’t Support Attachments.
12. Absolutely false. You can send photos trivially (about the only sort of attachment that makes sense to create on a phone), and the iPhone will read a lot of formats (Word, Excel, PDF, JPEG at a minimum).

Prohibited Uses and “Unlimited” Sales Hype.
13. The prohibited uses language is pretty standard wireless carrier language. I agree with him that the claim of “unlimited” is pretty misleading marketing puffery, but it’s an industry-wide problem. If you use your FIOS connection at full bandwidth 24×7, you’ll soon discover that “unlimited” basically means that you’re not billed per unit of data, but that you can still be cut off if you abuse the service. There’s basically nothing you could do on the iPhone that would cause this to happen, though.

Service Is Not Intended to Provide Full-Time Connections: Unlimited is Hype
14. Same as above.

Wi-Fi Service is Limited
15. I think he’s deliberately misinterpreting this one. He’s talking about a completely different wi-fi service that one can purchase through AT&T that has nothing to do with the iPhone. There is of course no limit at all to the number of times in a given time period that the iPhone can connect to a wi-fi network.

“Offnet” Restrictions
16. Another deliberate misinterpretation, I think. “Off-net” usage refers to areas where you’re roaming. Since cell phone roaming charges basically don’t exist anymore for the consumer (the carriers charge each other, though), what they’re saying is that you can’t buy the phone and then use it full-time where, say, T-Mobile has service and ATT doesn’t.

Plan Goobly-gook
17. He’s so incoherent here that it’s hard to figure out what he’s mad about.

Comparing US and Other Broadband Countries: America Is being Laughed At.
18. Perhaps he should move! He forgot to mention that countries using the metric system think we’re pretty silly too–but I’m sure he would have if he’d thought about it. Seriously, he has a point: mobile telephony is more advanced in other parts of the world (largely due to standardization on one network type–GSM). But I’m not sure why that would be the fault of ATT and the iPhone.