Monthly Archive for May, 2007

Google does offline

Maybe I’m a little late with my news, but I fired up Google Reader just then and noticed the following.

Google Reader offline

It’s a Firefox extension called Google Gears. After installing it opened Google Reader and I had the option to go into offline mode. I clicked yes and saw the following dialog.

Reader offline

Gmail is probably next. I remember Calacanis making a comment on the Gilmor Gang ages ago when Zimbra released its offline product that it won’t be long before Google does it and nobody uses Zimbra anymore. Well it seems like that day is coming soon. Well, maybe not the .

It seems that Google wants this to become a de-facto standard for offline apps. As points out, has an excellent post and interview about the product.

Smartphones and keypads

I’ve been in Seattle for almost 2 weeks now and something just dawned on me. I have a pre-paid T-Mobile SIM and I went to configure voicemail. The voicemail dialin number for T-Mobile is published as 1-805-MESSAGE. Right, so how do I figure out the letter-number mappings on my E61i?


There seems to be a widespread use of here in the USA but with the increasing popularity of smartphones with full keyboards, I wonder how companies that use them will adapt.

Perhaps I should have waited for an iPhone after all. It seems like the best of both worlds.


Jaiku hotness

I signed up for a few weeks ago after all the hype from et al, and didn’t really get in to it. It seemed like a pain to SMS a number, or to constantly have the Twitter web page open to make posts. I gave up after the IM bot was a bit unreliable for me. Then I noticed post from Hugh. I checked out the and found that there is a Nokia Series 60 client. Having an N73 at the time promptly tweaked my interest. Now I’m hooked.

This has to be one of the smoothest S60 application experiences I’ve had. So much so, that it was one of the factors in choosing to go with the E61i over a Blackberry equivalent (that, along with 802.11 and 3G, which the 8800 doesn’t have).

Screenshots of the installer and the app are below.

Jaiku 1

Jaiku 4

Jaiku 7

Jaiku 8

Jaiku 10

Another thing I like is the ability to add other feeds (RSS and Atom) to your stream. What floored me today was a response from Jaiku on a question about the S60 client I asked in a .

Jaiku support

Great work guys.

Google Reader for the Wii

I just noticed a link to on digg, fired up my Wii and checked it out.

Google Wiider

I have to say it’s bloody fantastic! I’ve attempted to use the standard Google Reader in my Wii before and it worked perfectly fine, although a little to unwieldy to use daily. The “native” news reader for the Wii is still excellent but I cannot add any news sources apart from the built-in AP feed.

I always retreat to my laptop in the morning to read my news. It looks like I may not have to do that anymore.

Newforms widget attributes

The on the django newforms library is rather incomplete at the moment. Any functionality outside of the documentation has to be gleaned from the , the , and google.

I got frustrated that every CharField form element would be rendered on the page with exactly the same size, regardless of what max_length I gave them. I didn’t want to have to render each element by hand, so I looked for and found what I was after. Every newforms widget can be “instantiated” (is instantiated even a concept in python?) with a dictionary of attributes which map to html attributes when rendered.

So for a CharField, I would create my forms subclass like so:

from django import newforms as forms
from django.newforms import widgets

class TestForm(forms.Form):
    subject = forms.CharField(label="Subject",
                                        widget=widgets.TextInput({'size': 45, 'bogus': 500}),

Rendering this form gives the following output:

<input bogus="500" name="subject" maxlength="45" type="text" id="id_subject" size="45" />

Note the “bogus” attribute. This was to test whether django would simply render any attribute in the dictionary, regardless of validity.

Casino Royale product placement overload

I watched (no not the Peter Sellers ) for the first time a few nights ago and was extremely frustrated. I couldn’t help but focus on the product placement overload. Here’s my observations:

  • Every car was a car from the Ford motor group. I only ever saw Ford, Land Rover, Jaguar, Lincoln, and of course Aston Martin cars.
  • Every piece of consumer electronics was a Sony. I saw Vaio laptops, Sony Ericsson phones, Sony Bluray players, LCDs, etc.
  • He says at one point, “I wear an Omega watch”, or something to that effect.

It verged on the ridiculous.

It seems is if there are way too many competing interests on the James Bond franchise, that the artistic integrity of any movie made suffers.

My favourite part in the movie was when Bond ran through the wall in one of the opening sequences. So ridiculous it was that I went to create an , only to discover that there were .

Django AMF service

I made a in Jaiku a few days ago that said the following,

Django amf service, once installed is a beauty to behold

Well the key part for me was “once installed”. I’ll attempt to explain how I got it working here.

is a middleware service for Django that allows you create AMF web services. Action Message Format is the web services format typically used by Flex applications by using the . Being able to support remoting web services in Django goes a long way to being able to integrate Flex applications with Django.

Download Django AMF from and install to your site-packages using Then add ‘amf.django.middleware.AMFMiddleware’ to the MIDDLEWARE_CLASSES list in your settings. The key thing now is that you need to add the following to your settings,

AMF_GATEWAY_PATH = '/gateway/'
AMF_LOG_FILE = 'log/amf.txt'

AMF_GATEWAY_PATH tells django that anything accessed under this path is an AMF service and gets passed into the middleware. e.g. my contains

(r'^/gateway/flashtest/test', 'my_app.views.flashtest'),

and that’s it!

I’m using the in Flex to talk to this service as follows:

var service:RemoteService = new RemoteService();
service.gatewayUrl = "http://localhost:8000/gateway/"
service.destination = "flashtest"
var token:AsyncToken = service.test(test_variable1, test_variable2);

Note that I’ve left the result handlers and assignment of the variables out for brevity, but hopefully you get the picture. The function flashtest gets called and the Flex data types get mapped to python data types as described .

It’s simplicity in design really is beautiful to behold.

Read War and Peace by RSS

My wife me to a fantastic service called . It has to be one of the best uses of RSS I’ve ever seen. I subscribed to a daily War and Peace feed, which gives me a personalised feed url so I can track my where I’m up to. The only problem is that, being War and Peace, and being split into 675 parts, it would take almost 2 years to read! Fortunately you can ask for the next part to be added into the feed straight away.

DailyLit War and Peace

Unsurprisingly is currently the third most popular author on the site. Great service.

HD-DVD encryption key bandwagon

I hate to jump on the bandwagon here, but I just searched for the key in Google with the following result:

HD-DVD encryption key Google

It seems that we shouldn’t mess with the .

Update: has its say:

I was hoping for an though.

Recycling news

One of the sometimes annoying things about subscribing to lots of technology RSS feeds is that you see the same story come up over and over again. I see it a lot with and . I find it hard to believe that the readership of these gadget sites are entirely different, yet I see a lot of recycled news (Engadget seems to get the scoop more often than not).

I found the ugly mug of that photo supposedly taken with an iPhone come up far too often for my liking recently, so I did a quick browse of my feeds to see where I’d seen it. Screenshot below.

iPhone photo

That’s a lot of recycled news for a not so interesting story.