pubsub

This talk is worth a look. Forgive the title (which is a misnomer) and the way it frames REST; equating it to feeds designed to be consumed by polling clients - Newtonian physics to PubSub's quanta (poorly formed analogy). REST and RPC simply are suited to other types of services (I fail to see how RPC over XMPP is useful unless the time to process a request is long and callbacks are required). The talk goes on to use concrete examples that illustrate how hijacking Jabber servers and XMPP for generic push messaging using a pubsub architecture is far more efficient for lots of web services outside of IM that are currently pull-based. They even manage to fudge oAuth in for protected resources. It's the kind of pragmatism that smacks of real life problems solved (I salute).

I'd be very surprised if Last.fm's 'now playing' notifications didn't switch over to pubsub very soon.

→ More articles in Development, Services, Software, Web
Post a comment (0)

hAudio

This is the year in which hAudio ushers in the era of distributed music publishing and playback on the web. As enthusiastic as I am about OpenId, oAuth and DataPortability (the emerging protocols of the distributed social web), it's microformats that are going to be the building blocks of this shift in the short term. Microformats can be seen as "the nanotech of the semantic web" (Jeremy Keith) and the metaphor for usage is one of proteins and surface-binding. My hope is that this year microformats will have a big impact on media publishing. It's more than a hope because I will be dedicating some of my time to help make it happen.

→ More articles in Development, Semantic, Software, Web
Post a comment (0)

scientology

Download the free AJAX Control Toolkit which includes over 30 AJAX controls including rounded corners...

- Microsoft Visual Web Developer Express website.

Uncanny similarity in conduct between Microsoft, Scientology and Neo-con Republicans here, all going ahead and creating their own new realities. Conclusion: positions of such power allow organisations to disregard the actual state of the universe. By this logic, Microsoft is purely an ideology machine and no longer a technology company.

→ More articles in Culture, Design, Development, Web
Post a comment (1)

xerox

Yahoo! is the Xerox of Web 2.0

- Someone (ok me) at the Last.fm kitchen table, whilst discussing Ian Rogers' presentation, Winners Leverage Scale

Ian Rogers is VP of Product Development at Yahoo! Music.

→ More articles in Notes, Web, Web2.0
Post a comment (0)

woebot

It has long been my plan to call it a day at the blog after five years, but more recently I've decided to draw a line under all my online contributions... Why am I going "offline"? I think I've explored every aspect of the experience and that now it's time to do something different, not necessarily something public either, the shape of which I'm still figuring out...

- Woebot, Jan 2008

Woebot has long been one of my favourite music writers (since 2004 or so). He will be sorely missed. To get a flavour of his writing try posts like Post Punk obscurities judged unfairly by the cover, A Pre-History of British Electronic Music, Prog(ish) or his sprawling Jazz retrospective. His archive is a goldmine of commentary on overlooked music. He also set up the popular forum Dissensus. Best of luck with new projects Matthew.

→ More articles in Music, Web
Post a comment (0)

fb

How others compared you recently: "Who is hotter", you won 0 and lost 1 time.

- 'Compare People', Facebook App Email Notification

Thank you Facebook application platform, for all that you have done for me in 2007.

→ More articles in Development, Networks, Notes, Social, Web
Post a comment (0)

lifestream.

I wrote a piece for the New Statesman this week on Leisa Reichelt’s notion of ambient intimacy. It's pretty short and doesn't delve too deep, but such are the limitations of print. You can read it in full here.

→ More articles in Identity, Information, Notes, Web
Post a comment (0)

hick's law

The time to make a decision is a function of the possible choices he or she has and can be expressed as t = b log2(n + 1)

Where t is the time taken, b is a constant and n is the total number of choices.

Hick's Law, from Haacked's, '19 eponymous laws of software'.

→ More articles in Design, Development, Notes, Web
Post a comment (0)

export.

New export options in Zim.

→ More articles in Development, GTD, Web
Post a comment (0)

photosynth

Live demo of Photosynth (Microsoft Labs) from Ted.

→ More articles in Design, Development, Semantic, Social, Software, Web
Post a comment (0)

adobe constructor

public function TextFormat(font:String = null, size:Object = null, color:Object = null, bold:Object = null, italic:Object = null, underline:Object = null, url:String = null, target:String = null, align:String = null, leftMargin:Object = null, rightMargin:Object = null, indent:Object = null, leading:Object = null)

Just another 13 argument constructor from Adobe's native Actionscript API. I dub thee an 'Adobe Constructor'.

As much as I love remembering the order of all 13 arguments (btw there's no defence for a 13 argument anything), I'm stumped as to why a language that implements ECMA-262 doesn't take a leaf out of Javascript/Ruby and go for parameter hashes as object literals.

My wrapper for the above now has client code like:

Text.Format({size:6,font:'Arial',align:'left'});

Obviously.

→ More articles in Development, Web
Post a comment (0)

bundles.

zim - bundles view

The 'Bundles' view in Zim gives you a simple way of grouping outlines.

→ More articles in Apps, Design, Development, Web
Post a comment (0)

the real cbs

the real CBS, please stand up

We appear to have been bought.

→ More articles in London, Web
Post a comment (0)

zim is born

Zim - the outliner for Firefox which I've been working on (more here) - now has a home at zimoutliner.com. Free user accounts are now available (store upto 50 lists). Other features I've snuck into the public release:
  • OPML Export
  • Autosave
  • Contextual navigation
  • Bundles

For those of you who use lists to organize your life - whether it be with OmniOutliner, scraps of paper, stickies, text editors, notepads - I suggest trying out Zim. Signing up only takes 10 seconds (note: it only supports Firefox right now).

You can head over to the public changeblog for more information, on-going progress reports on development and your chance to submit feedback and bug reports.

→ More articles in Apps, Design, Development, Software, Web
Post a comment (0)

zim is an outliner.

OK casual blogosphere cruisers, Twitter loiterers and general ADD infected youth: The executive summary here is that Zim is an outliner, and if you're lucky enough to have fired up this blog entry in Firefox, you can try out this working demo.

And for the rest of you (all 3 of you), let's talk why Zim:

Over the past couple of years, the most important personal productivity tool I've used has been OmniOutliner on OS X. The open-ended nature of the tool means I use it for a range of things, from task lists to meeting notes to presentation plans. It works well with my brain, to the point that I rarely actually think about the software, I just find myself using it in all sorts of situations. Most excellent functional design strikes me as 'boring' to talk about (there's not much to say about something that works so naturally), and OmniOutliner is no exception. If I were to describe OmniOutliner I would say it is

Quadratisch. Praktisch. Gut.

Which also happens to be the tagline on these little quadrilaterals of brilliance I eat daily.

The personal productivity tool of choice for Mac users right now is OmniOutliner Pro with a GTD plugin called Kinkless. I find the whole thing fiddly, opting to stay with an ancient version of the original OmniOutliner, which on the face of it contains nothing more glamorous than the ability to add multiple columns and export your lists in a couple of formats.

Over the last couple of weeks i've been playing with the idea of a browser-based Outliner not unlike DECAFBAD's XoXoOutliner. So here's a working demo of Zim (Firefox only), and here's the javascript source. Right now it's all pretty basic, so bear with me. I'm building it for a few reasons:

  • To come up with javascript design patterns that don't suck.
  • Because OmniOutliner is proprietary.
  • Because I live in my browser.
  • Because I use multiple computers daily.

On the short-term todo list for Zim you'll find such nuggets as:

  • Proper undo feature
  • OPML import/export
  • Drag'n'drop node functionality
  • web/email publishing (good for sharing meeting notes)

And longer term daydreams include:

  • Hyperlinks and rich-media support
  • Actual user accounts
  • Multiple columns & column types (e.g. 'date')
  • Multiple projects
  • Overview page with 'next actions'

Zim will never be an application with many features, and you can expect it to come together slowly - it's a 'weekends' project after all - but with a few social touches and some attention to detail, it could grow into my substitute to OmniOutliner in the long run. No public trac/svn for now but I will shout here if it does happen.

→ More articles in Apps, GTD, Simple, Software, Web
Post a comment (1)

last.fm at fowa


Flickr phonecam shot from govan depicting me fumbling with a presentation remote

First of all thanks to everyone who gave their support at the Future Of Web Apps conference in London last week. I had an amazing time and met many awesome people - absorbed lots of energy and enthusiasm and gained some interesting insights. Thanks again to Carson Systems for having us on stage and even letting us drag our last.fm sound-system over to the conference to stream FOWA group radio in the foyer of the Kensington Conference Hall...

Matt & I spoke on the first day, on the topic of 'Lessons from the Building of the World's Largest Social Music Platform'. Corante has written up some notes, and someone even posted a great mindmap of the talk.

2 slides I particularly enjoyed presenting:

  • Demonstrating osmotic communication through our internal wonderbot, irccat. In response to one of the questions on the day, our CTO RJ has open-sourced our implementation of irccat so you can start playing with it. To clarify - we use irc as our internal comms channel, and all aspects of our company absorb information through it.

last.fm at fowa.

  • Attention as filtering tool for user-generated content, in the context of tag cloud moderation. The talented heiress Ms. Hilton was used as an example.

last.fm at fowa.

Other bits and pieces - I referenced this Fred Wilson blog post on the future of media with respect to the monetization of attention data. Also someone in the audience brought up the principles of the AttentionTrust, set up by Ed Batista and Seth Goldstein. If attention data is going to be critical to your web app (and I would argue that it should), then I encourage you to read Seth's entire blog archive on the subject of attention. I know I pretty much have.

My personal highlight was hearing Bradley talk on Flickr interestingness and Yahoo! Pipes (which caused quite a stir in the last.fm office last week). I was particularly bummed out about missing Simon's openID presentation on the second day, as it was ace by all accounts.

A podcast of our presentation will be up soon, but in the meantime download the slides - 'Lessons from the Building of the World's Largest Social Music Platform' (pdf)

→ More articles in London, Social, Software, Web, Web2.0
Post a comment (0)

better late than underslept

Well, it's taken a while, but Google Reader's social features are finally taking shape, though their sharing feature is essentially a 'reblog' feature, simply publishing all the items you want to share on a public page - here's mine. The feature would be better off targeting your gmail contacts and allowing you to share an article with a specific person/group (either via email or via the reader) - after all, 'share' and 'republish' are very different things.

The obvious tagging feature is there, but no powerful tag navigation method is on offer and the search facility is ironically non-existent. So there's still a lot of work to do on the navigation front - the most crucial design problem for a newsreading app. I think the navigation itself needs to have a social dimension (tag-driven content drawn from 'pools' of articles, not just your own explicit subscriptions).

Interesting to note the attention data is now pretty much collected real time, and a lot less crudely than in the first generation of browser based RSS readers - as you browse a particular feed, scrolling through the articles makes the feed 'articles read' count go down article by article, meaning that the reader knows if you really have set eyes on an article or not. Google's concerned with capturing accurate attention data - and it's beamed back at you on the reading habits page; right now an interesting set of trends, but pretty useless until the reader starts recommending articles/feeds based on the data. Kind of like our last.fm profile pages - pre-radio, pre-recommendations. So with a pinch of collaborative filtering and more interface nous, Google Reader is set to be quite a big product. As it is, Gmail still seems to be losing the interface wars against Yahoo! mail (i find Gmail incredibly efficient myself), so it'll be interesting to see how the newsreading attention is distributed amongst the big players. It also depends if they can ever recover from their disastrous first impression (the first version of the Reader was truly a shocker and put lots of people off, myself included).

Whilst i'm not using Google Reader (I use Clippr and NetNewsWire), I've become a regular user of google notebook of late. Very quick to use, and comes with a firefox extension. May have something to do with using 4 computers on a daily basis.

→ More articles in Design, Development, Social, Software, Web
Post a comment (0)

a presentation on ponies

I AM THE SPEAKER SPEAKING TO YOU

I'll be speaking along with my esteemed colleague and budding musician Matt Ogle (profile here) at the upcoming Future of Web Apps conference in London (Feb 2007). The line-up is frankly intimidating (Khoi Vin in the house) but we'll do our best. And if that fails, we have some pretty good dance routines up our sleeves.

We'll be talking about ponies, unicorns and um, other last.fm obsessions, so if you're a coder, bug your employer/mum for some cash to come to this - it should be pretty ace.

→ More articles in Apps, Development, Web, Web2.0
Post a comment (2)

last.fm in eboy poster shocker

eboy 'Foobar' poster

It's vince's van!

→ More articles in Culture, Web, Web2.0
Post a comment (1)

/drm/flash/textmate

This news that Universal is going to offer its catalogue for free and move to an advertising model is a small step in what i consider an inevitable economic shift in the culture industry (and yes, i'm repeating myself). As we move towards embedded advertising (this announcement doesn't detail the nature of the advertising in this particular venture), DRM is going to be cast aside for purely economic reasons. It's simply not viable when the main goal of a publisher is for a piece of media to be shared amongst as many consumers as possible (in order to gain advertising revenue proportionate to attention metrics).

In other news i'm knee deep in actionscript 2.0 again and actually quite liking elements of the language (to my dismay). Despite it's shortcomings, it's still the best way to deliver browser-based audio/video content. If i've got a moment i'll detail some of the new (Flash-specific) design patterns i'm using in my code. I've switched back to Textmate to handle my AS project though, and i'm finding real simple stuff missing, like caret based matching bracket highlighting(!).

If you're in London, go to the Frieze art fair gig this month. It will be ace. Sunn o))), Florian Hecker and Liars all showing up.

UPDATE: Seems like Universal's tunes will come in PlaysforSure-protected WMA (via Wired) :( . So no embedded advertising, more likely intrusive online ads. And DRM all over the place.

→ More articles in Development, Flash, Web
Post a comment (0)

$this and static methods in php 4

Well, working with php is colourful at the best of times, but today i encountered a bug so big, so fundamental to the design of the language, that my face almost fell off in disbelief. In short, if you're calling a method statically in PHP 4, within the static method, the '$this' keyword will point to the calling object, as opposed to being 'null' (there should be no object context in a static method). Here's an example:


class Static
{ 
  function method()
  { 
    echo get_class($this);
  }
}

class Container
{ 
  function Container()
  { 
    Static::method();
  }
}

$Container = new Container();

The output is "Container". This example is lifted off the bug report page, in which a member of the php team declares, "This is how it is implemented, no bug." . The php object model documentation backs this up,
The $this pseudo-variable is not usually defined if the method in which it is hosted is called statically. This is not, however, a strict rule: $this is defined if a method is called statically from within another object. In this case, the value of $this is that of the calling object.
What are these guys on? There can be no rational reason for this, the only explanation i can offer up is that this is a side-effect of a deficient object model implementation in PHP 4, passed off as a "feature". Moreover, it means you can't assert that the static method is actually being called statically (remember, there's not even a 'static' keyword in php 4), like so: assert("!isset($this)"); This will fail since '$this' points to the caller object! Depressing. Fundamental.

→ More articles in Development, PHP, Web
Post a comment (1)

addressability.

Basic principles of addressability for web applications:

  • Always tie your URL's to your data models.
  • Use mod_rewrite as sparingly as possible. It's too flexible.
  • Don't punish plurals - provide predictable redirects.
  • Go for human readable URL's if at all possible.
  • Provide namespaces for RESTian web services. Have an xml-based (e.g. rss) representation of every model in your application.

As always, delicious is a model of good design in this area. We're working at last.fm to improve addressability with what is a more complex data model (artist/album/track/label/user/tag).

→ More articles in Development, Web, Web2.0
Post a comment (2)

6 weeks with geeks.

last.fm redesigned

Blog looks like a link wreck right now, sorry. It's been a little over a month since i started showing myself at last.fm hq, things happening:

  • Redesign - gradients, drop shadows, multiple themes, ponies. Still being tested but soon to be unveiled. If you're a subscriber try it out.
  • We decided to make friendships mutual going forward and this 'friends' thread kicked off in response. We are thinking about categorising more than one type of relationship (delicious has friends/fans, flickr has family/friends/contacts, we need a more finely grained model)
  • New last.fm desktop app to replace old radio. OS X version coming real soon.
  • Lots of Dr. Pepper going on.
  • Launching in Japan. Hopefully means we'll get some more J-Pop in our catalogue. Ace.
  • Discovered synergy for multiple box convenience. Simple setup. Just works.

→ More articles in Apps, Development, London, Web
Post a comment (0)

paris hilton tag cloud.

paris hilton tag cloud.


On last.fm. Why such hate?

→ More articles in Culture, Social, Software, Web
Post a comment (1)

php5: extension objects

Extension Object Pattern implementation for php - uses call overloading (on which i mistakenly called bs a while back) and the reflection API:

I use a variation on this to implement Façade-like objects that present one unified interface to clients whilst delegating requests to appropriate helper objects (extensions) as they come in. You can register new extensions and all the rest. Add context awareness to the extensions (pass a reference to the parent) and you've got a clean implementation of mixins.

In reality it's an Extension Object implementation as opposed to a Façade, because façades need provide a high-level interface to a low-level subsystem, whereas this does nothing of the sort.

Façades are used all over the place, including sessions and web services. Extensions are a way of getting round the fact that PHP doesn't implement either multiple inheritance or mixins. They are also dynamic, so you can shape the capabilities of an object to fit its context.

→ More articles in Design, Development, PHP, Web
Post a comment (0)

last.fm

last_fm_logoblack.png

I'm joining social music service last.fm as a full-time developer in a couple of weeks over at their new office in old st (it still looks like a mess - story + pics). As those who know me will confirm, i have views on social software and how culture can suck less under new classification, distribution and publishing models, so i'm really looking forward to getting stuck into moderation strategies, web services, folksonomy and data mining. Particularly psyched to find individuals i respect (e.g. Joi Ito) among the investors.

It should be a tremendous year for last.fm. Hopefully i can play my part in that.

→ More articles in Development, London, Media, Music, Web
Post a comment (2)

g$$gle

It's been a strange week for me & the GOOG. First, Rob pointed this out in the new Adwords API T&C:

3. Inspection for Compliance.

1. User-Interface Inspection. You agree that Google may inspect your AdWords API Client user interfaces up to 3 times per calendar year. Any such inspection must be during normal business hours. You must allow Google to visit your place of business, or inspect your AdWords API Client in some other manner agreed between you and Google, within 7 days after notice from Google that Google desires to inspect your AdWords API Client interfaces...

2. Systems Inspection. In addition to Google's rights under Section IV(3)(a), at Google's expense (except as set forth below) Google may appoint (subject to the below) a Third Party inspector (the "Inspector") for a systems inspection, only as set forth in this section, of your AdWords API Use...

Que? For the pleasure of talking to you we get a day trip from an 'inspector'? Whilst i like catching up with GOOG folk to talk falling stock and vint cerf's breakfast habits, i think this is over-stepping the mark a little. Both parties using an API can pretty clearly discern who's playing nice and who isn't without visiting each other's premises and inspecting products.

This came with the news that the Adwords API has a new 'feature'. Usage is not free anymore! The old quota caps system has been replaced with a pay-as-you-go type deal. Coupled with the fact that google doesn't provide test accounts, this could mean that if you're developing an Adwords client for your app you'll be spending every step of the way. Still got to wait on this, but it sounds both more flexible and more costly.

Finally, Google Calendar came along, with great desktop UI touches like cell dragging to define event duration:

GOOG calendar

And google map integration and all sorts of other treats.

And suddenly everything is ok again with me & the GOOG and i forgive them and they can send inspectors to my house to question my family about my API usage and i'll even make them continental breakfast. With fresh croissants. On a Sunday morning.

→ More articles in Development, Services, Software, Web
Post a comment (3)

newsreader wars.

A Wired article entitled Man VS Machines examines the nature of newsreaders right now (Digg, Newsvine et al get a mention) and loosely categorises them into those that favour (AI) algorithms and those that leverage their user base to create semantic links between data. This is a false dichotomy, since both approaches should complement each other - how? Leave content classification & creation (data architectures) to the user, and the rest to the machines. The challenge lies in hybrid approaches.

From a technical perspective, the challenge equates to 'how to use the user base'.

The conflict the article alludes to is the same one evinced in Last FM Vs Pandora and can also be articulated as the AI VS AAI (Artificial Artificial Intelligence - a phrase coined by Rael from O'Reilly) debate. The supposed battle-ground is social software. I'd like to reinforce that the approaches are not mutually exclusive and that the future of social software rests in hybrid approaches, where human agents can consult non-human agents for search, data analysis (mining, visualization) and forecasting; all of which will require the breed of algorithms that are being thrown down the 'machine' end of the debate. Heavyweight AI (like highly refined NLP) is a waste of time at this stage though. It's an academic black hole.

→ More articles in Observation, Social, Software, Web
Post a comment (5)

snow crash.

snow crash.

If you'd like to help me build a Dymaxion house in second life - click the 'find' button down the bottom, click on the 'people' tab in the window that pops up and type in 'bucky'.

→ More articles in Networks, Social, Web
Post a comment (2)

Offline.

I"m convinced the next big step for web browsers is implementing offline mode.

So what's required? A local caching framework that server-side applications can hook into, allowing you to, for example, read and compose gmails whilst in transit, browse your rss archive in your browser, etc. This will lead to the inevitable. What's the inevitable? The inevitable is the day when home users will swap most of the applications on their desktop for their web browser.

→ More articles in Development, Observation, Software, Web, Web2.0
Post a comment (0)

Web 3.8

Nice to see some energy in the web app circuit here in London. Tonight there was a packed out (200+ audience) demonstration of three open-source MVC frameworks - Django (python), Catalyst (Perl) and Rails (Ruby). One great thing i found was how the character of each framework was reflected in their representative speaker on the night (and yes, software has character... and opinions! What next - software with identity?). Django's automated admin interfaces were a highlight (lots of ajax) - we had Simon Willinson playing around on his live server for us. Matt Biddulph's BBC archive on Rails showed off the sparklines plug-in and the potentially explosive power of an open information infratructure. He presented Rails in a refreshingly un-Rails esque manner ("There's this Rails video out there where they enthusiastically build a blog engine in 15 minutes, accompanied by american-style whooping...").

This BBC archive is going to be a big deal - a kind of BBC wikipedia replete with live feeds for search terms, programmes, BBC contributors, etc, with data dating back to 1936 and a controlled tagging vocabulary meticulously enforced by BBC librarians for that entire period. It'll be a unique data repository and the BBC are expecting upto 3000 requests per second on this thing (yes, you read that right). That should prove whether Rails can scale or not. Watch this space.

I still think Rails will continue to win the popularity contest. I'm convinced it's the stronger of these three for general purpose application development, with Django seemingly having the edge for publishing-oriented (CMS) projects. Catalyst looked the weakest, but hey, if you've got a good knowledge of CPAN built up over years of experience, then the choice is a no-brainer. Catalyst does most things, but chickens out when the going gets tough (ORM).

Matt snuck Switchtower in through the backdoor of his presentation. Switchtower is a deployment tool for distributed environments. It's not Rails specific, but is written in Ruby. I've been harping on about it for weeks, even though i haven't had a chance to test it. This is due to my inability to grow a cluster in my back garden. Sorry.

Where was the poster boy of open-source programming languages - PHP - amongst all this? Sadly absent. PHP is the most approachable, widely adopted open-source programming language on the web. The fact it didn't represent here was disappointing but also shows a move towards higher level languages, powerful syntax (reduction of LOC) and DSL's.

If you're a kid with a thing for PHP, now's the time to be a hero and sneak a framework in before Zend clean up the market. You could port Rails. No one's done it properly yet.

UPDATE: ok i got my figures mixed up and it's nowhere near 3000/sec page requests on the BBC project. I thought that was kind of an awesome target, even for the mother of all media organisations. Think double figures though.

→ More articles in Apps, Frameworks, London, Rails, Web
Post a comment (2)

Clippr.

clippr screenshot.

OK so google have announced Google Reader, which is an RSS client for your browser. The best way to introduce Clippr is as an RSS reader i built that shows up Google Reader in most departments. It feels good to be ahead of the google this time ;)

I built Clippr as part of my dissertation over at Imperial. It's social software for the web. I use it everyday - it's become one of the most important apps in my browser, which i guess is enough reason to tell you a little more about it.

First off, a one-line description of Clippr:

Social bookmarking meets RSS feeds. A great way to discover, archive, create and share articles online.

OK, now for the details.

Overview

Clippr bears some similarity to the social bookmarking tool Del.icio.us, in that it allows users to tag and archive content from the web. However, where del.icio.us revolves around the concept of the 'bookmark', Clippr's main building block is a 'clipping'. A clipping is either a textual excerpt taken from a webpage or an article from an RSS feed. Both these types of clippings are treated in the same way by Clippr.

Why would a user want to take clippings?

clipping_dropdown.jpg

Clippings are like a fluid bookmarking strategy for the web 2.0. They're a replacement of the bloated 'temp' folder which sits in everyone's browser bookmarks. They acknowledge the kind of transitory interest in numerous topics that the web encourages in users, as well as the fact that users are increasingly browsing by RSS feed. Clippings are a replacement of the bookmark per sé, in that they are represented as RSS articles and not simply as hyperlinks. Put simply,

Clippings tie a user's bookmarking activity to their RSS reading habits and provide a richer definition for archiving web content than a bookmark.

What's the big deal about folksonomy? It's just labels.

Um, yeah, like what's the big deal about computers, they're just big calculators. OK.

Folksonomy is a faceted, emergent classification strategy. It's the natural classification strategy for networked media, in that it addresses directly the fact that,

In an information retrieval system, there are at least two, and possibly many more vocabularies present. [14]

One of the main advantages of Folksonomy is that,

Since the organizers of the information are usually its primary users, folksonomy produces results that reflect more accurately the population’s conceptual model of the information. [35]

For more on folksonomy - and the sources of these references - check my dissertation.

What's implicit social software?

Social Software can perhaps be summed up as software that recognises the most important component of it's system is the user-base. If social software wants to do smart stuff, it does so by aggregating the intelligence of it's user-base, in terms of the data captured by the application during usage.

Implicit social software means getting rid of user profiles and user visibility in general and just letting the app use the aggregated information to work out relations between data. Like this the application functions like a single-user desktop application without all the distractions of social networking, but draws on community intelligence to help the user navigate the data architecture created by the user-base.

Text-analysis is rubbish, it gives me google adsense ads about detergent when i'm reading about the SOAP protocol

True. Clippr acknowledges the user-base as the central component in it's classification strategy. The system performs text analysis on incoming articles from user subscribed feeds, which it uses to extract keywords and top stories from the fresh crop of articles. Then, whenever a user's tag coincides with a keyword extracted by the system, all articles with that keyword are shifted over into the tag-space. This is a crude automated classification strategy which reconciles text analysis and tagging - it works pretty good.

Moreover, Clippr analyses tag intersections to recognise related tags, and presents these to the user as they search for articles. It's more subtle than del.icio.us in this respect, in that it quantifies the similarity between tags, in terms of intersection magnitudes.

So text analysis needs to be combined with context analysis to be effective at picking out similarity between documents, and that's what Clippr does, by letting users provide contextual information and analysing it.

Folksonomy is an uncontrolled mess. Jack says 'web', whilst Jill says 'internet'

True. Wordnet can be used to reduce the tag space by recognising synonyms, hypernyms, hyponyms and compound terms, but it has limited performance with a completely uncontrolled vocabulary. Acronyms and neologisms abound in tagging. A lot of this is still unresolved and impacts the performance of search in folksonomy.

Show me the money

Here's the feature list:

  • OPML import/export of feed subscriptions. Folders are flattened to tags and imported automatically into Clippr.
  • Firefox plug-in and bookmarklet to facilitate clipping stuff from your web browser.
  • Tag clippings, tag feeds, tag like a demon.
  • A community oriented article base formed through user subscriptions, refreshed periodically. Full text RSS/RDF/ATOM formatted feeds are supported.
  • Text analysis (article clustering) on incoming articles, in order to extract Top Stories and article keywords.
  • Context analysis (tag clustering) used to recognise related tags.
  • Change your tags whenever you want. Clippr handles merging/splitting of tag-spaces.
  • Power editing using batch actions thanks to a gmail style dynamic dropdown.
  • Tagging combined with keyword extraction to produce automated classification of articles. Text analysis and folksonomy reconciled.
  • A search engine supporting a query syntax for folksonomy - search by tag (intersection/union), feed, keyword or any combination of these. Implemented as Live Search for desktop style responsiveness (it behaves like Apple Mail search - wipe the search field and return to where you were)
  • RIS export for using web references in bibliographies
  • RSS export of your Clippings archive.
  • Mail an article to a friend or recommend it to a fellow Clippr user.

Ok, let's try it out

You can't. It's not public right now because it needs a dedicated server to run and i can't afford to run and maintain one. If you want to help me setting one up, please get in touch with me.

More information

Here's a quick presentation and here is my dissertation in full. Source code (ruby/javascript) to come.

→ More articles in Apps, Development, Social, Software, Web, Web2.0
Post a comment (5)

Domain Names and Intellectual Property.

Domain Name Registration - a murky business at best.

I purchased a domain name / hosting bundle from an American web host with a good track record today.

Or so i thought.

It appears that in the intervening period between my placing the order and the host processing the order, an employee of Yahoo! had purchased the domain name I wanted. Literally in the 2-3 hour window, one Russell Beattie from California had gone and had exactly the same idea as me. At least that's what WHOIS is telling me.

Now this is interesting. It's obviously no coincidence.

The domain name indirectly refers to a piece of technology Yahoo! recently bought. I chose this name for an application i'm working on for my dissertation here at Imperial College.

I searched for it's availability on two occassions today (at two webhosts). These query public domain sources to establish domain name availability. It would appear that somewhere along the line, someone is filtering domain name queries and passing them on to interested third parties. Members of the IT industry appear to be screening domain registration requests for potential ideas/threats to their products. This is the impression i get. I may be mistaken but it's certainly a sensible thought, given what's just happened. I'm kind of flattered someone at Yahoo! thought my domain name idea to be potentially hazardous or of interest to their business.

Ah, the power of words.

→ More articles in Services, Web
Post a comment (2)

Online Accounting

So, online accounting software is going to start pouring out. So far, financial application powerhouse Intuit have Quick Books Online which doesn't work on a browser running outside of Windows. This oversight astonishes me - Web Apps are by their very nature cross-platform, all that's required is a sensitive approach to javascript and CSS and a slightly longer Test cycle. A lot of small businesses are using Mac. Among the other contenders we have Bill My Clients which integrates with Paypal and Blinksale which wins the GUI war but has a restricted feature set (it's an invoicing tool above all else). They all come in at about $12/month. All these services wind up being cheaper for Brits than our American counterparts. Needless to say they all support Pounds Sterling.

Surveying this software i get the distinct impression i'm beating around the bush. What we need is a comprehensive collaborative spreadsheeting package for the web. Winner takes all.

→ More articles in Software, Web, Web2.0
Post a comment (0)

Best Hacker 2005.

best-hacker.jpg

Awards are questionable things, but this one was merited. A one man J2EE destruction kit.

→ More articles in Notes, Rails, Ruby, Web
Post a comment (0)

CPA

Continuous Partial Attention is both a drainer & enhancer of productivity for web developers. Linda Stone brought it back onto the agenda at Supernova 2005. It's an important behavioural skill - particularly applicable to those working directly with the Web - which needs to be honed and controlled in order to get on with the job(s) at hand. Microsoft's approach,

Bill Gates has three types of meetings: free-for-all, mixed (sitting at back indicates paying half-attention), and full (if you're sitting at the table, you focus on what's going on).

I haven't yet gone down the email-free Fridays route myself...

→ More articles in Development, Observation, Web
Post a comment (0)

Two weeks on Rails

Been working with Ruby On Rails on & off for about a fortnight. A few observations for those starting to pick up this framework,

1. Keep Dave Thomas' excellent text by your side at all times

Dave Thomas, co-author of the 'Pragmatic Programmer' series, is a worthy guide to Ruby. This text is excellent - Programming Ruby: The Pragmatic Programmer's Guide. Also keep Matz's original Ruby manual to hand. It's fun.

2. Use Rake

Rake is a ruby makefile-style utility. It's useful. Try rake --tasks to check the available tasks. You can define your own rake tasks in the Rakefile sitting in your application's root directory. You can define dependencies between tasks and files. It's useful for deployment, sql dumps, code stats, documentation generation etc. In addition to the built-in tasks, you can find :deploy and :rollback tasks out there if you root around, allowing you to version your application formally.

3. Use Gem

Gem is the CPAN for Ruby - it fetches 'gems' - ruby modules/extensions. You'll need to use it to get your database adapter and other utilities.

4. Use Rdoc

Rdoc creates documentation from Ruby classes and spits it out in HTML format. I have a bookmark group in my web browser made up of Ruby and Rails standard libraries. Cmd-click in Safari makes all the tabs load in one go. I'm sure Firefox has an equivalent.

Note: All three of these command line utilities (rake/gem/rdoc) are for Ruby in general, and exist independently from Rails. However, they will come with your Rails install.

5. Use the logs

Use the logs in the ./log directory. I always keep a unix screen open with

tail -f ./log/development.log

running in it. This is the best way to get a feel for how ActiveRecord behaves in terms of database calls. To write to the log, use

logger.info("message here")
in your code.

6. Use Rexml for XML parsing

Most projects have some XML parsing going on - REXML is the most complete XML parser for ruby. You'll need to install it - it's not stdlib. Google it.

7. Take the time

RoR is encouraging a whole load of web developers to enter application development. This can be a good thing. However, it's a different ball game, so to speak. For starters, understanding the Model View Controller (MVC) design pattern is crucial to RoR. It's pretty simple, but you need to be able to apply it smartly in order to keep things neat as your application progresses. Understanding the role of testing and code versioning is also really important. Take the time to learn common application development and design techniques/patterns if you're coming from a web background. Your test code should usually outnumber your production code.

8. Get the Ruby syntax highlighting module for BBEDIT

When developing locally i like to use the BBEDIT text editor, because the cli editors start hurting my eyes. You can set up a project using New > File Group. The ruby syntax highlighter is here.

9. Check the irc channel

#rubyonrails at irc.freenode.net - nice people on the whole.

10. Using Webrick/Apache

First off, use the Webrick server while testing. More here. That's another unix screen i have running continually. If you want to test under Apache, turning on fast-cgi is explained here.

Finally

Feel confident. Rails is an enterprise level framework taking it's first steps - don't let the J2EE crew drown you out. Ruby > Java in spirit and in tone, even if Ruby's gem pool still has a long way to go to match the colossal Java API or Perl's extensive CPAN libraries. In terms of RoR: The framework is there. It will grow by virtue of the agility it encourages.

I'm still yet to find any particularly great apps in Rails since the 37Signals ones, but here's a simple code snippets library produced in RoR - Snippets. Keep an eye on the OS X and Ruby sections as they grow. I like the simplicity of this tool.

→ More articles in Development, Rails, Ruby, Web, Web2.0
Post a comment (1)