Hi all, first of all, I'm not sure if this is the right list to post feedback on the book. I didn't want to use the "comment" function, as my experience (on other pages) is that I'll never know if anyone even read the comment. On http://books.couchdb.org/relax/reference/recipes, "Ordering Lists": You propose to use floats to sort lists, which can be rearranged or where an arbitrary amount of items can be inserted between any two items. What about solving the issue by sorting strings? Strings can be as long as they want without any floating point precision getting in the way. To insert in a list, insert in the middle of the existing 'boundaries'. For inserting items at the beginning or end, the boundaries are "a".charCodeAt(0)-1 (which is "`") and "z".CharCodeAt(0)+1 (which is "{"). If you want, you can extend that to more printable characters or even unprintable ones. So, for the first item, the middle of the boundaries "`" and "{" is "m" (verify using String.fromCharCode(("`".charCodeAt(0) + "{".charCodeAt(0))/2) { "title":"Remember the Milk", "sort_order": "m" } Now, we insert a second item afterwards between "m" and "{", which is "t": {"title":"Call Fred", "sort_order": "t" } An item between these two would have sort_order "p". If we ever have the case of inserting between two consequtive characters, like "q" and "r" (i.e. where (a+b)/2 == min(a,b)), we extend the sort_order of the new item by one character, so it's "qm". In general, when trying to find the middle between two strings, we find the first occurence where the strings differ. If you can squeeze something in between, do it. If not, try to squeeze in the middle between the next character of the first string and "{". If that's not possible, try to squeeze in the middle between "`" and the next character of the second string. If that's not possible, extend the first string by "m". E.g. you want to insert between "qmbz" and "qmca". They share the prefix "qm", the first difference is the third character, which is "b" and "c" respectively. We cant squeeze in something between b and c, so we try to squeeze something between the next character "z" and "{", which is not possible. We also cannot squeeze anything between the next character from the second string, which is "a", and "`". So our best bet is to extend the first string by "m". The result is "qmbzm". If the first string would have been "qmby", the result would have been "qmbz". If the first string would have been "qmbz" and the second "qmcb", the result would have been "qmca". What do you think? It's a little more complicated than calculating the average of two floats, but the complicatedness stems from fixing the issue of limited precision. Of course, other ways of achieving something similar is to use an array of integers (best would be int32 so that JavaScript can handle). Cheers, Kosta