<?xml version="1.0" encoding="UTF-8"?>

<rss version='2.0' 
     xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
     xmlns:doap="http://usefulinc.com/ns/doap#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

    <channel>
        <!-- This XML Feed shows details for the page User:dolander 
             and everything recently tagged User:dolander -->
        <creativeCommons:license>http://creativecommons.org/licenses/by-sa/2.5/
          </creativeCommons:license>
        <title>User:dolander on SWiK</title>
        <doap:name>User:dolander</doap:name>
        <doap:description>&lt;p&gt;Developer on Swik.&lt;/p&gt;
</doap:description>
        <description>Developer on Swik.
</description> 
	  <!-- see doap:description for full description -->
        <link>http://swik.net/User:dolander</link>
        <doap:homepage></doap:homepage>
        
        <pubDate>Fri, 05 May 2006 16:04:55 -0700</pubDate>
        <lastBuildDate>Mon, 24 Sep 2007 13:46:40 -0700</lastBuildDate>
            
        <item>
            <title>Amazon EBS - Elastic Block Store has launched</title>
            <link>http://swik.net/User:dolander/All+Things+Distributed/Amazon+EBS+-+Elastic+Block+Store+has+launched/cc0vn</link>
            <description>&lt;p&gt;Today marks the launch of Amazon EBS (&lt;a href=&quot;http://www.amazon.com/b/ref=sc_fe_c_1_3435361_1?ie=UTF8&amp;node=689343011&amp;no=3435361&amp;me=A36L942TSJ2AJA&quot;&gt;Elastic Block Store&lt;/a&gt;), the long awaited persistent storage service for EC2. Details can be found on the &lt;a href=&quot;http://aws.amazon.com/ec2&quot;&gt;EC2 detail page&lt;/a&gt;, the &lt;a href=&quot;http://phx.corporate-ir.net/phoenix.zhtml?c=176060&amp;p=irol-newsArticle&amp;ID=1189249&amp;highlight=&quot;&gt;press release&lt;/a&gt; and Jeff Barr&#039;s &lt;a href=&quot;http://aws.typepad.com/aws/2008/08/amazon-elastic.html&quot;&gt;posting over on the AWS evangelists blog&lt;/a&gt;. Also the folks at Rightscale have two detailed postings: &lt;a href=&quot;http://blog.rightscale.com/2008/08/20/why-amazon-ebs-matters/&quot;&gt;why Amazon EBS matters&lt;/a&gt; and &lt;a href=&quot;http://blog.rightscale.com/2008/08/20/amazon-ebs-explained/&quot;&gt;Amazon EBS explained&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
With the launch of the Elastic Block Store we complete an important milestone in offering a complete suite of storage solutions as part of the Amazon Infrastructure Services. Back in the days when we made the architectural decision to virtualize the internal Amazon infrastructure one of the first steps we took was a deep analysis of the way that storage was used by the internal Amazon services. We had to make sure that the infrastructure storage solutions we were going to develop would be highly effective for developers by addressing the most common patterns first. That analysis led us to three top patterns:
&lt;/p&gt;&lt;p&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;b&gt;Key-Value storage&lt;/b&gt;. The majority of the Amazon storage patterns were based on primary key access leading to single value or object. This pattern led to the development of &lt;a href=&quot;http://aws.amazon.com/s3&quot;&gt;Amazon S3&lt;/a&gt;.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Simple Structured Data storage&lt;/b&gt;. A second large category of storage patterns were satisfied by access to simple query interface into structured datasets. Fast indexing allows high-speed lookups over large dataset. This pattern led to the development of &lt;a href=&quot;http://aws.amazon.com/sdb&quot;&gt;Amazon SimpleDB&lt;/a&gt;. A common pattern we see is that secondary keys to objects stored in Amazon S3 are stored in SimpleDB, where lookups result in sets of S3 (primary) keys.&lt;/li&gt;
	&lt;li&gt;&lt;b&gt;Block storage&lt;/b&gt;. The remaining bucket holds a variety of storage patterns ranging special file systems such as ZFS to applications managing their own block storage (e.g. cache servers) to relational databases.  This category is served by Amazon EBS which provides the fundamental building block for implementing a variety of storage patterns.&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;&lt;p&gt;
I &lt;a href=&quot;http://www.allthingsdistributed.com/2008/04/persistent_storage_for_amazon.html&quot;&gt;have written before&lt;/a&gt; about the basic features of Amazon EBS:
&lt;/p&gt;&lt;p&gt;
&lt;ul&gt;
	&lt;li&gt;Amazon EBS will be offered in the form of storage volumes which you can mount into your EC2 instance as a raw block storage device. It basically looks like an unformatted hard disk. Once you have the volume mounted for the first time you can format it with any file system you want or if you have advanced applications such as high-end database engines, you could use it directly. &lt;/li&gt;
	&lt;li&gt;Developers can create multiple volumes, in size ranging from 1 GB to 1TB. This volume will be created within a specified Availability Zone and will be accessible by your EC2 instances running in that Availability Zone. As to be expected with a volume abstraction only one instance can have the volume mounted at any given time. Volumes can migrate and be reattached to other instances if necessary for failure handling or application migration reasons. &lt;/li&gt;
	&lt;li&gt;The consistency of data written to this device is similar to that of other local and network-attached devices; it is under control of the developer when and how to force flush data to disk if you want to bypass the traditional lazy-writer functionality in the operating systems file-cache. Because of the session oriented model for access to the volume you do not need to worry about eventual consistency issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;&lt;p&gt;
However Amazon EBS isn&#039;t just a massive volume storage array within an Availability Zone, it provides a unique feature that allows for the creation of novel storage management scenarios: the ability to create snapshots and store those snapshots into Amazon S3. These snapshots can then be used as the starting point for creating new volumes within any availability zone.
&lt;/p&gt;&lt;p&gt;
We see developers use this feature for long term backup purposes, for use in rollback strategies, for (world-wide) volume re-creation purposes.  Snapshots also play an important role in building fault-tolerance scenarios when combined with managing applications using Elastic IP addresses and Availability Zones.
&lt;/p&gt;&lt;p&gt;
Congratulations to the EBS team for delivering a great service that will help a lot of EC2 customers managing their storage efficiently.
&lt;/p&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:54 -0700</pubDate>
        </item>
            
        <item>
            <title>M&amp;A - it ain&#039;t over till it&#039;s over</title>
            <link>http://swik.net/User:dolander/Beyond+VC/M%26A+-+it+ain%27t+over+till+it%27s+over/cc0rm</link>
            <description>&lt;div&gt;&lt;p&gt;The economy is clearly slowing down and the IPO market is nonexistent.&amp;nbsp; As I have always said, this is the time to hunker down and tweak your business to get your model right.&amp;nbsp; If you are interested in exiting today, M&amp;amp;A continues to be the only viable path along that front.&amp;nbsp; Having been through a number of acquisitions and potential acquisitions through the years, one point I must remind you of is that any deal isn&#039;t over until its over.&amp;nbsp; On the surface, this seems so obvious.&amp;nbsp; And yes, once a term sheet is signed and a price and general terms are agreed to, you are in great shape.&amp;nbsp; But recently, through discussions with other VCs and entrepreneurs, I am hearing about more situations where strategic buyers may significantly change the deal terms after more serious due diligence or even potentially walk away from a deal.&amp;nbsp; This can be especially painful if you have spent a number of months meeting with the strategic and going through due diligence in lieu of running your business. Trust me, this happened to one of my portfolio companies last year and reasons cited can include we had a change of strategic priorities and or look at the economy, there is no way we can value you like we did when we started the deal.&lt;/p&gt;

&lt;p&gt;While I can offer you no protection from this happening to you, all I can say is to be prepared and skeptical, be willing to walk away, and make sure that you both do enough diligence and meet with the right decision makers before you sign any term sheet and embark on the extended process.&amp;nbsp; Once the term sheet is signed, run like hell to get the deal closed because the longer a deal lingers the more opportunity there is for it not to happen.&amp;nbsp; Keep the hammer down and always have next steps and a defined timetable.&amp;nbsp; In addition, to the extent that the strategic acquirer has made other aquisitions in the past, I would try to leverage your personal network to reach out to some of the VCs or entrepreneurs involved to get a flavor for how the strategic will run their due diligence process and what doozies or surprises the strategic throw at you.&amp;nbsp; Before you start spending your money from the acquisition, remember there is a lot that can change and that probably will change so keep that in the back of your mind as you go through the process.&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/beyondvc/ThoJ?a=2G7qHd&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/beyondvc/ThoJ?i=2G7qHd&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?a=iUqJbK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?i=iUqJbK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?a=CGtlHK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?i=CGtlHK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:19 -0700</pubDate>
        </item>
            
        <item>
            <title>Selling to large enterprises costs big dollars no matter how frictionless your sale is</title>
            <link>http://swik.net/User:dolander/Beyond+VC/Selling+to+large+enterprises+costs+big+dollars+no+matter+how+frictionless+your+sale+is/cc0rl</link>
            <description>&lt;div&gt;&lt;p&gt;I have written a number of times about frictionless sales and how
on-demand companies have a huge opportunity to reduce their sales and
marketing costs and subsequently scale their business more
efficiently.&amp;nbsp; Here is an excerpt from a &lt;a href=&quot;http://www.beyondvc.com/2005/12/frictionless_sa.html&quot;&gt;prior post&lt;/a&gt;:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Frictionless sales means reducing the pain for customers to adopt and
use a service/product and consequently reducing the cost of sales and
marketing to get a customer and generate revenue.&amp;nbsp; As I mention in an
earlier post, &amp;quot;&lt;span class=&quot;824583520-14092005&quot;&gt;The less friction you have in your
sales and delivery model, the easier it is to scale. The easier it is
to scale the faster and more efficiently you can grow.&amp;quot; &lt;/span&gt;The
lowest friction sale can be a user clicking on a web page and the
content owner getting paid for it.&amp;nbsp; The highest friction sale is
spending lots of money on marketing and trade shows and having a large,
direct sales force of expensive reps pounding the pavement for months
trying to close a large deal with an enterprise customer.&amp;nbsp; Follow that
with a 3 month implementation process to get the customer happy.&amp;nbsp; There
are various grades of friction between these two extreme points like
open source business models, software as a service, and
reseller/OEM-type models as other forms of packaging and delivering a
product/service.&amp;nbsp; And of course, each of these models requires a
different methodology and way of marketing and selling to a customer. 
Ultimately what you want is sales leverage where every $1 you spend on
sales and marketing equals multiples of that in terms of revenue. &lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The perception that it is much easier to scale definitely holds true if you are selling to consumers, small businesses, and workgroups within large organizations.&amp;nbsp; However, it seems that many public on-demand vendors are feeling the pressure to deliver growth and ultimately need to feed the revenue machine by going after larger customers.&amp;nbsp; And what many companies are learning is that no matter how on-demand your software is, if you are selling to huge enterprises you are going to have to spend huge dollars in sales and marketing.&amp;nbsp; Sales cycles are long no matter how you slice it and even if there is no massive hardware and software installation, many large companies want to have their service customized and integrated, even lightly, with other systems.&amp;nbsp; in other words, many of these high flying on-demand vendors are starting to look more like the old software companies they are trying to replace.&amp;nbsp; As per a &lt;a href=&quot;http://blogs.wsj.com/biztech/2008/08/26/business-software-startups-learn-to-act-big/?mod=mod&quot;&gt;Wall Street Journal article&lt;/a&gt;
today, it seems that many of these public on-demand companies are
finding out the hard way that no matter how frictionless your sales
process is, the bigger the company you sell to, the more it is going to
cost you.&amp;nbsp; &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;There is nothing to install, so workers can start using online
software without the aid of the tech department. That makes it easier
for companies that sell online software to get into a business than
their on-premises competitors.
&lt;/p&gt;

&lt;p&gt;Seizing on this, investors bought into online-software companies in
a big way. During the first 10 months of 2007, shares of 15
online-software companies tracked by Thomas Weisel Partners increased
in value 61%. Since then, however, these companies have lost about a
third of their value. &lt;/p&gt;
&lt;p&gt;Wall Street has realized that it isn’t enough to simply offer online
software—you have to have a sales strategy that can make your offering
a corporate standard. It is possible to get individuals, project teams
or small businesses to buy online software through word-of-mouth
marketing, but it is hard to make money from these groups—at least the
kind of money necessary to become a billion-dollar company. &lt;/p&gt;
&lt;p&gt;In order to get there, they can’t operate like an Internet start-up,
letting their technology spread virally as end users hear about it.
They need to sell to the same executives and information-technology
professionals who made purchasing decisions before online software was
an option. Businesses have a lot riding on the decision to use one
product or another. And while having pockets of workers advocate for a
particular piece of software is a plus, the execs who sign the big
checks still want to see demos, vet the seller and do all the things
they have always done when they buy software. &lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;So if you are an on-demand vendor, either stick to your focus of scaling with SMBs and consumers which requires a completely different sales and marketing approach more rooted in traditional online budgets and telesales or be prepared to spend some real dollars if you truly want to go after the big guys.&amp;nbsp; &lt;/p&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://feeds.feedburner.com/~a/beyondvc/ThoJ?a=xcR8Ap&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~a/beyondvc/ThoJ?i=xcR8Ap&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?a=UOLqXK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?i=UOLqXK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?a=3dbMgK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/beyondvc/ThoJ?i=3dbMgK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:19 -0700</pubDate>
        </item>
            
        <item>
            <title>How Facebook Keeps Memcached Consistent Across Geo-Distributed Data Centers</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/How+Facebook+Keeps+Memcached+Consistent+Across+Geo-Distributed+Data+Centers/cc0p1</link>
            <description>&lt;p&gt;
Last year I wrote a blog post entitled &lt;a href=&quot;http://www.25hoursaday.com/weblog/2007/10/10/WhenDatabasesLieConsistencyVsAvailabilityInDistributedSystems.aspx&quot;&gt;When
Databases Lie: Consistency vs. Availability in Distributed Systems&lt;/a&gt; where I talked
about the kinds of problems Web applications face when trying to keep data consistent
across multiple databases spread out across the world. 
&lt;/p&gt;
        &lt;p&gt;
Jason Sobel, a developer at Facebook has some details on how they&#039;ve customized MySQL
to solve a variation of the problem I posed in a blog post entitled &lt;a href=&quot;http://www.new.facebook.com/notes.php?id=9445547199&quot;&gt;Scaling
Out&lt;/a&gt; where he writes 
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
            &lt;em&gt;A bit of background on our caching model: when a user modifies a data object our
infrastructure will write the new value in to a database and delete the old value
from memcache (if it was present). The next time a user requests that data object
we pull the result from the database and write it to memcache. Subsequent requests
will pull the data from memcache until it expires out of the cache or is deleted by
another update.&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;...&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;Consider the following example:&lt;/em&gt;
          &lt;/p&gt;
          &lt;ol&gt;
            &lt;li&gt;
              &lt;em&gt;I update my first name from &quot;Jason&quot; to &quot;Monkey&quot;&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;We write &quot;Monkey&quot; in to the master database in California and delete my first
name from memcache in California and Virginia&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Someone goes to my profile in Virginia&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;We don&#039;t find my first name in memcache so we read from the Virginia slave database
and get &quot;Jason&quot; because of replication lag&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;We update Virginia memcache with my first name as &quot;Jason&quot;&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Replication catches up and we update the slave database with my first name as
&quot;Monkey&quot;&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Someone else goes to my profile in Virginia&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;We find my first name in memcache and return &quot;Jason&quot;&lt;/em&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
          &lt;p&gt;
            &lt;em&gt;Until I update my first name again or it falls out of cache and we go back to
the database, we will show my first name as &quot;Jason&quot; in Virginia and &quot;Monkey&quot; in California.
Confusing? You bet. Welcome to the world of distributed systems, where consistency
is a really hard problem.&lt;br&gt;
Fortunately, the solution is a lot easier to explain than the problem. We made a small
change to MySQL that allows us to tack on extra information in the replication stream
that is updating the slave database. We used this feature to append all the data objects
that are changing for a given query and then the slave database &quot;sees&quot; these objects
and is responsible for deleting the value from cache after it performs the update
to the database.&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;...&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;The new workflow becomes (changed items in bold):&lt;/em&gt;
          &lt;/p&gt;
          &lt;ol&gt;
            &lt;li&gt;
              &lt;em&gt;I update my first name from &quot;Jason&quot; to &quot;Monkey&quot;&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;We write &quot;Monkey&quot; in to the master database in California and delete my first
name from memcache in California &lt;b&gt;but not Virginia&lt;/b&gt;&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Someone goes to my profile in Virginia&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;b&gt;
                &lt;em&gt;We find my first name in memcache and return &quot;Jason&quot;&lt;/em&gt;
              &lt;/b&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Replication catches up and we update the slave database with my first name as
&quot;Monkey.&quot; &lt;b&gt;We also delete my first name from Virginia memcache because that cache
object showed up in the replication stream&lt;/b&gt;&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Someone else goes to my profile in Virginia&lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;b&gt;
                &lt;em&gt;We don&#039;t find my first name in memcache so we read from the slave and get &quot;Monkey&quot;&lt;/em&gt;
              &lt;/b&gt;
            &lt;/li&gt;
          &lt;/ol&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
Facebook&#039;s solution is clever and at first I couldn&#039;t shake the feeling that it is
an example of extremely tight coupling for database replication to also be responsible
for evicting expired items from your in-memory cache. After some thought, I realized
that this is no different from the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.caching.sqlcachedependency.aspx&quot;&gt;SqlCacheDependency
class&lt;/a&gt; in ASP.NET which allows you to create a dependency between objects in your
ASP.NET cache and those in your SQL database. When the underlying tables change, the
Cache is updated to reflect this change in database state. 
&lt;/p&gt;
        &lt;p&gt;
In fact, the combination of replication and the SqlCacheDependency class should mean
that you get this sort of behavior for free if you are using ASP.NET caching and SQL
Server. Unfortunately, it looks like Microsoft&#039;s upcoming in-memory distributed object
caching product, &lt;a href=&quot;http://www.25hoursaday.com/weblog/2008/06/06/VelocityADistributedInMemoryCacheFromMicrosoft.aspx&quot;&gt;Velocity&lt;/a&gt;,
won&#039;t support SqlCacheDependency in its initial release &lt;a href=&quot;http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3681074&amp;amp;SiteID=1&quot;&gt;according
to a comment by one its developers&lt;/a&gt;.   
&lt;/p&gt;
        &lt;p&gt;
Of course, there is a significant performance difference between actively monitoring
the database for changes like SqlCacheDependency does and updating the cache when
updates made to the database are received as part of the replication stream. I wonder
if this pattern will turn out to be generally useful to Web developers (at least those
of us who work on geo-distributed services) or whether this will just go down as a
clever hack from those kids at Facebook that was cool to share. 
&lt;/p&gt;
        &lt;p&gt;
          &lt;b&gt;Now Playing:&lt;/b&gt;
          &lt;a href=&quot;http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=Rihanna&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6&quot;&gt;Rihanna&lt;/a&gt; - &lt;a href=&quot;http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=Rihanna+Disturbia&amp;amp;x=0&amp;amp;y=0&quot;&gt;Disturbia&lt;/a&gt;&lt;/p&gt;
      &lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=Mpbx9k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=Mpbx9k&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=4JgQOk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=4JgQOk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=nowDak&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=nowDak&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=i2rZyK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=i2rZyK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Carnage4life/~4/370918203&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:08 -0700</pubDate>
        </item>
            
        <item>
            <title>Some Thoughts on Amazon&#039;s Elastic Block Store</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/Some+Thoughts+on+Amazon%27s+Elastic+Block+Store/cc0p0</link>
            <description>&lt;p&gt;
According to Werner Vogels&#039;s blog post entitled &lt;a href=&quot;http://www.allthingsdistributed.com/2008/08/amazon_ebs_elastic_block_store.html&quot;&gt;Amazon
EBS - Elastic Block Store has launched&lt;/a&gt;, it seems that my friends at Amazon have
plugged a gaping hole in their cloud computing platform story. Werner writes 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Back in the days when we made the architectural decision to virtualize the internal
Amazon infrastructure one of the first steps we took was a deep analysis of the way
that storage was used by the internal Amazon services. We had to make sure that the
infrastructure storage solutions we were going to develop would be highly effective
for developers by addressing the most common patterns first. That analysis led us
to three top patterns: &lt;/em&gt; 
&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;&lt;u&gt;Key-Value storage&lt;/u&gt;. The majority of the Amazon storage patterns were based
on primary key access leading to single value or object. This pattern led to the development
of &lt;/em&gt;&lt;a href=&quot;http://aws.amazon.com/s3&quot;&gt;&lt;em&gt;Amazon S3&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;&lt;u&gt;Simple Structured Data storage&lt;/u&gt;. A second large category of storage patterns
were satisfied by access to simple query interface into structured datasets. Fast
indexing allows high-speed lookups over large dataset. This pattern led to the development
of &lt;/em&gt;&lt;a href=&quot;http://aws.amazon.com/sdb&quot;&gt;&lt;em&gt;Amazon SimpleDB&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. A common
pattern we see is that secondary keys to objects stored in Amazon S3 are stored in
SimpleDB, where lookups result in sets of S3 (primary) keys. &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;&lt;u&gt;Block storage&lt;/u&gt;. The remaining bucket holds a variety of storage patterns
ranging special file systems such as ZFS to applications managing their own block
storage (e.g. cache servers) to relational databases. This category is served by Amazon
EBS which provides the fundamental building block for implementing a variety of storage
patterns.&lt;/em&gt; 
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
What I like about Werner&#039;s post is that it shows that Amazon had a clear vision and
strategy around providing hosted cloud services and has been steadily executing on
it. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://aws.amazon.com/s3&quot;&gt;S3&lt;/a&gt; handled what I&#039;ve typically heard described
as &quot;blob storage&quot;. A typical Web application typically has media files and other resources
(images, CSS stylesheets, scripts, video files, etc) that is simply accessed by name/path.
However a lot of these resources also have metadata (e.g. a video file on &lt;a href=&quot;http://www.youtube.com&quot;&gt;YouTube&lt;/a&gt; has
metadata about it&#039;s rating, who uploaded it, number of views, etc) which need to be
stored as well. This need for queryable, schematized storage is where &lt;a href=&quot;http://aws.amazon.com/sdb&quot;&gt;SimpleDB&lt;/a&gt; comes
in. &lt;a href=&quot;http://aws.amazon.com/ec2&quot;&gt;EC2&lt;/a&gt; provides a virtual server that can
be used for computation complete with a local file system instance &lt;em&gt;which isn&#039;t
persistent if the virtual server goes down for any reason&lt;/em&gt;. With SimpleDB and
S3 you have the building blocks to build a large class of &quot;Web 2.0&quot; style applications
when you throw in the computational capabilities provided by EC2. 
&lt;/p&gt;
&lt;p&gt;
However neither S3 nor SimpleDB provides a solution for a developer who simply wants
the typical 

LAMP

or 

WISC

developer experience of building a database driven Web application or for applications
that may have custom storage needs that don&#039;t fit neatly into the buckets of blob
storage or schematized storage. Without access to a persistent filesystem, developers
on Amazon&#039;s cloud computing platform have had to come up with &lt;a title=&quot;Redundant MySQL set-up for Amazon EC2&quot; href=&quot;http://blog.rightscale.com/2007/08/20/redundant-mysql-set-up-for-amazon-ec2/&quot;&gt;sophisticated
solutions involving backing data up manually from EC2 to S3&lt;/a&gt; to get the desired
experience. 
&lt;/p&gt;
&lt;p&gt;
EBS is the final piece in the puzzle that had prevented Amazon&#039;s cloud computing platform
from being comparable to traditional hosting solutions. With EBS Amazon is now superior
to most traditional hosting solutions from a developer usability perspective as well
as cost. &lt;a href=&quot;http://code.google.com/appengine/&quot;&gt;Google App Engine&lt;/a&gt; now looks
like a plaything in comparison. In fact, you could build GAE on top of Amazon&#039;s cloud
computing platform now that the EBS has solved persistent custom storage problem.
It will be interesting to see if higher level cloud computing platforms such as App
Engine start getting built on top of Amazon&#039;s cloud computing platform. Simply porting
GAE wholesale would be an interesting academic exercise and a fun hacking project.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Now Playing:&lt;/b&gt; &lt;a href=&quot;http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=T.I.&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6&quot;&gt;T.I.&lt;/a&gt; - &lt;a href=&quot;http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=T.I.+Whatever You Like&amp;amp;x=0&amp;amp;y=0&quot;&gt;Whatever
You Like&lt;/a&gt;
&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=Kiv10k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=Kiv10k&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=ky9I3k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=ky9I3k&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=DBfjWk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=DBfjWk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=tjO1uK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=tjO1uK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Carnage4life/~4/370918202&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:08 -0700</pubDate>
        </item>
            
        <item>
            <title>I Want a Windows App Store</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/I+Want+a+Windows+App+Store/cc0pz</link>
            <description>&lt;p&gt;
Last week my blog was offline for a day or so because I was the victim of a flood
of SQL injection attacks that are still hitting my Web site at the rate of multiple
requests a second. I eventually managed to counter the attacks by installing &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=ee41818f-3363-4e24-9940-321603531989&amp;amp;displaylang=en&quot;&gt;URLScan
3.0&lt;/a&gt; and configuring it to reject HTTP requests that resemble SQL injection attacks.
I found out about URLScan in two ways; from a blog post Phil Haack wrote about &lt;a href=&quot;http://haacked.com/archive/2008/08/22/dealing-with-denial-of-service-attacks.aspx&quot;&gt;Dealing
with Denial of Service Attacks&lt;/a&gt; where it seems he&#039;s been caught up in the same
wave of attacks that brought down my blog and via an IM from Scott Hanselman who saw &lt;a href=&quot;http://twitter.com/Carnage4Life/statuses/895942574&quot;&gt;my
tweet&lt;/a&gt; on Twitter about being hacked and pointed me to his blog post on the topic
entitled &lt;a href=&quot;http://www.hanselman.com/blog/HackedAndIDidntLikeItURLScanIsStepZero.aspx&quot;&gt;Hacked!
And I didn&#039;t like it - URLScan is Step Zero&lt;/a&gt;. 
&lt;/p&gt;
        &lt;p&gt;
This reminded me that I similarly found another useful utility, &lt;a href=&quot;http://windirstat.info/&quot;&gt;WinDirStat&lt;/a&gt;,
via &lt;a href=&quot;http://blogs.msdn.com/darien/archive/2008/05/25/where-s-my-hard-disk-space-gone.aspx&quot;&gt;a
blog post&lt;/a&gt; as well. In fact when i think about it, a lot of the software I end
up trying out is found via direct or indirect recommendations from people I know.
Typically through blog posts, tweets or some other communication via a social networking
or social media service. This phenomenon can be clearly observed in closed application
ecosystems like the Facebook platform, where statistics have shown that &lt;a title=&quot;New data on Facebook application virality&quot; href=&quot;http://www.insidefacebook.com/2007/10/22/new-data-on-facebook-application-virality/&quot;&gt;the
majority of users install new applications after viewing them on the profiles of their
friends&lt;/a&gt;. 
&lt;/p&gt;
        &lt;p&gt;
One of the things I find most interesting about the Facebook platform and now the
Apple App Store is that they are revolutionizing how we think about software distribution.
Today, finding interesting new desktop/server/Web apps either happens serendipitously
via word of mouth or [rarely] is the result of advertising or PR. However finding
interesting new applications if you are a user of Facebook or the Apple iPhone isn&#039;t
a matter of serendipity. There are well understood ways of finding interesting applications
that harnesses social and network effects from user ratings to simply finding out
what applications your friends are using. 
&lt;/p&gt;
        &lt;p&gt;
As a user, I sometimes wish I had an equivalent experience as a user of desktop applications
and their extensions. I&#039;ve often thought it would be cool to be able to browse the
software likes and dislikes of people such as &lt;a href=&quot;http://www.shahine.com/omar&quot;&gt;Omar
Shahine&lt;/a&gt;, &lt;a href=&quot;http://www.hanselman.com/blog/&quot;&gt;Scott Hanselman&lt;/a&gt; and &lt;a href=&quot;http://mike.spaces.live.com&quot;&gt;Mike
Torres&lt;/a&gt; to see what their favorite Windows utilities and mobile applications were.
As a developer of a &lt;a href=&quot;http://www.rssbandit.org&quot;&gt;feed reader&lt;/a&gt;, although it
is plain to see that Windows has a lot of reach since practically everyone runs it
sometimes I&#039;m envious of the built in viral distribution features that come with the
Facebook platform or the unified software distribution experience that is the &lt;a href=&quot;http://www.apple.com/iphone/appstore/&quot;&gt;iPhone
App Store&lt;/a&gt;. Sure beats hosting your app on SourceForge and hoping that your users
are blogging about the app to spread it via word of mouth or paying for prominence
on sites like &lt;a href=&quot;http://www.download.com&quot;&gt;Download.com&lt;/a&gt;. 
&lt;/p&gt;
        &lt;p&gt;
A lot of the pieces are already there. Microsoft has a &lt;a href=&quot;http://www.windowsmarketplace.com/&quot;&gt;Windows
Marketplace&lt;/a&gt; but for the life of me I&#039;d have never found out about it if I didn&#039;t
work at Microsoft and someone I know switched teams to start working there. There
are also services provided by 3rd parties like &lt;a href=&quot;http://www.download.com&quot;&gt;Download.com&lt;/a&gt;, &lt;a href=&quot;https://addons.mozilla.org/&quot;&gt;the
Firefox Add-Ons page&lt;/a&gt; and &lt;a href=&quot;http://www.tucows.com&quot;&gt;Tucows&lt;/a&gt;. It would
be interesting to see what could be stitched together if you throw in a social graph
via something like &lt;a href=&quot;http://developers.facebook.com/news.php?blog=1&amp;amp;story=108&quot;&gt;Facebook
Connect&lt;/a&gt;, an always-on well integrated desktop experience similar to the Apple
App Store and one of the aforementioned sites. I suspect the results would be quite
beneficial to app developers and users of Windows applications. 
&lt;/p&gt;
        &lt;p&gt;
What do you think? 
&lt;/p&gt;
        &lt;p&gt;
          &lt;b&gt;Now Playing:&lt;/b&gt;
          &lt;a href=&quot;http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=Metallica&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6&quot;&gt;Metallica&lt;/a&gt; - &lt;a href=&quot;http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=Metallica+The%20Day%20That%20Never%20Comes&amp;amp;x=0&amp;amp;y=0&quot;&gt;The
Day That Never Comes&lt;/a&gt;&lt;/p&gt;
      &lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=d1Keck&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=d1Keck&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=SQC6kk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=SQC6kk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=oCeuZk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=oCeuZk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=303grK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=303grK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Carnage4life/~4/373354311&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:08 -0700</pubDate>
        </item>
            
        <item>
            <title>RESTful JSON: Bringing REST and RPC Closer Together</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/RESTful+JSON%3A+Bringing+REST+and+RPC+Closer+Together/cc0py</link>
            <description>&lt;p&gt;
My recent post, &lt;a href=&quot;http://www.25hoursaday.com/weblog/2008/08/17/ExplainingRESTToDamienKatz.aspx&quot;&gt;Explaining
REST To Damien Katz&lt;/a&gt;, led to some insightful comments from Dave Winer and Tim Bray
about what proponents of building RESTful Web services can learn from remote procedure
call (RPC) technologies like SOAP and XML-RPC.  
&lt;/p&gt;
        &lt;p&gt;
In his post, &lt;a href=&quot;http://www.scripting.com/stories/2008/08/17/dareLeftSomethingOutAndIts.html&quot;&gt;Dare
left something out (and it&#039;s important)&lt;/a&gt; Dave Winer wrote
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
            &lt;em&gt;Really ought to include it in your thinking, Dare and everyone else. You&#039;re missing
out on something that works really well. You should at least learn the lessons and
add to REST what it needs to catch up with XML-RPC. Seriously. &lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;a name=&quot;p4&quot;&gt;
            &lt;/a&gt;
            &lt;em&gt;What&#039;s missing in REST, btw, is a standard method of serializing
structs, lists and scalar types. The languages we use have a lot more in common than
you might think. We&#039;re all writing code, again and again, every time we support a
new interface that could be written once and then baked into the kernels of our languages,
and then our operating systems. Apple actually did this with Mac OS, XML-RPC support
is baked in. So did Python. So if you think it&#039;s just me saying this, you should take
another look.&lt;/em&gt;
          &lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
Dave has a valid point, a lot of the time communication between distributed systems
is simply passing around serialized objects and/or collections of objects. In such
cases, having a lightweight standard representation for serialized objects which is
supported on multiple platforms would be beneficial. Where Dave goes astray is in
his assertion that no such technology exists for developers building RESTful Web services.
Actually one does, and it is widely deployed on the Web today. JavaScript Object Notation
(JSON) which is described in &lt;a href=&quot;http://tools.ietf.org/html/rfc4627&quot;&gt;RFC 4627&lt;/a&gt; is
a widely deployed and well-defined media type (application/json) for representing
serialized structs, lists and scalar values on the Web.  
&lt;/p&gt;
        &lt;p&gt;
There are libraries for processing JSON on practically every popular platform from
&quot;corporate&quot; platforms like &lt;a title=&quot;http://www.json.org/java/&quot; href=&quot;http://www.json.org/java/&quot;&gt;Java&lt;/a&gt; and
the &lt;a title=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx&quot; href=&quot;http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx&quot;&gt;.NET
Framework&lt;/a&gt; to Web scripting languages like &lt;a title=&quot;http://undefined.org/python/#simplejson&quot; href=&quot;http://undefined.org/python/#simplejson&quot;&gt;Python&lt;/a&gt; and &lt;a href=&quot;http://json.rubyforge.org/&quot;&gt;Ruby&lt;/a&gt;.
In addition, JSON is attractive because it is &lt;a href=&quot;http://en.wikipedia.org/w/index.php?title=JSON&amp;amp;oldid=233259027#JavaScript_eval.28.29&quot;&gt;natively
available in modern Web browsers&lt;/a&gt; that support JavaScript which means you can use
it to build services that can be consumed by Web browsers, other Web services or desktop
applications with a single end point. 
&lt;/p&gt;
        &lt;p&gt;
Tim Bray cautioned REST proponents against blindly rejecting the features typically
associated with RPC systems and SOAP/WS-* in his post &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2008/08/18/On-REST&quot;&gt;REST
Questions&lt;/a&gt; where he wrote 
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
            &lt;em&gt;
              &lt;u&gt;Has REST Been Fortunate in its Enemies?&lt;/u&gt; · I have been among the most vocal
of those sneering at WS-*, and I’m comfortable with what I’ve said. But that doesn’t
prove that the core WS-* ideas are wrong. Here are some of the handicaps WS-* struggled
under:&lt;/em&gt;
          &lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;Lousy foundational technologies (XSD and WSDL).&lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;A Microsoft/IBM-driven process that was cripplingly product-linked and political.&lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;Designers undereducated in the realities of the Web as it is.&lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;Unnecessary detours into Architecture Astronautics.&lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
          &lt;/ul&gt;
          &lt;p&gt;
            &lt;em&gt;As a result, we should be really careful about drawing lessons from the failure
of WS-*. Specifically:&lt;/em&gt;
          &lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;
                  &lt;font color=&quot;#ff0000&quot;&gt;Just because the XSD type system is malformed, you can’t
conclude that the notion of schema-driven mapping between program data types and representation
payloads is harmful.&lt;/font&gt;
                &lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;
                  &lt;font color=&quot;#ff0000&quot;&gt;Just because WSDL is a crock, you can’t conclude that exposing
a machine-readable contract for a service is a necessarily bad idea.&lt;/font&gt;
                &lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;Just because UDDI never took off, you can’t conclude that service registries are
dumb.&lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;Just because SOAP has a damaging MustUnderstand facility and grew a lot of ancillary
specification hair, you can’t conclude that some sort of re-usable payload wrapper
is necessarily a dead-end path.&lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;p&gt;
                &lt;em&gt;Just because the WS-* security specifications are overengineered and based on
a shaky canonicalization spec, you can’t conclude that message-level security and
signing aren’t sometimes real important.&lt;/em&gt;
              &lt;/p&gt;
            &lt;/li&gt;
          &lt;/ul&gt;
          &lt;p&gt;
            &lt;em&gt;And so on. I personally tend to think that schema-driven mapping is hopeless,
contracts are interesting, registries are a fantasy, and &lt;/em&gt;
            &lt;a href=&quot;http://www.ietf.org/rfc/rfc4287&quot;&gt;
              &lt;em&gt;payload
wrappers&lt;/em&gt;
            &lt;/a&gt;
            &lt;em&gt; are very promising. But I don’t think that the history of WS-*
is a very good argument for any of those positions.&lt;/em&gt;
          &lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
In a lot of situations where applications consume XML, the first thing the application
does is convert the XML into an object graph representative of the business logic
of the application. The SOAP/WS-* way of doing this was to define an XSD schema for
the XML payload and then use some object&amp;lt;-&amp;gt;XML mapping layer to convert the
XML to objects. The problem with this approach was that there is a &lt;a href=&quot;http://www.25hoursaday.com/weblog/2004/02/20/TheImpedenceMismatchBetweenW3CXMLSchemaAndTheCLR.aspx&quot;&gt;fundamental
impedance mismatch between XSD types and OO types&lt;/a&gt; which led to horrible interoperability
problems since no two platforms could agree on how to map the various esoteric type
system features of XSD into the structs, lists and scalar types that are the building
block of all OO type systems. However these problems go away if you use a data format
that was explicitly designed for describing serialized data objects like JSON. 
&lt;/p&gt;
        &lt;p&gt;
Providing a machine readable description of a service&#039;s end points is useful, especially
on the Web where multiple services may expose the same interface. For example, when
you visit my weblog at &lt;a href=&quot;http://www.25hoursaday.com/weblog/&quot;&gt;http://www.25hoursaday.com/weblog/&lt;/a&gt; using
Firefox 2 or higher and Internet Explorer 7 or higher the browser immediately lights
up with a feed icon &lt;img src=&quot;http://www.25hoursaday.com/weblog/themes/directionalredux/images/feed-icon-16x16.gif&quot;&gt;&lt;/img&gt; which
allows you to subscribe to my Atom feed from your Web browser. This happens because
I&#039;ve provided a &lt;a href=&quot;http://diveintomark.org/archives/2003/12/19/atom-autodiscovery&quot;&gt;machine
readable description of my feed end points&lt;/a&gt; on my blog. The Atom Publishing Protocol,
which is one of the most well-designed RESTful protocols out there, has a notion of &lt;a href=&quot;http://tools.ietf.org/html/rfc5023#section-8&quot;&gt;service
documents&lt;/a&gt; which enable client applications to discover the capabilities and locations
of the various end points of the service. 
&lt;/p&gt;
        &lt;p&gt;
If you put together the notion of service documents with using JSON as the payload
format for a service endpoint, you&#039;re close to getting the touted programmer friendliness
of RPC technologies like XML-RPC &amp;amp; SOAP/WSDL while still building a RESTful service
which works with the Web instead of against it. 
&lt;/p&gt;
        &lt;p&gt;
The only problem is how to deal with statically typed languages like C# and Java.
These languages need the types of the objects that application will consume from a
Web service defined up front. So if we could just figure out how to come up with service
documents for JSON services that included the notion of a class definition, we could
pretty much have our cake and eat it to with regards to getting the ease of use of
an RPC system while building a RESTful service. 
&lt;/p&gt;
        &lt;p&gt;
If this sounds interesting to you, then you should go over and read Joe Gregorio&#039;s
original post on &lt;a href=&quot;http://bitworking.org/news/358/restful-json&quot;&gt;RESTful JSON&lt;/a&gt; and
then join the &lt;a href=&quot;http://groups.google.com/group/restful-json&quot;&gt;restful-json mailing
list&lt;/a&gt;. Joe&#039;s proposal is on the right path although I think he is letting his background
as an editor of the Atom Publishing Protocol specification skew his thinking with
regards to what developers would find most useful from a Json Publishing Protocol
(JsonPub). 
&lt;/p&gt;
        &lt;p&gt;
          &lt;b&gt;Now Playing:&lt;/b&gt;
          &lt;a href=&quot;http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=G-Unit&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6&quot;&gt;G-Unit&lt;/a&gt; - &lt;a href=&quot;http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=G-Unit+Beg For Mercy&amp;amp;x=0&amp;amp;y=0&quot;&gt;Beg
For Mercy&lt;/a&gt;&lt;/p&gt;
      &lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=fwVFzk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=fwVFzk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=DtzoPk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=DtzoPk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=DgQnsk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=DgQnsk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=8IAlkK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=8IAlkK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Carnage4life/~4/373354310&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:08 -0700</pubDate>
        </item>
            
        <item>
            <title>Best Practices for Web Sites Seeking to Prevent Service Degradation due to 3rd Party Widgets</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/Best+Practices+for+Web+Sites+Seeking+to+Prevent+Service+Degradation+due+to+3rd+Party+Widgets/cc0px</link>
            <description>&lt;p&gt;
I&#039;ve been reading about the &lt;a href=&quot;http://www.techcrunch.com/2008/08/24/dont-post-the-evidence-unless-it-supports-your-case/&quot;&gt;Ning
vs. WidgetLaboratory drama&lt;/a&gt; on TechCrunch. The meat of the conflict seems to be
that widgets from WidgetLaboratory were so degrading the user experience of Ning that
they had to be cut off. The relevant excerpts from the most recent TechCrunch story
on the war of words are below 
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
            &lt;em&gt;For those of you not closely following the drama between social network platform
Ning and a popular widget provider called WidgetLaboratory, you can read the background &lt;/em&gt;
            &lt;a href=&quot;http://www.techcrunch.com/2008/08/22/ning-shuts-down-premium-developer-widgetlaboratory/&quot;&gt;
              &lt;em&gt;here&lt;/em&gt;
            &lt;/a&gt;
            &lt;em&gt;.
On Friday Ning unceremoniously shut down their access to Ning, making all those widgets
vanish.&lt;/em&gt;
            &lt;br&gt;
... 
&lt;br&gt;&lt;em&gt;In an email to WL on August 2 (more than three weeks ago), CEO Gina Bianchini
wrote “Our only goal is to have you build your products in such a way that doesn’t
slow down the networks running your products or takedown the Ning Platform with what
you’re doing. Both of those would result in us needing to shutdown WidgetLaboratory
products and that’s has never been our first choice of options. Hopefully, you know
this after 8 months of working with us.”&lt;/em&gt;&lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
Ignoring the he said, she said nature of the communication between both companies,
there is a legitimate concern that 3rd party widgets included on the pages of a Web
site can degrade the performance to the extent that the site becomes unusably slow.
In fact, TechCrunch has had similar problems with 3rd party widgets as &lt;a title=&quot;TechCrunch Slowdown Today&quot; href=&quot;http://www.crunchnotes.com/2007/06/14/techcrunch-slowdown-today/&quot;&gt;Mike
Arrington has mentioned on his personal blog&lt;/a&gt; which led to him excluding the widgets
from his site. 
&lt;/p&gt;
        &lt;p&gt;
Typically, widgets are embedded in a site by including references to Javascript hosted
on a 3rd party site in the page&#039;s HTML. This means rendering the page is dependent
on how quickly the script files can be downloaded from the 3rd party site AND how
long it takes for the script to execute especially since it may also fetch data from
one or more servers as well. Thus a slow server or a badly written script can make
every page that embeds the widget unbearably slow to render. Given that the ability
to embed widgets is a key feature of social networking sites, it is important for
such sites to figure out how to isolate their user experience from badly written widgets
or widgets hosted on slow Web servers. 
&lt;/p&gt;
        &lt;p&gt;
Below are some best practices that have emerged on how social networking sites can
immunize themselves from the kinds of problems Ning has had with WidgetLaboratory
&lt;/p&gt;
        &lt;ol&gt;
          &lt;li&gt;
            &lt;p&gt;
              &lt;u&gt;Host the Scripts Yourself:&lt;/u&gt; If you have a popular site, it is quite likely that
you have more resources to handle lots of page views than the typical widget developer.
Thus it makes sense to take away the dependency on externally hosted scripts by hosting
the widgets yourself. Microsoft encourages developers to submit their gadgets to &lt;a href=&quot;http://gallery.live.com/&quot;&gt;Windows
Live Gallery&lt;/a&gt; if they want to build gadgets for &lt;a href=&quot;http://my.live.com&quot;&gt;my.live.com&lt;/a&gt; or &lt;a href=&quot;http://spaces.live.com&quot;&gt;Windows
Live Spaces&lt;/a&gt;. For it&#039;s AJAX homepage service, Google does not require developers
to submit gadgets to them for hosting but instead &lt;a href=&quot;http://code.google.com/support/bin/answer.py?answer=74910&amp;amp;topic=12389&quot;&gt;caches
gadget data for hours at a time&lt;/a&gt; which means they are effectively hosting the gadgets
themselves for the majority of the accesses by their users. 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
              &lt;u&gt;Keep External Dependencies off of Pages that Need to Render Quickly:&lt;/u&gt; In many
cases, it isn&#039;t feasible to host all of the data and content related to widgets that
are being shown on your site. In that case, you should ensure that the key scenarios
on your Web site are insulated from the problems caused by slow or broken 3rd party
widgets. For example, on Facebook viewing someone&#039;s profile is a key part of the user
experience that is important to make sure happens as quickly and as smoothly as possible.
For this reason, Facebook caches all 3rd party content that shows up on a user&#039;s profile
and requires applications to call &lt;a href=&quot;http://wiki.developers.facebook.com/index.php/Profile.setFBML&quot;&gt;Profile.SetFBML&lt;/a&gt; to
add content to the profile instead of providing a way to directly embed widgets on
a user&#039;s profile. 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
              &lt;u&gt;Make It Clear Who Is to Blame if Things go Awry:&lt;/u&gt; One of the issues raised by
Ning in their conflict with WidgetLaboratory is that user pages wouldn&#039;t render correctly
or would show degraded performance due to WidgetLaboratory&#039;s widgets but Ning would
get the support calls. This kind of user confusion is avoided if the user experience
makes it clear when the failure of a page to render correctly is the fault of the
external widget and when it is part of the hosting site. For example, &lt;a href=&quot;http://developers.facebook.com/get_started.php?tab=anatomy#canvas&quot;&gt;Facebook
Canvas Pages for applications&lt;/a&gt; make it clear that the user is using a 3rd party
application and not part of the core Facebook experience. I&#039;ve seen lots of user &lt;a href=&quot;http://www.tojosan.com/2007/11/scrabulous-on-facebook-slow.html&quot;&gt;complain&lt;/a&gt; about
the &lt;a href=&quot;http://www.facebook.com/topic.php?uid=14916117452&amp;amp;topic=6451&amp;amp;post=27152&quot;&gt;slowness&lt;/a&gt; of
Scrabulous and Scrabble but never seen anyone who thought that Facebook was to blame
and not the application developers. 
&lt;/p&gt;
          &lt;/li&gt;
        &lt;/ol&gt;
        &lt;p&gt;
Following some of these practices would have saved Ning and its users some of their
current grief. 
&lt;/p&gt;
        &lt;p&gt;
          &lt;b&gt;Now Playing:&lt;/b&gt;
          &lt;a href=&quot;http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=Ice%20Cube&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6&quot;&gt;Ice
Cube&lt;/a&gt; - &lt;a href=&quot;http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=Ice%20Cube+Get%20Money,%20Spend%20Money,%20No%20Money&amp;amp;x=0&amp;amp;y=0&quot;&gt;Get
Money, Spend Money, No Money&lt;/a&gt;&lt;/p&gt;
      &lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=pPF00k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=pPF00k&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=4e7mbk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=4e7mbk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=eFu34k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=eFu34k&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=m83xAK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=m83xAK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Carnage4life/~4/373806186&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:08 -0700</pubDate>
        </item>
            
        <item>
            <title>Fixing the HTTP Polling Problem: Some Thoughts on FriendFeed&#039;s Simple Update Protocol (SUP)</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/Fixing+the+HTTP+Polling+Problem%3A+Some+Thoughts+on+FriendFeed%27s+Simple+Update+Protocol+%28SUP%29/cc0pw</link>
            <description>&lt;p&gt;
Paul Buchheit of FriendFeed has written up a proposal for a new protocol that Web
sites can implement to reduce the load on their services from social network aggregators
like FriendFeed and SocialThing. He unveils his proposal in his post &lt;a href=&quot;&quot;&gt;Simple
Update Protocol: Fetch updates from feeds faster&lt;/a&gt; which is excerpted below 
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
            &lt;em&gt;When you add a web site like &lt;/em&gt;
            &lt;a href=&quot;http://www.flickr.com&quot;&gt;
              &lt;em&gt;Flickr&lt;/em&gt;
            &lt;/a&gt;
            &lt;em&gt; or &lt;/em&gt;
            &lt;a href=&quot;http://reader.google.com/&quot;&gt;
              &lt;em&gt;Google
Reader&lt;/em&gt;
            &lt;/a&gt;
            &lt;em&gt; to FriendFeed, FriendFeed&#039;s servers constantly download your feed
from the service to get your updates as quickly as possible. FriendFeed&#039;s user base
has grown quite a bit since launch, and our servers now download millions of feeds
from over 43 services every hour.&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;One of the limitations of this approach is that it is difficult to get updates
from services quickly without FriendFeed&#039;s crawler overloading other sites&#039; servers
with update checks. Gary Burd and I have thought quite a bit about ways we could augment
existing feed formats like Atom and RSS to make fetching updates faster and more efficient.
Our proposal, which we have named &lt;/em&gt;
            &lt;a href=&quot;http://code.google.com/p/simpleupdateprotocol/&quot;&gt;
              &lt;b&gt;
                &lt;em&gt;Simple
Update Protocol&lt;/em&gt;
              &lt;/b&gt;
            &lt;/a&gt;
            &lt;em&gt;, or &lt;b&gt;SUP&lt;/b&gt;, is below. 
&lt;br&gt;
... 
&lt;br&gt;
Sites wishing to produce a SUP feed must do two things:&lt;/em&gt;
          &lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;
              &lt;em&gt;Add a special &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag to their SUP enabled Atom or RSS feeds.
This &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag includes the feed&#039;s SUP-ID and the URL of the appropriate
SUP feed. &lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Generate a SUP feed which lists the SUP-IDs of all recently updated feeds. &lt;/em&gt;
            &lt;/li&gt;
          &lt;/ul&gt;
          &lt;p&gt;
            &lt;em&gt;Feed consumers can add SUP support by:&lt;/em&gt;
          &lt;/p&gt;
          &lt;ul&gt;
            &lt;li&gt;
              &lt;em&gt;Storing the SUP-IDs of the Atom/RSS feeds they consume. &lt;/em&gt;
            &lt;/li&gt;
            &lt;li&gt;
              &lt;em&gt;Watching for those SUP-IDs in their associated SUP feeds. &lt;/em&gt;
            &lt;/li&gt;
          &lt;/ul&gt;
          &lt;p&gt;
            &lt;em&gt;By using SUP-IDs instead of feed urls, we avoid having to expose the feed url,
avoid URL canonicalization issues, and produce a more compact update feed (because
SUP-IDs can be a database id or some other short token assigned by the service). Because
it is still possible to miss updates due to server errors or other malfunctions, SUP
does not completely eliminate the need for polling.&lt;/em&gt;
          &lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
Although there&#039;s a &lt;a href=&quot;http://friendfeed.com/e/5b3c9996-57bc-43c4-423e-182d7f985717/Initial-thoughts-on-FriendFeed-s-SUP-from-http/&quot;&gt;healthy
conversation about SUP going on in FriendFeed &lt;/a&gt; in response to one of my tweets,
I thought it would be worth sharing some thoughts on this with a broader audience. 
&lt;/p&gt;
        &lt;p&gt;
The problem statement that FriendFeed&#039;s SUP addresses is the following issue raised
in my previous post &lt;a href=&quot;http://www.25hoursaday.com/weblog/2008/07/27/WhenRESTDoesntScaleXMPPToTheRescue.aspx&quot;&gt;When
REST Doesn&#039;t Scale, XMPP to the Rescue?&lt;/a&gt;&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
On July 21st, &lt;a href=&quot;http://www.friendfeed.com&quot;&gt;FriendFeed&lt;/a&gt; had 45,000 users
who had associated their &lt;a href=&quot;http://www.flickr.com&quot;&gt;Flickr&lt;/a&gt; profiles with
their FriendFeed account. FriendFeed polls Flickr about once every 20 – 30 minutes
to see if the user has uploaded new pictures. However only about 6,000 of those users
logged into Flickr that day, let alone uploaded pictures. Thus there were literally
millions of HTTP requests made by FriendFeed that were totally unnecessary.
&lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
FriendFeed&#039;s proposal is similar to the &lt;a href=&quot;http://updates.sixapart.com/&quot;&gt;Six
Apart Update Stream&lt;/a&gt; and the &lt;a href=&quot;http://blog.twitter.com/2008/07/twitter-and-xmpp-drinking-from-fire.html&quot;&gt;Twitter
XMPP Firehose&lt;/a&gt; in that it is a data stream containing information about all of
the updates users are making on a particular service. It differs in a key way in that
it doesn&#039;t actually contain the data from the user updates but instead identifiers
which can be used to determine the users that changed so their feeds can be polled. 
&lt;/p&gt;
        &lt;p&gt;
This approach aims at protecting feeds that use security through obscurity such as
the &lt;a href=&quot;http://www.google.com/help/reader/sharing.html&quot;&gt;Google Reader&#039;s Shared
Items feed&lt;/a&gt; and &lt;a href=&quot;http://www.netflix.com/RSSFeeds&quot;&gt;Netflix&#039;s Personalized
Feeds&lt;/a&gt;. The user shares their &lt;a href=&quot;http://www.google.com/reader/public/atom/user/01158221708523143495/state/com.google/broadcast&quot;&gt;&quot;secret&quot;
feed URL&lt;/a&gt; with FriendFeed who then obtains the SUP ID of the user&#039;s feed when the
feed is first polled. Then whenever that SUP ID is seen in the SUP feed by FriendFeed,
they know to go re-poll the user&#039;s &quot;secret&quot; feed URL. 
&lt;/p&gt;
        &lt;p&gt;
For services that are getting a ton of traffic from social network aggregators or
Web-based feed readers it does make sense to provide some sort of update stream or
fire hose to reduce the amount of polling that gets done. In addition, it also makes
sense that if more and more services are going to provide such update streams then
it should be standardized so that social network aggregators and similar services
do not end up having to target multiple update protocols. 
&lt;/p&gt;
        &lt;p&gt;
I believe that at the end we will see a continuum of options in this space. The vast
majority of services will be OK with the load generated by social networking aggregators
and Web-based feed readers when polling their feeds. These services won&#039;t see the
point of building additional features to handle this load. Some services will run
the numbers like Twitter &amp;amp; Six Apart have done and will provide update streams
in an attempt to reduce the impact of polling. For these services, SUP seems like
a somewhat elegant solution and it would be good to standardize on something, anything
at all is better than each site having its own custom solution. For a smaller set
of services, this still won&#039;t be enough since they don&#039;t provide feeds (e.g. &lt;a href=&quot;http://mashable.com/2008/04/17/facebook-beacon-blockbuster/&quot;&gt;Blockbuster&#039;s
use of Facebook Beacon&lt;/a&gt;) and you&#039;ll need an explicit server to server publish-subscribe
mechanism. XMPP or perhaps something &lt;a href=&quot;http://joshua.schachter.org/2008/07/beyond-rest.html&quot;&gt;an
HTTP based publish-subscribe mechanism&lt;/a&gt; like what Joshua Schachter proposed a few
weeks ago will be the best fit for those scenarios.  
&lt;/p&gt;
        &lt;p&gt;
          &lt;b&gt;Now Playing:&lt;/b&gt;
          &lt;a href=&quot;http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=Jodeci&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6&quot;&gt;Jodeci&lt;/a&gt; - &lt;a href=&quot;http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=Jodeci+I&#039;m Still Waiting&amp;amp;x=0&amp;amp;y=0&quot;&gt;I&#039;m
Still Waiting&lt;/a&gt;&lt;/p&gt;
      &lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=gwpN0k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=gwpN0k&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=KJch6k&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=KJch6k&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=DBCUPk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=DBCUPk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=RBQkXK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=RBQkXK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Carnage4life/~4/377367891&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:07 -0700</pubDate>
        </item>
            
        <item>
            <title>Raising Venture Capital:  How Much Money Matters</title>
            <link>http://swik.net/User:dolander/Venture+Blog/Raising+Venture+Capital%3A++How+Much+Money+Matters/cc0pl</link>
            <description>&lt;p&gt;After watching a bazillion venture pitches, I&#039;ve come to the conclusion that every VC Pitch should end the same way -- with the ask.  If you want to crescendo into it, feel free to summarize why it is your technology is life changing, but finish with the ask -- &quot;we are looking to raise six million dollars.&quot;  Don&#039;t beat around the bush.  Come right out and ask for the money.  After all, that&#039;s what you&#039;re there for.&lt;/p&gt;

&lt;p&gt;There are a number of reasons VCs want to hear what you&#039;re raising.  And it isn&#039;t just the obvious one.  Yes, it is helpful to know how much money a company is hoping you will invest.  But there are other more valuable pieces of information that come out of the ask.  &lt;/p&gt;

&lt;p&gt;First of all, the amount of money you are raising is a good general indicator of how much you think the company is worth.  I was in a pitch once learning about pretty interesting but pretty early stage technology.  From where I sat, it seemed to me that the company could use single digit millions to take the technology to the next step.  Yet, when we got to the slide that stated how much the company was raising, I learned that they were hoping to raise more than $50M.  By my assessment, $50M would buy the vast majority of the company.  Clearly the company felt differently -- they were hoping to sell closer to 20% of the company.  It certainly refocused the conversation on what the company felt was the justification for such a high valuation and led to a very interesting discussion of the underlying economics of the company&#039;s business.&lt;/p&gt;

&lt;p&gt;The thing I find most interesting about how much money a company is raising is not the actual number itself, but rather the conversation about how the company arrived at that number.  What is interesting to me is what the company plans on doing with that money?  What are the milestones the company can reach with that much money?  Could they do it for less?  What would they do if they had more money?   &lt;/p&gt;

&lt;p&gt;For me, the right question isn&#039;t &quot;how much money do you want to raise?&quot;  The right question is &quot;how much money should you raise?&quot;  Ask some entrepreneurs and they will tell you, the right amount of money to raise is as much as they possibly can (some recent monster financings suggest that strategy).  That makes no sense to me.  The right amount of money to bring into the company is enough to reach sufficient milestones to raise more money at a higher price at a future date (or, in some rare cases, enough to get to cash flow positive).  If all goes well, the money I invest will be used to drive all sorts of risk out of the business, enabling the Company to raise the next round at a much higher valuation.  &lt;/p&gt;

&lt;p&gt;Figuring out the right amount to raise is more art than science but can have a big impact on the Company.  If you raise too little money, you may run out before you have proven the business sufficiently to raise additional capital.  In other words, raising too little money can be fatal.  On the other hand, if you raise too much money early on, you could well be selling off too much of the company for too little capital.  Companies should leverage early stage venture money to drive up the value of the company (by proving out as much of the business as quickly as possible), so that the next time the company fundraises, they will be able to bring in larger amounts of money while suffering smaller amounts of dilution.  &lt;/p&gt;

&lt;p&gt;Unfortunately, the perfect amount of money to raise is not always obvious.  So the question isn&#039;t whether a company is raising the &quot;right&quot; amount of money.  The question is, &quot;why is the company raising the amount of money it is raising?&quot;  A great deal can be learned about a company from their answer to that question.  So when you go out to raise money, be prepared to not only answer how much you are hoping to raise, but also why?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://feedads.googleadservices.com/~a/3a1vf6r33lkgr2ka0n5vjhane4/a&quot;&gt;&lt;img src=&quot;http://feedads.googleadservices.com/~a/3a1vf6r33lkgr2ka0n5vjhane4/i&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://feedproxy.google.com/~r/ventureblog/~4/cfi4XQl_F50&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:07:02 -0700</pubDate>
        </item>
            
        <item>
            <title>Building Modern Web Apps? Better Have A Deep Competency in Web 2.0, Open APIs, Widgets, Social Apps, and Much More</title>
            <link>http://swik.net/User:dolander/Web+2.0+Blog/Building+Modern+Web+Apps%3F+Better+Have+A+Deep+Competency+in+Web+2.0%2C+Open+APIs%2C+Widgets%2C+Social+Apps%2C+and+Much+More/cc0m2</link>
            <description>&lt;font size=&quot;2&quot;&gt;&lt;p&gt;The Web has an interesting property that those building Web applications and online businesses usually encounter soon after they first launch: It has its own unique and unforgiving rules for success and failure.&amp;#160; Appreciating them requires a certain level of understanding of the intrinsic nature of the Web and how it works.&amp;#160; Actually leveraging those rules requires an even deeper and more profound understanding of the Web. The challenge these days? The Web competency bar is climbing fast. &lt;/p&gt;&lt;p&gt;To drive the right decisions in what they do product designers, marketing teams, software architects, developers, strategy officers, and other key roles in today&amp;#39;s generation of online businesses need to have a solid handle on an extensive array of Web topics.&amp;#160; This ranges from appreciating why plain old HTTP is so good at underpinning the Web to more sophisticated topics like modern application architecture, the latest in online user experiences, &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=166&quot;&gt;next generation computing models&lt;/a&gt;  (grid/cloud/utility/SaaS/PaaS), &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=54&quot;&gt;cost-effective scalability&lt;/a&gt;, user identity, &lt;a href=&quot;/web_20s_real_secret_sauce_network_effects.htm&quot;&gt;network effects&lt;/a&gt;, &lt;a href=&quot;http://www.socialcomputingmagazine.com/viewlisting.cfm?id=84&quot;&gt;Jakob&amp;#39;s Law&lt;/a&gt;, analytics, operations, user community, as well as the many compelling new distribution models that are nearly mandatory in the first release of most products.&amp;#160; &lt;/p&gt;&lt;p&gt;This extensive set of competencies is what&amp;#39;s required nowadays to deliver a credible online product to a receptive user base and it has dramatic implications for both uptake and overall cost/time-to-market.&amp;#160; Worse, this body of knowledge has become extensive enough that many Web startups frequently fall far short of what they need to know in order to be successful with these far flung practice areas.&amp;#160;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://hinchcliffe.org/img/2008/web_product_distribution_models.jpg&quot; alt=&quot;Web Product Distribution Models - Web 2.0, Widgets, Social Apps, Open APIs&quot; title=&quot;Web Product Distribution Models - Web 2.0, Widgets, Social Apps, Open APIs&quot; width=&quot;461&quot; height=&quot;472&quot;/&gt; &lt;/p&gt;&lt;p&gt;Does this complex body of knowledge mean the era of the two-to-five person Web startup is coming to a close? Not at all, at least not yet. The &lt;a href=&quot;http://hinchcliffe.org/default.aspx#issues_and_motivations&quot;&gt;productivity level&lt;/a&gt;  of the latest tools and techniques remains almost astonishing though the level of knowledge required of these teams is creeping up and up.&amp;#160; And as we&amp;#39;ll see, new models for product distribution are pushing the capability envelope of the typical Internet startup team to the point we may very well see the day soon that they won&amp;#39;t have all the skills necessary to deliver a fully-scoped modern Web application.&amp;#160; It is also one reason why fewer and fewer Web startups have the goods to be all around hits out of the gate.  &lt;/p&gt;&lt;p&gt;Certainly, varying depths in subject matter are required depending one&amp;#39;s exact role in a Web business, but Web-oriented products are fundamentally shaped the vagaries of the network itself.&amp;#160; Tim O&amp;#39;Reilly himself still has the best quote on the subject: &amp;quot;&lt;em&gt;Winners and losers will be designated by who figures out how to use the network.&lt;/em&gt;&amp;quot; And as we&amp;#39;ll see, the Web is driving the evolution of a major new generation of online distribution models.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font size=&quot;3&quot;&gt;Why Adopting New Distribution Models Is Crucial&amp;#160;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As an example of this, I&amp;#39;ve been tracking some of the latest discussions around the hot topic du jour in the Web world: Social networking applications.&amp;#160; Specifically, it&amp;#39;s been interesting to watch the surprisingly low level of industry attention around the titanic competition brewing between social networking application formats from Web giants Facebook and Google.&amp;#160; Why is this?&amp;#160; Some might say it&amp;#39;s because these applications still have largely unproven business models.&amp;#160; Others, like Nick O&amp;#39;Neill at the Social Times &lt;a href=&quot;http://www.socialtimes.com/2008/08/has-the-hype-died-down-for-widgets/&quot;&gt;recently observed&lt;/a&gt;  (rightly in my opinion) that the struggle may have to do with a deficit in understanding why these new types of Web applications are so important. Nick notes that these widget and social networking style models for packaging and distributing Web apps often &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;have more eyeballs looking at their products than television channels have&lt;/span&gt;&amp;quot; and the challenge is that too many people just &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;don&amp;rsquo;t know what any of this means&lt;/span&gt;&amp;quot;, despite the major players divvying up the online pie for themselves.&amp;#160; With the size of these next generation distribution audiences, ignorance has an extremely painful price: failure to produce results and growth, poor engagement with the marketplace, and loss of market share.  &lt;/p&gt;&lt;p&gt;An excellent summary of the truly massive, but largely underappreciated scale of these new Web application models was last week&amp;#39;s &lt;a href=&quot;http://www.techcrunch.com/2008/08/20/opensocial-now-reaches-350-million-users-and-growing/&quot;&gt;TechCrunch piece on the progress of Google&amp;#39;s OpenSocial&lt;/a&gt;, an increasingly successful model for creating portable social networking applications that will run on any OpenSocial-compliant site.&amp;#160; Erick Schonfeld reported that OpenSocial now has a total reach of an astonishing 350 million users and it will soon be 500 million.&amp;#160; There are over 4,500 OpenSocial apps today, a healthy number for the application format but a small drop in the bucket compared to the number of Web sites in the world. But the key is that these applications are integrated much deeper into the social fabric of an engaged audience, interjecting themselves into the daily personal and work habits of the &amp;quot;captive&amp;quot; users of social sites and even have access to the personal habits and data of users of these sites.&amp;#160; Facebook&amp;#39;s story is impressive as well with over 37,000 applications that have been installed over 700 million times.&lt;/p&gt;&lt;p&gt;And social networking applications are just one of many news ways that applications have to be packaged and distributed, yet far too many organizations persist in a very 1990s view of Web experiences, namely that Web sites themselves are the center of online product design.&amp;#160; Many even think that some of these other new distribution models are interesting but not part of their core online product.&amp;#160; Unfortunately, that&amp;#39;s very much a parochial view in the present era.&amp;#160; Federated applications, atomized content and functionality, 3rd party product ecosystems through open APIs, and &lt;a href=&quot;/tips_for_building_next_generation_web_20_applications.htm&quot;&gt;much more&lt;/a&gt;  are required to establish a strong and resilient network effect which fends off competitors that are themselves bringing these potent new competencies to bear.&amp;#160; &lt;/p&gt;&lt;p&gt;&amp;#160;In fact, one of the things we emphasize over and over again in our conference workshops and in &lt;a href=&quot;http://web20university.com&quot;&gt;Web 2.0 University&lt;/a&gt; &lt;a href=&quot;http://web20university.com&quot;&gt; &lt;/a&gt;  is that having a Web site is usually the least interesting things about new products.&amp;#160; Worse, it makes the customer have to find you amongst tens of millions of other sites.&amp;#160; Instead, these new models tend to focus on going to the customer, instead of making them come to you which is a much harder proposition. This can instantly give you the ability to reach millions of potential people with dramatically lower effort and cost, as long as you have something interesting to offer.&lt;/p&gt;&lt;p&gt;Unfortunately, the number of capable practitioners of these new distribution models remains relatively small compared to the large body of experts in traditional Web product development.&amp;#160; Demand is also low for these new skills as most organizations have been painfully slow to appreciate how much online product development has changed.&amp;#160; A quick search of the job aggregator &lt;a href=&quot;http://simplyhired.com&quot;&gt;SimplyHired&lt;/a&gt;  tells the tale: Nearly a thousand Web designer positions are available while only 36 OpenSocial and 40 open API positions are open, for example.&amp;#160; This despite the the latter skills being able to project a product across the Web into hundreds of social sites or create an API that allows the product to be incorporated into countless other products for far less cost per customer than traditional methods.&lt;/p&gt;&lt;p&gt;The lesson here is that these new models still have a lot of fertile, unclaimed territory and many otherwise fierce competitors have not yet become fully aware of these new opportunities.&amp;#160; &lt;strong&gt;Get your piece of the pie while there&amp;#39;s still time&lt;/strong&gt;.&amp;#160; &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://hinchcliffe.org/img/2008/untapped_distribution_models.jpg&quot; alt=&quot;The new Web 2.0 era distribution models remain largely untapped&quot; title=&quot;The new Web 2.0 era distribution models remain largely untapped&quot; width=&quot;425&quot; height=&quot;390&quot;/&gt; &lt;/p&gt;&lt;p&gt;I also find that the Web development industry has been slow to change, particularly outside the valley, and there is depressingly scarce information on how to deliver well on things like widgets, open APIs, social networking applications, and even syndication.&amp;#160; To help with this, I&amp;#39;ve put together a short primer and some good references for those that want to get started.&lt;/p&gt;&lt;p&gt;Because the good news is that there remains tremendous opportunity for growth and success -- for both startups and traditional businesses -- if they will actively begin incorporating these new product delivery models into their own online capabilities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font size=&quot;3&quot;&gt;Overview of Online Product Delivery Models&amp;#160;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Web sites.&amp;#160;&lt;/strong&gt; This the classic model for Web presence.&amp;#160; During the early Web, creating a Web site was just about the only option for engaging with those online (e-mail being the other.)&amp;#160; Most early Web sites were used for publishing and not for user participation or peer production.&amp;#160; These days, Web sites are still important, though by no means mandatory, and have their content syndicated via RSS and ATOM (pushing the content to where it&amp;#39;s wanted), provide an access point to obtain widgets, and maintain user identity, and create communities of users.&amp;#160; Upshot: They&amp;#39;ve evolved a lot but Web sites are only part of an &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=71&quot;&gt;extensive set of capabilities&lt;/a&gt;  that must be brought to bear in the Web 2.0 era. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Syndication&lt;/strong&gt;. It took ten years for the Web community to figure out a workable syndication model.&amp;#160; Now RSS and ATOM are now the expected models used to distribute content off a single site and across the Web. Countless aggregation services now exist that make a site&amp;#39;s information embedded in their services as well as a way to offer users a method for pulling information from a site and experienced in a means of their choosing, from &lt;a href=&quot;http://google.com/reader&quot;&gt;Google Reader&lt;/a&gt;   and &lt;a href=&quot;http://newsgator.com&quot;&gt;Newsgator&lt;/a&gt;  to the innovative &lt;a href=&quot;http://pipes.yahoo.com&quot;&gt;Yahoo! Pipes&lt;/a&gt;.&amp;#160; Most sites still heavily underutilize syndication even for notifications and pushing out frequently changed information to draw attention to it much less the &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=168&quot;&gt;strategic ecosystem and integration opportunities&lt;/a&gt;  it affords.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Web 2.0 applications&lt;/strong&gt;.&amp;#160; You might argue that Web 2.0 itself is not a product distribution model but a set of design patterns and business models and that would be a true statement. However, in this context we&amp;#39;re referring to the fact that Web 2.0 apps package up the 3rd major type of networked value: user participation.&amp;#160; Before then, Web sites and syndication primarily had only centrally produced content or functionality that they could expose over the network and offer to the marketplace.&amp;#160; In other words, user participation its purest form -- sometimes known as &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=135&quot;&gt;peer production&lt;/a&gt;  --&amp;#160; ultimately results in products like &lt;a href=&quot;http://mturk.com&quot;&gt;Mechanical Turk&lt;/a&gt;  and &lt;a href=&quot;http://predictify.com&quot;&gt;Predictify&lt;/a&gt;  that provide direct networked access to user participation, but there are many fine gradations to this.&amp;#160; The bottom line, Web 2.0 applications plug the user into the network like never before and are a critical rung in the distribution ladder since it offers access to the largest set of content and information by harnessing collective intelligence.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open APIs and Web services.&amp;#160;&lt;/strong&gt; This is one of the most important long-term decisions most online businesses can make.&amp;#160; Offering an open API lets anyone take the online components of a business, from its data and functional capabilities to the users themselves, and makes them open and accessible over the Web to be incorporated into other products and services, sometimes in the form of &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=106&quot;&gt;mashups&lt;/a&gt;  and sometimes in the form of entire online products.&amp;#160; Amazon, one of the first Web companies in existence and is hence far downrange in terms of the experience curve, has been using this distribution model &lt;a href=&quot;/the_growth_of_open_apis_more_evidence_that_web_services_dri.htm&quot;&gt;with notable success recently&lt;/a&gt;.&amp;#160; So have hundreds of others.&amp;#160; The real challenge has been how foreign this model is to the original Web model and thus to the various management and development competencies in most organizations.&amp;#160; It&amp;#39;s much more an a way to OEM a product and leverage the customers and investments of hundreds of other partners.&amp;#160; However, overall, it affords the potential for much larger business outcomes than could ever be created with point Web presence.&amp;#160; It&amp;#39;s now considered a significant oversight not to have an open API available for the typical online product. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Web widgets&lt;/strong&gt;.&amp;#160; Selecting parts of a Web site and it&amp;#39;s data and packaging it up to make it run inside a &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=80&quot;&gt;portable, user distributable widget&lt;/a&gt;  has been growing more and more popular over the last few years. For example, &lt;a href=&quot;http://widgetbox.com&quot;&gt;WidgetBox&lt;/a&gt;  currently distributes 74,000 different kinds of Web widgets from its partners to over 1.2 million other sites.&amp;#160; Widgets lets users distribute a Web site to other places on the Web at no extra cost and it also creates an ecosystem effect, where other Web sites users become the users of the new site.&amp;#160; The YouTube badge is a notoriously well-known example of this that also helped drive the extraordinarily fast growth of the site.&amp;#160; Like APIs, widgets are now considered a mandatory must-have for new and existing online products. But unlike APIs where it&amp;#39;s up to the API users, figuring out users want out of your site&amp;#39;s widgets is still an art form. &lt;/li&gt;&lt;li&gt;&lt;font size=&quot;2&quot;&gt;&lt;img src=&quot;http://hinchcliffe.org/img/2008/plaxo_opensocial_growth.jpg&quot; alt=&quot;The Plaxo Pulse Story with OpenSocial&quot; title=&quot;The Plaxo Pulse Story with OpenSocial&quot; width=&quot;411&quot; height=&quot;299&quot;/&gt;&lt;/font&gt;&lt;strong&gt;Social networking applications&lt;/strong&gt;.&amp;#160; Sometimes viewed as an extension of the Web widget model, social networking applications are applications designed to run inside of popular social networking environments and usually have capabilities that tap into and make use of the &lt;a href=&quot;/the_social_graph_issues_and_strategies_in_2008.htm&quot;&gt;social graph&lt;/a&gt;  information resident in a user&amp;#39;s social network account.&amp;#160; This is an amazingly fast moving field as you can see from a &lt;a href=&quot;http://opensocialapis.blogspot.com/2008/07/recent-happenings-in-opensocial.html&quot;&gt;recent post on the latest happenings&lt;/a&gt;  on the OpenSocial blog, to the extent it&amp;#39;s hard even for well-funded companies to keep up.&amp;#160; However, despite skepticism that large businesses can be built exclusively through a social networking application, it&amp;#39;s become ever more essential for a site to make its capabilities accessible usable in these environments.&amp;#160; Not only will users help distribute online products in these formats to their contacts but it also increases the overall usage of the your application including participation and its consequently growth of a site&amp;#39;s network effect.&amp;#160; While not yet considered mandatory for online products, the ease with which these social network applications can be created and the large numbers of users they make available makes it a smart distribution option for most Web businesses.&amp;#160; Like widgets, however, figuring out what users will find engaging in a social networking application featuring your online product takes some research and experimentation.&amp;#160; However, the results can be very rewarding and some social networking applications have millions of daily users.&amp;#160; See the &lt;a href=&quot;http://www.plaxo.com/&quot;&gt;Plaxo Pulse&lt;/a&gt;  story on Mashable &lt;a href=&quot;http://mashable.com/2007/11/19/plaxo-pulse-opensocial-growth/&quot;&gt;for the details&lt;/a&gt;  of how OpenSocial drove a 5x improvement in traffic in only 3 weeks. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Semantic Web and Web 3.0&lt;/strong&gt;. The &lt;a href=&quot;http://www.sciam.com/article.cfm?id=the-semantic-web&quot;&gt;Semantic Web&lt;/a&gt;, one of the original visions for the World Wide Web, has taken a while to arrive but it&amp;#39;s beginning to look like it may hit critical mass in the next 12-24 months.&amp;#160; Combined with &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_3.0&quot;&gt;Web 3.0&lt;/a&gt;, which takes the architectures of participation at the core of Web 2.0 and drives it through a lens of Semantic Web capabilities.&amp;#160; The benefits can be profound and can greatly increase the value and leverage of information on the Web.&amp;#160; While this is very much not prime time yet, unlike #1-#6 above, it likely will be and smart organizations can get ahead of the learning curve and get an early market lead using these techniques.&amp;#160; For now, however, I recommend that most organizations focus on executing well on the first six items before tackling this and waiting for the technologies to finish emerging and maturing.&lt;/li&gt;&lt;/ol&gt;The list above should provide good guidance for starting move into the potent new models for distribution on the Web.&amp;#160; I&amp;#39;m seeing, however, that because of the major shifts in strategy and product design emphasis these techniques demand, most organizations take an inordinately long amount of time to become effective with them.&amp;#160; The lesson here: Start small now and build core competency.&amp;#160; Small investments now can pay off later in terms of valuable experience made from early experiments and pilots.&amp;#160; When done right, &lt;br/&gt;these new distribution models can become the dominant channels that the world uses to interact with your business, like they already have with Amazon and Twitter. &lt;br/&gt;&lt;br/&gt;&lt;em&gt;I&amp;#39;ll be talking about these and other strategic online product design topics in my upcoming &lt;a href=&quot;http://webexny2008.crowdvine.com/talks/show/1005&quot;&gt;Building Next Generation Web Apps Workshop&lt;/a&gt;  at the inaugural &lt;a href=&quot;http://en.oreilly.com/webexny2008/public/content/home&quot;&gt;Web 2.0 Expo 2008 NYC&lt;/a&gt;  next month.&amp;#160; I&amp;#39;ll have more details about this deep-dive session in an upcoming post. &lt;/em&gt;&lt;/font&gt;</description>
            
            <pubDate>Thu, 28 Aug 2008 18:06:52 -0700</pubDate>
        </item>
            
        <item>
            <title>Web 2.0 Continues As Most Used New Internet Term</title>
            <link>http://swik.net/User:dolander/Web+2.0+Blog/Web+2.0+Continues+As+Most+Used+New+Internet+Term/ccttg</link>
            <description>&lt;font size=&quot;2&quot;&gt;&lt;p&gt;&lt;img src=&quot;http://hinchcliffe.org/img/web20term_trends.jpg&quot; alt=&quot;Web 2.0 Remains Top Term for New Internet Trends&quot; title=&quot;Web 2.0 Remains Top Term for New Internet Trends&quot; width=&quot;421&quot; height=&quot;323&quot;/&gt;While it&amp;#39;s no longer quite so fashionable to label your Internet startup a &amp;quot;Web 2.0&amp;quot; company these days, the popularity of the term remains extraordinarily high and is presently used today both far and wide in traditional media and social media.&amp;#160; The Google Trends graph in the figure to the right tells the overall story; global search interest in Web 2.0 is more popular than &amp;quot;&lt;em&gt;social media&amp;quot;&lt;/em&gt; and &lt;em&gt;&amp;quot;social networking&amp;quot;&lt;/em&gt; &lt;span style=&quot;text-decoration: underline&quot;&gt;combined&lt;/span&gt; and by a significant margin.&amp;#160; About the only other strategic technology concept that has anywhere near the same volume of world-wide interest is &lt;a href=&quot;http://en.wikipedia.org/wiki/Service-oriented_architecture&quot;&gt;&lt;span style=&quot;font-style: italic&quot;&gt;service-oriented architecture (SOA)&lt;/span&gt;&lt;/a&gt;, which as it turns out is also &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=107&quot;&gt;surprisingly closely related to Web 2.0&lt;/a&gt;.&amp;#160; Granted, Google Trends is not a scientific, &amp;quot;bet-the-business&amp;quot; kind of source, but it&amp;#39;s a pretty darn good barometer.&lt;/p&gt;&lt;p&gt;Even for someone who spends much time with Web 2.0 concepts, I was surprised at this and I carried out a little cross checking from other sources and they all show the same disparity: Web 2.0 is still far and away one of the most popular terms to describe the intrinsic nature of many new online applications and businesses.&amp;#160; This apparently highlights large scale demand for a broad enough term that rightly captures the innovations, new trends, and technologies that have emerged in the online space in the last few years.&amp;#160; Web 2.0 has fit this bill better than any other single meme including the &lt;span style=&quot;font-style: italic&quot;&gt;read/write Web&lt;/span&gt;, &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/index.php?p=21&quot;&gt;Social Computing&lt;/a&gt;, the Social Web, and the New Internet, to name just a few alternatives (and conceptually incomplete) terms that have been suggested. &lt;/p&gt;&lt;p&gt;The only real problem with this is that term itself has sometimes devolved into a vague buzzword that is often substituted as a simple synonym for social software or rich user experience techniques such as Ajax.&amp;#160; Part of this is that the early investigation into Web 2.0 trends attempted to use it as a placeholder until the real underlying patterns were actually identified.&amp;#160; This work resulted in the famous &lt;a href=&quot;http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html&quot;&gt;Web 2.0 meme-map&lt;/a&gt;  that began to put meat on the bones and ultimately resulted in the excellent &lt;a href=&quot;http://radar.oreilly.com/research/web2-report.html&quot;&gt;Web 2.0 Principles and Best Practices&lt;/a&gt;  by my good friend John Musser.&amp;#160; However, the lack of early specifics, though a brilliant move that allowed the right concepts to emerge from research into what was happening online, rather prescribing it blindly, also left a lasting impression of a vague, somewhat shapeless term for &amp;quot;newness&amp;quot; in the online world to the extent that even Tim Berners-Lee himself &lt;a href=&quot;/all_we_got_was_web_10_when_tim_bernerslee_actually_gave_us_w.htm&quot;&gt;was left doubting&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;However, it does appear that we are now left with both a very popular term that also has an increasingly large body of serious work that puts tremendous substance behind it.&amp;#160; Academics such as &lt;a href=&quot;http://www.amyshuen.com/&quot;&gt;Amy Shuen&lt;/a&gt;  and her excellent &lt;a href=&quot;http://oreilly.com/catalog/9780596529963/&quot;&gt;Web 2.0: A Strategy Guide&lt;/a&gt;  have produced enormous formal texts based on intensive research.&amp;#160; A quick search of Google Scholar shows that over 14,000 references can be found. So too does the popular &lt;a href=&quot;http://web2expo.com&quot;&gt;Web 2.0 Expo conference series&lt;/a&gt;  continue and it has been expanding in recent years to the East Coast, Europe, and Asia.&amp;#160; While the hype itself has largely dissipated and Gartner&amp;#39;s &lt;a href=&quot;http://gartner.com/it/page.jsp?id=739613&quot;&gt;2008 Hype Cycle report&lt;/a&gt;  says it&amp;#39;s entering the trough of disillusionment, it also notes that &amp;quot;&lt;span style=&quot;font-style: italic&quot;&gt;it will emerge within two years to have transformational impact, as companies steadily gain more experience and success with both the technologies and the cultural implications.&lt;/span&gt;&amp;quot;&amp;#160; I could not agree more.&lt;/p&gt;&lt;p style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://hinchcliffe.org/img/gartner2008hypecycle.jpg&quot; alt=&quot;Gartner&#039;s 2008 Hype Cycle and Web 2.0&quot; title=&quot;Gartner&#039;s 2008 Hype Cycle and Web 2.0&quot; width=&quot;472&quot; height=&quot;451&quot;/&gt;&lt;/p&gt;&lt;h2&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Web 2.0: The Concepts Spread to Other Fields&lt;/span&gt;&amp;#160;&lt;/h2&gt;&lt;p&gt;I&amp;#39;ve previously covered &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=71&quot;&gt;what Web 2.0 means exactly&lt;/a&gt;  and the virtual ink spilled on this often surprisingly complex subject is itself vast.&amp;#160; The &lt;a href=&quot;http://en.wikipedia.org/wiki/Web_2.0&quot;&gt;Wikipedia definition of &amp;quot;Web 2.0&amp;quot;&lt;/a&gt;  remains one of the most popular entries on the site and the number of offshoots of the term has been a saga in itself, from the &lt;a href=&quot;/the_web_20_revolution_spawns_offshoots.htm&quot;&gt;early days of Advertising 2.0, Law 2.0, Library 2.0&lt;/a&gt;  to the newer, (generally) widely accepted terms &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=173&quot;&gt;Enterprise 2.0&lt;/a&gt;  and &lt;a href=&quot;http://mashable.com/2008/08/07/theory-of-social-government/&quot;&gt;Government 2.0&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For simplicity&amp;#39;s sake, however, this is what we normally use to provide the most straightforward definitions of all things Web 2.0:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Web 2.0&lt;/span&gt; - The continuously changing, participatory Web with a focus on building collective intelligence on myriad devices and primarily servicing The Long Tail.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Web 2.0 in the Enterprise&lt;/span&gt; - Web 2.0 as applied to business and not consumer activities.&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold&quot;&gt;Enterprise 2.0&lt;/span&gt; - The social, collaborative network with emergent behavior and structure.&amp;#160; &lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;At this point there are some that like to invoke &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzzword_bingo&quot;&gt;Buzzword Bingo&lt;/a&gt;  at such seemingly gratuitously coining of new terms, but I personally find this a crucially important point: The global network of the Web itself, which is shaped continually by the endless participation of hundreds of millions of users around the clock, is no more than a reflection of those that shape it (which are then shaped themselves by it.)&amp;#160; That the principles of Web 2.0 cross all disciplines, types of business, types of government, languages, as well as types of people and culture has fostered an interesting phenomenon.&amp;#160; Namely, each of these topical areas are in the various stages of translating how Web 2.0 transforms and improves what they do, from &lt;a href=&quot;http://web2.wsj2.com/architectures_of_participation_the_next_big_thing.htm&quot;&gt;architectures of participation&lt;/a&gt;  and &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=41&quot;&gt;harnessing collective intelligence&lt;/a&gt;  to &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=191&quot;&gt;radical decentralization&lt;/a&gt;  (with &lt;a href=&quot;http://blogs.zdnet.com/Hinchcliffe/?p=191&quot;&gt;cloud computing&lt;/a&gt;  being the most interesting new example) and &lt;a href=&quot;/the_growth_of_open_apis_more_evidence_that_web_services_dri.htm&quot;&gt;open service ecosystems&lt;/a&gt;.&amp;#160;&lt;/p&gt;&lt;p style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;http://hinchcliffe.org/img/web2_evolution_2008.jpg&quot; alt=&quot;The Evolution of Web 2.0, Enterprise 2.0, and 2.0 Verticals&quot; title=&quot;The Evolution of Web 2.0, Enterprise 2.0, and 2.0 Verticals&quot; width=&quot;623&quot; height=&quot;470&quot;/&gt; &lt;/p&gt;&lt;p&gt;&amp;#160;This &amp;quot;localization&amp;quot; of Web 2.0 into specific verticals appears to be a natural competitive response by those trying to incorporate the latest best practices and proven technique into their work.&amp;#160; In fact, I find that non-technologists and those whose professions are not spent in the world of software or in Internet businesses have a hard time incorporating, indeed translating, the Web 2.0 body of knowledge to their line of work.&amp;#160; So one by one, we can thank a largely self-appointed group of experts have taken the trouble to map the 2.0 works into the many aspects of the world that are steadily being remade by the increasingly pervasive presence of the Web.&lt;/p&gt;&lt;p&gt;And Web 2.0 isn&amp;#39;t standing still, we certainly haven&amp;#39;t figured out all the ways that we can leverage the network yet.&amp;#160; As we start &lt;a href=&quot;/thinking_beyond_web_20_social_computing_and_the_internet_sin.htm&quot;&gt;thinking beyond Web 2.0&lt;/a&gt;  we begin considering where sensor-gathered information of every description, location-awareness (the iPhone will drive this like few other devices today), and the glimmerings of semantic capability, we can see that eventually Web 2.0 will -- like Web 1.0 -- evolve into something else in its own right.&amp;#160;&lt;/p&gt;&lt;p&gt;It took us almost 10 years to figure out how to begin to use the Web properly and it may take another 10 years from now before most of us are incorporating the lessons of web 2.0 deeply into how we run their businesses.&amp;#160; The result will be a transformed business and competitive landscape with products and services created and delivered in ways very unlike today (see my &lt;a href=&quot;/web_20_predictions_for_2008.htm&quot;&gt;Web 2.0 predictions for 2008&lt;/a&gt;  for some details on this).&amp;#160; It&amp;#39;s also clear that the long-term implications will go well beyond that, similar to the way that the telephone, television, and especially the printing press changed how information was created, who could access it, and how it was owned and distributed.&amp;#160; The parallels stop there since the deepest implications of 2.0 is a tremendous &lt;a href=&quot;/the_webpowered_control_shift_social_computing.htm&quot;&gt;shift of control&lt;/a&gt;  from the center of our networks to the edge.&lt;span style=&quot;font-style: italic&quot;&gt;&amp;#160; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-style: italic&quot;&gt;What other 2.0 memes are you tracking? Please put in comments below.&lt;/span&gt;&amp;#160;&lt;/p&gt;&lt;/font&gt;</description>
            
            <pubDate>Mon, 18 Aug 2008 11:10:56 -0700</pubDate>
        </item>
            
        <item>
            <title>Explaining REST to Damien Katz</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/Explaining+REST+to+Damien+Katz/ccpxx</link>
            <description>&lt;p&gt;
Damien Katz recently caused a stir on a bunch of the blogs I read with his post entitled &lt;a href=&quot;http://damienkatz.net/2008/08/rest-i-just-dont-get-it.html&quot;&gt;REST,
I just don&#039;t get it&lt;/a&gt; where he wrote 
&lt;/p&gt;
        &lt;blockquote&gt;
          &lt;p&gt;
            &lt;em&gt;As the guy who created CouchDB, I should be a big cheerleader for RESTful architectures.
But the truth is, I just don&#039;t get it.&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;For CouchDB, REST makes absolutely insanely perfect sense. Read a document, edit,
put the document back. Beautiful. But for most applications, enterprise or not, I
don&#039;t see what the big win is.&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;I know what is wrong with SOAP, and it has everything to do with unnecessary complexity
and solving the same problems twice. But what is the big advantage of making all your
calls into GET PUT and DELETE? If POST can handle everything you need, then what&#039;s
the problem?&lt;/em&gt;
          &lt;/p&gt;
          &lt;p&gt;
            &lt;em&gt;I guess what I mean to say is just because SOAP is a disaster, doesn&#039;t somehow
make REST the answer. Simpler is better, and REST is generally simpler than SOAP.
But there is nothing wrong with a plain old POST as an RPC call. If its easy to make
all your calls conform to the RESTful verb architecture, then that&#039;s good, I guess.&lt;/em&gt;
          &lt;/p&gt;
        &lt;/blockquote&gt;
        &lt;p&gt;
His post made the rounds on the expected social news sites like &lt;a href=&quot;http://www.reddit.com/r/programming/comments/6wee2/rest_i_just_dont_get_it/&quot;&gt;programming.reddit&lt;/a&gt; and &lt;a href=&quot;http://news.ycombinator.com/item?id=276687&quot;&gt;Hacker
News&lt;/a&gt;, where I was amused to note that my blog is now being used as &lt;a href=&quot;http://news.ycombinator.com/item?id=276769&quot;&gt;an
example of silly REST dogma&lt;/a&gt; by REST skeptics in such discussions. From reading
the Damien&#039;s post and the various comments in response, it seems clear that there
are several misconceptions as to what constitutes REST and what its benefits are from
a &lt;em&gt;practical&lt;/em&gt; perspective. 
&lt;/p&gt;
        &lt;h3&gt;Background: The Origins of REST vs. SOAP
&lt;/h3&gt;
        &lt;p&gt;
The Representational State Transfer (REST) architectural style was first described
in &lt;a href=&quot;http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm&quot;&gt;Chapter
5 of Roy Fielding&#039;s Ph.D dissertation&lt;/a&gt; published in 2000. It describes the architecture
of the Web from the perspective of &lt;a href=&quot;http://www.w3.org/Protocols/rfc2616/rfc2616.html&quot;&gt;one
of the authors of the HTTP 1.1 specification&lt;/a&gt; which was published the year before
in 1999. Around the same time &lt;a href=&quot;http://www.pluralsight.com/community/blogs/dbox/default.aspx&quot;&gt;Don
Box&lt;/a&gt;, &lt;a href=&quot;http://www.scripting.com&quot;&gt;Dave Winer&lt;/a&gt; and a bunch of folks at
Microsoft came up with the &lt;a href=&quot;http://www.w3.org/TR/2000/NOTE-SOAP-20000508/&quot;&gt;Simple
Object Access Protocol (SOAP)&lt;/a&gt; which they intended to be the standard protocol
for building distributed applications on the Web. 
&lt;/p&gt;
        &lt;p&gt;
Over the following years SOAP was embraced by pretty much every major enterprise software
vendor and was being pushed hard by the W3C as the way to build distributed applications
on the Web. However a lot of these vendors weren&#039;t really interested in building software
for the Web but instead were more interested in porting all of their technologies
and scenarios from enterprise integration technologies like CORBA to using &lt;em&gt;buzzword
compliant&lt;/em&gt; XML. This led to a bunch of additional specifications like &lt;a href=&quot;http://www.w3.org/XML/Schema&quot;&gt;XSD&lt;/a&gt; (type
system), &lt;a href=&quot;http://www.w3.org/TR/wsdl&quot;&gt;WSDL&lt;/a&gt; (IDL) and &lt;a href=&quot;http://www.uddi.org/pubs/uddi_v3.htm&quot;&gt;UDDI&lt;/a&gt; (naming/trading
service). Developers initially embraced these technologies enthusiastically which
led to the enterprise software vendors pumping out &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms951274.aspx&quot;&gt;dozens
of WS-* specifications&lt;/a&gt;. During this period not many thought or talked much about
REST since no one talks about boring Ph.D dissertations.  
&lt;/p&gt;
        &lt;p&gt;
In 2002, a canary in the coal mine emerged in the form of &lt;a href=&quot;http://www.markbaker.ca/blog/2008/01/17/rest-vs-soap-the-personal-cost/&quot;&gt;Mark
Baker&lt;/a&gt;. On mailing lists frequented by Web services types such as &lt;a href=&quot;http://lists.xml.org/archives/xml-dev/&quot;&gt;xml-dev&lt;/a&gt; and &lt;a href=&quot;http://lists.w3.org/Archives/Public/xml-dist-app/&quot;&gt;xml-dist-app&lt;/a&gt;,
Mark &lt;a title=&quot;Getting no REST&quot; href=&quot;http://markmail.org/message/qmma6pnqg7dbzew3&quot;&gt;began
to persistently point out&lt;/a&gt; that SOAP was built on a bad foundation because it fundamentally
ignored the architecture of the Web as defined by Roy Fielding&#039;s thesis. At first
a lot of people labeled mark as a kook or malcontent for questioning the trend of
the moment. 
&lt;/p&gt;
        &lt;p&gt;
By 2005, the industry had enough  experience with SOAP to start seeing real problems
using at as a way to build distributed applications on the Web. By that year many
developers had started hearing stories like &lt;a title=&quot;ETech 2005 Trip Report Building a New Web Service at Google&quot; href=&quot;http://www.25hoursaday.com/weblog/2005/03/17/ETech2005TripReportBuildingANewWebServiceAtGoogle.aspx&quot;&gt;Nelson
Minar&#039;s presentation on the problems Google had seen with SOAP based Web services&lt;/a&gt; and
sought a simpler alternative. This is when the seeds of Mark Baker&#039;s evangelism of
Roy&#039;s dissertation eventually bore fruit with the Web developer community.
&lt;/p&gt;
        &lt;p&gt;
However a Ph.D dissertation is hard to digest. So the message of REST started getting
repackaged into simpler, bite-sized chunks but the meat of the message started getting
lost along the way. Which led to several misconceptions about what REST actually is
being propagated across the Web developer community. 
&lt;/p&gt;
        &lt;h3&gt;Misconceptions About the REST Architectural Style
&lt;/h3&gt;
        &lt;p&gt;
With that out of the way I can address the straw man argument presented in Damien&#039;s
post. Damien states that building a RESTful Web Service is about using the HTTP PUT
and DELETE methods instead of using HTTP POST when designing a Web API. In fact, he
goes further to describe it as &quot;the RESTful verb architecture&quot; implying that choice
of HTTP verbs that your service supports is the essence of REST. 
&lt;/p&gt;
        &lt;p&gt;
This is incorrect. 
&lt;/p&gt;
        &lt;h3&gt;Q: What is the Essence of REST? A: The Uniform Interface
&lt;/h3&gt;
        &lt;p&gt;
REST explains how the Web works by defining the set of constraints on the various
components in the current Web architecture. These constraints include 
&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;
            &lt;p&gt;
interaction is based on the &lt;a href=&quot;http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_4_1&quot;&gt;client-server
architectural style&lt;/a&gt;. User agents like Web browsers, RSS readers, Twitter clients,
etc are examples of Web clients which talk to various Web servers without having a
tight coupling to the internal implementation of the server. 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
communication between the client and server is &lt;a href=&quot;http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_4_3&quot;&gt;stateless&lt;/a&gt;.
The benefits of HTTP being a primarily stateless protocol is that statelessness increases
scalability and reliability of services at the cost of introducing some complexity
on the part of the client. 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
the Web architecture supports &lt;a href=&quot;http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_4_4&quot;&gt;caching&lt;/a&gt; by
requiring that requests that are cacheable or non-cacheable are labeled as such (i.e.
via HTTP method and various caching related headers). 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
there is a &lt;a href=&quot;http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_5&quot;&gt;uniform
interface&lt;/a&gt; between components which allows them to communicate in a standard way
but may not be optimized for specific application scenarios. There are four interface
constraints: &lt;em&gt;identification of resources&lt;/em&gt;; &lt;em&gt;manipulation of resources through
representations&lt;/em&gt;; &lt;em&gt;self-descriptive messages&lt;/em&gt;; and, &lt;em&gt;hypermedia as the
engine of application state&lt;/em&gt;.
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
there can be multiple &lt;a href=&quot;http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_4_2&quot;&gt;layers
between client and server&lt;/a&gt; which act as intermediaries (e.g. proxies, gateways,
load balancers, etc) without this being obvious to the requesting client or accepting
server. 
&lt;/p&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
When you read the above list, the first thing you will note is that it describes the
architecture of the World Wide Web. It doesn&#039;t describe the architecture of &quot;a typical
enterprise&quot; or the internals of a cloud computing application. 
&lt;/p&gt;
        &lt;p&gt;
Building a RESTful Web Service simply means paying attention to these characteristics
of the Web. As you read them, some practical guidelines start becoming obvious. For
example, if you want to take advantage of all the caching infrastructure that is built
into the Web infrastructure, then you should use HTTP GET for services that retrieve
data. This is just one of the many things Web Services built on SOAP got wrong. 
&lt;/p&gt;
        &lt;p&gt;
The uniform interface constraints describe how a service built for the Web can be
a good participant in the Web architecture. These constraints are described briefly
as follows 
&lt;/p&gt;
        &lt;ol&gt;
          &lt;li&gt;
            &lt;p&gt;
              &lt;u&gt;Identification of resources:&lt;/u&gt; A resource is any information item that can be
named and represented (e.g. a document, a stock price at a given point in time, the
current weather in Las Vegas, etc). Resources in your service should be identified
using URIs. 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
              &lt;u&gt;Manipulation of resources via representations:&lt;/u&gt; A representation is the physical
representation of a resource and should correspond to a &lt;a href=&quot;http://www.iana.org/assignments/media-types/&quot;&gt;valid
media type&lt;/a&gt;. Using standard media types as the data formats behind your service
increases the reach of your service by making it accessible to a wide range of potential
clients. Interaction with the resource should be based on retrieval and manipulation
of the representation of the resource identified by its URI. 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
              &lt;u&gt;Self-descriptive messages:&lt;/u&gt; Following the principles of statelessness in your
service&#039;s interactions, using standard media types and correctly indicating the cacheability
of messages via HTTP method usage and control headers ensures that messages are self
descriptive. Self descriptive messages make it possible for messages to be processed
by intermediaries between the client and server without impacting either. 
&lt;/p&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;p&gt;
              &lt;u&gt;Hypermedia as the engine of application state:&lt;/u&gt; Application state should be
expressed using URIs and hyperlinks to transition between states. This is probably
the most controversial and least understood of the architectural constraints set forth
in Roy Fielding&#039;s dissertation. In fact, Fielding&#039;s dissertation contains an &lt;a href=&quot;http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm#sec_6_3_4_2&quot;&gt;explicit
arguments against using HTTP cookies for representing application state&lt;/a&gt; to hammer
this point home yet it is often ignored. 
&lt;/p&gt;
          &lt;/li&gt;
        &lt;/ol&gt;
        &lt;h3&gt;Benefits of Conforming to REST and the Uniform Interface to Web Developers
&lt;/h3&gt;
        &lt;p&gt;
At this point, the benefits of building RESTful services &lt;em&gt;for the Web&lt;/em&gt; should
be self evident. The Web has a particular architecture and it makes sense that if
you are deploying a service or API on the Web then it should take advantage of this
architecture instead of fighting against it. There are millions of deployed clients,
servers and intermediaries that support REST and it makes sense to be compatible with
their expectations. 
&lt;/p&gt;
        &lt;p&gt;
This doesn&#039;t mean you have to use DELETE and PUT when POST might suffice. It does
mean understanding the difference between using POST versus using PUT to other participants
in the Web architecture. Specifically, that &lt;a href=&quot;http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html&quot;&gt;PUT
is idempotent while POST is not&lt;/a&gt; so a client of your service can assume that performing
the same PUT two or three times in a row has the same effect as doing it once but
cannot assume that for POST. Of course, it is up to you as a Web service developer
to decide if you want your service to provide a more explicit contract with clients
or not. What is important to note is that there is a practical reason for making the
distinction between which HTTP verbs you should support. 
&lt;/p&gt;
        &lt;p&gt;
There are other practical things to be mindful of as well to ensure that your service
is being a good participant in the Web ecosystem. These include using GET instead
of POST when retrieving a resource and properly utilizing the caching related headers
as needed (If-Modified-Since/Last-Modified, If-None-Match/ETag, Cache-Control), 
learning to utilize HTTP status codes correctly (i.e. errors shouldn&#039;t return HTTP
200 OK), keeping your design stateless to enable it to scale more cheaply and so on.
The increased costs, scalability concerns and complexity that developers face when
they ignore these principles is captured in blog posts and articles all over the Web
such as &lt;a href=&quot;http://davidvancouvering.blogspot.com/2007/09/session-state-is-evil.html&quot;&gt;Session
State is Evil&lt;/a&gt; and &lt;a href=&quot;http://www.javaworld.com/javaworld/jw-03-2002/jw-0308-soap.html&quot;&gt;Cache
SOAP services on the client side&lt;/a&gt;. You don&#039;t have to look hard to find them. What
most developers don&#039;t realize is that the problems they are facing are because they
aren&#039;t keeping RESTful principles in mind.
&lt;/p&gt;
        &lt;p&gt;
Don&#039;t fight the Web, embrace it. 
&lt;/p&gt;
        &lt;p&gt;
FURTHER READING
&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;
            &lt;a href=&quot;http://www.prescod.net/rest/rest_vs_soap_overview/&quot;&gt;Roots of the REST/SOAP
Debate&lt;/a&gt; – Paul Prescod provides a history of the REST/SOAP debate from his perspective
in the trenches in various mailing lists in early part of this decade. 
&lt;/li&gt;
          &lt;li&gt;
            &lt;a href=&quot;http://www.25hoursaday.com/weblog/2007/11/19/GuidelinesForBuildingRESTfulWebServices.aspx&quot;&gt;Guidelines
for Building RESTful Web Services&lt;/a&gt; – Dare Obasanjo offers advice on how to learn
about building and designing RESTful Web Services 
&lt;/li&gt;
        &lt;/ul&gt;
        &lt;p&gt;
          &lt;b&gt;Now Playing:&lt;/b&gt;
          &lt;a href=&quot;http://www.amazon.com/gp/search/ref=sr_adv_m_pop/?search-alias=popular&amp;amp;unfiltered=1&amp;amp;field-keywords=&amp;amp;field-artist=Public%20Enemy&amp;amp;field-title=&amp;amp;field-label=&amp;amp;field-binding=&amp;amp;sort=relevancerank&amp;amp;Adv-Srch-Music-Album-Submit.x=19&amp;amp;Adv-Srch-Music-Album-Submit.y=6&quot;&gt;Public
Enemy&lt;/a&gt; - &lt;a href=&quot;http://www.amazon.com/s/ref=nb_ss_dmusic?url=search-alias%3Ddigital-music&amp;amp;field-keywords=Public%20Enemy+Don%27t%20Believe%20the%20Hype&amp;amp;x=0&amp;amp;y=0&quot;&gt;Don&#039;t
Believe the Hype&lt;/a&gt;&lt;/p&gt;
        
digg_url = &#039;http://digg.com/programming/Dare_Obasanjo_aka_Carnage4Life_Explaining_REST_to_Damien_K&#039;;

        
        
      &lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=SdLFnk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=SdLFnk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=7G8Dkk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=7G8Dkk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=LKEZKk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=LKEZKk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~f/Carnage4life?a=bySHlK&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~f/Carnage4life?i=bySHlK&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Carnage4life/~4/367204223&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
            
            <pubDate>Sun, 17 Aug 2008 05:11:51 -0700</pubDate>
        </item>
            
        <item>
            <title>John McCain: An Example of Cognitive Dissonance</title>
            <link>http://swik.net/User:dolander/Dare+Obasanjo/John+McCain%3A+An+Example+of+Cognitive+Dissonance/cchak</link>
            <description>&lt;p&gt;
          &lt;a href=&quot;http://www.answers.com/cognitive+dissonance&am