My estimed friend and former colleague and manager Geir released recently through his company 10gen a schema-free document-oriented datastore called mongodb.
I’m fairly impressed with the velocity at which they were able to release it as well as the apparent quality of the documentation for a product just out of the door.
This is on my todo list to check among other things as I can see a couple of use cases that could fit well this.
If you happen to use java and mysql do yourself a favor and don’t take the 5.1.7 jdbc driver.
I recently opened bug 42970 following a quick profiling to find the reason why 100 test calls of a 3.5KB-long sql query increased from 4.5s to 50s by upgrading the driver from 5.1.6 to 5.1.7.
There is a subtle piece of code in 5.1.7 which tries to find the string ‘ ON DUPLICATE KEY UPDATE ‘ in every statement in a very peculiar way
In my case, as can be seen from the call tree below, 4 PreparedStatement, means 4 calls to containsOnDuplicateKeyInString() and generates more than 12M calls to String.charAt() , 9M calls to Characters.toUpperCase, 4.5M calls to Characters.toLowercase().
99,9% - 386 s - 4 inv. com.mysql.jdbc.JDBC4PreparedStatement.
99,9% - 386 s - 4 inv. com.mysql.jdbc.PreparedStatement. (line: 47)
99,9% - 386 s - 4 inv. com.mysql.jdbc.PreparedStatement$ParseInfo. (line:635)
99,9% - 386 s - 4 inv. com.mysql.jdbc.PreparedStatement.containsOnDuplicateKeyInString (line: 202)
99,9% - 386 s - 4 inv. com.mysql.jdbc.StringUtils.indexOfIgnoreCaseRespectMarker(line: 5193)
99,7% - 386 s - 3 002 inv. com.mysql.jdbc.StringUtils.indexOfIgnoreCase (line:1023)
18,0% - 69 578 ms - 9 530 899 inv. java.lang.String.charAt (line: 946)
10,3% - 40 015 ms - 5 506 413 inv. java.lang.Character.toUpperCase (line:946)
7,4% - 28 716 ms - 4 024 486 inv. java.lang.Character.toLowerCase (line:946)
6,4% - 24 725 ms - 3 420 156 inv. java.lang.Character.toUpperCase (line:963)
6,2% - 23 975 ms - 3 420 156 inv. java.lang.String.charAt (line: 963)
0,8% - 3 228 ms - 450 342 inv. java.lang.Character.toLowerCase (line: 974)
0,8% - 2 932 ms - 450 342 inv. java.lang.String.charAt (line: 974)
5.1.6 works fine (at least for what we do)…
In the wonderful word of legal issues, Yahoo! Music API license terms fortunately cover this eventuality.
YOU SHALL NOT:
….
(iii) use the Yahoo! Music APIs to operate nuclear facilities, life support, or other mission critical application where human life or property may be at stake. You understand that the Yahoo! Music APIs are not designed for such purposes and that their failure in such cases could lead to death, personal injury, or severe property or environmental damage for which Yahoo! is not responsible;
I was sent this masterpiece Dilbert cartoon (from Nov. 9) which is a nice companion unit to my previous post.

I’m impressed by Scott Adams ability to make those stories day after day yet always representing perfectly situation that people have been confronted too.
I’m leaving tomorrow to the Philippines for a ‘Grand Slam’. I’m joining some friends for an underwater photography shoot-out from April 29th to May 24th. (yay !)
I’m bringing a decent amount of new underwater photography gear including Ikelite housing for my D80, a 8″ dome for wide angle (12-24 and 10.5mm), macro 105mm with woody diopter and all necessary ports. That will be the first time underwater with it. I’ll try not to flood it…
On the diving gear side, I’m bringing an Aqualung Kronos which has an exhaust deflector on the side and can be handy for photography (assertion to be verified really). I got tired of the Scubapro MK16/R395 which never was that great to me as I felt it was too hard to breath despite tuning and revision at the labs. (not noticeable at the beginning but after 4-5 dives a day for a week or so, you feel it.)
Anyway, off to Manila tomorrow.