OSCON: Wednesday Morning

I am going to the OSCON sessions today and the rest of the week. I missed most of the keynotes this morning. I did [Transactional Memory for Concurrent Programming](http://conferences.oreillynet.com/cs/os2007/view/e_sess/14017) by Simon Peyton-Jones and Haskell guy at Microsoft. He described the idea of transaction memory as the alternative to locking for concurrent programming. Transactional memory basically wraps critical sections in atomic transactions. It was somewhat interesting since Parrot is talking about using STM. GHC is a Haskell implementation with STM. He talked about how transactional memory requires blocking with retry and waiting until the memory read changes. He also talked about how useful systems add choice which instead of blocking does an alternative.

I also went to [Performance Whack-a-Mole](http://conferences.oreillynet.com/cs/os2007/view/e_sess/12486) by Josh Berkus. He talked about how to solve database performance problems. He gave a couple of rules to tracking the problems which he called moles. Most problems are not really database problems and are at other levels of the stack. Most slowdown is caused by a few big problems. You can only see the worst problem which hides the others. Different classes of apps have different performance problems. Web apps tend to read heavy and have issues with connections and caching. OLTP have locks, transactions, IO write problems. Data warehousing has IO issues with bad queries. He also talked about doing a baseline inspection for common problems, benchmarks, microbenchmarks, and profiling.

I also went to [Care and Feeding of Large Web Applications](http://conferences.oreillynet.com/cs/os2007/view/e_sess/13137) by Perre Harkins. He talked about the issues dealing with deploying and releasing a large web application in Perl. I was most interested in the system he described of installing CPAN modiules. They have their own tool for deploying specific versions of modules. He also mentioned automating database updates, simplying the configuration, testing, and doing version control and branches.