March 30, 2006

Naked Answers

I like what Werner wrote about the visit from Shel Israel and Robert Scoble. Heh, wish I'd been there. I must have missed the email...

Anyway, this particular part struck me as being very true :
Amazon is a long time pioneer in the space of involving their customers with our product. And we really listen to our customers; any Amazon employee who encounters an issue on a forum or weblog or at any other place is empowered to escalate those issues internally immediately until they get fixed. Customer feedback is essential for Amazon and we will use all effective means to get it.

A few times over the past few years I've brought issues to internal teams and each time they have been totally positive about working on them - often it's a 'user education' thing (usually I'm the one being educated), but when it's a larger issue I've seen teams honestly re-examine what they are doing and incorporate the feedback and real change really happens.

March 26, 2006

Ripple - Internet IOUs

From a post by Mark Baker, the
Ripple payment system looks facinating! This is very intriguing because two nights ago I was wondering about payment systems and whether banks support 'request for transfer' requests in addition to just transfer-in and transfer-out requests. I imagine the problem of spam with request-for-transfer-out would be a problem. Anyway, the Ripple system is a distributed network of trust for the exchange of digital IOUs. These can be exchanged for products, services or even cash - anything of value. It'll be interesting to see what happens if someone integrates this with Edgeio or Craigslist (think 'mashup'). I haven't finished reading the whole site, so there are lots of open questions around fraud and actual overhead of participation, but this is all very cool.

Their About page is a good place to start.
From their FAQ:

How do I cancel debt on the system once it's been settled?

When two connected account partners settle a Ripple obligation outside the system, for example, by using cash, the person receiving the settlement must record it in the system by returning the settled IOUs to their issuer. They do this by making a regular Ripple payment to the person who settled their debt with you. Your mutual account balance will be changed to reflect the fact that the debt has been settled. In effect, they are using the IOUs they hold on the Ripple system to purchase cash.

The Internet is evolving it's own system of governing - of the people, by the people, for the people. First it started with communication, then community and now commerce. It seems inevitable that it's members will become an independent government unto itself. It won't start out perfect. Behavior, laws and regulations will continue to adapt, just as historical governing regulations have changed over time. But this tells me that there is a reason why this technology stuff is important. It is the technology of these Internet based systems that help private citizens remain private and remain citizens - and keep on being free. All changes start with a small ripple.

March 18, 2006

Irish pub on St Patrick's Day

On most Friday's, our team goes out for a lunch in Seattle's International district - mostly Asian, Thai and Indian food. But this Friday as we were heading out, we remembered it was St Patrick's Day and started looking for an Irish pub. The ones we knew about were kind of far, so we decided on going to F.X. McRory's - I always thought of it as a whiskey bar, but figured it had some Irish-ness to it.
When we got there, the staff all had some sort of green hat or shamrock painted on their cheek, so we knew we found the right place. There is a huge dining hall off to one side with high ceilings, old wooden floors and super tall windows letting in the sun - it was very nice. But the best part was that our table was right next to a band playing drums and bagpipes! I love the sound of bagpipes, but dang they were loud . We noticed later that the musicians had ear plugs - cheaters.
The menu had stew, shepherd's pie and corned beef and cabbage sandwiches - so I got the sandwich. I'd never had corned beef before and I have to say it's good enough try again someday - especially given a tall glass of Guiness to go along with it. But I'll have to warn you, the little dish of what looks like cabbage isn't cabbage, so if you take a big bite (like I did) you'd better really like horseradish.

March 15, 2006

ArtRage 2

If you or someone or know has even the slightest interest in painting, either on canvas or the computer, go right now and see ArtRage 2 - it's a fantastic program that feels like real painting. I really need to get a pressure sensitive tablet...

Pandora - find more music

Wow, the Pandora site that
plays similar music based on innate musicality is way cool! It's based on something called the Music Genome project that categorized songs on 40 or more dimensions. Fancy fancy!

"Ever since we started the Music Genome Project, our friends would ask:

Can you help me discover more music that I'll like?

Those questions often evolved into great conversations. Each friend told us their favorite artists and songs, explored the music we suggested, gave us feedback, and we in turn made new suggestions. Everybody started joking that we were now their personal DJs.

We created Pandora so that we can have that same kind of conversation with you."

March 14, 2006

Amazon S3 - finally, a real REST service

The new S3 Web service has what I would consider a very well designed REST interface that is also well documented (all the Amazon Web services have decent documentation). The current set of Amazon Web services is starting to grow nicely.

The S3 service is advertised as a Web-scale storage system with a super simple API and apparently very low storage and bandwidth costs. Each resource stored can be up to 5GB and also has support for ACL based permissions - to access the ACL, just append "?acl" to the resource. That's pretty simple and effective.

March 10, 2006

Microformats and product data

I've been hanging out on the discussion list related to product data - too bad the email list isn't linkable. Anyway, these are my latest thoughts:

I am also wondering where and when a microformat for products would be useful. I'm generally wondering when /microformats/ are useful. (see It seems to me that general narrative text and general conversations in text sometimes have 'hard' data like people, places, dates, times, phone numbers, etc Marking these as /being/ people, places, dates, etc. makes it easier for software to process - but the underlying data below the markup is still readable and sensible to people. Product data isn't like this at all. It's an unregulated mass of named properties with little rhyme or reason - there is no need to gently superimpose tags without breaking the elegance of the underlying data because there simply isn't any underlying elegance.

What it sounds like may be useful is a simple way for people to talk about things and reference those things, but without needed to fill in the blanks for unnecessary detail. For example, if I talk about the new mountain bike that I bought and immediatly scratched up by tipping over, it would be cool if I could tag the phrase "new mountain bike" as a reference to a product - but I don't want to actually describe the composition of the bike, the kind of tires and suspension and whatnot. People don't do that, manufacturers do.

If we want to solve this for manufacturers, then just use XML. Then the next problem is how can software determine which attributes from which manufacturers mean the same thing? That's where a shared 'open product attribute' database would be useful.

Gosling down on PHP and Ruby

This is a hoot - from
James Gosling at a Sun conference - narrowly correct but broadly missing the point :

'There have been a number of language coming up lately,' noted James Gosling today at Sun's World Wide Education & Research Conference in New York City when asked if Java was in any kind of danger from the newcomers. 'PHP and Ruby are perfectly fine systems,' he continued, 'but they are scripting languages and get their power through specialization: they just generate web pages. But none of them attempt any serious breadth in the application domain and they both have really serious scaling and performance problems.'

As a language, PHP and Ruby may not have the breadth of Java on a single machine - after all, they just 'generate' web pages. Well, they do a little more than that I suppose, they can handle incoming Web requests too. And what applications can you build and at what scale if all you can do is process messages over a network? I suppose the breadth of the applications possible is the same as the breadth of the network your messages travel over - which in this case is global. Maybe someone should tell him that 'the network is the computer'.

March 08, 2006

Alex Russell on Comet

From Phil Windley - this a
very good summary of the web-native event notification system that has evolved from Ajax - Comet. It hits all the points that KnowNow dealt with five or six years ago.

One nitpicking point is this "The problem is that each connection takes a process or thread and there might be thousands of them. Comet can reduce load but not on your current Web infrastructure." A server doesn't necessarily have to allocate a thread or process for each connection - if you look at IRC servers, they handle many thousands of concurrent connections. What is needed is non-blocking IO and Phil's post later points to SEDA - staged event driven architecture. Which brings this full circle from my work at KnowNow that used persistent connections to the browser, to my team at Amazon that used SEDA in a new real-time publishing system we built over the past few months.

It's great to see everybody up to speed on internet-scale event notifications - the power of event driven browser applications is now clear, XML messaging via Atom/RSS is widespread, even Microsoft has contributed algorithms for supporting messages criss crossing a cross-linked web of subscriptions. What's next? I think the 2-connection limit needs to be solved and that will be the final step in the next wave of live Web apps.

March 07, 2006

Simple Sharing Extensions

The Simple Sharing Extensions built by Ray Ozzie at MS is
a pretty decent description of nearly Web-native pub-sub message handling. Anyone doing event notifications will recognize most of the issues and algorithms - there are some very useful wrinkles when considering the context of RSS and feeds.

One thing that this doesn't improve on is the retrieval of data from a single URI - multiple consumers have to really keep up their polling. An alternative is to use something similar to Atom's next/prev linking (which I'm not sure is in the final Atom spec, but it's in the discussion history somewhere). In the case of MS's SSE, if each incremental feed was located at a unique URI, and that feed contained a link to the next set of changes (that the server chooses to hand out) then a lot more caching can take place and the server can choose it's own approach to throttling clients.

March 06, 2006

Comet - event driven Ajax arrives

Ajaxian post introduces the name 'Comet' to describe an event-driven approach which is a natural evolution of Ajax applications. It's been great to see so many applications use Ajax and the recent appearance of 'unsolicited message delivery' to browsers is also very cool. There have been a few groups doing this for many years, and it's exciting to see it all about to really take off and become fully mainstream.

The remaining technical hurdle for this technology is the client-side 2 connection limit - at KnowNow we used a 'journal' topic to funnel all messages through, but I don't know what others are doing. I'm going to guess that browsers will soon move this to 4 or more connections. It may be necessary for some deep thinkers to analyze the TCP/IP issues and address it at the protocol level, but I hope not.

Just the other week, I built a simple servlet at work that delivers messages into a browser using a persistent connection. I hooked the servlet to our recruiting/resume pipeline, so now my team gets live notifications the moment a candidate is entered into the system - we now beat out other groups in tagging the candidate and get first choice of many more people. A simple tool, but super useful and it only took a few hours of work, compared to a few weeks of work back at KnowNow so many years ago. Having a built-in XML parser on the client and a robust browser (Firefox in my case) takes care of most of the client infrastructure.

The thing I like about my simple messaging server and client is that it uses hyperlinks identify the set of messages and the client simply 'follows the links' to get more messages. When a client gets to the end of the list of messages, the servlet holds onto that request until more messages arrive - at which point they flow down to the client, achieving fairly low latency. The implementation isn't scalable or efficient, but the approach of using hyperlinks is.

Here's an example chat app (don't expect greatness...)