Cogitas Blog:
Musings on developing Android apps,
machine learning and misc tech stuff.

The analytics checklist: what to measure and look for

Filed under: google android — March 27, 2015

When you launch an app or update, you often hope to get new users and/or more revenue. Google Play Developer Console keeps track of those metrics for you, but whether you see numbers you like or dislike, you don’t know much about what drives them.

Analytics, which I’m using in the general sense of collecting data on usage and errors, can help you understand both the pain points and the users of your app, allowing you to focus on removing roadblocks and serving your users’ needs better. This will, in turn, increase your users’ satisfaction, leading to higher ratings and new users, as well as higher revenue per user.

Google Analytics, specifically, comes with an Android SDK and the web interface is already known to many business users, making it a great tool to implement your analytics strategy. There is a whole section on the android developer website taking you around its features. It’s a great product that gives you rich “out of the box” data on your users.

Putting aside the implementation details for a minute, let’s focus on what to measure and look for…

Identify functional problems

  • Crashes – If you don’t already, regularly check the reported Exceptions and ANRs in Google Play Developer Console.

  • Caught Exceptions - Some exceptions are expected but you should still know about them, because they may indicate a latent issue with your app.

  • Communication with servers – Background syncing is vital to delivering a fast, smooth, efficient app. How long do your server calls take? What percentage of your calls end in an IO Exception or a response time of more than 10 seconds? What percentage of your users are on wifi, 4G, 3G and 2G? How often do specific exceptions related to your local caching and server sync happen, for example SQLExceptions?

  • Location, location, location – For exceptions that you catch, do they happen specifically for a given time zone or language? Android is the most popular mobile platform in the world today so you can’t assume that your users live in your country and speak your language.

  • Search – Do users search for what you expect them to? Do they make spelling mistakes in their queries that appropriate suggestions could minimise?


Delivering an Android app for a large established non-tech company: lessons learned

Filed under: google android — July 8, 2014

The last year or so, I’ve been the lead developer for the Android mobile team at British Airways. I was brought on board to help deliver the newly designed app, which we shipped on time on 21st May 2014.

British Airways is a company with a large IT department but, when I joined, very little Android expertise. I think quite a few other Android developers may find themselves in a similar situation, so, hopefully, sharing my lessons learned will benefit others.

Disclaimer: this blog post is my opinion only and doesn’t necessarily reflect the opinion of my employer or colleagues. Blah blah, you know the legal blurb.

Lesson 1: It’s important to evangelise about Android up and down the business ladder


What’s your password strategy?

Filed under: google android, web — March 10, 2013

Not a week goes by without a high profile online service getting cracked (most recently, Evernote). Yet, thanks to smartphones and faster connections, cloud services are so compelling that many of us have come to rely on them. So what’s your password strategy?

Firstly, yes, we know, we should never use the same password twice. Many people do it but it’s bad… The problem is, how do you remember all your passwords?

A plethora of services have appeared, to help you store your passwords on a cloud server somewhere. Services such as 1Password store securely all your passwords on their servers and you access them with the 1 password. Mmm, what if they get cracked? Is a server really secure?

Then, you have the option of offline storage in a little black book. It’s fine if you are mostly desk based and have a secure storage area (like a safe).

Most people use a strategy in between. For example, they will use variations on a memorable word, so their passwords between services are technically different but not very dissimilar (for example, it may be “MonkeyT” on Twitter and “MonkeyF” on Facebook).

Another method, used by many self proclaimed geeks, is to mentally apply an algorithm to words. For example, you may replace “o” with “8″, capitalise every third letter and so on. For “converting” your password across different services, you may, for example, add the 3rd, 6th and 7th letter of the service, in the 2nd, 8th and 6th position of your basic memorable word. How complex it gets depends on how logical you are, mostly, but I know some individuals who have developed this to a fairly high level of sophistication.

Inspired by the method above, I designed an Android app called SafePass. The app lets you enter 3 words (or short phrases)  and generates a safe password for you. By safe password, I mean something that looks random, with small and big caps and digits. The way it works is simple: the 2nd word is used as a key to encrypt 1st word (AES Encryption), and then 3rd word is used as a key to encrypt the result of 1st encryption. The app has no internet permission so you know your generate password doesn’t get sent off somewhere to a server.

OK, you may say, but I still need to remember loads of words? As the app uses 3 words, you have a variety of options: you can use always the same first 2 words and change the third word to be based on the service you are creating the password for.  If you want to be a little bit clever, you can also change the order in which you enter the words (as this will change the generated password). Other options include remembering sentences, not words – this works particularly well if you remember a funny sentence. Your Facebook memorable words could be ‘My boss’ ‘is on’ ‘Facebook’ (this will serves as a handy reminder to yourself to think twice before posting compromising pictures of you!).

The app costs only £0.99 (= US$1.48) and there is a free 14 days SafePass demo available. It requires no permission of any kind, and it works on Android 4+ whatever the screen size.

There are other apps out there, I encourage you to try them all and assess them in terms of security, both in terms of “Should I trust the app publisher” and “Does it rely on a system whose safety could be breached by hackers?”.

Lastly, protect your loved ones, particularly those who are less aware of online dangers. If you have an elderly parent using a variety of online delivery services for example, do advise them on how to choose a password and tricks to remember it.

HTC android.process.core has stopped, 2013 bug

Filed under: google android — January 4, 2013

HTC users have been plagued with a bug since 1st January, if their device is updated to the new version of HTC (with Android 4.1.1).

The bug is that the android.process.core procress constantly crashes.

The bug happens for users with sync’ed contacts, ie pretty much all users, and it was reported a few minutes after midnight on new year’s eve. The cause of the bug seems to be some issues with date formatting: users have reported stack traces that include the date “20130229″, which of course doesn’t exist as 2013 isn’t a leap year.

HTC has offered a fix at

A temporary solution which has worked for me is detailed below. I’m going for this temporary solution at the moment because I want to wait for HTC to deliver the updated Contacts Storage app to my device, mostly to see how long it will take them to do so.

1) Settings -> date and time -> unselect “automatic date & time”
2) on same screen, set the date to a day in dec 2012.
3) go back to home screen
4) wait 5 minutes
5) Settings -> date and time -> select “automatic date & time” so device date goes back to today

Pick of the week links for programmers

Filed under: programming

Getting started with data science – advice from Hilary Mason from Bitly for those interested in data science. In a nutshell, “DO IT”.

Mapping with d3 library – a tutorial showing how to make a modest map from scratch using D3 and TopoJSON (by d3’s Mike Bostock).

Make learning your resolution for 2013 – a roundup of a few online courses of interest to programmers.

Mnemonic major system – a mnemonic technique used to aid in memorizing numbers, but associating a consonant sound to each digit then using them to create words. For example, “meteor” has consonants M, T and R, which stand for 3, 1 and 4.

#code2012 visualisation – a visualisation of programming languages used by developpers in 2012, data taken from the #code2012 Twitter tag. So far, javascript is in the lead, followed by java, as in 2011. Globally, the top 10 remains broadly unchanged, except for Scala that scrapped it to #10 (from #13 in 2011) and bash that lost 2 places, from #9 to #11.

Java neural network framework – Neuroph is a Java library (Apache 2.0 license) to develop neural architectures. It also comes with a GUI neural network editor.

Regular Expression for UK postcodes – very useful resource if you need to match UK postcodes! I have actually amended it slightly in the project I am working on, because users do not always provide a space between the 2 sections of the postcode, particularly on mobile devices where typing is still a bit slow. So I have changed the space in the middle of the expression to ( )?. Also, in my project, I have added P to list of possible 3rd letter (see comments on blog post regarding N1P postcodes).

Pick of the week links for programmers

Filed under: programming — December 28, 2012

What will programming look like in 2020? – an interesting thread with various programmers speculating on what programming will look like in a few years from now.

Daydream: Interactive Screen Savers in Android 4.2 – Daniel Sandler takes us through a new Android 4.2 feature called Daydream, with code example.


Pick of the week links for programmers

Filed under: programming — December 22, 2012

Gun Deaths vs. Gun Ownership visualisation – this blog article explains how the author used Wikipedia and R to create graphs that could answer the question “is there a correlation between gun ownership and gun deaths”. With R code and source data files.

Data mining conferences – a list of data mining conferences for 2013.


Pick of the week links for Google Android users

Filed under: google android — December 21, 2012

Magazines in Google Play store in the UK – yes, magazines are now available in the Google Play store. Choose wisely as some subs are more expensive then their counterparts if you go to the magazine’s website (example: .Net magazine)

BBC to up its game for Android’s users – BBC’s head of iPlayer, Daniel Danker, answers questions about the state of BBC’s iPlayer app for Android and what he has in store for the future.

Apple v Samsung: Judge rejects Apple plea for sales ban – the interesting bit about this article isn’t so much the main topic but is that Apple agreed licensing terms with HTC last month to end their patent war. Tech companies focusing again on improving user experience rather than fighting in Court can only be a good thing for users.

SMS spam coming to Android – in a nutshell, if you receive a SMS telling you that you can get a popular game for free instead of paying for it, don’t believe it. And of course, what is valid for email spam (nude photos emails and so on) is valid for SMS spam. Stay safe.

Speak to unlock smartphone – Lenovo has announced a new Android smartphone with new “speak to unlock” technology.

Using Android Library projects

Filed under: google android — December 19, 2012

Android library projects are very useful in a number of situations. For example, you are a company providing a SDK that includes UI elements, such as Facebook (Facebook SDK), or you create a UI widget that developers can drop in into their projects, such as a TimePicker that looks like a wheel (Android wheel).

As a developer, you may also want to use Android library projects to easily create several spin offs of the same app. The obvious example is when you create free and paid apps.


Pick of the week links for entrepreneurs

Filed under: entrepreneurs — December 17, 2012

Y Combinator Start up library – a reference page to get back to if you’re either working for a startup or thinking of starting one…

RevMob launches in the US – RevMob is an advertising network for the mobile sector that claims the highest CPMs in the industry (I have not tried it so do not endorse it, just passing on information)


Older Posts »