Living with Android – Review of my HTC Magic

HTC Magic

So I bought a new phone, an HTC Magic, two or three of months ago. I think it’s fair to say that so some small degree, it’s changed my life.

Not in any kind of deep and meaningful way, of course – it’s just a phone. But definitely made a difference.

It’s an Android phone, which means it’s based on Google’s Android operating system. But I don’t want to talk about that, as there’s a whole bunch of info out there on Android and how cool/not cool it is (delete as appropriate). I wanted to share a few observations on how it’s enhanced some aspects of my life.

First up, I feel I should admit (for context) that I’ve never owned a smartphone before. I mean, come on. Window$ Mobile? What kind of self-respecting Linux user would lower themselves to having one of those? Ditto for iPhone. I only own one Apple product, and I won that in a raffle.*

And what other options were out there that didn’t cost the Earth and had some kind of serious userbase?** So I was coming to the smartphone scene from a phone that made phone calls, sent text messages and had a camera. That’s it.

So what’s the Magic done to change things for me?

First up, transparent syncing.

I’ve synced my contacts with my Google Mail account and my calendar with Google Calendar. As I was already a user of both these services, it was a pretty obvious step.

It was a bit of a pain when I first got the thing, copying all my contacts from my old phone. I couldn’t find a better way, so I just typed them over from my old phone into gmail. You need to tell your phone about your gmail account, but from there on in, your phone sees contacts you add to gmail, and gmail sees new contacts in your phone. Doesn’t sound that impressive, but I tried to get the same thing with my old Nokia phone – it cost me money and would only sync when I commanded it to be so. Sometimes, not even then. The Android sync stuff is all free, too.

Calendar works much the same way, the difference being that the only calendaring service I use is GCal anyway, so that bit was… well, it was magic.

Next, the Market.

The Market. It’s where you go to get applications. Some of those applications really suck – I’m not going to shout anything by name, but I’m loving the optimism of the author who’s trying to sell a calculator for $4.99 – I wish him/her the very best of luck!

However – there are plenty that are just plain awesome. The market has a rating and user comment system built in, which I’ve found to be a pretty good litmus test for whether an app is worth looking at. Choose your poison (in my humble opinion, as always)…

  • You want a comprehensively featured mobile reader for the Atom/RSS feeds in your Google reader? Try Newsrob.
  • For those times you just gotta tell the world what you’re having for lunch? You won’t go far wrong with Twidroid.
  • How about one of those task managers that reminds you to feed your cat? Astrid‘s pretty good.
  • Need something to drown out the voices? There’s a neat little app.
  • You want to show off to your friends? Wikitude, Google’s Sky Map, the Barcode Scanner, even the compass app have all raised sighs of appreciation, perhaps even mild envy, in my (admittedly geeky) circles.
  • Games? There’s plenty. I’m not really a mobile gaming person, but I wanted to see what it could do when I first got it, so I had a little fun with the Archipelago demo, Amageddon (Missile Attack clone), Labyrinth (one of those tilty silver ball maze things) and Robo Defence Free. I also tried the Chess app, which confirmed that yes, I still suck at Chess, only now so bad that even my phone can kick my ass. Dammit.

There’s loads more videos of Android apps in action here.

So how much did this little lot, plus the various other apps I’ve downloaded cost me? Nothing at all. Gratis. There’s plenty of paid-for apps on there but to be honest, I’ve yet to find a reason to let the moths out of my wallet.

The browser

is awesome, for a mobile device. Sure, it has some limitations. I don’t think it supports Flash yet and there’s some types of data it doesn’t recognise that it maybe should (News feeds being one), but it renders pretty much everything I’ve thrown it at, and does a pretty good job with most stuff in both portrait and landscape modes. It’s fast, too.

D. I. Y.

You can download some bits and pieces and write your own apps in Java*** for free. Which probably explains those apps that suck.

Whilst I’ve heard good things, I must admit that I haven’t done this yet myself, but one day I will find a few hours when I genuinely have nothing better to do than play with mobile development and have a go. Being able to just have a go if you feel like it is worth plus points in my book.

And finally, the keyboard.

That’s right, the touch screen keyboard thing. (I know that’s a G1 in the vid, but you get the idea.) To be fair, we’ve had a love-hate relationship, but as time goes on, I’m getting pretty good at tapping away in a reasonably error-free fashion.

The keyboard also has some neat features, like the way it switches to landscape when you turn the phone horizontally (if you have big fat fingers like me, the landscape mode with its slightly larger keys is your friend), and the way the layout changes depending on which app you happen to be in. Well, actually on this last point, although the layout clearly does change depending on the app, sometimes the app developers perhaps haven’t really thought it through.

For example, the number of times I’ve been caught out by the ‘return’ key (a. k. a. the Send My Tweet button) being present on the Twidroid app just under the ‘delete’ key (a. k. a. the Remove My Stupid Tweet button). This in spite of the fact that there’s a button to send your message just under to the text input box, safely out of the way. Add my big lumps of thumbs into the mix…

Oh, how we laughed.

Some stuff sucks.

Of course it does – everybody falls the first time.

First up – the camera. Utterly horrible, to the point of unusable in anything other than the bright outdoors. Not really surprising, the lens on the thing is about the size of a pinhead. Seems to me that it doesn’t matter how many megapixels you got if you can only get three photons at a time onto the damn sensor. And no, that’s not an excuse to ridicule me for my lack of understanding of optics, the nature of time or wave-particle duality, OK?

Next, I’ve not found an easy way to subscribe to RSS/Atom feeds in the browser. Really annoying. The browser just prints the text content of the XML document.

Finally, the battery life isn’t great – I put mine on charge every night, as I can’t get through 48 hours without completely running out of power. That said, with the WiFi, GPS and processing that’s going on, I personally think it’s no mean feat to get that much longevity out of such a tiny little rechargeable battery.

So how did it change my life?

Well, that syncing stuff gives me a tiny bit less work to do every time I want to use the stuff that’s on my phone on my computer and vice versa. Those tiny bits add up though and I’m getting very used to it very quickly.

The apps, browser and keyboard actually give me a lot of the power I have on my computer on the move. I’m finding that on rare occasions when I don’t have my phone with me (that’d be because I forgot to charge it the night before…), I miss it – I can’t use that short time when the other guy’s heading to the bar to see what’s up on twitter, read a news item or two, that kind of thing. Sad, I know, but don’t tell me you’ve never done it.

The D. I. Y. thing – OK, you got me, I just think it’s cool that you can have a go if you want to.

Would I recommend it to a friend?

Hell yes.

I’ve got plenty of friends who have iPhones, and my take on the differences is this. Sure, the iPhone’s got a few extra pinches of pixie dust that make it that little bit nicer to use (spotting phone numbers and giving you a ‘dial’ button works better, the swishy sliding photo gallery is neat and the transitions are slightly nicer)… but it also costs more – at time of writing, Carphone Warehouse says £34.95/month for 24 months, plus at least £87.11 for a 3GS.

My Vodafone HTC magic cost me £35/month for 18 months, plus zero, zilch, nada for the phone, 3 months or so ago. Oh, and my Magic is smaller than an iPhone, too. Which is nice.

I hear that Android is catching up in those pesky polish areas, too with the HTC Hero – I’m sure Mike over at will be blogging extensively, as well as gloating at me about his new Hero – when it finally turns up.

If further evidence were needed, my other half is a little jealous of my phone and has her heart set on getting one when her contract is up. (Although I think she might have ulterior motives – to be able to put tasks on my to-do list from afar…)

The Google Connection

It’s perhaps worth noting that a lot of the stuff I’ve pointed out on here as good involves Google somehow. A lot of that involves pushing data into the Cloud – specifically Google’s. Personally, I don’t have a particular problem with that – after all, Google’s motto is Don’t Be Evil, right?

If you want to share data between your various devices, you need to put it somewhere. As far as I can tell, the phone works just fine without an internet connection, so it’s not like you’re out of luck if Google’s having technical problems… but… if pushing your personal data, your contacts, calendar info, etc. into Google’s infrastructure makes you feel uncomfortable, you might want to give it some thought. I don’t know whether there’s apps to sync with alternative sources, please feel free to drop me a comment if you’ve used any other options.

That’s all, folks!

Well, that went on a lot longer than I expected. I’ll just do a quick review. 5 minute job, I thought. If you made it this far without getting bored and moving on, thanks for sticking around!

Please do drop me a comment if you’ve found an awesome app I haven’t mentioned. Probably better if it’s not your own app… Even better if you can tell me how you subscribe to an RSS/Atom feed in the Android browser…


* I’m not actually fanatical about the free-as-in-speech stuff, companies are there to make money right? In all fairness, my iPod pico (or whatever it’s called) is a great little bit of kit for listening to podcasts on the move. [back to context]

** To be honest, there might have been other options out there. I wasn’t really paying a great deal of attention ’til Android came along. [back to context]

*** It’s Java source with special APIs which is what matters, but it’s actually compiled to a different bytecode for the Dalvic VM, a VM which is optimised for mobile devices. [back to D. I. Y.]

Upgrade Over

…and it looks like survived!

The upgrade process described on the WordPress site is a bit manual and nervewracking, but (for me, at least) it went like a treat. And WordPress 2.8.3 sure beats 2.3.whateverIwasonbefore for look, feel and features.

Maybe now I can get that permalinks thing sorted. I also hope that the upgrade should resolve the issue where the blog is cut short in RSS feeds, but that remains to be seen.

WordPress Upgrade Time

Ok, I’ve been running on the version of WordPress that my web hosting provider provided when I signed up, which was already quite out of date at the time.

Hey, I’ve been busy!

But now, it’s time. Time to do the backups, time to upgrade to the latest version, and it’s a big jump. So if this blog is never heard from again, at least you’ll know why.

Au revoir…

Apache Axis 1.4 NoClassDefFoundError Woes

This one took me a while to figure out.

I’m a beginner with the Apache Axis web services platform on the Apache Tomcat 5.5.x container and I’m using version 1.4, so I was delighted when I found it to be so easy to get into. I used this tutorial – the second page is a step-by-step deployment for a simple service.

All was going well, even when I made updates to the classes behind the service. Redeploying the service behaved perfectly. Until… I deployed an update and everything broke.

I mean everything broke. I couldn’t even list the available services, nor view a WSDL.  Proper broken. Everything. In the Tomcat logs, all I could see was a NoClassDefFoundError (which means that the class you’re trying to use in your code isn’t available to the JVM).

Which made absolutely no sense. All the classes making up the service were clearly present. I had made a change to the internal logic of one of the classes, but nothing that introduced anything outside the classes present in any JRE.

So I reverted to the previous version and everything was fine again. Which was nice, but less than ideal.

So I went back to basics – what had I changed, as that must be the cause of the problem. In fact, I’d made a socket port number configurable… and in the process, I was trying open a connection to a port north of 65535, which would naturally cause an IllegalArgumentException to be thrown, and a large but silent explosion in my code. So I’m an idiot – I still deserve a half-decent exception. It was only a prototype anyway…

Anyway, having spotted that, I fixed the problem, redeployed and everything was peachy.

The moral of the story… if you’re getting a problem that looks like this, it might just be that your code isn’t able to start up properly – which is very much hidden by a NoClassDefFoundError.

I guess you get this kind of error because Axis relies on reflection for a lot of its magic, but I didn’t find it particularly helpful, and the zillion-call-deep stacktrace didn’t help much either. I still don’t know where the real root cause exception got squirrelled away to, if anywhere.

That said, I’m liking Axis in the main, so I’ll be persevering – as well and trying out other platforms for this brand of magic.

One Down

Yep, I passed my first MSc module, fairly comfortably as it turns out. The results were posted up to an adminstrative system based on Peoplesoft when they were ratified. I’m pretty chuffed to have passed, to be honest.

The information and adminstrative facilities Manchester makes available online are great for me, being a little too far away to actually head along to thing when I feel like it. I’m also very lazy, so having to phone up tends to put me off too. I’ll go into some more about what’s available to help you avoid actual human contact in a later post as I think as it’s pretty relevant if you’re considering doing this kind of study.

So what now? Well, I’ve completed the certification I mentioned in my last post, which is one of the reasons I’ve not posted in a few weeks. That had pros and cons as as I expect you get with any professional certification, but overall I thought it was a very positive experience.

I note that in the weeks running up to my MSc exam and then to my certification, the sun was blazing and everyone else seemed to having a right old time. Within 60 minutes of my return home after my last exam, the rain was pelting down and it’s just been kinda nasty since. If only I could de-rationalise a little so that I could hold a divine entity of some description responsible, I’d feel much better about it.

In what’s left of the summer, I’m reading “Artificial Intelligence – A Modern Approach”, by Russell and Norvig, because I’m still considering trying to get some AI modules under my belt, and because it’s an interesting subject anyway. I’m also reading “Head First Design Patterns” by Freeman, Freeman, Bates and Sierra, because I want to know more about this approach to software design than I do.

If I have time, then continuing my dabbling with enterprise and semantic technologies will likely be the order of the day – and I might get round to updating this WP installation and blogging on a slightly more frequent basis.


Waiting for results…

My grades for the Semi Structured Data… module will hopefully be out next week. I’m fairly confident, as my coursework marks were safely in the pass territory, so it’s not bothering me too much. If I wasn’t confident, I’d probably be a nervous wreck by now.

I have an exam voucher for the Sun Certified Web Component Developer (with free retake!) which expires at the end of July, so I’ve picked up studying for that again. I was studying for it before the MSc year started in 2008, so I hope I’ve just got time to pick it up and pass before the voucher expires.

Once (I’ve passed | the voucher has expired)* I’ll be making my choices for next year’s MSc modules, and then working hard to prepare. If you’re interested in seeing the kind of things that are on offer, the module options get posted on the Manchester CS Website.

Right. Now I have Chapter 13 of Head First Servlets and JSP – Filters and Wrappers to review.

(By the way – if you happen to be a servlets and JSP programmer but you haven’t done any formal training, I can thoroughly recommend that book whether you want to do the cert or not – the servlet specification provides loads of useful facilities that you can completely miss out on if you haven’t had the guided tour. It’s co-authored by Kathy Sierra, so you know it’s going to be a great tutorial resource. I’m getting through quite a few books of late, I might blog up my thoughts on them now and again.)

* delete as appropriate

Unsheffield 2009 Briefing…

unsheffield 2009

I’m volunteering live blogging and photography services at unsheffield 2009, an ‘unconference’ themed Future Users of Cool Technology over the coming weekend.

Unfortunately, the briefing tonight didn’t finish until late, and I’ve been downloading and editing my photos under Linux for the first time – which explains the late hour, and my heavy eyelids. There’ll be more to come…

There’ll be plenty of blogging going on from the event, and my half decent photos from tonight are on my flickr page if anyone wants to have a look.

If you’re coming to unsheffield, I’ll probably see you there! If not, there will be loads of news and info on the site as the event progresses.


Ubuntu 9.04 Teething Troubles


This seems to be a fairly Dell-specific problem, but there just might be a fix, as detailed in this ubuntuforums thread.

Long story short: you need to update your menu.lst file (mine’s in /boot/grub/menu.lst), and append the entries

i8042.reset i8042.nomux i8042.nopnp i8042.noloop

to the line beginning with the word kernel for your current kernel version. So far, it seems to be working… but that’s only a couple of boots later.

There’s more detail in the thread I mentioned, and if anyone wants any more detailed instructions feel free leave me a comment with your question and I’ll try and help.

Original Post:

I made the classic mistake of changing more than one variable at a time – installed Ubuntu 9.04 over my 8.10 installation, and went 64-bit – and now my laptop doesn’t recognise its keyboard and trackpad on some boots.

On top of that, I had that thing happen when you quickly log off, shut the laptop lid, and put it away… but some darned dialog popped up as it shut down, keeping my laptop powered up all night. Unfortunately I left it with the exhaust kinda blocked, so it was toasty by the time I picked it up the following morning. Probably didn’t help.

Maybe there’s a setting or something I can use to override this behaviour, but as an aside…

Dear Mr. Ubuntu (/Windows/whatever), if I’ve hit shutdown and then shut the laptop lid or done nothing else for an hour, it’d be great if the thing would just shut down by default, regardless of how many things want to pop up and clamour for my attention.

As opposed to toasting my laptop and potentially burning my house down. Thanks.

Anyway now on boot, my keyboard works just fine through the POST and the GRUB menu. By the time I’ve got to a login prompt though, I can’t type or do pointery things anymore.


I’ve seen a couple of other folks referring to the same problem with 9.04 on forums, so for now it looks like it’s a bug. My money’s on a timing issue during boot.

If anyone else is having the same problem, I have a couple of things to try that have made my system just about usable for now.

  • Stick a CD in your drive – I put the 9.04 32-bit CD in and switched from 90% bad boots to maybe 70% good boots. Maybe it changes the timing of events during boot or something.
  • Hit ESC just after the POST – this gives you the option of selecting recovery mode from the GRUB menu. If your input devices work in the recovery menu, select normal boot. This shortened the boot time to find out if it was going to boot OK.

Roll on a fix!

15 120ths of an MSc – Hopefully…

That’s it, first module all done.

Unless I failed the exam, of course, in which case I will be very sheepishly blogging to that effect and about my resit sometime over summer!

The weather in the UK has been absolutely gorgeous this last week whilst I’ve been trying to revise, giving me plenty of excuses to take breaks and get out of the house. Not to mention sitting in the garden soaking up the sunshine with my laptop. It’s easy to forget how convenient my home wireless network is, for me the technology has gone from science fiction to taken for granted in no time.

The exam was two hours, on a computer-based system called abc, which I think has been developed by the University of Manchester. It’s pretty good to use, automatically saving your responses to text-area based and multiple choice questions. You can hop backwards and forwards, with a timer on screen letting you know how long you have left.

Now, it’s time to start thinking about what happens next year… liking the look of Grid Computing, Ontologies, Machine Learning. Which means lots of reading and studying over summer!

The Home Straight

…well the first home straight, anyway. I’ve been revising a few hours a week for the past month or so but now it’s a week to go until my first module exam and it’s time to kick it up a gear.

I’m told that the syllabus has changed this year, and that this is the first exam on a computer-based exam system… hmmmm. Multiple choice too. I know multiple choice is generally perceived as being an easy option, but I’ve found it can be a curse. You can’t get any marks for ‘the working’, and certainly with the kind of precise syntax and semantics that pervade IT and Computer Science subjects there’s plenty of scope for misleading and confusing options as answers.

I’m finding the revision exercise quite interesting – there were exercises, subtleties and corner-cases I pretty much missed during the course, probably because it was a frenzy of work to get the coursework and assessments done on time. Yesterday, it was the Element Declarations Consistent and Unique Particle Attribution constraints in W3C XML Schema. Tricky to visualise!

As far as the coursework goes, got most of the marks back now, just waiting on the last three or four. Pretty chuffed with the grades so far, sure shouldn’t do me any harm!

Anyway, booked a few days off work to revise before the exam on the 2nd…