select product(value) from mytable

February 12, 2010

A nice tip from Harold Fuchs to calculate the product in Mysql select exp(sum(log(coalesce(value,1))) from mytable The coalesce() function is there to guard against trying to calculate the logarithm of a null value and may be optional depending on your circumstances. Here’s an example +——+——-+ | id | value | +——+——-+ | 1 | 3… Read more

Voldemort in the Wild

February 02, 2010

At kaChing, we’ve tried to embraced as much of the lean startup methodology as possible. In keeping with the spirit, we’ve worked to scale our infrastructure smartly, using data to drive our decisions and discarding speculation. As part of our infrastructure, we’ve embraced Project Voldemort as a highly performant and reliable data store. One experiment… Read more

Amusing log message

January 26, 2010

Some of us found this (a little too) amusing: [pool-http-jetty-exec-thread-3] 20100122140052,WARN,$1, missing price for stock AAGH on portfolio [elided] AAGH @ 01/22/2010 at at at at

Complement TDD with MDA

January 10, 2010

Test Driven Development (aka TDD) is on the rise. Good developers understand that code with no proper testing is dead code. You can’t trust it to do what you want and its hard to change. I’m a strong believer in Dijkstra’s observation that “Program testing can be a very effective way to show the presence… Read more

Actually Implementing Group Management Using ZooKeeper

January 09, 2010

ZooKeeper offers, in the words of its documentation, “off-the-shelf… group management”. The “off-the-shelf” part is inaccurate; it really offers the proper primitives to *implement* group management, but it’s up to you to fill in a few missing pieces. I’ll be describing one type of group management system I built at KaChing using ZooKeeper: A group… Read more

Flexible Log Monitoring with Scribe, Esper, and Nagios

January 05, 2010

If you have yourself a pretty decent sized cluster, there’s probably a good chance that you’ve had the following experience: One day, while routinely browsing some server logs, you stumble upon some concerning entries that you wish you had been made aware of sooner. You could probably go back and write some custom scripts that… Read more