7 iOS Tips to Help you Avoid Common Memory Mistakes

Apple Memory Management

There is no argument to be had about whether ARC is beneficial. The reduction of boiler-plate memory code, is alone, enough to justify its use. The elimination of issues resulting from objects being incorrectly retained or released also saves developers untold hours debugging weird memory management issues.

However much ARC has simplified matters, issues will still arise if memory management is not adequately understood. These issues commonly fall into two categories, retain cycles and accessing released memory.

Continue reading

Updating the Samsung Galaxy S2 to Jelly Bean

UPDATE: 6th Jan 2013, The Cyanogen team are now building CM 10.1 /Jelly Bean 4.2 in their nightlies. They have also improved their documentation. I recommend using their site for update instructions over this guide.

In a bid to get Google Now goodness on my Samsung Galaxy S2 I have decided to upgrade to Android 4 Jelly Bean . Waiting for Samsung to update anything is about as productive as watching grass grow, so I have opted to install a Cyanogen rom.

CyanogenMod 10 Jelly Bean I have been using Cyanogen roms since their early days with good results. They provide the latest tech, are stable, add a bunch of efficiency improvements and come with some nice UI extras (but luckily not the bloated overlayers that manufacturers sometimes add). I am currently using an old ICS nightly build which has been so good I never felt the need to switch to the release version when it became available.

If you want to update your phone to the latest Jelly Bean goodness read on… be warned, by doing so, you risk bricking you device, voiding your warranty etc etc. Continue reading

Nexus 7 Tablet Charging Woes

ASUS Nexus 7 2012

Lately, I have been plugging in an ASUS Nexus 7 Android tablet to charge and while it has powered up, its battery has continued to sit at a very sad 0%.

We have a few test gadgets lying around at work and they can get a little neglected, with their batteries sitting empty for longer than is healthy. I had presumed that this had taken its toll on the Nexus and prematurely killed its battery.

Continue reading

Adding Older Simulators to XCode

The straight-forward way to add additional Simulators to XCode is via Preferences. XCode 4.5.1 comes preloaded with iPhone/iPad Simulators for SDK 6.0 and the option to download 5.0 and 5.1.

Xcode Downloads List

However other versions are getting little love. If you need to support clients on older versions of iOS this is a problem. Luckily, adding older Simulators to XCode is easy.

NOTE: XCode 4.5 has dropped armv6 support so can no longer be used to develop for iOS <4.3. Adding armv6 simulators such as iOS 4.2 to XCode 4.5 will have no effect, they will simply be ignored.

Continue reading

Insect Eye Inspired Mini Projector

Fraunhofer Insect-Eye Inspired Mini Projector
Today I found myself discussing the likelihood of mini projectors replacing physical screens on mobile phones.

Imagine if you had a tiny mobile which allowed you to:

  • project onto any surface including a notebook, bag, wall, whiteboard
  • change screen resolution and size according to your needs, for example the size of a novel when reading or the size of a wall when watching wide-screen movies
  • interact directly with the projected images Continue reading

Hybrid Displays for Tablets – Surely this Wait Must End?

It’s been two years since I made my loud, bold proclamation that I would shun all tablets until I could have a hybrid display.

You see, in my mind, the perfect tablet would combine the rich, bright vibrant media consumption capabilities of AMOLED screens with the kind-on-the-eyes reading experience provided by something like Kindle’s eInk. Continue reading

Java Assertions

Overview

Java assertions are wonderful things which help define the desired behaviour of an application. For example the following assertion states that the variable number should be non-negative:

 assert ( number >= 0) 

Unlike exceptions, which can be caught and handled gracefully, an assertion failure indicates that something has gone terribly wrong within the application and causes it to exit. Thus, in the above example, if assertions are switched on and number is equal to -5 the application will crash. Continue reading

Perfect Design?

As time goes on in the life of a software project, the codebase grows and complexity increases.  This along with hacky bug fixes, tacked on functionality and quick improvements can turn a project into a large multi-functional, inter-meshed mess.

Needles to say this makes feature tracking, versioning, bug isolation and maintenance difficult and limits code reuse potential. While it is best if planning and good design practices protect a project from growing into such a state, the need for rapid development is sometimes more pressing than the need to get design details perfect. Continue reading

Desktop eBook Readers Still a Disappointment

Mobile eBook Readers

Stanza on the iPhone

About two years ago I tried Stanza on my iPhone and was pleasantly surprised to find myself devouring tons of classic novels. These days I use Android and read with Aldiko (it is similar to Stanza) for its features and fancy interface and fbReader when I need a clean interface that renders eBooks at lightning speed.

Continue reading