Fluidinfo API: Likes & Dislikes
I spent the last two weekends working with the Fluidinfo API (here is why). Using Fluidinfo is pretty easy, I found two weekends enough to discover most of what is possible with Fluidinfo. Here’s my collection of likes and dislikes which accumulated while working with Fluidinfo. In the spirit of a true pessimist, I start with dislikes.
- Among the very first things I learned while playing with Fluidinfo: You can delete your root namespace but you can’t re-create it. If you sign up with the username skillshelv.es your root namespace will be
skillshelv.es(big surprise) meaning that all your tags will be in the format
skillshelv.es/subnamespace/tagname. Because you have the ability to manage sub-namespaces under your root namespace, Fluidinfo exposes the ability to delete namespaces. When I first tried out the Python Library, the first thing I managed to do successfully was to delete my root namespace
skillshelv.es. Trying to recreate it results in a permission error. That’s why all Skillshelv.es related tags now live in the alternate namespace
skillshelveswhich I obtained after creating a second account.
- There is no results pagination and no way of limiting the result count. The heading of the docs chapter on query results limits sounds promising, but only talks about hard limits imposed by Fluidinfo, not limits set in the query. Try querying for the titles and author names of all O’Reilly books stored in Fluidinfo. You get 2373 book titles and their respective authors, totaling half a megabyte of data. If you only want to show the first ten, you’ll still have to query all of them.
- Object IDs can’t be used in queries. It’s easy to get a list of all tag names that are attached to an object. It’s not so easy getting the values of all those tags. Fluidinfo only provides a clear method to retrieve exactly one tag value associated with a specific object at a time, e.g. the title of a certain O’Reilly book. If you want multiple tag values at the same time, you’ll have to use the /values API endpoint, like in this example which gives you title and price of all O’Reilly books whose title contains “PHP”. Fluidinfo gives you a pretty neat query language to define which objects are included in the response for a query to
/values, but querying for an object ID isn’t part of that query language. Therefore, you can’t retrieve multiple tag values for a single object at a time, unless you already know one tag value that uniquely identifies this object. For O’Reilly books the contents of
oreilly.com/idseem to be unique and Skillshelv.es uses it equivalently to a primary ID. Update: I mentioned this in the Fluidinfo IRC channel and apparently this is now a ticket and might become a feature in future.
- While this Fluidinfo blog post suggests that Fluidinfo’s
matchesoperator for text matching works like MySQL’s
LIKE, it doesn’t actually.
matchesonly matches full words. That’s not unsurprising but was a little disappointing when I tried building an auto-complete feature that pulls data directly from Fluidinfo.
- First class user support! When I reported #1 of the dislikes above via Twitter, Fluidinfo’s CEO replied within a few hours acknowledging the issue. Later I figured out that most the action is going on in Fluidinfo’s IRC channel where the folks behind Fluidinfo seem to always be hanging out waiting for people to approach them with their problems. When one of my (valid) queries wouldn’t work one day, the problem was fixed in no time and on top I got a ton of useful advice.
- Fluidinfo Explorer. This tool didn’t seem very useful to me at first but then I discovered the context menu and the login button :-) Once you have some data in Fluidinfo and you want to quickly check or change a few entries, nothing beats this tool.
- There are
 Like every good grad student I did not devote the entire weekend but also did some
real research work on these weekends.
 I realize that I could be suffering the Dunning-Kruger Effect: I could have missed those 99% of Fluidinfo’s functionality that take three years to learn. But my lack of knowledge about Fluidinfo leads me to the erroneous conclusion that I learned the usage of Fluidinfo in two weekends. Unfortunately, I would have no way of realizing this.