Wednesday, June 17, 2009

An Update

So I have a baby. Joscelyn Eleanore was born two weeks ago, and is completely wonderful. And on Saturday Naomi, Joscelyn and myself are flying off to Canada so that the inlaws get to see their first grandchild. I'm really looking forward to it. Well, mostly. It'll probably be quite tiring - we're hiring a car and will be doing a huge amount of driving (around 3000 miles) so that we can see everyone Naomi wants to see. But it'll be fun.

My other baby (my seven year old laptop, Lazarus) is losing its memory. One of the memory slots decided to give up the ghost, so it now only has half a gig of RAM. One gig was already on the low side of comfortable, so now it's extremely frustrating to use. At least I'm running Linux on it and not Windows, since I generally find Windows likes to have around double the amount of RAM that Linux likes. It'd be a good excuse to put Lazarus in the grave one final time and get a nice, fast, new computer. But I can't afford a new computer and a new baby. Well, I could, but I just got a new 10-22mm lens for my camera and I want a new Line 6 box for my guitar, so I might just have to struggle on. Oh well, I'm in Canada for the next five weeks, so I don't have to worry about it at the moment.

Tuesday, April 14, 2009


I'm trying to write an Android game, but I've been rather addicted to playing KNetWalk, which is slowing me down somewhat. I'm getting fast at KNetWalk though - I just did the Very Hard level in 59 seconds without any penalties. I think I might give up now, although I reckon I could probably do it in 50 seconds if I was very lucky.

tinyurl No Longer Breaks My Security Model

At least, not on my Android phone. I've just released Check Redirect on the Android Market (for free, of course), which intercepts view intentions on links, and if the link is a tiny url of some sort (the list of intercepted hosts is configurable) it pops up a dialog letting you know where the link redirects to, and asks if you wish to follow the link.

And when I'm using Linux instead of my phone, I found an extension for firefox which does a similar thing. I can't remember what it was called though.

Monday, March 30, 2009

tiny.url Breaks My Security Model

Since using twitter, I've noticed a lot of people use services such as tiny.url or in order to shorten URLs. There's a problem with this though: I now have no idea what website I'm about to visit. If someone I trust has posted the link I'm reasonably likely to click on it, but for other people I tend to avoid these shortened links because I have no idea in advance what they are.

What is really needed is for the shortener service to show you what site you're about to visit first, so you can make a more informed decision about whether to visit the site or not. Hmm, maybe I should be sending this as a feature request to those sites instead of randomly blogging about it...

Wednesday, March 04, 2009

Android Reloaded

On Monday night I got home from the pub, and my phone announced that there was an update available, and would I be so kind as to allow it to update itself. I said, 'Yes, that would be lovely', and my G1 proceeded to show me a nice updating screen while it changed all its software around.

There's not much to see for it. The Android Market now tells you when anything you've installed has an update available, which is nice. Google Maps is now version 3, but I can't tell the difference. The biggest changes though, have to be memory usage and power consumption. Previously, after using my phone on and off during the day at work, the battery level would generally be down around 40% when I came home. However, the last two days have seen it around 60% instead, which is a great improvement. The other change is that before the update, my /data partition had around 10Mb free on it, while after the update it has around 30Mb free. I don't know how they've done that. Perhaps shifted some space from the /cache partition? I never bothered noting the free space on anything other than /data before.

Saturday, February 28, 2009

G1 Power Usage

After posting my last entry, I thought I'd elaborate on the G1's power usage. There's a useful little tool available on the Android Market called Watts, which logs the battery level and shows a graph of it. The image below is two screenshots from Watts.

The one on the left is the device's power usage last night, when I wasn't using the phone at all since I was asleep, but the phone was still checking my email and twitter regularly.

The one on the right was this afternoon, when I was watching the rugby at my parents', but also using my G1 a far amount for twittering, checking emails, texting, and looking up things like the words of 'God Save the Queen' and what a drop goal is.

As you can see, the standby life is pretty good, and you can probably get a good eight hours of reasonably intensive use out of the battery. Which is pretty poor, but I can live with it, since I don't usually use the phone that intensively.

Should I Buy A G1?

Since I've got myself a T-Mobile G1, I've had several people ask me if they too should get one. And the answer, as it often is, is: It depends.

If you want a phone with good battery life, this is definitely not the phone for you. If you have GPS and Wifi and 3G and all the bells and whistles turned on and you're using the phone constantly, you'll probably only get four or five hours of use out of it. I turn GPS and Wifi off and turn the screen brightness down (because even when it's turned right down it's pretty bright), and don't use it non-stop, just a fair bit of twittering and the odd bit of internet browsing and some texts and phone calls. And usually it's down to around 40% battery by the end of the day. Of course, it depends completely on how you use it. I usually plug the phone in at night so that it's fully charged in the morning. Last night I forgot to switch the charger on, and when I checked in the morning it had used less than 5% of the battery, so it's standby use is pretty good.

If you want a phone which was take videos, this isn't (yet) the phone for you. There are rumours of software upgrades on the way which will add this capability, but it isn't there yet.

If you want a phone with an on-screen keyboard, this also isn't (yet) the phone for you. It's apparently on the way though. An I don't understand why anyone would rather use an on-screen keyboard when you can use the G1's fantastic real keyboard. I didn't think I'd like using the keyboard much, but it works brilliantly, at least for my hands. The 'chin' on the phone gets only very slightly in the way. And my phone is a black one - I've heard the letters are hard to see on the white and bronze versions.

If you want a phone which doesn't force you to have a Google account, this isn't the phone for you. The first thing you have to do when you set up your phone is either enter your Google account details, or sign up for a new account. The phone is very tied into the Google way of doing things. This isn't that much of a problem for me - I'm not Googlephobic. Nor am I a Googlephile. Most of my email still goes through my own server, and there is software for the G1 which lets me read that email just fine. And I was starting to use Google calendar just before I got the G1, so it's quite nice that it is now synched up with the phone. Some people will find the Googleness of the phone to be a hindrance, but I find it works really smoothly, and is around three million times better than my previous Nokia when it comes to synchronization.

If you want something which is thin and stylish, this probably isn't the phone for you. It isn't huge, but it's certainly no iphone. It's not ugly either - personally I think it's really well designed and good looking. Again, it's up to the beholder and their eye.

If you want a phone with an incredibly flexible operating system, this is the phone for you. The Android OS is very well designed, and the way it operates is mostly very intuitive. And unlike Nokia phones, where it seems that once you have the phone, you won't get any new features until you buy a new phone, the T-Mobile say that the G1 will be actively updated with new versions of software.

If you want to write software for your phone (in Java), this is the phone for you. Writing Android software is very easy, and Linux is a first class operating system when it comes to their development tools. Some parts of the SDK aren't quite finished, but that's because Google hadn't got them 100% stable before releasing the phone, and thought it'd be better to release a stable incomplete SDK that a buggy complete SDK, and I think that's a good way for things to be.

If you want a phone which is exceptionally useful, this is the phone for you. There is already a huge amount of software available for it, and although there's a fair amount of rubbish, there's also loads of very useful stuff, and I'm finding the phone more and more indispensable.

If you want to be in on the ground floor with the mobile operating system of the future, this is the phone for you. I genuinely believe that Android is the way to go with mobile phones, and have no regrets about getting this phone. And I purposefully got a twelve month contract rather than anything longer, because I'm pretty sure that by this time next year there'll be Android phones out there which are ten times better than this one!

The phone's main negatives for me: poor battery life; not enough internal memory; sometimes a little sluggish going back to the home screen (I think it's probably garbage collecting); a few minor niggles with some of the core software (but at least I can branch the code and write a better version if I want to).

The phone's main positives for me: bright, high contrast, high definition screen; real keyboard; sensitive (capacitive) touch screen; well designed operating system; mostly well designed software; easy syncing with Google; infinite possibilities; easy to use; fun to write software for it.

Sunday, February 08, 2009

Android Fun

On Friday I got myself a nice shiny new T-Mobile G1. Also known (incorrectly) as the GooglePhone. It's pretty darn good. Well, unless you expect the battery to last the day when you're playing on it constantly because it's your new toy. I imagine that once I'm using it 'normally' instead of intensively, it won't be quite so bad. But I'd certainly say at the moment that the battery life is atrocious. Oh well, I was expecting that anyway. Onwards and upwards. It's otherwise a fantastic little device, and has enormous potential.

And it's easy to programme. I used to try to programme my Nokia phone using Symbian. But the number of hoops I had to jump through in order to get anything to work totally put me off, and I never got futher than writing a programme which said 'Hello' on the screen. (I guess 'Hello World' wouldn't have been much more effort, but by that time I'd had enough.) But programming Android is very easy. At first it was a little awkward, because on my six year old laptop (yes, six years old) the emulator was very slow, and used nearly all my computer's memory. But now I have a real phone I can plug the USB cable in and run and debug my programmes directly on the device. And from Linux too, which is pretty good.

I'm currently working on a little programme which will log sensor values to a file. Then I'll be able to plot them on a Google map and see how fast I was travelling and how hard I was accelerating or cornering. Not because I drive 'that way', but because I've always thought it would be interesting to log stuff like that, and now I have a device which can do it. So far I've just written a test programme which shows the values of the various sensors and moves sliders around, but it's been incredibly easy to do.

And just in case there's anyone reading this who wonders how I got the debugging to work in openSUSE 11.1, here's how. (Bear in mind that this is additional info to that which is in the SDK - it doesn't really make sense on its own). I created a file called 50-android.rules in /etc/udev/rules.d containing this line:

SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666", SYMLINK+="android_adb"

Then I chmodded it to 755, and, as root, ran 'adb kill-server' followed by 'adb start-server'. Then I ran 'adb devices' to see if the device showed up in the list. If it didn't I killed and restarted the server again until it did. (I don't know if I need to, or if I could just wait.)

After that, I was able to run and debug programmes from Eclipse directly on the device. Although I had to make sure that the manifest file had debuggable set to true, otherwise it didn't work.