Sunday, January 06, 2008

A chat with Ben and Pete - Episode 11

Scoble’s fuss about Facebook and more.

This week we chat about Facebook locking out Robert Scoble for trying to extract his contacts, using OpenWRT in client mode, is OS X killing Linux as UNIX desktop environments, signs that BluRay might win the format war, Google’s distributed computing, and Pete reviews two books.

Interesting links talked about in the show:
  • Techmeme thread on the latest Facebook issue: http://tinyurl.com/39tx4g

  • Plaxo’s notification spamming: http://tinyurl.com/2fozv9

  • OpenWRT client mode howto: http://tinyurl.com/7z7qx
  • Is Apple killing Linux on the desktop: http://tinyurl.com/2wn7gj

  • Top 5 Engadget posts for 2007 are all about Apple: http://tinyurl.com/2e7h9c

  • Warner Bros. goes BluRay exclusive: http://tinyurl.com/22rdh6

  • David Lynch and watching movies on the phone: http://tinyurl.com/2yzqpr

  • Jeff Dean’s talk about Google’s infrastructure: http://tinyurl.com/2ehe3b

  • Similar Google developer day talk: http://tinyurl.com/2onu6e

  • RESTful web services: http://tinyurl.com/24pssf

  • The Django Book: http://tinyurl.com/224gkg
Subscribe in:

Thanks Ben for production.

3 comments:

Alan Yates said...

I really don't get the big deal over REST. As you say, it is so trivial it is hard to imagine someone could write a book on it. (Its amazing how easy it is to get IT books published, I swear one day I'll have to write one myself and retire. :)

REST though, using HTTP verbs properly is cool, especially preserving GETs idempotence, but do we really need to use PUT and DELETE? I guess its nice if you are just passing CRUD methods across HTTP, and there is always POST for actual actions, but it does seem an artificially enforced architecture that is often more difficult to comply with than truly useful or elegant. Must have got good marks thought...

Personally I'm a fan of just posting back and forward tiny markups like JSON or even just an application/x-url-encoded associative array for more trivial RPC. XML is fine too, if there is some expectation of capability at each end, especially core for the damn DOM implementation metadata.

For both ends to participate in any communication you need an agreed protocol anyway, and REST gives you nothing to help there. Its similar with SOAP or any transport level encoding, even my favourites. Its all just an overly complicated way to marshal, move, and unmarshal your messages between nodes, once it gets there its all up to you again. Even the wonders (horrors) of WSDL.EXE for .NET don't do much other than build a stub object for you.

The biggest thing all these wonderful "RPC" implementations don't give you is what you really need the most - the semantics of the methods. WDSL is a step in the right direction, and much less ugly than previous attempts like IDL for CORBA (et al), but almost no one actually comments their methods properly, so you are left with just their syntax and some guess at their semantics based on their hopefully suggestive naming.

Don't get me started on SOAP and Microsoft's implementation in particular. Way to completely overkill the problem guys! Such excellent default behaviours you picked too. 99% of the time its used point-to-point with nothing in between, and even Win32 to Win32, in which case you should just use .NET Remoting.

Java RMI is too damn ugly, at least .NET improved upon that disaster. CORBA tried to kill too hard of a problem, and worse, did it by committee. Location transparency was a noble goal, unfortunately it often matters where something is, and their wire protocol is near impossible to get through modern network constructs, like firewalls or NAT. In that respect, all the HTTP-based RPCs have a big advantage.

Don't get me wrong, I'm not knocking any of these "technologies" in particular, but they all have so much hype people use them in completely inappropriate places, or worse, expect them to be magic bullets. Communication between agents to achieve something useful is always going to be hard. It is almost always going to need a "session" concept (ie, stateful), and you are *always* going to make mistakes before you get it right.

Anyway, enough ranting from me. :)

geo said...

Ha, coincidence Pete. I just flashed my Buffalo WHR-G125 with DD-WRT so it would do client or "repeater" mode.

http://www.dd-wrt.com/wiki/index.php/Universal_Wireless_Repeater

The AutoAP script at the end of that page does an auto scan for open networks, and becomes a client of the one with the strongest signal.

But then I know you've had problems with DD-WRT.

It's great fun to play with embedded linux boxes like the WRT-54Gx.

marxy said...

Gentlemen,

Thanks for your comments.

I've had bad experiences interoperating with SOAP and nothing but good experiences with XMLRPC. REST seems like something it's good to have there but as you say, Alan, it doesn't help with the representation of the data.

JSON looks to be a winner there and the comparison between the bulk of json compared to the equivalent XML couldn't be more stark, particularly when we're pretty familiar with the format from Javascript or python.