There is nothing more permanent than a temporary hack
I still don't like JSON. It works and working code always win but its arrival as the next Best Thing Evar on the Intarweb only confirms that it's a hack. I don't have any problem with lightweight and simple data structures but I just can't get excited about them as an exchange mechanism between disparate services.
I have spent more time than is healthy writing wrapper code for too many web services to buy into, really, any kind of XML to hash of lists of hash of hashes magic. I'm a Perl hacker so that kind of nonsense come naturally but it's just a waste of time when there are tools like XPath.
Coincidentally, I tend to think of XPath the same way its benefactors think of Perl : It makes easy things easy and hard things possible. XPath can be very complex if you are dealing with a complicated document (or fantastically stupid formats like Apple's plist) but 90% of the time it's really nothing more than specifying a simple set of parent-child relationships.
Insert pithy comments about foreach
-ing over
all those nested arrays (or were they hashes?) in JSON
here.
The W3C recently announced its Scrumjax (web APIs
)
Working Group which, despite some seriously pendantic
blathering on the mailing list, is a good thing all
around. But if I were in their shoes, I would tack on a
brief tangent before getting back to the hard work : Stop
all the hand-wringing about the bloody Back
button long enough to spec out the requirements to do safe
cross-domain XMLHttpRequest calls.
Once that's been blessed we can beg and plead with the
browser hackers to implement it and then we can get back to
using all the goodness that comes with the support for XPath
and XSLT and XForms and E4X that is finally starting to percolate
out of the dev
branches. There is genuine
desire to play nicely across domains and people will use
JSON for the simple reason that : It works.

You may recall that I've spent a lot of time clawing at
the cross-domain security wall. You may also recall that I
like to mix and match metadata elements from various
sources. I really like to do this inline
because I am
lazy and easily irritated by having to drag browser
windows around. And did I tell you that I don't like running proxy
services because they just as much a time-sink as they are a
pain in the ass and are generally bad for privacy all around?
We get asked, periodically, to return results for the Flickr API in JSON. No one on the team thinks it's a bad idea but the reasons why it hasn't happened yet are, when they're not any of your business in the first place, pretty boring.
But what about syndication feeds? Way back when I wrote a
JavaScript/bookmarklet hack that would look for
<meta>
tags similar to those used by the
New York Times, taggify
their contents and display
photos from the corresponding Flickr tag feeds. What if you
could do that with JSON instead of XML?
Well, here's is a handy bookmarklet for doing just that : What does Flickr think about this page?
The bookmarklet is hard-coded to look for New York Times style meta tags but the underlying code is written such that you can plug in your own keys. For example :
# The tags used in this page : <meta name="des" content="json; javascript" /> <meta name="per" content="aaron" /> <meta name="org" content="flickr" /> <meta name="geo" content="sanfrancisco" /> var flickr = new FlickrTags (); flickr.add_topic("geo"); flickr.add_topic("des"); flickr.add_topic("per"); flickr.add_topic("org"); # Or, you could roll your own : <meta name="delicious" content="montreal; resto; review"> var flickr = new FlickrTags (); flickr.add_topic("delicious");
Code-wise, it is made up of four separate libraries/scripts to spawn a floating window with icons that you can drag around the browser window. Clicking on an icon will display a larger version, using Lightbox-fu, that links back to the photo's Flickr page. Each of the dependencies has been tweaked slightly either for the sake of functionality or just to account for the allowable randomness in the syntax of the language. They are :
- My own FlickrTags library — this is still lacking in documentation and it's own home on aaronland but from an interface point of view is exactly the same as the crippled XML-based version.
- A further modified version of the
Flickr TOS friendly
modifications to lightbox.js — only to delay initialization and skip unnecessary iteration over image elements. - Aaron Boodman's DOM Drag library whose syntax is as weird as the code is easy to use
- Jason Levitt's JSONrequest Script library.
A pre-bookmarklet-ized version is also available for the curious. It is held together with duct tape at the moment and will not work in every browser. Yet. I have tested it on Firefox 1.5 and it all works swimmingly. I know for a fact that it won't work in Safari. Patches are welcome.
This blog post is full of links.
#flickrtagsThings I like about San Francisco
Going to Ocean Beach and watching the 747s, taking off from SFO, rise and bank over the water.
This blog post is full of links.
#sfo