mkale.com

Google's Missed Earnings

Someone (inadvertently) leaked Google's quarterly earnings report early, which shows falling advertising prices and lower income than expected, despite growing revenues. The stock fell nearly 10% before trading was briefly halted. Google is of course still making money, still has incredible talent and creates great products, and is still the clear market leader in some very profitable businesses. They're in this for the long haul and one missed quarter won't throw them off their game too much. However this reminds us that their growth is not assured and how much their fortunes are tied to advertising rates.

Especially troubling is their Motorola subsidiary, which is losing money. Any stumbles in the Android or Google world are sure to be music to the ears of Microsoft, which must see Android as its main competitor at this point instead of Apple. Apple is printing money with their iOS devices, but they don't have the market locked up and Android is happily taking up almost everything else now. Microsoft is making some nice products but hasn't seen market demand for them yet. Time will tell whether Microsoft or anyone else is able to wrest away any significant portion of the market from Android, which would give them a foothold to start taking on Apple. It's an exciting time to be in Mobile.

Microsoft Surface Surfaces

The Surface is here! Well, not here quite yet, but orderable and priced. (Well, if I might add.) Delivery on 10/26 with the rest of Windows 8. Looks neat.

Pricing is aggressive -- will probably make PC OEMs squirm a bit, but it needed to be priced to match the iPad to have a chance. Here's hoping Microsoft sells a bunch of these and more importantly, here's hoping it's a good device with good software.

Books

More evidence of the ongoing shift away from hard copy: when I read paper books, newspapers, magazines, etc, I occasionally find myself glancing up at the top of the page expecting to find a clock. More and more, it's just more convenient to read on a screen. Not to mention the saved paper and distribution logistics. Sure, books feel nice in your hand and you can use them when the electricity is out. You can stuff a cheap paperback in your traveling bag and not worry if it gets lost or stolen.

But you can also carry a zillion books and magazines on a digital device that fits in your pocket or briefcase. You can search through the text. Copy and paste. Make annotations without feeling like you're writing in a book (something I could never bring myself to do.) You can download the content right to your device without having to leave your house. And, best of all, no dead trees or carbon-fuel-based shipping. The devices do use (often carbon-based) electricity themselves, but given how little electricity they do use, I expect the carbon footprint is still much lower.

The only content I read in hardcopy anymore is that which I share or lend or borrow. One copy of a newspaper can be passed between multiple people around a kitchen table. My local library has a much larger collection in regular books than in e-books. But these will come, with time.

iOS 6 and Wacky Rotations

While updating my apps to iOS 6, I noticed that they were handling rotations poorly. My buttons weren't getting moved correctly when the device switched from portrait to landscape and vice-versa. Digging into the problem, I found that my UIViewControllers were not getting the

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

message on rotation. I know that iOS 6 deprecates -shouldAutorotateToInterfaceOrientation, but near as I could tell -didRotateFromInterfaceOrientation should still be ok. After scratching my head a bit, I noticed that my newer apps did not have the problem, only my apps that have been around since the (then)iPhoneOS 2.x days. With this clue, I was eventually able to track the problem down to some changes in the template app code that Xcode generates for you. Somewhere along the line, in -application:didFinishLaunchingWithOptions

[self.window addSubview:[self.myRootViewController view]];

changed to:

self.window.rootViewController = self.myRootViewController;

The rootViewController property was introduced in iOS 4. My apps that had been around for a while still had the old template code, which unbeknownst to me was working fine up until iOS 5. Changing my older apps to set the rootViewController property fixed my rotation problems. The documentation does indicate that the latter is now the preferred way of doing things, so this is a good change to make for every app that does not need to run on iOS 3.x (which should be very few apps at this point).

So: if you're running into rotation wackiness on iOS 6, check to see if your -didRotationFromInterfaceOrientation is getting called, and if it's not check your app delegate to make sure you're setting UIWindow's rootViewController property rather than just adding a subview.

History | Blog | mkale.com