Tag Archives: web

My browser A-Z

Inspired by a post “Letter Sweep” by Tim Bray, here’s my browser A-Z, a list of the URLs that appear when the browser tries to guess, on a single letter press, where I want to go, based on past locations.

A: appengine.google.com – unsurprising, as I’m a big fan of Google’s App Engine.

B: bbc.co.uk – where I go to get the news, although mostly I listen to Radio 4 via my Squeezebox Radio.

C: coastandcountryholidays.co.uk – Michelle and I are taking a holiday in Norfolk later this month.

D: docs.google.com – I’m a big Google Docs user.

E: enterprisegeeks.com – where I go for some excellent ERP / SAP banter.

F: flickr.com – I’ve been on Flickr for as long as I can remember.

G: google.co.uk – well, duh!

H: http://www.google.co.uk – interesting! Isn’t using the scheme in the URL cheating?

I: imdb.com – we’re Lovefilm members, but I still use IMDB for film geekery.

J: jsonformatter.curiousconcept.comJSON is my poison, and this excellent site is the sweetener.

K: www.amazon.co.uk/gp/digital/fiona/manage/ref=docs_dim_box – where I manage my Kindle. I think this is linked to K as I have a bookmark titled “K” pointing here.

L: linkedin.com – essential!

M: m.untappd.com – even more essential! Also, perhaps more alarming, Untappd is the only site that appears more than once, apart from Google’s home page.

N: natwest.com – where I do some of my banking. National Westminster Bank.

O: omniversity.madlab.org.uk – The Manchester Digital Laboratory’s Omniversity. Excellent!

P: pipetree.com – my main domain.

Q: qmacro.appspot.com – not been here for a while, this was a general play area on App Engine.

R: router – my Vigor router, to do the occasional port management.

S: slashdot.org – old but still ‘lesenswert’.

T: twitter.com – I’m a fan of Seesmic’s web client, but still use the mothership app for lookups and the like.

U: untappd.com/user/qmacro – ahem. Beer ahoy!

V: vmlu02:8080 – one of my servers; a virtual machine running on a micro-desktop on the shelves behind me. This is a port where I have an App Engine dev server listening.

W: www.google.co.uk – three out of three!

X: nothing!

Y: youtube.com – I thought I was happy when the interweb was just text. But I was wrong.

Z: zino:9000 – zino is the micro-desktop that hosts vmlu02. Listening on port 9000 is my Squeezebox server.

Twitter’s success

Yes yes, I know I’m late to the game, and everyone and his dog has given their angle on why Twitter is so successful, but I’d like to weigh in with a few thoughts too. The thoughts are those that came together when I was chatting to Ian Forrester (@cubicgarden), at a GeekUp event in Manchester last week.

Messaging Systems

Back in the day, I talked about, wrote about and indeed built interconnected messaging systems based around the idea of a message bus, that has human, system and bot participation. The fundamental idea was based around one or more channels, rooms or groupings of messages; messages which could be originated from any participant, and likewise filtered, consumed and acted upon by any other. I wrote a couple of articles positing that bots might be the command line of the future.

Using my favourite messaging protocol, I built such a messaging system for an enterprise client. This system was based around a series of rooms, and had a number of small-but-perfectly-formed agents that threw information onto the message bus, information such as messages resulting from monitoring systems across the network (“disk space threshold reached”, “System X is not responding”, “File received from external source”, etc) and messages from SAP systems (“Sales Order nnn received”, “Transport xxx released“, “Purchase Order yyy above value z created”, etc). It also had a complement of agents that listened to that RSS/ATOM-sourced stream of enterprise consciousness and acted upon messages they were designed to filter — sending an SMS message here, emailing there, re-messaging onto a different bus or system elsewhere.

So what does this have to do with Twitter? Well, Twitter is a messaging system too. And Twitter’s ‘timeline’ concept is similar to the above message groupings. People, systems and bots can and do (I hesitate to say ‘publish’ and ‘subscribe to’ here) create, share and consume messages very easily.

Killer Feature

But the killer feature is that Twitter espouses the guiding design principle:

Everything has a URL

and everything is available via the lingua franca of today’s interconnected systems — HTTP. Timelines (message groupings) have URLs. Message producers and consumers have URLs. Crucially, individual messages have URLs (this is why I could refer to a particular tweet at the start of this post). All the moving parts of this microblogging mechanism are first class citizens on the web. Twitter exposes message data as feeds, too.

Even Twitter’s API, while not entirely RESTful, is certainly facing in the right direction, exposing information and functionality via simple URLs and readily consumable formats (XML, JSON). The simplest thing that could possibly work usually does, enabling the “small pieces, loosely joined” approach that lets you pipeline the web, like this:

dj@giant:~$ GET http://twitter.com/users/show/qmacro.json |
              perl -MJSON -e "print from_json(<>)->{'location'},qq/n/"
Manchester, England

None of this opaque, heavy and expensive SOA stuff here, thank you very much.

Other Microblogging Systems and Decentralisation

And does this feature set apply only to Twitter? Of course not. Other microblogging systems, notably laconi.ca — most well known for the public instance identi.ca — follow these guiding design principles too.

What’s fascinating about laconi.ca is that just as a company that wants to keep message traffic within the enterprise can run their own mail server (SMTP) and instant messaging & presence server (Jabber/XMPP), so also can laconi.ca be used within a company for instant and flexible enterprise social messaging, especially when combined with enterprise RSS. But that’s a story for another post :-)

Old feed URLs fixed with a bit of mod_rewrite voodoo

As feeds are the new blogs (quoting myself, oh dear!) I thought it important to make sure that the feed bots that have been continuously polling my weblog’s feed and getting 404s (since 2005, I guess) are sent to the right place. My Apache access.log file was showing that 404s were being returned for /qmacro/blog/index.rdf and /qmacro/blog/index.xml, and /qmacro/xml for that matter … all old locations for the weblog feed.

The power of HTTP, and the voodoo of mod_rewrite, allow me to fix things. Inserting these lines into the relevant .htaccess files does the trick:

RewriteRule ^index.(xml|rdf)$ /qmacro/blog/feed/atom/ [R=301,L]
RewriteRule ^xml$ /qmacro/blog/feed/atom/ [R=301,L]

Now the bots are redirected to this weblog’s shiny new feed. And I’ll try not to change the URL again :-)

Back from Real Life

I’m back online, after an eXtended Away in Real Life. I don’t think my online presence will ever be what it was (I can’t believe how much I posted in the past few years) but blogging isn’t the same anyway. Even the new UK edition of Wired magazine (I’ve subscribed, btw) lists blogging under “Tired”. Now there’s microblogging (identi.ca and Twitter spring to mind immediately) and people seem to be *emailing* each other on Facebook these days! That’s the equivalent of the heinous corporate crime of using Excel for everything, like sending screenshots to each other, or writing simple lists (*shudder*).

What’s more, my son Joseph is online now too, complete with blog, identi.ca & Twitter accounts, and more!

Anyway, I’ve got myself a local copy of WordPress, and am slowly retrieving my past with the help of The Wayback Machine. It’s a slow and not entirely painless process, but I’m getting there. I’m doing a month at a time, and am up to Jan 2003. Nothing’s properly categorised or tagged yet, nor are all the links working perfectly. There are even some posts that aren’t properly datestamped yet! More importantly, I haven’t yet put the mod_rewrite magic in place to reduce the 404s that I’m seeing in my HTTP access log.

Watch this space.