Archive for May, 2005

Property Rights and Innovation

Tuesday, May 31st, 2005

Found an interesting presentation on Bubblegeneration discussion property rights and innovation (via Occam’s Razor). Some thoughts:

Ultimately, the negotiation for property rights must be coordinated among a huge number of actors, each of whom adds their own negotiation and enforcement cost. …[I]nnovators are using the Net to correct the coordination failure, and effectively offer massively multilateral contracts that work.

He’s talking mostly about DRM here, but there is some mention of EULA. The thing that comes to my mind is open source. The community is massively renegotiating software contracts. And there are plenty of DRM examples – Kazaa, Hymn, etc. He class this response a “gray market.”

…And that’s the point: at the same price, any bundle of property rights and goods must provide at least as much value as the good by itself. Any less, and consumers have a disincentive to consume the property rights with the good. This is why DRM systems are doomed. From an economic point of view, DRM solutions are just massively distributed copy protection.

His premise is right, but the conclusion is wrong. The thing about DRM is that with DRM the price goes down, so even though I may not be able reburn a subscribed song from Napster/Rhapsody onto a CD, it costs me a fraction of the cost to listen to it as it would to buy it (provided I listen to enough music).

I don’t believe that DRM provides negative value as he puts it. DRM’d music provides different value – convenient access via my computer with filters/recommendation engines at a cheaper prices.

For example, innovative licenses might pay dividends, might be options with expiration dates and strike prices, might offer structured, locked-in benefits via frequent-flyer program like subsidies, or might even offer terms like in the Japanese Ring trilogy – replicate this good virally…or else.

Interesting idea that licenses could provide incentives/value to the end user if they follow the license…

Umair’s also posted some new powerpoints and they are very interesting (although there are 200+ slides between the two of them…). I particularly like the idea of coordination economies. He talks about how microeconomies can only exist if you have divisible inputs. For example, the Wikipedia has inputs from many different people.

I wonder if we will start to see new versions of old things which result from divisible inputs. What about Google News applied to television? One continuous feed of remixed news content.

I’ll definitely be reading this stuff over again tomorrow when I’m more awake.

Thursday, May 26th, 2005

My latest XFire commit involved a substantial change to the way communication over transports is done. It was somewhat inspired by Indigo’s use of channels – however as Paul Brown pointed out to me, channels aren’t exactly a new concept.

I always like it best if people show me code, so here is some code:

String peer1 = "urn:xfire:local:Peer1";
String peer2 = "urn:xfire:local:Peer2";

LocalTransport transport = new LocalTransport();
Channel channel1 = transport.createChannel(peer1);
channel1.open();

Channel channel2 = transport.createChannel(peer2);
channel2.setEndpoint(new YOMEndpoint());

// Document to send
Element root = new Element(”root”);
root.appendChild(”hello”);
Document doc = new Document(root);

MessageContext context = new MessageContext();

OutMessage msg = new OutMessage(”urn:xfire:local:Peer2″);
msg.setSerializer(new YOMSerializer());
msg.setBody(doc);

channel1.send(context, msg);
Thread.sleep(1000);

channel1.send(context, msg);
Thread.sleep(1000);

channel1.close();
channel2.close();
public class YOMEndpoint

    implements ChannelEndpoint
{
    public void onReceive(MessageContext context, InMessage msg)
    {
        StaxBuilder builder = new StaxBuilder();
        try
        {
            Document doc = builder.build(msg.getXMLStreamReader());
            System.out.println(doc.toXML());
        }
        catch (XMLStreamException e)
        {
            e.printStackTrace();
        }
    }
}

Interop and Services

Wednesday, May 25th, 2005

Ted Neward: Interoperability, as an idea, only requires that programs be written with an eye towards doing things that don’t exclude any one platform, tool or technology from playing on the playground with the other kids….Services, on the other hand, is a design philosophy that seeks to correct for the major failures in distributed object and distributed component design.

That post reminded me of a blog I ran across talking about the default way Indigo represents C# primitives on the wire. Hint: its not “xsd:int”. They’ve created an xsd:int restriction with some bounds, some versioning information and more. Handy dandy for the service writers, but it makes things a little bit harder for consumers. (sidenote: I am a little bit afraid of the ClrType and ClrAssembly attributes…)

We’ve had all the “1.0” tools now for XSD where we mapped xml directly to object. However, this makes it looks like its time to get serious. Tools such as XMLBeans which support 100% of XML schema will be required to interact with services (not sure how JAXB 2.0 does on the interop front). The potential benefits getting this all to work right is too great to ignore. Ted said it well:

It’s an attempt to create “things” that are more reliable to outages, more secure, and more easily versioned and evolvable, things that objects/components never really addressed or solved.

Onwards to web services 2.0!

Update: fixed typo.

Yahoo, Google and why I hate Slashdot

Thursday, May 19th, 2005

As I’ve said before, Yahoo has a good thing going. People like to talk about Google and while Google is lovely (especially their maps), their one service that makes them real money is very very commoditizable (pssst – its ad revenue in case you didn’t know).

This is very related to what I observe on Slashdot and why I can barely stand to read it anymore. For instance, the post on Ballmer saying that Google might disappear in 5 years. Basically, he said what I just said above. Yet there is level of thinking there that falls way below “critical.” These guys don’t dominate the software world for no reason at all. Another prime example is the perception of the Slashdot “community” on Java.

Things come and things will go. Those who keep thinking critically and keep their egos out of the way will stay.

Perception is a powerful thing though…

Wine Ahoy!

Monday, May 16th, 2005

Finally, I can order wine from outside Michigan. Wonder how long until California vineyards take this to heart…

OReilly Where Conference

Saturday, May 14th, 2005

I must say the Where 2.0 conference looks fascinating. I wish I could find a good excuse to spend the moolah and go. The posibilities for these services are endless.

I put together one prototype which would track you and the freight you moved inside a warehouse so you would always know where your freight is. It would direct you and where to put your freight by optimizing the warehouse movements so you travelled the shortest distance on your forklift. Now WhereNet is doing something similar to it. I talked to the guys at Ekahau and there are a lot of other people creating products for this space (they wouldn’t tell me who though). There are absolutely huge gains to be had (no secret), its just that logistics companies aren’t the smartest in the world…

Anyway, absolutely fascinating stuff.

Rolling out an Open API

Saturday, May 14th, 2005

Over at Oreilly Radar there is a piece up called How To Roll Out an Open API. I’ve been thinking about this kind of stuff quite a lot lately as I develop different web services and develop tools for web services.

I would like to add some comments regarding interopability and accessibility. Interopability and accessiblity go hand in hand. By interop I mean the little bugs that go along with web services because no one actually agress on what the specs mean. I view accessibility how as far you’re willing to reach out given interop issues. Here you have to consider how developers will write software against your web service. A couple things about this:

REST, SOAP, and accessibility

POX (plain ol’ XML) parsing is arguably the farthest reaching web service. Advocates of this approach often quote Amazon’s REST service as a prime example of how wonderful it is (POX != REST though…). Supposedly more people use the REST version than the SOAP version. The question to me is what type of queries are people doing with the REST API vs. the SOAP API. I’m going to guess that the more complex queries come from the SOAP API because WSDL makes it easier to consume.

Forggeting this though and coming back to accessibility: REST appeals to a particular type of developer and SOAP/WSDL another. For instance, I think a SOAP/WSDL service is much easier to consume in C# than a REST service. Other developers don’t feel this way. So no matter what your feelings are on REST vs. SOAP – it all depends on how far you want your reach to be. Do both SOAP and REST at the cost of more work and you will gain a farther reach.

Toolkits and accessibility

If you’re going to do wide distribution, test against a variety of toolkits. Make Java, C#, PHP, Python, and Perl integration tests. One of the things that I do is capture messages from various clients and throw them at my webservices in the unit tests. This is a good way to ensure that bugs don’t come back and bite you over again too…

WS-* and accessibility

On top of SOAP you can gain features, i.e. WS-Security, at the cost of reach and ease of use. Jeff Schneider is pretty optimistic about this part of the SOAP stack. My opinion is that portions of it are ready for the enterprise. But that if you’re creating a so called “Open API” for anyone and everyone, you should probably stay away. The tools just aren’t there yet (I’m working on some though, so if you have any suggestions…).

Versioning

In closing, one topic which isn’t related to interop/accessibility: Versioning. One of these days I’m going to sit down and do case studies on Amazon and EBay’s versioning practices. They both update their schemas frequently and support older versions for a period of time. Of course, this is very hard to do. I’m starting to reach the opinion that the only good way to do this is to deploy multiple versions of your application at the same time. I.e. version 2.0 is still running when 2.1 is out. They just use the same underlying database. More on this another time though.

Just don’t switch versions too often and follow good XML versioning practices.

To be continued

Developing effective web services is hard. Partly because of the inherent complexity and its still so new. 5 years may seem like a 1000 years in the tech world, but we’re still learning. Maybe the only hard and fast rule is they’re always going to take you more time than you think…

Yahoo! Music

Wednesday, May 11th, 2005

With the release of Yahoo’s new music service it furthers my suspicion that Yahoo is not a search company. Yahoo is a media company and good one at that.

So, I downloaded the new Yahoo Music Engine. It looks pretty good – especially at $4.99/month. I was very happy to notice an iTunes like music browsing interface (minus the Genre pane). I think this is the only way to go for looking at your music collection.

Another one of the cool things in Yahoo’s new music offering is the ability to share music with friends on YIM for free. As someone who often wants to share music, this is ultra cool. I didn’t try it out though – because none of my friends whom I want to share music with are on YIM. And thats the catch. Damn those proprietary IM networks!

BUT the software noticably bogged down my computer. It took 80 MB of memory on a fresh startup! So it was removed and I am continuuing with Rhapsody for a little while longer.

In closing, I would like to reflect – at $5 a month, I just don’t see how $1 songs can appeal to anyone anymore. What is Apple going to do to counter this? And also, I’m selling my 20GB 4G iPod so I can use the PlayForSure stuff with Rhapsody. If you want to buy it contact me.

Update: Check out this post from the author YME.

Secretly I want MS to take control

Friday, May 6th, 2005

Tim Ewald spouts about whether or not to support SOAP 1.1 and 1.2 with WS-* in Indigo. As long as people don’t use SOAP encoding, I really don’t know that I really care.

Secretly I just want MS to set the one way to do things with web services. If MS on suports WS-1, 2 and 3 well then I don’t really need to worry about 4 and 5 so much. And for those overlapping specs – well, we’d know which to use because it was dictated from on high!

I am joking of course, but I do wish Darwin would work just a little bit faster in the web services arena…

In this picture…

Wednesday, May 4th, 2005

I am the sunshine.