DrupalCon, Copenhagen 2010. Impressions

I won’t hide, the most interesting and relevant session at DrupalCon for me was on Drupal Commerce. Ryan Szrama is doing amazing job with reingineering Ubercart, and I’m really happy to have been able to talk to him in person.

The reason why I’m interested in the Drupal Commerce module is that I worked on Magento and Drupal integration for OCentric at my previous company (Optaros) and I’ve seen how difficult it is to have content, community and commerce mix in one solution. Therefore Drupal 7 + Drupal Commerce mix looks really promising. Just think about having a piece of content and adding a “product field” to it, formatted with “Add to cart” button; or the opposite – take a product page and add a piece of content to it as a field, which can have its own comments, ratings, etc. Really flexible and powerful!

One sentence by Ryan got imprinted in my brain:

“Ubercart was the first PHP and MySQL project in my career, so you guys are pretty brave to use it in production”

Another session that stood out was the keynote by Rasmus Lerdorf, the creator of PHP. It really corrected the way I look at PHP. He also showed some tricks for debugging and tracing the performance problems for Drupal. It was pretty impressive how in 15 minutes he spotted that the bottleneck in Drupal is the rendering engine which he suggested to rewrite in C/C++.

One sentence by Rasmus that imprinted in my brain (with some distortion):

“PHP has always been a templating language. All the heavy coding must be done in C”

The session on Varnish was probably the geekiest of the ones I attended, but Paul-Henning Kamp (the creator) made his point – you have to use Varnish!

And I was totally impressed with Aegir, how come I’ve never stumbled upon it? There is no doubt that this tool combined with drush_make will save the world from the Drupal deployment hell.

All in all, there was quite some buzz about Drupal 7 during the conference, many serious modules are developed directly for 7.x. This is mostly due to the fact that 7.x has this concept of entity (a field) as opposed to nodes/comments, which solves a lot of problems. I’m really looking forward to Drupal 7 and all the goodies that’ll come with it.

This was my first DrupalCon, and I must say that the crowd was really amazing. A bunch of friendly and easygoing people.

DrupalCon Copenhagen 2010 participants

Audiobooks Social Network

I like books.  Recently I got attracted by audiobooks. This looks like cheating a bit, because it’s not pure reading, however, I must say it’s far from cheating. Listening requires (at least for me) even more attention than reading.

Anyway, I am now keen on audiobooks, and as it usually happens, my experience with the Web comes into play. So I started thinking whether it is a valid idea to build a social site fully dedicated to audiobooks – or more generally reading text aloud and listening to recordings.

Let me analyze the idea of this social site in several axes.

Social object

Clearly the social object would be a piece of read aloud material. For simplicity we can think of a chapter of a book. When all the chapters are available the whole audiobook is there. Interestingly, an audiobook can be assembled into one even if each chapter is read by different people.

Social activities

We’ve got chapters of audiobooks as downloadable files on the site. There will be two kinds of people visiting the site: those who submit their readings to the site and those who will want to download audiobooks. Besides all the usual features like sharing, bookmarking, chatting, reviewing, flagging, rating etc. audiobookers will need some special tools and features, such as: audioconferencing for real time multicharacter recordings, a friendly avatar that impersonates the reader, rankings of the best (popular) readers, transcription of audio into text for search engine optimization, and so on.

Technicalities

Software-wise everything looks solvable. It’s just a Web site maybe with AIR desktop applications for reading aloud, saving, organizing, listening, etc. to books. The greatest challenge is how to ensure that the reader is reading the book the way it was written. And then, how to ensure that the readers will correctly name the pieces they read so that they (semi-)automatically could become one audiobook. Probably this is only achievable by croudsourcing and social filtering.

Business case

All the materials on the site should be available for free because it’s community generated content. Still there are plenty of opportunities for paid services. For instance:

  • assemble audiobooks out of separate chapters for those who don’t have time to do that by themselves;
  • sell professionally read audiobooks; allow the readers selling their recordings and take a percentage from each transaction;
  • provide additional tools for readers to promote themselves and get statistics;
  • organize paid events where book authors read aloud a chapter or two of their books;
  • use the audiobooking infrastructure for voice recordings management system as a service;
  • etc.

Tidy Up My Friend Feed

There is one feature missing on Facebook (I believe in many other social networks as well) – digest view on friend’s activity. Of course I can go to my friend’s profile and see all the activity, but there should be something more user friendly.

Consider the following scenario:

I am on my Home page on Facebook. Here I see all the (non hidden) friend activity. E.g. somebody posted a picture, somebody shared a link, somebody liked a song. Apparently there are some people which are very active, so they do those activities very often during the day. Alternatively there are more passive friends doing those activities very rarely, e.g. once a week

In this scenario there are two things to notice:

  1. Active friends will take up a lot of space on your Home page (or life feed in general).
  2. Passive friends will be quite invisible in all the sea of posts.

It’s very likely that an activity done by a passive friend is more valuable than 10 posts from a very active (and maybe not the best) friend. So what we normally do? We hide the posts of very active friends. Otherwise we put those active people to another list. All in all we want to clean up the main life feed on the Home page.

What we actually do is spam filtering on our friend’s posts. That’s not good, because we know that they are friends and the stuff they do is not spam (even if sometimes it does not concern you).

I think the solution to that could be a digest view on friend’s activity. Mailing lists work this way. There I can specify, that I want to receive one e-mail per day with all the discussion topics listed. Following this approach would allow grouping all the posts of my active friends opposed to having them flat-listed by time.

A Browser That Removes Ads

A couple of days ago my friend was very annoyed by an advertisement which produced some sounds when you mouseover it. And the ad was placed in such a way that he would go on it quite often.

I wonder if there is a Firefox add-on which simply removes the ads from a page. It would solve not only the problem that my friend had, but also a more generic one. Imagine it would be possible to browse ad-free, that should be really awsome.

The ad removal plug-in could be trained by users to detect ads, e.g. served by Google:). All the information about where the ads or banners are could be stored in some public database, and the plug-in could leverage the collective knowledge of all Web users. Considering that ads are normally served as:

  • external javascript
  • iframe
  • inline images or text

it should be rather easy for a browser to simply remove some pieces of HTML from the DOM or put them somewhere at the bottom of the page so that they don’t disturb the eye.

Making Money with OAuth

I am really excited about the idea implemented by RPXnow. It works as simple as:

… a proxy between third party identity providers and your website, RPXnow helps you effortlessly add single sign-on from providers like AOL, Google, Yahoo! and even Facebook. The hosted service runs in the cloud and is accessed via simple RESTful API calls …

A set of features looks impressive, let me list them here (or see them with descriptions):

  • Supported identity providers: Google, Yahoo, Facebook, Twitter, MySpaceID, Windows LiveID, AOL, Blogger, WordPress, VeriSign, Hyves, OpenID
  • Sign in widget
  • Profile data from the identity providers
  • Account mapping
  • Extended access to the providers’ APIs
  • Social publishing (coming soon)
  • Address book import

I want to note that RPXnow is positioning themselves as a “Single Sign-On for your website” although it provides with much more. And this much more, I think, could be a totally separate business.

RPXnow is putting effort to become a service that aggregates people data accross many services (e.g. MySpace and Facebook). Think of it as plaxo.com, but without the UI, just the REST API. Normally, if in your website you’d want to access user’s MySpace, Facebook, or Google account data, you’d have to code everything yourself using the APIs provided by those services. RPXnow does it for you. So you only need to interact with one API – RPXnow API.

Recently I was reading the article Writing OAuth Gadgets, and then stumbled upon a concept of OAuth Proxy. As you can imagine it’s a proxy design pattern applied for OAuth services, i.e. you provide an OAuth service that delegates to another OAuth service. Actually, the upcoming “Social publishing” feature of RPXnow will do exactly that – proxy to other services.

I think OAuth proxy could be a totally separate service in the cloud. There are many services online that allow for pretty much similar things: status updates, picture uploads, videos, profile information, etc. So the proxy could unify all this kind features into one interface and adapt to multiple services. As a customer of the proxy I would simply ask to upload a picture on behalf of a user, and I don’t care where it goes – MySpace, Facebook or Flickr.

The question then if OAuth proxy as a business is possible without the “Single Sign-On for your website” like RPXnow. Because if not, then OAuth proxy would have to compete with RPXnow. I think it’s possible. Consider a couple of use cases:

  1. A website that already has a lot of users. Instead of changing there authentication strategy it may be more feasible to implement the “Link external account” functionality and use OAuth proxy
  2. OpenSocial containers could use the more generic OAuth proxy than proxying just as a workaround

Maybe there are more?

Additionally, since OAuth proxy is actually software as service (SaaS) it implies recurrent revenue.

Relevant Search on the Web with a Personal Crawler

I thought (and I strongly believe that somebody already thought about the same before me :D) that it would be great to have a search that’s relevant only to you. With Google you can kind of personalize your searching experience, but I mean another thing.

Let’s say:

  • I’ve got hundreds of followers on Twitter and I follow a hundred people
  • I’m on Facebook where I’ve got many friends
  • I’m using Delicious for bookmarks
  • I use Google Reader for keeping myself up to date
  • I blog myself, and I receive comments on my posts
  • etc.

In all the listed services/activities there is a substantial set of links present or produced either by me or by people in my network. These links form a slice of Internet that is relevant to me.

Intuitively, the part of Internet that is relevant to me is growing:

  1. as I’m expanding my social graph
  2. as I’m sharing links with others
  3. as I’m actively participating on the Web, e.g. commenting

however, a big part of my subInternet is actually hidden (not public), e.g. links shared by friends on Facebook.

Now, imagine that you have your personal Web crawler (maybe plugged into Google). This way you could search in 3 modes:

  1. The Web – as we are used today
  2. The relevant part of the Web only – available via OAuth, Facebook Connect, etc.
  3. Both

As an example consider the keyword “birthday” in all the three cases. It’s pretty clear that the results will be quite different.

Platform as a Service (PaaS) or Cloudware

PaaS, as Wikipedia puts it, is a bit clumsy to understand. You can get an expensive definition with examples from Forrester, if you will :) There is also the platformasaservice.com which seems to be (or to become) the central place for PaaS related resources. Also Google Search gives some useful links to read about PaaS, worth checking at least the first ten of them.

Why am I writing about PaaS? Because I got excited by the term, which I never heard or thought about.

Before not long ago I new SaaS, which currently is quite a comon business model – simply put up some software on your infrastructure and charge the users for using it. The best example in this area for me still is CRM provided by SalesForce.com. At Optaros we call this model Rent. You can read about Assemble vs. Build, Buy, Rent in the company’s blog, pretty simple and quite interesting.

So SaaS is an genious idea. It allows for recurrent income, which is always good in hard and unpredictable times (provided that the customers are already there). Optaros realized that Assemble goes very well with SaaS in the way that we call Hybrid offering. To keep it simple the hybrid offering is: build the app and rent it (most likely to the same customer). Doesn’t it sound more like a nice theory which is practically difficult to implement? Well, it is difficult but not impossible. Just check out what the Assembled Web is and then combine it with OView. Shortly, customers get a bunch of assembled apps floating around the Web and delivering their branded presence outside their main Web site. Moreover the customers get full control and overview over theoe apps. So this hybrid offering is really a simplified PaaS.

Having said that, looks like PaaS is actually a natural successor of SaaS. Intuitively it’s something more than SaaS. What constitutes “more” is the delta between what is Software and what is Platform. Hence in PaaS business model it’s a more complex software that’s being rented. The complexity varies. It can be a virtual machine(s) that you rent, e.g. Amazon Elastic Compute Cloud, Google Apps Engine, etc. or infrastructure to build apps there, e.g. Bungee Connect, SalesForce.com, etc.

Interesting what goes next in the line of SaaS > PaaS > ???. Soon my laptop will contain no code, nor IDE… just a browser. And I will forget how JAVA looks like, what is PHP, what is scalability issues, etc. I will just program on REST APIs and buy resources from someone on the cloud. Sounds like fun.

Jenabeans Make RDF Easier

Jenabeans is there to help developers to adopt RDF. If you worked with Java Persistence API (JPA) or Hibernate you can understand the value of defining your data model using Java annotations instead of DDL scripts. Jenabeans works similarly: annotations, (un)marshalling, etc.

Read a nice introduction to Jenabeans in an IBM developerWorks article. It’s short but fluently defines the main aspects of the library.

Bullets of “Designing for the Social Web” by Joshua Porter

Some time ago I listened to a podcast, where Joshua Porter was talking about the social design. Thanks, John, for the reference! I got interested, and bought his Designing for the Social Web book (even before it was published :)). When it got on John’s summer reading list, I was sure that the book is going to be good… and, oh yeah, it was!

Since there are so many good points and examples in the book it’s rather impossible to give a short overview of it. Every good point leads to another good point, and I wouldn’t want to leave the good points outside the summary :) I don’t want to rewrite the book here as well… All in all – I strongly advice to read it and learn the DOs and DONTs in social Web design.

While I can’t summarize the book, I decided to make up a reference of points that were inside it (a little bit more than table of contents), just to memorize them better.

Designing for the Social Web

  1. What’s in the book

Open Source Earth

There is an open source alternative to Google Earth – NASA’s World Wind project; recently discussed in a YDN Theater post.

Also worth mentioning the project Gaia, initiated to reverse engineer Google Earth in order to set it free.