Last.fm on the iPhone


Glad to have been a part of this in some way (I handle all the API's). Now all we need is for Apple to approve the app for their store.

Update: It's been approved now so you can download it for free from the store. Toby has the full scoop.

→ More articles in Apps, Development, Services, Tech
Post a comment (4)

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)

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)

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)

iTunes - formerly a media player

Now a store.

Instead of focusing on my emerging requirements for a media player (large scale track management across disks/track classification/better support for an array of audio formats) they've amped their store up to an even higher level, and added some glossy reflection effects under the guise of a feature. Sure, Coverflow is nice, but it's not high on my list of requirements.

I haven't upgraded to 7 on two of my boxes. I'm not sure i will. Not impressed.

→ More articles in Apps, MacOSX, Media
Post a comment (0)

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)

capistrano: svn tags

Capistrano* is a lightweight web application deployment tool suited to all codebases. It's written in ruby and hooks into the rake gem, but you don't need to be deploying a Rails app for it to come in useful. Ruby only needs to be installed on the box doing the deploying. Check out the other assumptions it makes. It's very practical and i highly recommend it for web shops with a cluster of web/db servers.

Having come out of the rails community, it sticks to some of the design principles of said project, including 'convention over configuration'. However, the creator's conventions aren't neccessarily your team's conventions - there was one core convention that didn't hold true in my deployment scenario: Capistrano deploys the latest revision of your repo and uses timestamps to identify the release on the participating servers. However, we use subversion and we deploy 'tags'.

Tags are named snapshots of your repository (more on tags). We typically use version numbers as tags, e.g. 'v1.2.2' or some such scheme. This allows us to say with certainty what is deployed at any one time, without having to scan logs etc. Tags give context to a release name (you can easily associate the release with project milestones) that revision numbers and timestamps do not. Tags are usually kept in a 'tags' subfolder, in the top level of the repository.

I've produced a small task library which allows you to deploy and rollback subversion tags with this kind of syntax:

rake remote:deploy_tag [tagname]
  • Your 'releases' folder will hold your releases by tag name, not timestamp.
  • The library adds a capistrano variable, 'svn_tag_dir' which defaults to 'tags', to describe your tag subdirectory.
  • You can customize the deploy_tag script for your particular deploy scenario.

To install just place the task library in 'lib/tasks' in your particular rails app, and add the following to your 'config/deploy.rb' script:

require 'tasks/capistrano_svn_tags'

You can then use the new deploy_tag task. Assumptions made:


  • Your :repository variable will now have to point to the top level of your application's repository.

  • Your tag names follow an enumerable convention like v1, v2, v3 (ie sortable by Array#sort)

If you want to use the default capistrano deployment convention again (last revision, timestamps) then just comment out the require statement and use the default deployment tasks.

Download the task library:

* Wins my award for Most Emo Sounding Dev Tool of All Time.

→ More articles in Apps, Development, Rails, Ruby
Post a comment (5)

talent does not scale.

Much talk about RoR and will it go mainstream and blah.

I was recently asked by someone managing a RoR project why it was moving so slowly. When i inquired as to the skill-sets of the programmers involved the manager replied, "they used to be our dreamweaver guys".

OK, i thought, looking worried.

I suggested the quality of the programmers may be a factor. He looked at me puzzled, offended even. THESE GUYS ARE PERFECTLY FINE. THEY ARE WEB PROFESSIONALS. He said this with his eyes. Not with his mouth.

Matter of factly, i said, "You may need better programmers. Ruby is a powerful language."

It was like breaking bad news to a sick child. I felt really bad afterwards.

Right now i program in PHP5 with Zend 5 and the IDE, coupled with the vast array of third party libraries, cancels out the productivity boosts of Ruby the language (which is more powerful than php) and Rails the framework (which is more powerful than our homegrown php framework).

Third party libraries play an important role in all this. GEM is under-populated right now. Though gems seem to be consistently of a higher quality than a lot of the things you'll find on PEAR or CPAN, there's just not enough out there.

Will RoR become mainstream?

All i can say is:

Talent does not scale well.

A good ruby developer has demonstrably better OOP skills than a good php developer. The php developer may be better, you just have no way of knowing, because he hasn't access to as many OOP features. To run a successful RoR project you have to hire high quality ruby programmers, there's no middle ground. IMO a lot of web programmers will not migrate productively to python/ruby. Their heads will hurt and they won't program to the strengths of the language and their design will be off and it'll be PAIN PAIN PAIN for other developers on their team.

More here and here and here.

→ More articles in Apps, PHP, Rails, Ruby, Web2.0
Post a comment (0)

Gigr.net

Gigr.net is a community driven gigs portal built on Ruby on Rails. It already talks to audioscrobbler & itunes (to pick up your listening habits) and exports iCal calendars / RSS feeds with shows involving the bands you're currently listening to. It's heading in the right direction by learning to talk early on. What i mean is that this kind of service gains value by playing well with others and that's precisely what Gigr has set out to do. Solid import/export options already.

Anyone can upload information about shows/artists/venues. Username/email is all that's required to sign up for free. Do it. It's just getting off the ground but there's already a ton of shows in there.

Note: If you're a Rails developer then get talking to Ernest about access to the SVN repository. This is just the kind of service that could wind up embedded in something like the last.fm service.

→ More articles in Apps, Networks, Services, Software, Web2.0
Post a comment (0)

On Frameworks.

Context beats consistency. Reuse only works well when the particular instances are so similar that you're willing to trade the small differences for the increased productivity. That's often the case for infrastructure, such as Rails, but rarely the case for business logic, such as authentication and modules and components in general.
- David at Loud Thinking.

A framework is a framework, no more no less. Its downfall is the inclusion and creep of business logic - no matter how implicit (e.g. authentication) - into its domain. On the broader question - is re-use overrated? - i am always wary of speculative generality and counter-productive reuse in code. As one commenter to David's article points out,

Programmers have an irrational fear against throwing code away.

→ More articles in Apps, Development, Notes, Software
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)

Language Oriented Programming (DSL's)

I can't stress the importance of Sergei Dmtriev's words enough. What he's saying doesn't sound particularly revolutionary to the average developer, and sure, the idea of DSL's is not so new, but their importance in the near future - one in which programming becomes more and more of an everyday activity for a larger portion of the population, in which project lifecycles shorten and software development activity multiplies - can't be overestimated. I know that since taking a look at Rails i've had the feeling that domain specific languages are critical to my future in software development.

It all boils down to the fact that programming languages strong in meta-programming (can you say Ruby?) are going to gain strength in the kind of phase we're in - one where programming is seeking the human, for productivity's sake.

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

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)

AttentionTrust

Seth Goldstein explains the nature of a new venture, the AttentionTrust, one of whose goals it to impede applications attempting lock-in through personalization. The AttentionTrust provides a framework for personalized services based on recording information about your web browsing. It's an ambitious project that attempts to tackle two big issues of the web 2.0 - Attention and Trust. Seth has some insightful observations on the nature of attention and the value associated to it in the new economy.

→ More articles in Apps, Observation, Web2.0
Post a comment (0)

Ten technical reasons to build your next application in a Web browser

 

  • complete control over hardware.

  • automatic centralised updates (no bulky bug-ridden pr-driven version updates set to unproductive deadlines).

  • bug-fixes immediately commited to code.

  • close contact with user-base (organic growth of features).

  • cross-browser issues minimal compared to cross-platform issues.

  • leveraging central data store (social/collaborative software by default).

  • Availability of usage statistics (access patterns etc) to inform development (easily spot which areas of your app need optimisation, which features are popular/underused and which interfaces need improvement).

  • rapid development frameworks in high-level scripting languages means agility (Ruby on Rails / PHP5 / Python / Perl) so you can just try stuff out. If it isn't working out you'll spot it immediately from usage stats/feedback.

  • proven scalable ('shared nothing') architectures.

  • your users need have no technical knowledge whatsoever, other than how to operate a browser. Your user's desktop environment can't influence your software in any way, so technical support is restricted to browser issues.

That said, if you're building a graphic intensive arcade game then KHTML may not be your rendering engine of choice ;)

→ More articles in Apps
Post a comment (0)

MS Reshuffle

A call to bloggers. Start writing 'how to switch from MS ____ to ____' articles. Simple. Effective. Some ideas:

  • How to switch from Hotmail to Gmail
  • How to switch from MSN Messenger to a Jabber account
  • How to switch from Office to Open Office
  • How to switch from ie to Firefox/whatever.
  • How to switch from Entourage/Outlook to Mail/Thunderbird (ahem) *
  • How to switch from Frontpage to Notepad/BBEdit (um)
  • How to switch from Windows to Linux (uh, perhaps a list of links here will do)
  • How to switch from Intel to PowerPC (quick! in the next 12 months)

* I'm doing Entourage -> Mail.

They should cover data import/export and the enhancements that come as a result of the switch. They should cover both Mac/PC users if applicable. Screenshots would be nice.

This all sounds basic to developers, but the most important thing here is that MANY PEOPLE are still locked on MS software, mainly due to having an abundant amount of information zipped up in it. I'm amazed every time I see a perfectly smart person using Hotmail. They are often unaware that some software in the world is designed with the user's well-being, flexibility and freedom in mind. All they need is a little guidance and they'll happily switch. Tutorials exist, but this iniative could be useful if approached the right way.

It'll take a developer 30 minutes to knock up an article. It could switch dozens of people. You will sleep soundly for an entire week. Come on, don't tell me you're busier than me. I won't believe it.

The deal is to aim this at a completely non-tech audience without patronizing people.

Everyone can obviously post on their own blogs but I'll try to aggregate links here. The idea is to synchronize the posts to go up on an MS Reshuffle date. I'm suggesting an MS Reshuffle date of 15th July, 2005.

If you know anyone who might be interested in participating in this please direct them here.

Update - New Ideas

  • Windows Media Viewer to VLC
  • .NET to Open-source architectures

→ More articles in Apps, Culture, Open, Simple
Post a comment (8)