Passing Pointers

A number of developers have asked recently why passes around everything as URLs, and to me the better question is why more serivces don’t pass everything around as URLs.

For any object of substantial size, passing around a reference to the object is far more reasonable and resource efficient than passing around the object itself. Programming aside, consider how I might send you money: I could go to the bank, withdraw cash, and send it to you via USPS, so that you can then take the money and deposit it in your bank. Or, I could do a wire transfer, where I essentially send you a reference to the money, which makes things a whole lot faster and easier.

The equivalent today is when I’m using your web or mobile application, and I want to give you some of my data to work with, why do you make me, the user, handle the raw data? Rather than just accepting a URL as a pointer, I have to go to my content “bank” (Dropbox, Facebook, Gmail, etc.), pull out what I want to use, and then give it to you so you can put it in your content bank. Especially with the near ubiquitousness of AWS, where my data stores and yours are practically collocated, it’s orders of magnitude more efficient to pass around pointers. Use REST to fetch and save data via the internet backbone rather than than shove big blobs of data through my home or cell connection, the slowest parts of the network.

So even if you don’t use, at least give me the option of uploading via URL. As more and more data moves online, making a user download it locally just to re-upload it to your service doesn’t make sense.

Discussion on Hacker News

Read More →