whit.me: the Whats, the Whys, and the Hows.

Well, not so long ago, I've launched a service for URL shortening, whit.me. If you don't know that much about URL shorteners, please head to Wikipedia for a crash course. The canonical (and most famous) example for this type of services is TinyURL.

Thorough reviews on URL shortening services can be found elsewhere on the Web. This begs for the question: why another URL shortener, since they appear like mushrooms? Lets start by analysing what does whit.me has in common with all of them:


  • Short URLs: well, it's the main purpose of the service. whit.me's have a typical length of 21 chars (e.g., http://whit.me/XXXXXX), but they can be reduced to a 16 chars count;

  • Automatic redirection: by default, following a whit.me URL will automatically redirect to the linked Web page;

  • Manual redirection: to prevent URL obfuscation (which can lead to annoyances such as spamming or rick-rolling);

  • Custom aliases: to help making short URLs more user-friendly;

  • Bookmarklet: always useful, to lower the entry barrier on interacting with URL shortening services;

  • APIs: JSON (and JSONP) APIs provide simple endpoints to help flourishing an ecosystem built on whit.me's shoulders.

Now, why might (should?) you change from your preferred/favourite URL shortening service to whit.me? Some highlights:


  • High availability: whit.me sits on top of Google App Engine, which ensures a high quality of service for whit.me and, consequently, ensures that whit.me short URLs will not suffer from link rot, or even service unavailability;

  • Multiple URLs: few services allow linking to multiple Web pages. It has often been one of the key problems with the Web, on-to-many links (in comparison with other hypertext systems);

  • Annotation: additionally to the URLs, one can add a simple text note to enrich the context of the linked Web pages;

  • Integration in Web sites: By embedding a script into any Web page, existing whit.me URLs become active, by displaying a drop-down menu in-situ with all the URLs (view example);

  • iPhone-friendly: URL redirection pages also have an iPhone friendly user interface, which can be used e.g. for the creation of start pages for Web navigation (and properly bookmarked to the Home screen).

Such a simple service can, of course, be further expanded with other features (some present in competing services) such as spam detection, link analytics, personal link management, etc. (in no relevant order) Naturally, whit.me will evolve in the future to cover these features. I have planned several other features (not present in any URL shortening service, as far as I can tell), which will increase its value from the perspective of all users (those who create/manage URLs, and those who just click on them). If all goes as expected, whit.me will be much more than simply URL shortening, but indeed a nice platform for information/navigation management for the Web-savvy. More on this later on (you're free - and more than welcome - to follow me in twitter to get updates on this as soon as they come out).

Developing this type of services is really simple, since there's no special magic or voodoo required to master. This was quickly hacked with a set of technologies: Google App Engine, Python, jQuery, and, of course, all outputting and manipulating the ubiquitous HTML+CSS Web combo. Some (probably) interesting tidbits/hacks in Python and App Engine's APIs have given rise to a nice simple framework that someday might be extracted and refactored into a small stand-alone project on itself.

However, reaching the sweet spot on User Experience is a difficult task. Keeping the user interface (UI) simple and attractive is not a trivial task, since whit.me supports more features than the common URL shortener. I believe that, after some iterations, it has reached UI stability. From now on, all features added to whit.me will probably take a while to be launched, to ensure that User Experience is maintained or, ideally, improved.

Stay tuned!

The overload of online social networks: part III

It's gaining momentum, since my last two posts about this. I've just read a bit about current efforts to cope with this ever increasing overload of social-ish information production and consumption.

Over the last weeks I've been thinking a bit on a (possible) successful recipe to fully meet this goal. But first let us first examine the nature of social networks:


  • Professional: typically links persons based on professional connections, lists CVs, support job hiring, etc. Such examples are facebook or linkedin;

  • Friends: these one-size-fits-all social networks are centred on connecting friends in two perspectives: friends I know and care about (e.g., facebook), and friendships (worships?) I want to make (e.g., myspace);

  • Utility: these are a bit anti-social networks, where everyone shelfishly contribute to the whole. del.icio.us and digg come as prime examples of leveraging collaborative efforts (tagging and voting) to meet each individual's expectations (e.g., discovering new resources or having personalized news);

  • Topic-centric: these networks are built around a common interest. Bakespace (recipe sharing) and last.fm (music profiling) are well-known examples, amongst hundreds (thousands?) of others (dogster anyone?);

This categorization leverages a particular aspect of utmost importance (already discussed by everyone else): there is a tendency to register into different social networks based on their offerings - a kind of vertical market segmentation - which is usually broken by network effects of some behemoths such as facebook or myspace. Nonetheless, it is an understandable way of differentiation between competitors. However, one surely knows that these categories are far from being disconnected. Especially due to widgetization, cross-pollination has become a normal practice.

When thinking about aggregating social networks, one realizes that each person might have different identities/personas. A first question arises? Do I want to share my personas with everyone else? (Actually, I don't mind at all, as you can see from my homepage, with my dumb/cool personal aggregator.) But does someone wants to share their myspace alter-ego with everyone?

This question leads to another questions: what's the purpose of a social network aggregator? Is is to build *THE* social network of all social networks (kinda like a meta-network) that everyone can access, or is it just a humble tool that helps each individual managing their personas and frame each network accordingly (all in a single page)? First thought: privacy matters.

Hence, here is my recipe for a successful social network aggregator:


  • Identity: I don't want to have to register 1000 times, write the same stuff everywhere, put up the same picture of myself. One time is enough. OpenID helps a bit, as well as solutions built on top of it (such as sxip's solutions). It's Identity 2.0;

  • Privacy: Having a granular way to select my identity aspects that I want/need to share is critical. As well as to whom I show them. Do I want to share a photograph just with my closest friends (from what social network, btw?), or with everyone? FOAF helps describing social networks in terms of connections, which could be leverage to cope with these privacy aspects;

  • Read access: An aggregator has to access my information, mix it appropriately, and leverage it (new visualization methods anyone?). Only this way I won't have headaches by just thinking about seeing *all* the updates on *all* social networks;

  • Write access: Do I want to post something on twitter as well as on facebook's wall? Do I want to update my status accross different social networks? Do I want to publish a picture on a subset of my profiles? An aggregator has to cope with these things. They are typically done by hand, albeit a set of existing APIs leverage these tasks. Google's OpenSocial comes to rescue, fortunately;

  • Sustainable business model: I won't provide an answer to this item (actually I don't have one), but someone has to figure it out. And no, google ads doesn't count...

Finally, and coming back to a previous questions, what would be the visible side of an aggregator? A simple login page open to the public and everything else is closed to each individual (walled garden - privacy matters, don't forget), or picking up each individual's granular control of privacy and expose the Network to everyone? An open garden might benefit some (hyper-targetted advertising?), but disturb others...

And what about after transposing the login page, what would I be faced with? Some kind of billboard/mashup containing every information I want to access, as well as updating facilities to cope with the overload issue? Or should an aggregator go a bit further and become a first class citizen in the social network battlefield? That'd be intersting, from an end user's point of view: one time login, infinite procrastination :)

One last thought: where to start. Identity consolidation. After that, connection networks and semantics might be built upon it.

The overload of online social networks: part II

Since my last post on social networks overload a lot of things have happened. Some more insightful, some more trendy. Nonetheless, the world has kept spinning.

First, a lot has already been said about one of the newest Google initiatives (no, not Android - that'll be a theme for another post), OpenSocial.

In a nutshell, OpenSocial (from Google's own words) provides a common set of APIs for social applications across multiple websites. With standard JavaScript and HTML, developers can create apps that access a social network's friends and update feeds.

When launched on November 1st, Google's press release already included an impressive list of companies/websites that provide (or are in the process of providing) support for the OpenSocial API, such as MySpace, orkut (obviously), hi5, Oracle, Salesforce.com, NY Times, and PayPal. That is really impressive.

My opinion: this most probably means that social networks will become open (do you hear that, Facebook?), third-party developers will simply focus on providing the best experience to users for their products, instead of focusing on a bunch of APIs with bad documentation. But the best part is the easyness of importing and exporting my own data, user info, photos, friends network, etc. across different social networking websites. About time....

On a more conceptual side, and with a smaller impact (when comparing to Google's), but still of the utmost importance, is a breakfast-fueled rant by Tim Berners-Lee.

Tim talks about The Graph. The social network graph, as a particular case of the Semantic Web, advocating it as another way to bootstrap, access, and explore social networks independently from any website (using FOAF, by the way).

Lastly, discussions are popping up with similar thoughts like mine's, already proposing some solutions to this problem (despite being more or less architectural/conceptual).

I think that the social networking revolution is just beginning. I wonder when will they start taking into account the always increasing number of Web Interaction Environments to provide the best user (and social) experience to everyone, everywhere. Has anyone tested social network websites with any disabled person? I wonder what would've happen...

The overload of online social networks

During the past few months, I think everyone with at least a tiny bit of internet savvyness knows what an online social network is. From wikipedia's entry, this is defined as focuses on the building and verifying of online social networks for communities of people who share interests and activities, or who are interested in exploring the interests and activities of others, and which necessitates the use of software.

All this mumbo jumbo is easily understood if I mention MySpace, Facebook, or any other from this list. The phenomenon has expanded to music, photography, among many other interests (some of them really weird).

So, as a tech savvy, I explore these sites from time to time, to check what's all the hype about... This resulted on having multiple profiles entered on different networks, with inconsistent information between them. And I hate having to update repeatedly all of them, instead of doing it just once. Heck, recently I even deleted my accounts on some networks, as my profile was so much out of date, that mainaining them didn't make any sense to me. Nevertheless, while some of this networks simply exist to make friends, or to browse disparately without a purpose, just to kill time (i.e., also known as deliberately lost in the hyperspace).

Despite this, I think that some networks really do have meritable purposes (from my point of view): I use Flickr to show some photos from my travels (typically when I go to conferences); LinkedIn as a socialnetwork-flavored curriculum vitae (you'll never know when to look for a new job); Facebook to get in touch with some overseas friends; and, lastly, Last.fm to find new music I might me interested (really cool network, I confess).

So, to lower the burden of updating all my information of each site, there should be a mechanism to lower this burden. Yes, I know that, in fact, each one provides its special features, allowing people to differentiate from each others. But a great deal of information is the same (e.g., profile info, user photos, commenting, partial friend networks, shout boxes, blog posts - you name it).

Why can't I perform this updates on a centralized way? This issue is similar as having to sign-in into each site with different username/password. OpenID delivered a solution to this identity authentication problem. (I've posted something about this before). Is this a new opportunity for this standard? Or to anyone else outhere?

Oh, and why do I have to keep checking each site, just to take a quick glance over the latest updates and info? Yes, I know that most of these sites rely on advertising programs to squeeze a buck or two. Nevertheless, I'm sure that a good solution can be found in between, thus making everyone happy. And since this is a blog about user experience, and I'm a user, I want to be happy. And I'm not happy at all with this... updating overload.

On a side note, I haven't resisted on fullfiling my profile at Digg. At least on this case, I still win something with this new network: interesting news will be pushed to me by my peers... Interesting, IMHO.

Mash Me Up!

Mash Me Up! is a software to create feed aggregation mashups, requiring near zero configuration to put it online.

When procrastinating through my daily bookmarks, such as Original Signal or the Web 2.0 Workgroup, I've always wondered: Why can't I find a software to create these public mashups easily? Why do they always implement their own feed mashup solution? Doesn't Google homepage, My Yahoo!, and similar services deliver the same solution?

In a nutshell, Mash Me Up!'s uniqueness resides on the fact that it can be deployed both for personal and public use, it's skinnable (100% CSS), it's got a clean markup (no tweaks, verbosity, or whatsoever), and it's really lightweight (no widgets, no javascripts, no XHRs).

Media_http2bpblogspot_tiutz

Try my live demo and download it!

Moreover, as a gift to you, I've also added support to pass any number of feed URLs directly on Mash Me Up!'s URL (disabled by default), e.g.:

http://example.com/mashmeup/?feeds=url1|url2

This way, one can potentially create a mashup without even configuring the software, or have different instances of Mash Me Up! bookmarked for his/her own pleasure without having to use fake tabs inside the UI (like Google homepage does - bad UI, no cookie for you!)

The really cute thing is that this took me just an evening to create, test, and deploy. How? Simple. By using MagpieRSS to parse RSS/Atom feeds, it required me strictly 50 lines of PHP (including HTML tagsoup) to deliver Mash Me Up! in your browser.

Feel free to use/tweak/improve this software at your own will, as long as you keep visible an acknowledgement to the author (me).


Some technicalities:

Software requirements


No need for a special setup on a Web server, it's as simple as having the Web server (Apache recommended) and PHP 4.1.X or greater.

Setup


In order to use Mash Me Up! you just have to unzip the script into a proper Web server location, configure your feeds and (optionally) a few other things, and that's it!

When configuring Mash Me Up! you just have to edit a few things on the included config.inc.php:

The title
$mmu_title = "Mash Me Up!";

The subtitle
$mmu_subtitle = "the no-brainer way to create feed aggregation mashups";

Select your feeds
$mmu_feeds = array("http://feeds.feedburner.com/ajaxian", ...);

Regarding other options, please refer to the config.inc.php file, as they are self explainatory (I hope) :)