Archive for July, 2005

eBay SOAP using PHP 5 ext/soap and AJAX

I’ve been playing around with a nifty skunkworks project using our SOAP API, the ext/soap extension in PHP 5, and the fad du jour of AJAX.

Progress has been moving a long at a nice clip, as long as I can find time to work on it. One of my main goals is to more extensively test the compatibility between ext/soap and eBay’s SOAP interface. With the release of PHP 5.0.4, you can finally make SOAP API calls to our servers. I’d done enough to confirm this, but I’d done minimal testing to verify if this applies to all 100+ API calls. Now I’m trying to throw some real-world tests at the extension.

The bad news is that I’ve found a bug. The good news (for PHP) is that the bug is on eBay’s end. :)

The eBay SOAP API is almost 18 months old, but historically many of our developers have used our legacy XML API, which is based on a different codebase. That older codebase has extensive burn in and testing. The newer SOAP codebase is still well-tested (we have over 10 dedicated API QA engineers in addition to the many millions of API calls made by developers), but there are some dark little corners that are not as well-lit.

It turns out I stumbled down one early this morning involving our Motors site. Apparently, according to our SOAP API, the car I’m searching for has 154242 miles and, by an odd twist of fate, was also released in the year 154242. Heh.

We’re in the process of a giant migration, where all the legacy XML API developers move over to share the new SOAP API codebase. (You don’t need to move over to SOAP as part of this transition, but the data schema is changing to one that’s more well-thought out and coherant.) I suspect as we close in on the cutoff date of next June, we’ll run into a few more of these buglets. This is why we’re encouraging people to start porting sooner rather than later.

Unfortunately, when you expose so much data in so many different ways off of a dynamic database driven site, you’re never going to be able to find everything ahead of time. Fortunately, with more eyeballs, all bugs are shallow, and I know our API team will roll out the fixes in no time.

On the AJAX side, JavaScript is a surprisingly cool language. Its always gotten a bad rap, but I believe that’s more due to browser incompatibility issues than fundamental core design problems. For example, in this project I’m using a function closure within a function closure. How zany is that?

Much magic indeed.

Heading to OSCON

I am heading to OSCON on Sunday afternoon. I will be there all week.

On Tuesday, I am participating in the mother of all PHP user group meetings, and on Thursday I am speaking on Services_Ebay.

Please come on by.

Let me know if you want to hang out. When I’m not at the show, I will be off drinking draft Fred.

-ster crazy

I was walking to lunch and saw the word “molester” out of the corner of my eye in a newspaper headline. Alas, I read it as “mole-ster,” as in “napster” and “friendster,” and my brain immediately conjured up images of some new P2P secret agent application where people rat out their buddies to the feds.

I had to go back and read it twice again before I realized what was up. Scary.

MySQL Guilds

In a shameless bit of self-promotion, I was pleasantly surprised to be nominated as a member of the MySQL Guilds. I’m listed under the writer, speaker, and developer categories.

Book Review: The World Is Flat

I am 364 pages into Tom Friedman’s latest book, The World is Flat. However, even with 100 pages left, I feel compelled to give a brief review of the book.

Read it.

Tim O’Reilly has been flogging the notion of Web 2.0, Web services, and the architecture of participation for quite a few years now. Tom Friedman one ups this, rolling up Tim’s concept with quite a few more into what he calls Globalization 3.0.

Essentially, recent changes have enabled businesses to operate on a global scale that most of us don’t realize. We might think we’re seeing some of it, but we’re not truly getting the entire picture.

For example, two weeks ago I saw a bunch of links to Joe Krause’s blog post It’s a great time to be an entrepreneur. His claim is “There’s never been a better time to be an entrepreneur because it’s never been cheaper to be one.” And, using Excite vs JotSpot as an example, that it’s 30x cheaper to start a Web company in 2005 than it was 10 years ago.

I think many people read his post and immediately applied it to Silicon Valley or other US startups. And that’s despite Joe’s reference to global outsourcing sites. However, under Globalization 3.0, you need to recognize that all of these factors now apply to companies based in China and India.

Look at his points and see how they apply to countries with hundreds of millions of people. Hardware is a commodity. Open source has commoditized software. The glut of global bandwidth has turned that into a commodity. Now factor in 5-10x lower labor costs.

You end up with a giant group of people ready and able to bootstrap all sorts of technology startups.

It’s already happening. Most people just don’t know it. Tom helps you see it in detail.

If you don’t think this applies to you, check out this Times of India article with this juicy quote:

Says a programmer on who outsourced his job: “About a year ago I hired a developer in India to do my job. I pay him $12,000 out of the $67,000 I get. He’s happy to have the work. I’m happy that I have to work only 90 minutes a day just supervising the code. My employer thinks I’m telecommuting. Now I’m considering getting a second job and doing the same thing.”

If stupid (heh) slashdot posters can figure this out, don’t you think businesses will catch on soon enough (if they haven’t already) and reorganize you out of a job if you’re not prepared?

By the way, don’t get me wrong, I think this is a good thing. (Read the book to see why.)

When I finish the book, I’m going to start looking for ways to to brush up on my long-dormant Chinese skills.

Introducing eBay Community Codebase

Unlike many Web services, eBay has a large number of commercial developers who pay us money to hook up to our site. However, we’ve never gotten as many open source developers using our Web services as I want.

The obvious reason is that we charged money for access to our Production API servers, and even then we only gave you a miserly 50 calls per day. Happily, we have finally gotten rid of the $100 self-certification fee. Now you can join up at the Individual Tier and start making calls against real live eBay data without paying us a nickel.

We also upped the calls limits to 10,000 API calls per month. We think this should be enough for people to be able to write meaningful applications, but if you’re running into the limit, let me know.

Additionally, we introduced the eBay Community Codebase. Another one of the issues writing eBay Web service applications is that our APIs are quite extensive — we have over 100 APIs calls and they’ve available for 22 different countries worth of sites (plus eBay Motors). It’s possible to write some pretty complex applications. Complex enough that you’d want to work together with others on a project.

Community Codebase is a central repository of open source eBay projects with hosting, version control, mailing lists, bug trackers, and more. (Think of it as SourceForge for eBay. Actually, think of it as CollabNet for eBay, which is what it really is.)

We’ve stocked the pond with a few of our own projects, including our eBay/TiVo mashup. We’ve also been quite excited to see a bunch of other contributions, including a PHP SDK, a Perl DBD interface, and a Java category cacher.

I’m also revving up Services_Ebay development, but that’s the topic of another post.

Please come on by and check out the eBay Community Codebase.