Leaving Blogger

After only being here for a while, I'm moving over to my own domain and to WordPress.
Blogger lacks so many features, the main one being support for TrackBack's. I have moved over to my own domain as well, at chriswere.com It's been a very quick move, luckily wordpress has some support for importing blogger posts, although it looks like i'm stuck without any of the comments. I don't have time to write something to do it at the moment and probably won't be bothered in the future.
The only issue now is working out the best way to redirect subscribers to my blogger Atom feed. Blogger doesn't seem to give much control over it.

This is the last post on this blog, head on over to chriswere.com and subscribe to the feed over there.


Google taking on PayPal

It appears that Google will soon be talking on PayPal in the online transaction market according to techcrunch.com (article). Google have registered the "Google Payment Corporation" and googlewallet.com has been registered (although the whois entry doesn't look much like Google to me)
PayPal currently have over 72million users so it will be no easy task for Google. Also a large number of PayPal transactions would come off the back of Ebay - what service does Google currently offer that creates online transactions? Perhaps they have some further plans for Froogle in the making?... or will start charging for some of their beta services? Actually what is more likely is they will integrate some sort of payment engine into their adsense program along with a planned classified search system.

More links: Wall Street Journal, USA Today, John Battelle


Calling all Alcoholix

clockwerx has just launched alcoholix. It is powered by clockwerx's ingeniousness in conjunction with feedmap, multimap and needapub.com (cached)
So what's it do?
Simply enter an adress and it will come back with all the nearest pubs to your location, along with the nearest bloggers in your area!.... so now you can meet up with local bloggers at the local.
I think (not 100% sure) that it currently contains just South Australian pubs, but this can be easily rectified by going and adding the pubs in your local area.

Check it out.


Japanese blogging statistics

I have noticed the surprising (to me at least) number of FeedTagger users that come from non-english speaking backgrounds. At the very least it has forced me to make sure the next iteration of FeedTagger has all the mult-language encodings etc. all sorted out.
Anyway, Joi Ito has pointed to some very interesting statistics on blogging and overall Internet usage in Japan. These include:
  • 1 in 4 japanese women in their teens and 20's have a blog
  • 72.5% of people have heard of blogs, up from 39% last year.
  • 9.5% of Internet users use RSS Readers.
The actual presentation of these stats is available here.

I'm surprised that almost 10% of Internet users use RSS readers, purely because so many people I've spoken to that are fairly tech savvy haven't even heard of RSS... and 25% of women having their own blog is huge!
There is no doubt that RSS is here to stay and we are going to continue seeing huge growth, especially as increasing numbers of blogs are created. This growth will continue in places such as Japan and start building strong momentum over the coming 6-18months here in Australia.


Programmable search engine: Yubnub

This is seriously cool: Yubnub
It's like a command line that you can send commands to that perform all sorts of operations such as:
  • gim "metallica" - google image search for metallica pictures
  • ls - show all available commands
  • man xyz - show man page for command xyz
and one that is really fun is tts --voice=charles "hello sir, can i have a pale ale?"

The cool bit is anyone can make their own command and add it to the system so things like this have been added:
  • wikip metallica - find all wikipedia entries that mention metallica
  • ASCII metallica - generate a huge range of ascii art for the word metallica
  • phpfunction - return the manual page for a specific function
For a fair sized list check out the Yubnub golden eggs page.


White Stripes: Get behind me satan

The White Stripes have released another album "Get behind me satan" to help us through the winter months.
It's quite a change up from there previous rocking endeavours, but still mixing in Jack White's love of blues and skill with classic pop hooks.
They appear to already be touring the album as evident by this photo stream on flickr.

White Stripes on the front of Adelaide's street mag "DB"


MySQL and Python and Unicode

I have just wasted waaaay to much time (a day) going through the inner workings of unicode, mysql, python (and twisted) - to get something working I assumed would be simple.
I'm going to document it here so I never have to go through it alll again and hopefully help a few others out along the way. Python's unicode support is quite good. For an excellent intro check out End to end unicode web applications in Python.
It turns out my issue was with MySQL. The trick is that everything everywhere should be set to UTF8. The best way to test this is run:
which should result in something like:
character_set_client | utf8
character_set_connection | utf8
character_set_database | latin1
character_set_results | utf8
character_set_server | utf8
character_set_system | utf8

(having database set to latin1 seemed to be fine, but would be nice if it was utf8)

How can such a thing be achieved? I'm sure there's some settings that can be placed in my.cnf and/or startup to do the above, but I haven't found them yet (and #mysql wasn't a great help either)
My solution for now is to perform the following 3 queries when establishing a connection:
SET character_set_connection=utf8;

It is important to do this for all operations, inserts/selects/updates etc. I'll post a better solution when I track one down, but this works for the time being.

EDIT: With Python when establishing a database connection add the following flag: init_command='SET NAMES utf8'.
In addition set the following in MySQL's my.cnf:
default-character-set = utf8

That should fix pretty much everything to utf8 for nice i8n support :)


Future of news

Mass media is in for a shake-up over the next decade or so. As people become increasingly accustomed to finding relevant news stories on the Internet, traditonal media companies are really going to struggle.

I check posts from FeedTagger every morning, before reading any newspapers etc. and came across this story from an Adelaide website. Basically last night Adelaide police raided a poker tournament in a heavy handed fashion, despit the fact the tournament had been advertised for months, had separate qualifiers run in Sydney and Melbourne casino's etc.

Anway, it became immediately obvious from the adelaide bloggers who posted about the event, that the whole thing was a bit of a farce. What was immediately obvious though was the absolute poor investigative journalism by Adelaide's major news paper - The Advertiser. Their initial story indicated the journalist spent 5 minutes talking to a cop out the front of the raid and wandered off. The Advertiser partly redeemed itself by later giving a much improved account of events.

The story here is not really important. It's that I was able to find out about a news story that happened on my front door via local bloggers. These bloggers gave eye-witness accounts of what happened and linked to others who were there. In addition bloggers link to each other, getting the reader much closer to primary sources. Traditional media generally present an account of what happened, without linking to more detailed information or revealing their sources. This last point will be a huge determining factor, bringing larger audiences to online news mediums.


Yahoo mindset

via Jeremy:

Yahoo's research dpt has released Yahoo! Mindset. Using the web2 slider concept search results can be changed on the fly to indicate that you are "shopping" or doing "research". Good execution and interesting concept. This web2 r&d stuff is starting to get really exciting - does Google have anything this funky?


Lazy registration (with AJAX)

Below are my thoughts on a new method of performing user registration to an AJAX web application. In reality it could be applied to any application, but ties in nicely with the AJAX work I do. There's also a possibility that such a method already exists and I haven't come across it, doing some googling though didn't bring up anything.

Anyway, I'm referring to "Lazy registration". One of the problems with a web-based application/service is forcing a user to register. On one hand you want the user to signup so you can create an account in the database and get their email address to confirm (as best as possible) their identity among other things. On the other hand it is imperative to keep the barrier of entry for new users as low as possible. Any registration forms requiring email addresses, passwords, checking an email and entering a code, all inhibit the user from going through with the registration process and generally distract from the task at hand (such as 'Subscribe to RSS Feed xyz')

Lazy Registration
How can we have the benefits of both user registration and having a low barrier of entry? The first step is to have many entry points to grab new users. In FeedTagger I have buttons that say 'Add feed' even when displayed to the general public. With a "lazy registration" model, clicking on such a button would perform the following steps:
  1. Send a message back to server with relevant context of operation (ie: 'Add Feed xyz')
  2. Create a default user account with blank/random username, email, password fields - along with any default settings
  3. Automatically log this new user account it
  4. Load new page with initial operation ('Add Feed xyz') performed and display the first page once logged in
  5. (Optional) When logging in the user set a cookie that never expires
We now have a user that has only pressed one button, but has their own account and can begin personalising everything to suit them!

Once a user is logged in there should be visual clues pointing out the gaps in their account settings. Perhaps a question mark (?) placed next to username and email would be a good start. Clicking that will display an input box with the settings saved. A logout button should be displayed, but clicking on it without confirming your username and email should be discouraged as a user will have no way of logging back in.
I mention the option of setting a cookie that never expires to handle the users login. This allows a user to begin customising their account and save their settings for a long time over multiple browser instances, giving them the longest possible time to confirm their account settings. Much like how Google news customisation works, but with a final registration confirmation step allowing a user to move between machines and have a some privacy/security (login/logout)

Using this "Lazy registration" method we have removed all barriers to begin customising a web application for the user. Anyone can signup without even realising it, but have the option of confirming their registration by entering an email address/username. I see such a mechanism as imperative to introducing new web applications/services to a public that wants things to 'just work'.


Getting started with Nevow and LivePage

I'm still working my way through the ropes of Nevow (web-app dev toolkit) and LivePage (client/server stuff) and thought I'd share a quick getting started guide.

Setup environment:
Generally the easiest way to install python packages is to run "python setup.py install" (with root privileges)
To see the code run execute: "twistd -noy firsttest.tac" and twisted will start a server on port 8080. Point your browser to http://localhost:8080/

One of the first things that's important if you come from a PHP/Apache background (like myself) is url's are completely virtual when using nevow. Pointing your browser to http://localhost:8080/index.php will do nothing unless you have a function or object specified in your root document object to handle "index.php" (generally it makes sense to just have /index and have no file extensions)

I've tried to over-comment the two files included in the example. The .tac file is nothing more than a Python file with a different extension indicating it's an application that can be run with "twistd". It defines a root object that is attached to a server object. The root object defines the structure and mechanics of the root page (locahost:8080/).

So what does this little application do?
This very basic application loads a template (firsttest.xhtml) and then fills in the blanks. The template defines "slot" and "render" components that define where nevow can take over and dictate the content.
In addition we build a very simple form that when submitted calls a function in the server. The server then responds by telling the client to display an alert box with a string. That's right, the whole AJAX thing is being done in an OO fashion with clear distinction between client and server roles, with the power of Python!
Although only a primitive javscript alert() box is being displayed there is a permanent link established between the client and server allowing for instantaneous communication. Nevow comes with an example chat application called "Chatola", it's well worth getting that to run with a couple of machines and seeing the pure speed that is possible with Nevow and LivePage.

I'm still getting my head around some of the concepts here, but this seems like the ideal platform for developing future generation web applications. I'm still unsure how to structure a complete application, but I'm sure this will become clearer once writing a few test apps and walking through some more code.

Goatse in the New York Times!

This picture came up this morning from Joi Ito:
goatse nyt

The NYT story was about blogging, but in a photoshoot the blogger (Anil Dash) wore a t-shirt with the words Goatse. For more info try wikipedia:goatse


Nevow: Web application toolkit

In prepartion for a large scale overhaul of FeedTagger's backend I have been looking around for an efficient way of writing a Python frontend. The backend API is going to be in Python, so I figure the front-end should be as well - for improved flexiblity and speed....

Anyway, I've come across nevow (nou-veau), a web application toolkit that can integrate nicely with the amazing twisted framework. Why is it cool?
  • Completely OO page rendering
  • Client-side (AJAX) integration with Python's livepage
  • Runs as stand-alone server (no apache overhead) using twisted
  • Excellent template system using XML with integrated data/render methods
  • Benefits of integration with Python and Twisted
For those serious about web development and working with the best tools it should be checked out. Some links to get started:

Feedmap: Geoblog mapping

Clockwerx has pointed out Feedmap, a new service to show a map (a la google maps) of bloggers locations. Want to find bloggers in your area? Want to find the location of a blogger you're reading? Then there's a blogmap button that can be placed on your blog.

I think the idea is right, but not too sure about the execution. I received a few server errors which put me off. Plus their mapping interface is no match for Google Maps - it's based on some Microsoft technology... In fact the whole site smells of MS, which always makes me wary.

Either way, as clockwerx points out - there's some API's and something useful could certainly come out of it. As they say 1+1 is rarely = 2