RIP Oddpost

April 21, 2006 by

Let’s take a moment of silence in honor of our old friend,    The power was shut down to the servers today.   Most of the code lives on in the new Yahoo Mail Beta.  We will, none the less, miss our old friend. 

To me, the acquisition of Oddpost to me represents the opening shots of Web 2.0.   It’s kinda like the Gulf of Tonkin was to Vietnam.    Back then, Ajax wasn’t even a word.   A few months later, Google Maps was launched, and I think that event really caused the explosion of interest in rich web clients that we are all still feeling today.


Yahoo Podcasts doesnt always get latest episodes

April 21, 2006 by

I use Yahoo Podcasts to manage a lot of my podcast subscriptions.   When you find a podcast you like in their search engine, you click the “Subscribe” button and the subscription is added to your My Subscriptions page.    At the bottom of your My Subscriptions page is a link to an RSS feed that you can subscribe to in iTunes so that it gets your latest episodes.   At least in theory you can.   Sometimes it seems like Yahoo is not updating the podcast subscriptions with the latest episodes.  

Check out  Yahoo’s page for the Audible Ajax series.    It lists Episode 15 as the latest, but if you check their site, Episode 17 is the latest.   Looks like a bug.

FireBug Debugger will replace Venkman

April 18, 2006 by

Looks like Joe Hewitt is adding a good JavaScript debugging interface to the his FireBug extension  for Firefox.   If it works as good as it should, there will be no need for Venkman anymore.   Venkman has been a great debugging tool for Mozilla for a long time, but it is getting pretty out dated and there is nobody actively working on it anymore.  It would be really nice to give that tool a well deserved rest.

Venkman Debugger for Flock

April 17, 2006 by

Wow, just found out that there is a version of Venkman  available for Flock.

Debug Flock with Venkman – Flock Community

“Do you want to interact with this Flash movie?”

March 20, 2006 by

IMHO, besides being the platform for the most annoying web advertising, the Eloas patent dispute with Microsoft is turning into a pretty good reason not to use Flash in your website.     Microsoft’s changes to ActiveX to comply with the patent means that a Flash based site will require a click in order for it to start.   That gives a major AJAX/DHTML based apps in my opinion.

Microsoft IE ActiveX Update – Preview |

The ActiveX update makes a very simple change. It prevents you from automatically interacting with an embedded object – like a flash movie. You have to activate it first.

Free “Startup School” at Stanford.

March 20, 2006 by

2006 Startup School

Are you a hacker who has thought about one day starting a startup? Then you’re invited to a free, one-day startup school this April 29 at Stanford.

Flickr’s API gets XML-RPC Slightly Wrong

February 15, 2006 by

I was working on a JavaScript XML-RPC client recently and I decided to use the Flickr API to test it because it has XML-RPC support. After my first test, though, I quickly learned that Flickr, like most other XML-RPC services, doesn’t totally grok what makes XML-RPC so great. I will try to explain this now.

XML-RPC Basics

One of the main benefits of using XML-RPC is that the actual XML manipulation part is kept completely hidden from the client and server application code. Both the client and server application code only see native data as input and output. This makes life easier because using native data instead of XML helps keep your application code cleaner, easier to read, and more portable (especially across web browsers).

XML-RPC accomplishes this task by creating a small set of lowest common denominator data types that virtually every language can represent. This means that almost every language and runtime environement can convert between XML-RPC and it’s own native data types.

The following data types make up the exclusive set:

  • int
  • boolean
  • string
  • double
  • base64
  • dateTime iso8601 (considered worthless, though, because of no timezone format.)
  • struct (container for key/value pairs)
  • array (container of ordered elements)

It turns out that most meaningful data transmission can be represented in this way.   Notice that XML-RPC’s data types are almost exactly the same as JSON.   Only the DateTime and Base64 types are not represented directly in raw JSON.

The Anatomy of an XML-RPC Request

Here’s what happens on the client durring an XML-RPC request:

  1. The client passes the paramters for the request to the XML-RPC library as native data types and specifies a response handler function to recieve the return value of the request.
  2. The XML-RPC client library takes these these native parameters and serializes them into into an XML-RPC request document. The process of converting native data types into XML is called "marshalling".
  3. The client sends the XML-RPC request document to the server over HTTP
  4. When the response comes back, the client XML-RPC library "unmarshalls" the return value from XML into a native data type representation.
  5. The native return value is passed into the response handler function

As you can see, the client application code is kept completely unaware that any XML is being used at all. In fact, to the client it almost looks like a normal native function call that never leaves the client. The asynchronous nature of the request is the only thing that makes it slightly different from a normal call. Asynchronous response handlers do, however, look very similar to function calls on the client using documetn.setTimeout().

A similar process happens on the server:

  1. The server XML-RPC library recievies the XML-RPC request document from the client
  2. The server XML-RPC library extracts the name of the method to invoke and unmarshalls the XML encoded parameters into native data types.
  3. The server XML-RPC library invokes the specified method and passes in the native data type parameters
  4. The web service method is invoked and a native data value is returned.
  5. The server XML-RPC library marshalls the return value into XML and sends the response back to the client

Again, you can see that the server application logic has no idea that it was invoked from XML or that it’s return value will be sent to the client as XML. It’s inputs and outputs are the native data types of its environment.

This diagram, taken from illustrates the marshalling and unmarshalling of native data types into XML-RPC:

What Flickr Does Right and Wrong

So, the Flickr XML-RPC API gets the first part right: All of its methods accept XML-RPC Structs as input parameters. This is exactly right and very well done.

The part that Flickr gets slightly wrong are the return values. They return an XML document encoded as an XML-RPC string value. What makes this painful is that it requires the client code to directly use an XML DOM to access the data. As I’ve already stated, keeping XML manipulation out of the application is exactly what XML-RPC is about. It’s not that Flickr’s solution wont work, it’s just that it kind of defeats the purpose. For Flickr to do it right, they would need to return their repsonse data as pure XML-RPC data types.

More Reading

My presentation in Maine on XMLRPC

XML-RPC Specification

technorati tags: ,

January 18, 2006 by

Looks like AOL is goining the “widgets/gadgets/gizmos” game.

I Am Alpha: Frequently Asked Questions

I Am Alpha is a site for developers and other curious folks to play around with the underlying technology behind a whole new crop of cool AIM products. We’re not done with it, but we want people to get excited about it, and more importantly, get excited about creating modules!

Guy Kawasaki: The Art of Evangelism

January 17, 2006 by

Good tips on how to be an evangelist.  I’m an “AJAX Evangelist” currently at Yahoo.   Looks like I have some improving to do.

Guy Kawasaki: The Art of Evangelism

January 9, 2006 by

Jobs’ Keynote webcast to be delayed 9 hours | MacMinute News

Apple has announced that Steve Jobs’ Keynote address at Macworld Expo in San Francisco tomorrow, which takes place at 9:00 a.m. PT at the Moscone Center, will not be webcast until a full nine hours later — “approximately” 6:00 p.m. PT. No reason was cited for the delay, but it is very unusual in light of Keynote broadcasts in recent memory.