May 20

Galaxy Nexus ICS 4.0.4 – Regaining su privileges

About ten days ago I finally received the OTA update for my Galaxy Nexus that would take it from 4.0.2 to 4.0.4. Of course it didn’t show up at a convenient time despite my numerous checkin requests over the previous two weeks, I was on the motorway, using Google’s Navigation app. Ten minutes later however I was in a stationary traffic jam so I elected to apply the update. All went well and the navigation app was back and running inside ten minutes.

However today I realised that in the process I’d lost my root access. I’d downloaded a leaked copy of the “S Voice” application that is installed on the new S3 – apparently it works very well on the Galaxy Nexus – but found I couldn’t drop the file in the system applications folder. A few tests showed that (a) su was out of date and (b) although the binary was still in place, I wasn’t getting root access. So, here are the steps I took to regain root:

Warning!

These are the steps I performed, having already rooted my phone previously. Your mileage may differ!
  • Download the latest Clockwork Mod recovery image (visit this page)
  • Download the latest copy of su from Superuser (visit this page)
  • Turn off the phone, then turn in on in bootloader mode by holding down both volume buttons and then pressing the power button.
  • Connect the phone to your computer with a USB cable.
  • Fire up Clockworkmod Recovery:
fastboot boot recovery-clockwork-5.5.0.2-maguro.img
  • Clockwork Recovery starts. Scroll down to ‘mounts and storage’ and click the power button.
  • Scroll down to the line ‘mount system’ (if it isn’t at the top of the list) and click the power button. /system is now mounted as a read/write volume.
  • Upload the new copy of su I downloaded earlier using the following shell command:
adb push su /system/bin
  • Set the file permissions using the following shell command:
adb shell chmod 06755 /system/bin/su
  • Reboot the phone:
adb reboot

Hey Presto! Root access returned.

Warning!

Disclaimer: If you’re not prepared to face the prospect of completely bricking your phone, don’t root it. I am not responsible for any problems you may encounter or create for yourself if following the steps above!

In the next day or two I’ll post some notes on how I installed S Voice. For those who are interested, you can find a link to the S Voice application posted at xda developers. You’ll need root first.

Mar 27

Google I/O 2012 Verdict: Must Do Better.

Last year’s Google I/O conference sold out in under 60 minutes. This year, with many more tickets available, it sold out in just 28 (according to my browser) or 20 (if you read Vic Gundotra’s Google+ post here). Google could have sold every ticket at least three times over last year. Or, if you just count the tickets not sold to previous attendees – at least ten times over.

In any event many people were not going to get a ticket for this year. I was fortunate enough to go last year (thanks to eBay) and after reading this year’s registration FAQ was hopeful that demand from scalpers would be damped down by the price rise and non-transferability of tickets making re-selling a big gamble. Add in the fact that this year there was no opportunity for previous attendees to pre-register and you have 5000 tickets available instead of the 1500 or so. What’s to go wrong?

Well first there was a hint of a ‘coding competition’. This didn’t come to fruition, all you needed was to be able to code your way through creating a Google+ account and a Google Wallet account, and then sit pressing F5 (or Command-R) until registration opened.

Next there was the concept of ‘first come, first served’. This is a silly statement to make as we’ve already established that demand far outstrips supply. Registration opens and immediately there were, apparently, over 6000 registration attempts. Per second. So first come, first served has no meaning in this context. All it does is allow Google to say that they had no favourites. However I’m already reading posts that say the ‘searching for tickets’ page simply polled the server periodically. This could still be a first come first served system, but from the outside it doesn’t look that way.

The fact that my browser didn’t start reporting the conference as sold out for 28 minutes indicates what? Simply that the system in place was, just like last year, woefully under-sized for its task – it just didn’t crash horribly like last year.

So is that the end to the PR own goal that Google I/O registration has turned in to? No. The first eBay listing was up just 39 minutes after registration opened with a general admission ticket up for sale at the bargain price of $2000 and as I write now there are two sold tickets and one cancelled sale.

I’m sure Google won’t be reading this blog post any time soon but I have some simple and easy to implement suggestions that, while they won’t cure the demand for Google I/O, can be used to minimise the bad press.

1. Ask people to pre-register. Have a pre-registration window and once the closing date has gone, that’s it. Only those that have pre-registered can then apply for a ticket. You now know the level of interest and can think about how you are going to make tickets available. Or taking up an option on more space.

2. No transfers allowed. Period. If you can’t transfer your ticket, you can’t sell it. Allow people to return their ticket for a full refund (feel free to sting them for a small admin charge if you like).

3. Run a ballot for returned tickets. This is where pre-registration comes in again. When a ticket is returned, draw a name from those remaining. Give them the ticket.

4. Stop giving stuff away. Even if you stop the scalpers you won’t stop people registering who have no interest in developing on the back of your products, because of the free stuff you hand out. Make it clear at registration: no freebies to be had at this conference. Instead, allow all registered attendees and speakers to purchase one item that will be useful in their job at a reduced cost.

Having been to Google I/O once I found it to be a fantastic experience and one I will never forget. After this year, though, I also expect never to go to again, because the odds of getting a ticket are use too long. At least the £2500 saved by not going (plus another week’s fees from my current client) allows me to look at purchasing more development hardware and take a few days off working on somebody else’s software to work on my own.

I’m not asking Google to change their core ticket sales process. With demand far exceeding supply, every system is as bad as the next and all Google can do is to reduce demand or increase supply. I won’t be watching live streamed presentations – I can watch them at my leisure on YouTube – but I am thinking about organising an Android hackathon with a group of friends.

Mar 24

Dear Samsung… you’ll never be Apple

Samsung is a company that has successfully renewed itself in recent years. If I want a good quality and feature packed TV I look at Samsung, not Sony. And If I want a good looking, up-to-date Android device then they have some fantastic hardware that performs well and looks good.

At Google I/O I got my hands on the Galaxy Tab, which is about to receive an Ice Cream Sandwich upgrade. This was when I first started to realise that Samsung have become, compared to the rest of the large tech companies, more Apple-like. They have a distinct brand name for their devices – Galaxy – and their hardware feels good and looks good. I’ve had my Tab for nearly a year now and when I’m not developing software it tends to be my go-to device for email, web browsing and media consumption.

Unfortunately Samsung dropped the ball a bit on the Galaxy Tab. It’s never good to hand out a new device to 5,000 tech-heads because if there is a flaw – they will find it. The Galaxy Tab’s main flaw was its inability to transfer files over the USB cable using the company’s Kies software – or indeed any other software. The other major irritation was that you could only use their own mains charger to recharge it. Finally there was the ‘not Apple’ dock connection which has the same dimensions as the iPod/iPhone dock (but with different keying). So you needed to carry around an extra charger and an extra cable.

At the start of December last year I finally upgraded my two year old Nexus One, buying the Samsung Galaxy Nexus as a replacement. The longer I have this phone, the more I like it. Yes it is a little on the large side for some, but the user experience is fantastic and the phone feels solid and very well put together.

However Samsung have yet again dropped the ball, hampering it with the same MTP transfer protocol that the Galaxy Tab has got, only making a 16Gb model available in Europe, and refusing to give it a microSD card slot. Amusingly this confuses some web sites that will push large microSD cards as ‘extras also purchased’ alongside the Galaxy Nexus (I’m looking at You, Amazon).

However the worst part for me is that Samsung failed to release any accessories for the phone when they made the phone available. No cases. No USB adaptors. No batteries. No car cradle.

The cradle particularly annoys me. Now first I should explain that there is a cradle available, but only in the USA and for the Verizon version of the phone which is a slightly different shape. It won’t take the GSM version of the phone, so Samsung are losing sales of their cradle across all of Europe and beyond. I’ve been using my phone as my satnav since the day Google released Navigation and it works really well. But at the moment I’m driving up to 400 miles a week and I can’t put my satnav in my line of sight when I’m driving. That’s right. Here we are near the end of March (16 weeks after launch), with a phone that was released in mid-November, and still no car cradle. I ordered it from Amazon in mid-December when the shipping date was January 2nd. The shipping date for my order is currently shown as Feb 17th – April 13th. The battery I ordered at the same time showed up in the middle of February, just two months after it was ordered.

Samsung probably won’t be able to attain the kudos that still comes with an Apple product (even as Apple starts to show signs of losing their famous attention to the whole experience) but they could, with application, gain a strong reputation for their products. But only if they release their products when everything is ready. And the cloud services they are rumoured to be building? Please, Samsung. You really aren’t Apple. If you want loyal customers then release good hardware with high quality software – and accessories available from day one. And keep upgrading the software on your phones. Don’t expect any loyalty if you leave us out in the cold on accessories or software updates.

Feb 04

The Joy of JSF

Android has been taking a back seat recently (although that is about to change) as the new Formula One season looms and I’ve been comprehensively overhauling the fantasy game web site I’ve been running for over ten years, fantasy-f1.net.

Last year I spent three months removing the Struts MVC layer, restructuring the underlying code and then implementing a new JSF 1.2 user interface. Once you’ve got used to the quirks of the JSF lifecycle its a relatively frictionless way to create well-structured and component-based web sites. There’s no need to write tag libraries any more – just develop your component in situ and then extract it into its own XHTML fragment and – hey presto – you have a re-usable component.

Last year’s effort was very plain, being a bare minimum effort to produce a working web site. This year I threw away all the HTML from last year and wrote a completely fresh user interface. The experience was very rewarding – the site was developed rapidly and with little pain – and backed up my opinion of JSF as a rapid way of creating or re-skinning web sites. 

Working for the last nine months on a high-profile broadcast media web site has also had the beneficial effect of reinforcing and extending my CSS skills, making the process of creating a consistent layout and colour scheme much quicker. Having used a few RichFaces components last year I’m now also writing my own rich client-side functionality using JQuery – RichFaces is not a good fit for this kind of site.

So with a newly skinned web site I’m hoping it will have its best year yet in terms of the number of people who use it and how much they use it. Last year the site had 2.9 million page hits over the F1 season, this year I’m hoping to hit 5 million page hits and to pick up an extra 2000-3000 users.

Having nearly (but not quite) reached the end of this work the next step is to set up my new hosting environment and put out the next release of Audio Clock, before starting work on the next Android application on my list. Watch this space…

Dec 14

Social Apps on Android

At this year’s Devoxx, Google’s Tim Bray gave a thought-provoking keynote which covered several areas but what stood out for me were his comments around writing applications for Android. In summary his message was “give software away and sell a service” and “make it social”.

Giving software away and selling a service is a whole other discussion which I intend to address separately. With regards to making it social, this is fine provided that there is a significant social angle to your application.

Anything we do that involves a social element – playing sport, going out to the theatre or cinema, even attending an evening class – these are all areas where applications can justifiably build in a social element beyond the now-standard “share via” context menu. A fantasy football application that makes it easy to share your team with friends, or a study helper application that lets you interact directly with others on your course through existing social networks. Invariably this means giving the application access to your address book, which is fine provided that the benefit to doing so outweighs whatever risks you perceive.

I am very cautious when installing and updating software: what privileges are required by the application, how sensitive are they, are they central to the application’s purpose? Some cases in point:

Google Docs requires read access to my contacts. Now my sporadic use of Docs doesn’t really benefit from integration with my contacts list, but as the app publisher is Google, I don’t worry unduly about it. Likewise the PayPal application. As a payment processor, PayPal must maintain a high degree of trust with its users, so the fact that it requires access to my contacts does not worry me from a data security angle. LauncherPro is a whole new launcher application which by definition requires access to almost everything you can think of. But as a widely installed application it has built up a level of trust with its users, and this in turn allows me to trust it.

Moving on I have a couple of apps where I have decided that the benefits of the apps outweigh the fact that they require access to my contacts – Any.DO and Catch – both note taking and (potentially) collaboration tools. I use them almost exclusively as personal to-do lists and so far they have done nothing to violate the trust I have placed in them.

However I am starting to see applications tagged as ‘social’ where their core function is anything but.

Exhibit ‘A’ is RingDroid. Having used RingDroid on my Nexus One I attempted to install it onto my Galaxy Nexus. It wasn’t available (as open source I expect an update will appear eventually), but Ringdroid (Social Edition) is. And it requires not just read access to my contacts, but write access too. The primary purpose of Ringdroid is to let you extract part of an audio file and convert it into a ringtone for your phone. Social networking is not a core feature of this – period. Ringdroid (Social Edition) will not be making an appearance on my phone – ever.

Exhibit ‘B’ is Barcode Scanner which not only requires read and write access to my contacts, but also access to my browser history. I’m scanning a barcode and my primary purpose is to look up prices and reviews. This does not need access to my address book or browser history.

Android allows us to develop separately installable components with their own permissions, so these edge cases can still be made available – but as an option, rather than as part of the core download. I will continue to refuse to install any application requiring address book access where that access is not core to the application’s purpose.

Older posts «