Kai Hendry's other blog archives
After spending a week in France completely dependent on my modded Nexus One for my Internet use, I have gained some insights into the future of mobile computing.
Besides niggles with the Google N1 device itself, the real "mobile Web" party poopers are unsurprisingly the network operators.
Screen blanks out on a call and I can't get the hang up button, therefore charged for unused call time. 
Device should detect voice mail and hangup to avoid expense. I can't be the only one who does not care for voice mail.
Does not rotate on the home screen. I'm concluding that Android's screen rotation is quite a UI mistake, compared to say Apple's design.
Can't figure out how to make incoming SMSes vibrate. After searching I find this seems to be a general gripe about Android 2.1. Oh, found the answer http://twitter.com/kaihendry/status/10142417024
The answer swipe is a bit awkward. Is there a button I can press instead I wonder.
I forgot my USB cable. So it made it impossible to share some new music from my Swedish friends. There must be an easier way to peer to peer.
Same goes for side loading applications. It's not obvious how to share apps and that just sucks. There are plenty of cases where you want to peer since operators suck.
The photo picker for example with the Buzz integrated Google maps does not work. Crap. The buzz uploader does not give any progress status.
Progress status and resumable uploads is a must for crappy mobile connections.
How long was a call? How much was a call? No idea. This MUST be fixed. I must know how much I am spending.
Acquiring location and policy control is a bit all over the place on Android. For example the news & weather widget has it's own little preference for "Use my location". I need an easy central policy control. I also want to control granularity and see transaction logs, since I don't want the weather man to know exactly where I am. I want to feel in control.
I just wanted to mention, is it just me or is the http://touch.facebook.com/ seriously broken? When people comment on pictures I can't seem to followup on the notifications. I mean, this is not hard people.
Finally, I have a 715GBP T-mobile bill to figure out after this week. I kept getting redirected to http://www.t-zones.co.uk if I enabled roaming so Internet did not even work. I also had something like 50 Euro Internet booster messages. I find this very confusing as I did call up T-mobile UK before departing to France to inform them I was travelling and to make sure what the price per meg was. They said over the phone it was 1.50GBP.
So did I do 400M of traffic from my phone from France? NO, Internet did not
work even. I had to use 2EUR an hour WIFI from UCPA which was also pitifully
unreliable and only worked in one room. 
Avoid T-mobile. Make careful preparations if you need the Internet like myself. I think I will buy a PAYG Orange or SFR SIM next time in France.
I am also saddened to see no operator create some sort of Android app to help track expenses. It need not be a Java app. Just a usable Web one, unlike https://www.t-mobile.co.uk/service/your-account on a mobile.
I'm at MWC2010 in Barcelona representing the Web platform. 
You can find me at 2A120 at the Aplix booth (my employers)
And you can find me on the LiMo stand 8B135 demonstrating on device Javascript debugging on:
- Monday 11-13
- Tuesday 13-15
- Wednesday 11-13 & 15-19
Otherwise follow kaihendry or email me at hendry@aplix.co.jp to meetup.
Latest tips
Using BONDI WIDLs and widlproc, how many code examples does each widl have?
hendry@x61 html$ sh code-count.sh
appconfig.widlprocxml 2
applauncher.widlprocxml 3
bondi.widlprocxml 2
calendar.widlprocxml 18
camera.widlprocxml 3
commlog.widlprocxml 0
contact.widlprocxml 19
devicestatus.widlprocxml 12
filesystem.widlprocxml 39
gallery.widlprocxml 19
geolocation.widlprocxml 19
messaging.widlprocxml 78
pim.widlprocxml 0
task.widlprocxml 14
telephony.widlprocxml 11
ui.widlprocxml 22
Now the script using xmlstarlet:
for i in *.widlprocxml
do
CODE=$(xmlstarlet el $i | grep Code | sort | uniq)
TOTAL=0
for c in $CODE
do
NUM=$(xmlstarlet sel -t -v "count(//$c)" $i)
TOTAL=$(expr $TOTAL + $NUM)
done
echo $i $TOTAL
done
The nasty CODE part is neccessary as code examples can be unfortunately included at different levels, for example:
Definitions/Module/Interface/Operation/descriptive/Code
Definitions/Module/Interface/descriptive/Code
Use xmlstarlet el telephony.widlprocxml to examine the XML structure.
- http://www.ksplice.com
- http://www.redbend.com
- http://blog.garbe.us/2008/02/08/01_Static_linking
- Worse is better general Mercurial binary diff
- Rsync is also a great tool for binary updates
- http://patent-warrior.blogspot.com/2009/10/red-bend-v-google-chrome-no-damages.html
- http://dev.chromium.org/developers/design-documents/software-updates-courgette
Despite what GNU and opensource projects think, statically built apps are the way to go.
Security benefits of statically built binaries
Shared libraries are often touted as being good for security. No need to rebuild, you just replace the binary and everything linked to say an updated libpng.so gets the security fix.
Likewise one security problem in a shared library makes all the binaries dependent on it vulnerable.
The good security benefit of statically built libararies is that you elimate the library path. So you can't hack binaries like so:
LD_PRELOAD=/usr/lib/libpng12vulnerable.so /usr/bin/firefox
Or perhaps a binary with setuid right escalation.
Also since statically built binaries only compile in the object code they actually use from the library, the surface area of the attack is greatly reduced.
As we've seen in the last couple of months, updates to libjpeg and libpng can also involve ABI changes, meaning complete rebuilds in any case.
Please read the stali FAQ for more argumentation.
Android in the United Kingdom
So I bought the new http://www.google.com/phone, the Nexus One at 365.21GBP. Deep breath.
I'm still on the last couple of months of my T-mobile G1's 18 month contract. Nonetheless, I've sent my G1 to my sister in Germany and hopefully she will get some use out of it.
I plan to end my contract with T-mobile and go on some PAYG plan, hopefully
with
Vodafone.
I bet you ending my T-mobile contract and porting my number will be an ordeal.

Talk about ordeals... the device took 16days to arrive, because Google's
fulfillment house in Indiana accidentally routed the N1 to Hong Kong. Google's
"Android support" customer services is absolutely abysmal. I contacted them
three times via Google checkout to tell them they have screwed up the package
routing. I basically only got through to them via an old University friend who
now works at Google. Shame. 
So the Nexus One(N1)! What do I think about it? It feels like a great upgrade
over the G1. The 1Ghz Snapdragon
amazed me awhile back on the Toshiba
TG01, so at last I have it!
However the battery performance seems on par with the G1. Sigh.
Despite a looming Nexus One update I though I'd rather be in control and hence I unlocked my Nexus One and "voided my warranty". I think it's a bit poor that I've voided my warrany because I want different software on it. I don't "void the warranty" if I put Linux on my Thinkpad, now do I?
Cyanogen's beta4 N1 mod is pretty wild. The USB
tethering feature is a must for me and it works far better than
Android 3G wifi tethering. Just turn it on, and ifconfig -a shows
usb0. dhclient usb0 and you're surfing on 3G. Why do operators make it so
hard?!
Since I'm into HTML5, I'm greatly enjoying using http://gmail.com and Calendar in the browser. It works amazingly well. I'm going to try avoid using the native Gmail client, though the native's 4 day background syncs are hard to beat.
I'm a little worried about the quality of the 3G
connection. The 3G scare
stories don't
help, though tbh I think the connection is the same as the G1. It's just that
since the phone is so much faster, the failings of UK mobile connectivity are
even more clear to see. 
You can upgrade your phone, but can you upgrade your connectivity? Well since my phone is unlocked I'll have to do some mobile speed testing again.
UPDATE: Checkout http://www.nytimes.com/2010/01/13/technology/companies/13google.html
I also heard Google is giving out N1s at developer meets. Ah great, they know how to satify paying customers.
Whilst passing through Waterloo station, I usually buy some fresh fruit juice from the Marks&Spencers (M&S) store. This time I noticed my bottle had some sort of 2d barcode on it.
I spent a few uncomfortable minutes trying and trying again to scan the code
with the "Barcode Scanner" application on my Android G1. Didn't work. 
Later I found out that this a Data Matrix code and not a QR code. ARGH!
Unsurprisingly 'Data Matrix' support is 'alpha' quality according to the ZXing library powering the Barcode application on the UK T-mobile Android G1.
WAP is CRAP
In the small print it says WAP enabled mobiles only. Eh? Have I gone back in time 8 years? To add insult to injury there is a link to the T&Cs: http://www.mands.mobi/ftg worryingly using a http://en.wikipedia.org/wiki/DotMobi address!
http://www.mands.mobi reveals some suspects to this crime: Incentivated
Welcome to Your M&S
Our new corporate mobile internet site is coming soon. Please check back later
Site built using Incentivated's WAPsite Publisher
OMG. How piss poor M&S. 
2d codes suck too

Regular barcodes are OK in my book, because they have a human readable 13 digit fall back (036000291452) running along the bottom. I remember when 'Checkout dollies' (as we call them in the South West), typed in that that number in case the barcode failed to read.
Where is the fall back to 2d codes??
As a 2d-code fallback I suggest clearly printing a short (hopefully meaningful)
URL e.g. m&s.co.uk/oj (12 characters) and markup your content in
HTML5.




