Web Services

Tim Bray on the 80/20 Rule

I’m listening to Tim Bray talk about technology winners and losers over the past decade or two. He’s framing it within the context of Web services (REST vs SOAP), but one of his key takeaways is that of all the major predictive factors, the 80/20 rule has the best correlation between existence and success.

Missing from his list is PHP/FI, which should clearly be filed under winners. People always made fun of the simplicity of PHP (no OO, no namespaces, no Unicode support, etc.) However, you can’t argue with the growth curve.

Tim also references Gall’s Law: “A complex system that works is invariably found to have evolved from a simple system that worked.” So, even though PHP 5 now has fullblown OO support, and we’re working on Unicode, (but still avoiding namespaces), we still keep ourselves rooted in Rasmus’s early principles of simplicity.

If we had tried to jump directly to PHP 5 back in the mid 90s, we never would have made it. We would have had our asses kicked by Perl, Java, or both.

Wanted: One Kick Ass eBay Evangelist

I am on the look out for a top notch evangelist for my team at eBay. If that’s you, or someone you know, contact me.

The eBay Developers Program enables third party programmers to write applications that use the eBay platform. We have an amazing set of web services (over 100 API calls) and want everyone to use them. Not only do we expose almost all of eBay, we do it big time, serving up billions of API calls every month.

Your job would be getting the word out to new communities, getting them excited about the possibilities, and helping them build all sorts of cool applications. In my opinion our platform is particularly interesting because eBay is so dynamic — people are always listing, bidding, and buying. Our web service is more than just search results, and it’s read/write, not read-only.

The official job description has all the details. (That’s job “5731” if the link breaks.) Also, apologies in advance to my fellow Mac and Linux users, our brain-dead job site only works under Windows IE. (It also works under Firefox on Windows, but that doesn’t extend to Firefox Mac or Linux. However, you may be able to spoof your user-agent string.) Please don’t read anything into this and apply it to my attitude towards developers.

Speaking at SDForum Web Services Conference

As part of my continuing county tour, I’m heading to Santa Clara tomorrow for SD Forum’s “Web Services: The Next Generation” conference.

They’re managed to recruit a great bunch of speakers, including Tim Bray and Adam Bosworth. The PM from Google Maps, Bret Taylor, is also there. I’m interested to see if Google really can get the mapping company to open up their data for others to build upon.

I’ll be speaking on a panel with, among others, Jeremy Zawodny. The topic is “Why Standards Matter,” which isn’t the quite the correct one, in my opinion. I think everyone knows why they should care about standards. The real issue in the Web services world is “Which Standards Matter”.

Are you okay building your service “just” using HTTP and XML, as in the REST model? Or do you also need SOAP and WSDL? What about the whole WS-* set of extensions? Are there definitive answers, or does it vary? These are the real questions.

eBay on TV & DVRs

One of the cool things about Web services is seeing people use them in unexpected and non-traditional ways to do cool stuff. For example, one of our developers, BIAP, just launched a trial service in Austin that lets you use eBay on your TV.

They’ve hooked up our API with a Time Warner DVD settop box. Unlike other “interactive TV shopping” experiences, this product is more than just finding products to buy. You can actually keep up-to-date on all your eBay auctions. For example, you can arrange to automatically see a pop-up notification on your TV set when you’re outbid on a listing, and rebid just by hitting the “B” key on the remote. (Or not, if you find that kind of thing annoying.)

If you’re like me, and don’t live in Austin, but still want to get a look, check out their demo.

Earlier this year, Dan wrote a different type of DVR program — one that lets you search eBay using your TiVo and buy fixed price items in our media-related categories. His was just a proof-of-concept, but we’ve open sourced the code, so feel free to check it out and hack on it.

SOA and Mick Jagger

I’m in New York for the Infoworld SOA Executive Conference. I’m on a panel explaining to CxOs about “Extending Your Business with SOA.” If you’re in town, come on by and hear Jeffrey and me do the eBay / Yahoo banter, or let me know if you want to get together on Monday.

Right now, I’m crashing with my friends Chris and Jack. Oddly, Mick Jagger showed up with his wife and kid in the small park right outside their building. We did a little celebrity watching from the window. Sadly, there’s nothing else interesting to report, except that Mick kept wrapping his jacket around his head and shoulders.

When in doubt, POST.

The original eBay Web services API is neither REST nor SOAP. It’s a bastardized version of REST, where you always POST to the same URI. (The verb is located inside the POST data, which is an XML document.)

Actually, this format has turned out to be quite practical. Its building blocks — HTTP, HTTP Headers, HTTP POST, SSL, and XML — are sufficiently well-implemented standards that we haven’t found any language that can’t make API calls. From our perspective, that’s the most important characteristic. That’s not saying that if we had known in 2001 what we know now, things wouldn’t have turned out different.

However, at least we got the GET vs POST decision right.

Y! Traffic Data RSS Feed

Yahoo!’s jumped on the Dashboard bandwagon with their Y! Local Traffic widget. As someone who has been hacking around with Dashboard, I know that for this to work, Yahoo has to expose the data in an easily digestiable format. I also know it’s no problem to decompile the widget, since it’s just HTML/JS/CSS.

So I took a peek and was quite surprised by what I found. RSS.

I think this is brilliant. RSS is XML, so it’s easy to parse. It’s also easily consumable by RSS readers, so other people can piggy-back on the feed. Of course, it does mean you need to be willing to open this up to the world because it won’t take before this is figured this out and people start publicizing the interface.

Sure enough, there’s already a blog post describing how the widget works and it even provides a little form for making your own URL.

We’re finally beginning to see the adoption of Web services into client applications. One of the advantages of REST is that it’s super easy to consume from programs such as Dashboard and Firefox.

I can’t wait to see where this goes.

Building an eBay Firefox Toolbar

My latest obsession at work is an eBay Firefox toolbar. I’d like to start an open source project that incorporates eBay Web services with Firefox, so it’s easy to track items you’re bidding on, watching, and selling.

I’ve done a Vulcan mind meld with the Firefox Toolbar Tutorial, and I’m becoming one with XUL Planet.

Does anyone else know of additional Firefox extension resources? In particular, I see there’s a SOAP interface, but I don’t know if this is for real use or not. :)

Last, I have this odd problem of needing to encrypt a certain portion of my code to protect eBay Web Services API security keys. I don’t mind people seeing the toolbar code, just the specific keys I may embed. If only there was a compiler. XPCOM seems like one solution, but it’s a road I don’t really want to travel down.