At the Web 2.0 Expo I sat through a technical presentation by the Facebook guys, they were talking about their new API, FQL.
It is an interesting take on building a web service. Rather than write a series of primitive API methods or a combination primitives and more advanced task related items. The issue that they were trying to resolve was the idea of returning too much data. This could be resolved by adding additional parameters to the API methods or making specialized methods to limit the return of data.
They took a different course, they looked at solving the issue from a very intriguing perspective. They decided to make an API that resembled SQL. The rationale was that almost all developers know SQL, thus having the syntax of FQL match up with SQL was perfect.
Now, the first thing that popped into my mind was 'OMG, they opened themselves up to injection attacks,' that thought lasted about a split second, basically because with the amount of money these guys have been given I knew they weren't morons. The 'not morons' thought was reassured about 30 seconds later.
However, my next thought revolved around the fact that developers would have to learn the table structure or the structure of the data they are interacting in detail. This thought also lasted a split second. Because, developers would have to learn the data structure of the API returns in detail anyway.
One interesting (and highly logical) bit was that they do not allow any sort of JOINs in FQL. They stated that they are not simply just passing the SQL to the database, they have to manipulate it and what not. However, to ensure speed they can't allow JOINs. It would be just about the same as an injection attack. They would open themselves up to allow people to join against tables in a way that would ultimately thrash the db within an inch of it's digital life. However, then you get into federated data and data segmentation, ie the data is spread across physically separate machines therefore JOINs are not actually possible.
Anyway, I signed up for Facebook so that I will be able to play around with the APIs, including FQL. Jaduka will likely end up doing some sort of mash-up.
In the meantime though, I have managed to catch-up with a few friends from high school. The whole application seems much cleaner than MySpace when it comes to social networking that doesn't directly relate to business. One of the features that I really liked was the fact that you can have Facebook pull RSS feeds from your blogs. This seems like genius, it aggregates the content. Doesn't force you to maintain yet another blog.
I think I would have to give Facebook a 9 out of 10.
(I reserve the right to change that score at a later date.)
I will keep playing around with it and I look forward to messing with their APIs.
Time for bed.
Laterz