Software bloat is not an Apple invention

Smartphone

The New York Times reporter Catherine Rampell has caused a stir with her article ‘Cracking the Apple Trap‘, in which she insinuates that Apple are employing planned obsolescence to slow down older devices and force customers into buying new products.

It’s certainly a common complaint in the IT industry, one most often directed at Microsoft and it’s Windows operating system. Search for ‘software bloat‘ and you’ll see what mean:

Software bloat is a process whereby successive versions of a computer program become perceptibly slower, use more memory or processing power, or have higher hardware requirements than the previous version whilst making only dubious user-perceptible improvements.

But it’s not as sinister as is being made out. Operating systems evolve over time resulting in improvements, usually fancy new user interfaces, graphics or features. These require extra computing ‘power’, be it a faster processor or more memory to work effectively.

What we often see is slick new software trying to run on older hardware. While it might still function, there are signs that it struggles and this is where you experience freezing, sluggishness or reduced battery life due to the processor having to work harder.

From Apple’s perspective, they’re damned if they do and damned if they don’t. Which would attract more criticism, not supporting iOS 7 on iPhone 4 at all, or stretching legacy devices to their limits in order to deliver the same customer experience to as many customers as possible?

The iPhone 4 was released in June 2010, so three years of supported operating system updates could hardly be considered “planned obsolescence”. Let’s not forget that not so long ago it was nearly impossible to update the software on your mobile phone. Apple were pioneers in using software update technology. It’s not unusual now to have consumer mobile contracts lasting 18 or 24 months, this is testimony to the longevity of smartphones.

If anything Apple is guilty of doing too much to appease their loyal customers. Deliberate software bloat is just as likely to drive customers away from Apple’s products as it would force them into begrudgingly buying new hardware. What we’re talking about is technological progress and the need to lead through innovation.

The iPhone 4 was a hugely successful product globally and Apple risked alienating many millions of customers by not by including them in the much heralded iOS 7 update. Having as large a base of customers all at the same software level also helps keep Apple’s application ecosystem vibrant. Developers are keen to exploit the latest features and customers are hungry for the next killer app. By reducing software fragmentation Apple aims to keep all elements of the ecosystem happy – and maintain a healthy revenue stream as a result.

As a lapsed Apple fanboi I have no vested interest in defending Apple. I converted to Android mainly due to price and flexibility, and the realisation that I mainly use Google services. I do still have an appreciation for Apple’s products however and I understand their motivations. Apple’s business model is not about box shifting, it’s about being at the centre of the digital home through a range of connected products all offering the best possible customer experience.

At a more practical level, if you’re content running iOS 6 on your iPhone 4 then my advice is to stick with what you have. If you are tempted by iOS 7 then just be aware of the consequences of running bleeding edge software on three year old hardware.

Advertisements

What Innovation?

Apple reinvents the phone

I was having a discussion with an old friend who declared that there has been no innovation in mobile devices for years now. I immediately took exception to this claim and set my mind to disproving his assertion.

There is no disputing that Apple “reinvented the phone” in 2007 when they launched the original iPhone to an expectant world. I’ll never forget the looks of joy and amazement when I first demonstrated the iPhone’s touch screen interface and clever pinch and zoom gestures.

Let’s not forget how tired and utilitarian other ‘smart’ phones of the time were!

2007 Smartphones

Apple’s early dominance in the smartphone market has been successfully challenged by Google’s Android operating system and the countless slab clones churned out by Far Eastern manufacturers, but do any of them truly innovate?

What have we seen in mobile phone design in the last six years which could be considered innovative? We’ve had different form factors, sizes, colours and storage capacities, but the fundamental iPhone design concept has hardly changed.

Certainly display technology has improved, with more vibrant colours and pixel densities higher than the human eye can distinguish, but that’s evolution not innovation.

Processor power has increased, the latest smartphones boasting quad-core CPUs with dazzling performance, but this is standard Moore’s Law territory.

Camera technology has gradually improved, with manufacturers attempting to out-gun each other in the megapixel arms race. Fundamentally though it’s still a digital camera on a phone.

Mobile apps are the emperor’s new clothes, but this is just a trendy new name for what we used to call ‘computer programs’ or software.

A few new features have appeared like voice recognition, Near Field Communication (NFC) and wireless inductive charging, but these technologies have been around for years and are just being retro-fitted to mobile devices.

The sad truth though is that there hasn’t been any innovation since the original iPhone. Yes there have been gimmicks and incremental improvements, but the iPhone’s simple touch screen design and user interface has remained largely unchanged and unbettered.

Unless Apple regains the ability to surprise and delight with the unveiling of their 7th generation iPhone later on today, I’ll have to concede that my friend is right.

Please don’t leave us in 2007.

Macworld 2007 Teaser

Google Android power saving tips

battery

It’s a common complaint (or misconception?) that Android devices are power hungry, and some people claim not to manage a full working day from their smartphone.

By my reckoning default system settings and apps are often configured to showcase capabilities, rather than optimise usage and resources for individual needs. With a few minor tweaks you can reduce overall power consumption and in some cases gain hours extra battery life.

First of all I hope it goes without saying that you should switch off connectivity features that you’re not actively using. You wouldn’t leave a light on at home all day, and in the same way being conscientious about managing Wi-Fi and Bluetooth connections can make a big difference to the power consumption of your device.

I don’t generally use Wi-Fi when I’m away from home, so I use an event driven task manager (Locale) to automatically switch Wi-Fi off for me when I leave my home geo-fence.

For when you do use Wi-Fi, check that you’re using these settings:

Settings > Wi-Fi > Advanced > Network notification > OFF

Settings > Wi-Fi > Advanced > Wi-Fi optimisation > ON

Most people rarely (if ever) use the NFC or Android Beam feature, so don’t leave it switched on permanently:

Settings > Wireless & Networks > More > NFC > OFF

If like me you travel on public transport then your device will frequently leave cellular network coverage. When this happens it will scan frequency ranges for available operators and consume significant battery resources in doing so. Below are some tricks that help to minimise this.

Unless I travel abroad I spend all my time on my home cellular network, so I manually select my mobile operator to prevent unnecessary registration attempts:

Settings > More > Mobile networks > Network operators > Search networks > manually select your mobile network operator

I also lock my device to use WCDMA (3G) only so it doesn’t try scanning the GSM (2G) bands. This is a bit extreme, but if you want to do this use the Android Field Test menu:

Go into the Phone app and tap in this code: *#*#4636#*#*

You will be presented with a ‘Testing’ screen. Tap on ‘Phone information’, scroll down to ‘Set preferred network type:’ and select WCDMA only.

This network settings change will remain until you next power-cycle your device.

Sound and display settings can also make an appreciable difference if you spend a lot of time tapping away on your device. Since haptic feedback uses a tiny vibration motor, switching it off altogether can save precious battery power. Using a static image for your background instead of a fancy ‘live’ wallpaper also saves CPU cycles.

Settings > Sound > System > Dial-pad touch tones > OFF

Settings > Sound > System > Touch sounds > OFF

Settings > Sound > System > Screen lock sounds > OFF

Settings > Sound > System > Vibrate on touch > OFF

Settings > Display > Brightness > Automatic

Settings > Display > Wallpaper > choose a static wallpaper

GPS and location lookups are a big cause of battery drain. If you only want to know your location when you actually need it, switch off Google’s location tracking and the location feature of any other apps you have installed:

Apps > Google Settings > Location > Location History > OFF

Apps > Twitter > Settings > Location > OFF

Popular apps like Play Store and Twitter usually default to synchronising data in the background. If you’re only interested in checking for updates when you open an app, switch off notifications and background usage:

Apps > Play Store > Settings > Notifications > OFF

Apps > Play Store > Settings > Auto-update apps > OFF

Settings > Accounts > Google > disable any data synchronisation that you don’t use

Apps > Twitter > Settings > (account) > Sync data > OFF

Apps > Twitter > Settings > (account) > Notifications > OFF

Finally review your widgets and remove those that you don’t need. Often replacing a widget with a shortcut to the app is just as effective and much more power efficient.

By using all these optimised settings I easily manage 24 hours from my device, with no compromise in functionality of performance.

Corrupted SMS on Android

For a couple of weeks I have been receiving strangely composed SMS from a friend. It was as if two totally separate conversations were being mixed together into one long message.

At first I thought my friend might have been inebriated when he sent them (not unusual for him!) but as the messages continued to come through in this strange fashion I wondered if perhaps he was suffering from a split-personality.

Eventually I called him up and we compared messages. It turned out that the messages I was receiving on my Android device bore little resemblance to the messages he was sending. At first I thought this could be due to a corrupt SMS database on his iPhone, but after some searching I came across an Android bug report which perfectly described the issue I was experiencing:

» Issue 17769: Multipart SMS getting mixed up with old messages

The first post on this thread is dated June 2011, so the problem has been around for quite a while! I was pleased that I wasn’t alone in experiencing the issue, but what was the cause and how could I fix it?

Another Android bug report – Issue 28697 – had the answers:

Under certain circumstances, SMSDispatcher can incorrectly construct multi-part SMS messages, resulting in a corrupted message being dispatched to the applications. The corrupted message contains parts from previously received multi-part SMS messages instead of the corresponding parts from the newly received message.

In this more recent report, the author Ian Payton has identified the problem to be partly due to the way in which multi-part SMS is implemented, and partly to how Android processes multi-part messages.

If you want all the details then head on over to Ian’s detailed explanation, but the quick version is that an Android device can sometimes end up with orphaned SMS which it doesn’t know what to do with. These are usually the result of a message being retransmitted by the network because it did not receive a delivery acknowledgement from your device. This can occur if you are in patchy cellular coverage for example.

The SMS protocol uses an internal reference number to help reassemble a concatenated message, but this reference is not unique and if you have one or more of these orphaned messages on your device then in some circumstances the message parts can get mixed up to erroneously construct a new Frankenmessage!

This has the effect of your being presented with a message which is made up of some of the new message and some of an old message which has been hanging around in limbo on your device.

That’s all very well, but how can you fix this situation?

Ian has kindly written SMS Multi-Part Cleaner, a small Android application which finds all the orphaned SMS on your device and allows you to review and delete them manually. Alternatively you can download the very similar Orphaned Texts app from Google Play.

If you are prone to patchy cellular coverage and frequently receive long SMS then you be advised to run this application every few weeks to check for orphaned messages.

Gmail attachments not working?

I’m assuming you’ve found your way here because you too are having difficulty viewing image attachments in the Gmail app for Android?

I found that thumbnail previews of images were displaying fine, but when I tapped to view the full image the progress bar would scroll around indefinitely.

In my case the problem was caused by Android’s Download Manager, and the solution was relatively simple.

Go into your Android Settings screen, select Apps, swipe to the ALL tab and scroll down to Download Manager.

Tap on Download Manager and then Clear data.

Download Manager

Exit the settings, go back into Gmail and hopefully you should now find that attachments are working again.

iPhone 5

An industry insider told me that sales of Samsung’s Galaxy S III sky-rocketed the day after Apple’s big reveal of the iPhone 5. Evidently potential customers were holding off their upgrades until they had seen the new product, but what they saw disappointed.

I probably shouldn’t be admitting this, but I have already used the iPhone 5 and I was underwhelmed too. iPhone has become the safe (even boring?) option, something you would confidently give to your Mum and Dad. Apple’s runaway success has become the de facto smartphone, but the commercial imperative not to alienate their mainstream customer base has stifled innovation.

The original popularity of iOS (then iPhone OS) was due to its perfect blend of technology, form and function. Often it wasn’t possible to customise something to your liking, but that was by design and the intention was to keep things deliberately simple.

I look at iOS 6 and wonder where Steve Jobs’ painstaking obsession with simplicity has gone. I never expected CEO Tim Cook to share the same ethos, but since Jobs had apparently described Sir Jonathan Ive as being his “spiritual partner” there was a hope that he would carry forward Jobs’ legacy. It’s likely however that Ive’s control only extends as far as the hardware design, not the operating system, which is the responsibility of Scott Forstall.

Watching the official iPhone 5 promo video, it’s hard not to be impressed by Apple’s manufacturing techniques and the obvious attention that has gone into the hardware design (like crystalline diamond-cut chamfers!), but it doesn’t detract from the hard truth that to the average customer the new iPhone just doesn’t seem all that different.

With each new iPhone Apple usually succeeds in generating enough excitement and desire to persuade existing customers to follow the natural upgrade path, but they also lose some customers to Android – and they rarely return. I don’t know anyone (including myself) who has switched to Android and then gone back to an iPhone. Once you’ve broken away from the closed iPhone ecosystem it feels quite liberating to have the freedom of open services and a wide range of devices.

Conversely with each evolution of the Android platform the gap has been closing and arguably the Android 4.1 ‘Jellybean’ release has leapfrogged iOS by delivering a simple intuitive user interface and powerful features – much like the original iOS.

Samsung are seizing the opportunity to capitalise on the apathy surrounding iPhone 5 with a marketing campaign directly comparing their two flagship products:

Apple fanbois have responded with their own parody advert, but when the best they have to brag about is ‘fits all pockets’ and ‘elastic bounce back’ (the subject of Apple’s recent patent dispute with Samsung), it doesn’t bode well.

It’s certainly not all doom and gloom for Apple. They will of course sell iPhone 5 by the millions, but the shine is starting to fade.

I do have an answer to their predicament. Apple needs another product with which to dazzle and showcase their technical excellence and suppressed innovation.

Dear Tim, how about you add a new model to the iPhone range? Call it the ‘iPhone X’, pack it with enough fancy gizmos and new technology to satisfy the Android crowd and demonstrate what the biggest company in the world can really do.

Android 4.0 turns GET into POST

After upgrading to Android 4.0 ‘Ice Cream Sandwich‘ I found that some of my existing apps weren’t working as expected.

On deeper investigation I discovered the culprit. When installed on devices running ICS the apps made HTTP POST requests when they were programmed to be GET requests.

It appears that Google have subtly changed the working of the java.net.HttpURLConnection class – without telling anyone!

The Android package reference documentation has this little gem tucked away in the class overview notes:

HTTP Methods

HttpURLConnection uses the GET method by default. It will use POST if setDoOutput(true) has been called. Other HTTP methods (OPTIONSHEADPUTDELETE and TRACE) can be used with setRequestMethod(String).

My now non-functional Android apps did indeed call setDoOutput, but in Android releases prior to 4.0 this did not result in the HTTP method being changed from a GET to a POST.

Even explicitly setting setRequestMethod("GET") does not fix the problem. Basically if you don’t want your app to POST, you must not call setDoOutput.

The apps have not changed, there is nothing referencing this change in the API Differences Report, but the behaviour is definitely different in Android 4.0.

Could this be what’s behind the flurry of Android Market app updates for ICS-related fixes?