11
MAY

As a follow-up to my previous post about the privacy implications of a central identity provider (*coughfacebookcough*), in this installment of “Kevin rants about shit” I will attempt to lay out my vision for how I think our online identities should be maintained, respected, and managed. This post will be more technical than the last but hopefully the concepts will be somewhat accessible to more than just my computer science friends :) .

The Problem

Briefly, the problem as I described it  in my previous post is that right now our online identities are at the mercy of the sites that create them. The most notable of these being, of course, Facebook. This is cause for concern because any information you enter about yourself can be taken and shared with the world without your permission, or maybe with your implicit permission through confusion. As I see it, there are two possible approaches to solving this problem: government intervention and a technological solution. If there is one entity I trust less than Facebook (or most corporations), it’s the government, so I  will only be talking here about the second. In the following sections I will lay out a high level architecture for how what a technological solution to the problem might look like.

(Continue reading…)

Posted by Kevin @ 17:42 on May 11, 2010
Categories: rant,software; Tags: , , , ,
26
APR

This post has been a long time coming, and in light of recent events I feel the need now more than ever to write it. I don’t intend to be the most comprehensive or elegant critic to make the following points, but hopefully it will go a little ways towards raising awareness.

The Latest Tradeoff

Facebook recently announced a series of new initiatives, the largest of which they refer to as the Facebook Open Graph. In a nutshell what this means for users is websites are now able to provide specific information to Facebook about themselves (and about you). If you log into a site, such as Pandora, using your Facebook profile, it will start broadcasting your likes, dislikes, and listens back to Facebook. Facebook then has the ability to share this information with your friends, advertisers, or the general public. ReadWriteWeb has a more in depth explanation of the details of this announcement from the perspective of a user.

The implications of this announcement are tremendous. Previously Facebook sought to be the owner and manager of personal data that you entered into its system (and it has succeeded extremely well so far). With this new initiative, it seeks to track and own not just your personal information, but also your activity across the web.
(Continue reading…)

Posted by Kevin @ 13:50 on April 26, 2010
Categories: Uncategorized,rant,software; Tags: , ,
16
AUG

The other night I was speaking with Courtney outside of the 12th Street Pub in Lincoln and the subject of information filtering came up, specifically with regards to Twitter and Google Reader. Since “this is what Twitter should do” posts are all the rage right now, I figured I would share some thoughts on the topic.

Courtney brought up the insightful and for some reason not obvious (to me at least) point that all filtering in 1 to many services like this is done on the receiving end, the “pull” end of the process. We talked about why this is a problem and how it could be addressed.

Generally, in a world of “information overload” there needs to be a better way for producers to selectively target and filter the information they send out. Not all of this burden should lie on the information consumer.  (Continue reading…)

Posted by Kevin @ 17:41 on August 16, 2009
Categories: rant,software;
12
MAY

I occasionally stumble across trends on the internet that frustrate and annoy me enough to write about. One of the most recent is what I like to call the “effective anti-commons.” The term is a play on the phrase the tragedy of the anti-commons coined by Michael Heller. This tragedy in a nutshell is when numerous rights-holders each control part of a resource to the detriment of everybody involved. Last summer I saw Professor Heller give a talk* in Redomond, WA about his book Gridlock Economy during which he described the phenomenon in some detail. One of the examples he provided is that most airports are basically unable to add runways due to the land nearby being owned/controlled by too many competing interests. If you want more examples, check out the links above.

* side note: Quite a few of the Microsoft Research talks can be found at researchchannel.org, but god forbid you try to watch the videos on a linux box.

I’m taking the “effective” anti-commons to refer to those situations where control of a resource is split between multiple parties, but through technological barriers rather than through legal rights and restrictions. This happens fairly frequently when dealing with information rather than with physical resources. Technological barriers are necessary because data and other factual information is not copyrightable in and of itself (although the display or compilation of the information may be… the copyrightability of databases is somewhat hazy). So in order to provide protection to a database, companies keep it behind close doors and throw up a scary license that says you cannot copy the facts they display on their website. There have also been attempts to apply the legal concept of trespass to chattels to prevent data extraction techniques such as web scraping.

These attempts to legally control factual content have been hit or miss at best, so organizations have resorted to using technology to protect the data instead, partially because it is so easy to do. In general these barriers exist by default and a certain amount of effort must be spent to remove them (through providing web services or periodical database dumps, etc). This leaves few alternatives beyond web scraping for a third party to access the data. Many third-party sites do take this scraping approach, the most popular are probably airfare aggregators.

In many domains this sectioning off of information is harmful both to the consumer and the provider of the data. A few examples of where this is a problem are listed below.

  • Recipes — There hundreds of different recipe collection sites on the web, some of the most notable are Allrecipes, Epicurious, RecipeZaar, etc. I still haven’t found one with an open API. There are also a few web scraping aggregate sites like Supercook and Food.com, but surprise surprise they don’t have an API either.
  • Car Pooling – There are many carpooling websites, many of which sprang up in the last few years when gas prices were on the rise. Here is a list of 25 of them.
  • Guitar Tabs — Just searching for guitar tabs will bring you quite a few different websites, each with their own collection of tabs. Lyrics websites are the same way.
  • Events — Let’s say you have an event coming up in Omaha, NE that you want people to know about, where would you post that event to so people saw it? Yahoo? We Go Places? Eventful? Or maybe a city specific site like Hello Omaha? Yahoo and Eventful at least realize the importance of data-sharing in this domain and provide developer APIs for access to their data.

Examining these examples illuminates a few specific problems with this setup.

For consumers:

  1. Where do I find information? An obvious problem when the information for a domain is split across multiple locations is where to look for something you need. Using recipes as an example, where would one know look for a desired recipe or recipe type? There is little to no way to tell which website has the highest chance of providing the best results. You have little choice but to search all of them (or Google might provide decent results).
  2. Where do I contribute information? Similar to problem 1, a person has to make a choice about where to contribute information so others can use it. In the case of events, how do you choose a site where the relevant group of users is likely to see it? Different people probably check different websites so you have to post the same information (facts) across many of them if you hope to advertise to the most people (this actually happens fairly often with guitar tab websites).
  3. How do I most effectively connect with other users? Carpooling is one of those domains where the goal is to connect people to each other. This is incredibly problematic when somebody advertising a ride and somebody looking for that same ride are on different websites. The problem of connecting these people is only a problem because the relevant information is not shared.

For producers:

  1. How do I accumulate information? For sites that rely on user-generated content, it is necessary for the owner of the website to convince users to actually generate that content. With an effective anti-commons, websites are forced to compete for users not only as consumers, but also as producers. Through this competition some users choose one website while others choose a different one, and the total amount of usable content for any one website is a fraction of what it could be if the information was shared.
  2. How do I leverage that information to provide value and attract users? The goal of many web applications is to leverage a set of data to provide value to customers. In many cases the amount of value provided correlates directly to the size of the dataset. In many of the example domains listed above, the amount of value possible increases as the data size increases (carpooling, recipes, etc). As mentioned in problem 1, this data set can be increased quite a bit if information is shared among producers rather than fragmented. With the current model of information hoarding, it leaves the door wide open for web-scraping mashups to come through, aggregate data from multiple websites, and win the market. If the data were shared to begin with, this would be far less of a concern.
  3. How do I differentiate myself from my competitors? In a free market competition is inevitable and can be a good thing. However competing for data accumulation and hoarding that data is counter-productive for the reasons just mentioned. It is much more useful and attractive to spend your time competing on features, usability, integration, etc built on top of a shared data set rather than shooting yourself in the foot competing on data accumulation itself. Knowing where to actually compete is a basic business principle, and is also a reason many for profit software companies leverage open source software (so they can focus on competing in more relevant areas of the software stack).

Consumers and producers are both harmed by technological barriers that restrict data sharing. I don’t have the space to list out technological solutions to this problem, but many of them exist and do not take that much extra work. In most cases it is in a business’ best interest to explore these options, especially in the user generated content space.

One area I didn’t mention above, because it deserves it’s own post (or series of posts) is the identity metadata domain (i.e. social networking sites). However many of the same problems pervade this domain as well.

Posted by Kevin @ 22:45 on May 12, 2009
Categories: copyright,software,webdev; Tags: , , , , , , ,
20
APR

One thing that bothers me about software fairly often is the lack of customizability. This is one of the strong appeals of open source software and operating systems, in that they seem to be built with customization in mind. Proprietary software typically has a specific feature set that it is built around and tries to be as consistent as possible so as not to confuse users. This post is about thinking through some of the issues associated with customizability, some ways to handle it, and some software that I think does it right.

There are two big issues I see associated with building customization into software:

  • Time and Cost — Customizability is really just another feature that you have to build into software, and it’s a big one, especially if you don’t design with it in mind from the beginning. The problem here is also that for each new feature you add, you also have to add customizability for that feature so the development time has the potential to increase quite rapidly with the more features you add.
  • User Experience Failures — This is an interesting side effect of customizability. There is the possibility that by allowing customization of certain features of your application, users will be come confused by inconsistencies. This becomes even more of a concern when thinking about the ability to use the software from any computer and expecting it to behave in a similmar manner. If issues like this arise, it can lead to increased support costs.

Regardless of these issues, I believe that customizability is almost always beneficial to software. Some of these benefits include:

  • User Control/Choice – Users are given control to shape the software to do what they want it to do and little more. This allows the software to appeal to a wider range of users.
  • Avoid Feature Bloat — Rather than try to handle a majority of user scenarios in your software, including fringe features which may be very valueable to some users but rarely used by the majority, you can allow users to customize the application to include the functionality they actually need. This cuts down on core development time, especially if you crowdsoruce the production of the fringe features to the community itself. Office apps in particular struggle with the 80/20 rule of feature usage, and I think Zoho could do well to mitigate this problem by exploring customizability for their applications.
  • Platform vs Application — By thinking about customizability, you might find an opportunity to transform your software into an application platform rather than a specific application with specific purposes. This will allow the software a far far larger appeal. Twitter is a great example of programming to a platform instead of an application. They could have easily have gone a different route.

There are a few different ways to implement cutomizability in an application:

  • Plug-in Architectures — Probably the best way I can think of to make your application very customizable is to build the base application that captures the most important or most used functionality, but build it in a way that allows people to build plug-ins that can be easily added on top of the application. This allows the application to take advantage of the crowdsourcing mentioned earlier, especially if you make the plug-ins easy to create. There are a number of examples of this being implemented well including Mozilla Firefox, Lotus Symphony (built on the Eclipse Framework), and WordPress. Google does a similar thing for Gmail, but as far as I know these are still developed by Google Engineers. I have yet to see a hosted web-app that allows user contributed plug-ins. If anybody knows of one please let me know.
  • Configuration Settings – Most apps have some form of “preferences” page or configuration settings that you can tweak. Unfortunately these rarely go far enough to allow true customizability of an application. The other problem is that these configuration settings are rarely able to be synched across computers, which means each time you change a setting for an application, you need to change that setting on other computers you use that app on as well. This is also a problem for plug-ins, but Mozilla has an interesting solution to the problem they are developing called Weave (It’s still in developmet, but you can host your own instance of it if you want to play with it).
  • Personas — Similar to configuration settings, it is sometimes useful for people to aggregate particular settings into profiles or personas. For instance, I might want a certain configuration of a word processing application when I am writing a professional memo versus when I am writing poetry. It would be useful to be able to switch between personas with the click of a button. Once again Firefox comes through here with Profiles, but that is not the most useful solution in many applications as it requires you to restart the application
  • APIs and SDKs — I’ll only touch on this one, but the ultimate in customizability is to open up some of your functionality and data through web services or some other programming interface so other developers can actually build other applications on top of your core. This is the final step to becomming a true platform and there are many examples of this being done well, including Twitter and Eclipse.

All in all I think customizability is typically worth the effort and users appreciate it more and more, especially as it becomes more mainstream. That being said, not everybody agrees with me. Apple is probably the poster child for anti-customizability. They like to control every aspect of the user experience and make sure that their software/hardware has a consistent feel throughout. While there are some benefits to this method, in my opinion it is more annoying than anything, because if you don’t like the way Apple does it, you can’t really change much. Even when they allow developers to write apps for their hardware, they like to control as much as possible how those applications function and are distributed (read: the iPhone Apps dev process sucks)

Posted by Kevin @ 16:26 on April 20, 2009
Categories: software; Tags: , , ,

Powered by WordPress