<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Damien Katz</title>
<link>http://damienkatz.net/</link>
<description>Everybody keeps on talking about it
Nobody&apos;s getting it done</description>

<image>
<url>http://damienkatz.net/pics/homercouch.jpg</url>
<title>Damien Katz</title>
<link>http://damienkatz.net/</link>
</image>

<lastBuildDate>Sun, 27 Apr 2008 13:11:22 -0500</lastBuildDate>
<generator>http://www.movabletype.org/?v=4.1</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 


<item>
<title>CouchDB Roundup</title>
<description><![CDATA[<p>Jan summarizes recent happenings: <a href="http://jan.prima.de/~jan/plok/archives/129-Another-week-or-two-in-CouchDB.html">Another week (or two) in CouchDB</a></p>]]></description>
<link>http://damienkatz.net/2008/04/couchdb_news.html</link>
<guid>http://damienkatz.net/2008/04/couchdb_news.html</guid>
<category></category>
<pubDate>Sun, 27 Apr 2008 13:11:22 -0500</pubDate>
</item>

<item>
<title>Gwendolyn</title>
<description><![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://damienkatz.net/pics/Photo%20154.jpg"><img alt="Photo 154.jpg" src="http://damienkatz.net/pics/Photo 154-thumb-400x300.jpg" width="400" height="300" class="mt-image-none" style="" /></a></span></p>

<p>Me and my oldest. I'm under blankie.</p>]]></description>
<link>http://damienkatz.net/2008/04/gwendolyn.html</link>
<guid>http://damienkatz.net/2008/04/gwendolyn.html</guid>
<category></category>
<pubDate>Fri, 25 Apr 2008 08:34:21 -0500</pubDate>
</item>

<item>
<title>Roseanna</title>
<description><![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://damienkatz.net/pics/Photo%20109.jpg"><img alt="Photo 109.jpg" src="http://damienkatz.net/pics/Photo 109-thumb-400x300.jpg" width="400" height="300" class="mt-image-none" style="" /></a></span></p>

<p>Me and my littlest, about 2 minutes ago.</p>]]></description>
<link>http://damienkatz.net/2008/04/roseanna.html</link>
<guid>http://damienkatz.net/2008/04/roseanna.html</guid>
<category></category>
<pubDate>Fri, 25 Apr 2008 07:50:33 -0500</pubDate>
</item>

<item>
<title>RubyFringe</title>
<description><![CDATA[<p>So I've been meaning to write about a conference I'll be going to, <a href="http://rubyfringe.com/">RubyFringe</a> in Toronto, July 18-20. I'm looking forward to it, partially because it's described as "Deep nerd tech with punk rock spirit" and the speakers sound pretty interesting. Most conferences are about as fun as a trip to the bank.</p>

<p>At ETech '08 I met Pete Forde and some other people involved with RubyFringe. We hung out a bit and had some crappy barbeque with people like Anil Dash and Dan Grigsby. It was a really good time and I'm looking forward to being around the types of geeks who would come to RubyFringe.</p>

<p>RubyFringe will be pretty informal. So I'm planning on wearing pajama pants the whole conference, and I'm even going to give my talks in pajama pants. Unless it's too hot, in which case I'll wear my cut-off pajama pants. I might have to buy some new ones, gotta look fresh yo.</p>

<p>I'll be talking about CouchDB, and maybe about what it's like to move your family somewhere cheap and live off savings to build the next great open source database. If you are going, send me feedback what you want to hear about and I'll make sure to cover it.</p>]]></description>
<link>http://damienkatz.net/2008/04/rubyfringe.html</link>
<guid>http://damienkatz.net/2008/04/rubyfringe.html</guid>
<category></category>
<pubDate>Mon, 21 Apr 2008 12:07:37 -0500</pubDate>
</item>

<item>
<title>Forgive me, El Guapo</title>
<description><![CDATA[<p>I know that I, Jefe, do not have your superior intellect and education. But could it be that once again, you are angry at something else, and are looking to take it out on me? </p>]]></description>
<link>http://damienkatz.net/2008/04/forgive_me_el_guapo.html</link>
<guid>http://damienkatz.net/2008/04/forgive_me_el_guapo.html</guid>
<category></category>
<pubDate>Fri, 18 Apr 2008 23:22:15 -0500</pubDate>
</item>

<item>
<title>Lisp as Blub</title>
<description><![CDATA[<blockquote><div>There's a problem in the server software. When the load gets high, it fails catastrophically instead of gradually. Robert and Patrick Collison are investigating, but they're still not sure what the problem is. My guess from the external evidence is that it's related to garbage collection.
<p>
Killing the server process fixes the problem, at least for a day or two.
</div></blockquote>

<p><a href="http://news.ycombinator.com/item?id=162874">pg - What happened?</a></p>

<p>And there's the problem with Lisp for writing server software. Long lived processes, shared state threading, and garbage collection make it extremely difficult to fail gracefully. Even if your code is completely correct and bug free, it can still crash, hang or just run unacceptably slow and there is nothing you can do to correct it without completely restarting.</p>

<p>There is no macro or meta programming technique to fix this problem. There are things you can do to mitigate it (mostly by generating less garbage), but once you reach a certain level of activity in the system where the garbage collector can no longer keep up (and it will happen), then every line of code in your system is now a potential failure point that can leave the whole program in a bad state. Lisp has this problem. Java has this problem. Erlang does not.</p>]]></description>
<link>http://damienkatz.net/2008/04/lisp_as_blub.html</link>
<guid>http://damienkatz.net/2008/04/lisp_as_blub.html</guid>
<category></category>
<pubDate>Mon, 14 Apr 2008 08:22:01 -0500</pubDate>
</item>

<item>
<title>Compaction</title>
<description><![CDATA[<p>File compaction is now checked into the Apache CouchDB SVN repos.</p>

<p>CouchDB databases grow with every document update, even if the update is a document deletion. So file compaction needs to be run occasionally to recover wasted disk space.</p>

<p>The compaction process will purge all old revisions and pack together the documents on disk to make sequential document access faster, like during view rebuilds and replication. Compaction is copy style and happens live or hot, while the database server is actively running. Normal database operations, reads, view index refreshes, document updates, replication, etc can all happen while the database is actively being compacted. </p>

<p>Also it is incremental and restartable, so if the server is shut down or there is a power failure in the middle of compaction, the next time you restart the compaction it will start back near the last spot where it left off.</p>

<p>So that's now checked in with a unit test working, though like most of the code it needs more testing, etc.</p>

<p>And here are still some other enhancements I'd like to see to storage compaction. One is compaction queuing, to make sure only one database at a time is compacting since it's a very disk IO heavy operation. That's fairly easy to implement.</p>

<p>Another enhancement is dealing with long transactions better that overlap the compaction file transition. Currently when a compaction completes, any read or write that started before the compaction completed will have at least 5 seconds to finish before it will be forcibly terminated with an error. That can be fixed to allow any unlimited amounts of time for transactions to complete, and to do so actually ties into some larger changes I'd like to see in the code. But until then clients can just retry the operation and things will be fine, so for now these are low priority things and I'm ok with it if they don't get done before 1.0.</p>

<p>Right now view indexes still do not compact, but that will be fixed later. For now as a stopgap, just delete the index files and the views will rebuild from scratch and hence "compacted". But views definitely will have proper compaction before 1.0.</p>

<p>Right now we are working on getting the Mochiweb branch finished and integrated back into trunk (Mochiweb is a replacement library for the current Inets HTTP library). <a href="http://www.cmlenz.net/">Christopher Lenz</a> has been doing most of the work, and I'm now going to help out finishing it up and hopefully get it checked in this week.</p>

<p>Once that's done plus a few more small tweaks, we might consider CouchDB 0.8 done. Then the release after that I think we'll target the incremental reduce and security, and then CouchDB will be in beta.</p>]]></description>
<link>http://damienkatz.net/2008/04/compaction.html</link>
<guid>http://damienkatz.net/2008/04/compaction.html</guid>
<category></category>
<pubDate>Mon, 07 Apr 2008 19:19:28 -0500</pubDate>
</item>

<item>
<title>Area Man Annoyed By Lotus Notes</title>
<description><![CDATA[<p>Lotus Notes logs-off at seemingly random times if I'm not actively using it, requiring me to re-enter my machine password just to kick-off replication and check my email. Once I log back in the status bar says "Private User Information [was] cleared due to automatic logoff".</p>

<p>Lazyweb help: Anyone know how to "fix" this? (fyi I don't care if it's working as designed, the design sucks. It's slows me down and the effect is to train me to quickly enter my password to anything on OS X that asks.) If I have to I'm willing to hack things to get this annoying behavior fixed.</p>

<p>Of course if this is actually a bug, then is there a version where it doesn't happen? I'm running Notes 7.0.3 on OS X 10.5.2</p>]]></description>
<link>http://damienkatz.net/2008/04/area_man_annoye.html</link>
<guid>http://damienkatz.net/2008/04/area_man_annoye.html</guid>
<category></category>
<pubDate>Fri, 04 Apr 2008 14:53:02 -0500</pubDate>
</item>

<item>
<title>IdeaJam</title>
<description><![CDATA[<p><a href="http://www.bruceelgort.com/">Bruce Elgort</a>, a friend and long time supporter of CouchDB, has created <a href="http://ideajam.net/">IdeaJam</a>. IdeaJam is a site where users of IBM's Lotus software products can exchange and promote ideas on how to improve Lotus products. Features, fixes, changes, better documentation, whatever. Other participants can help promote or demote ideas and provide feedback. Useful, needed ideas will rise to the top. This lets those who have an interest in the outcome of Lotus products to help shape it.</p>

<p>And now they also have <a href="http://elguji.com/">a version you can buy</a> and deploy to use for your own projects. It's built on Lotus Domino, but maybe I can convince them to port over to CouchDB :)<br />
</p>]]></description>
<link>http://damienkatz.net/2008/04/ideajam.html</link>
<guid>http://damienkatz.net/2008/04/ideajam.html</guid>
<category></category>
<pubDate>Thu, 03 Apr 2008 14:16:34 -0500</pubDate>
</item>

<item>
<title>Katz Housing Changes</title>
<description><![CDATA[<p>Yesterday was indeed an April Fools joke.  No plans to switch, Erlang rules, Java drools, etc etc.</p>

<p>I guess as penance to the April Fools haters, my wife and I just found out in two months we have to move out of our rental house, the owner's are moving back in. Dammit.</p>

<p>So what this does is accelerates our plans, which was to move to the Raleigh NC area or Silicon Valley or some other tech friendly place after the summer. We are in Charlotte NC, mostly for family reasons. We were waiting until the kids were a little older before moving, we have a 7 month old and Laura's mom is a huge help with the kids.</p>

<p>Man I hate moving.</p>

<p>Anyway, suggestions and input about moving welcome.</p>]]></description>
<link>http://damienkatz.net/2008/04/katz_housing_ch.html</link>
<guid>http://damienkatz.net/2008/04/katz_housing_ch.html</guid>
<category></category>
<pubDate>Wed, 02 Apr 2008 12:55:58 -0500</pubDate>
</item>

<item>
<title>CouchDB Language Change</title>
<description><![CDATA[<p>So, after a lot of heated discussion internally, I'm somewhat sad to say that Erlang will <em>not</em> be used in future releases of CouchDB. We are switching the whole codebase to (...drumroll..) Java.</p>

<p>Now while I say I am somewhat sad, but that doesn't mean I oppose this, not at all. I like Erlang, it's approach to software concurrency and reliability is brilliant. It's found a programming model that just works and built it's whole environment optimized around supporting that model.</p>

<p>But the truth is you can integrate most of that into existing environments if you design your software properly. Programming is programming, whatever your language can compute, mine can compute too. This naturally means the details of a language aren't nearly as relevant as the community and number of libraries available.</p>

<p>As <a href="http://www.cmlenz.net/archives/2008/03/incubator4j">Christopher Lenz points out here</a>, Apache is dominated by Java projects. Having CouchDB be an Erlang based project at Apache just doesn't make sense. The more things at Apache that are Java, the better they can interoperate.</p>

<p>Noah Slater, another project contributor, <a href="http://bytesexual.org/couchng/">started to fork the project</a>, partially out of dissatisfaction with Erlang.</p>

<p>At IBM, all the internal groups I've been talking with all are using Java for core development. The Erlang codebase of CouchDB is a constant obstacle to reusing their code, and vice-versa.</p>

<p>One major problem with Erlang is a general lack of libraries. Erlang lacks OO programming support, where the main focus is code reuse. Without OO you can't build software like Lego bricks, mixing and matching and swapping out the parts freely. This is a big reason why there aren't as many Erlang libraries as Java libraries, without OO it's just harder to make software reusable.</p>

<p>But perhaps the biggest problem with Erlang is the relative lack of Erlang developers. Developers in the US who've worked on a successful Erlang project probably number less than 10. But the number of developers who've worked on a successful Java project are easily 100X that amount. With a much wider talent pool to work from the quality of the contributions should increase dramatically.</p>

<p>So I've seen the writing on the wall. Erlang was great for a single developer working alone, but it's more important that CouchDB be able to take contributions from more developers with more backgrounds. Database internals aren't rocket science, it's simply a bunch of algorithmic transformations and actions combined to store and report on data with certain reliability and performance guarantees. On modern PC hardware, this stuff is a breeze. And now with Java it will get even easier for people to contribute to it.</p>

<p>I've already started rewriting the core in Java. Unfortunately finding libraries to support the indexing and storage features I need don't exist or have serious design shortcomings, so I'm writing most of that from scratch again. But the code completion in Java is so damn nice it really makes it easy to produce gobs of code quickly. With the amount of code I'm writing right now this thing will be done in a few months tops.</p>]]></description>
<link>http://damienkatz.net/2008/04/couchdb_language_change.html</link>
<guid>http://damienkatz.net/2008/04/couchdb_language_change.html</guid>
<category></category>
<pubDate>Tue, 01 Apr 2008 09:09:45 -0500</pubDate>
</item>

<item>
<title>This Week In CouchDB</title>
<description><![CDATA[<p>Jan summarizes recent events and news related to CouchDB: <a href="http://jan.prima.de/~jan/plok/archives/125-This-Week-in-CouchDB.html">This Week In CouchDB</a></p>]]></description>
<link>http://damienkatz.net/2008/03/this_week_in_couchdb.html</link>
<guid>http://damienkatz.net/2008/03/this_week_in_couchdb.html</guid>
<category></category>
<pubDate>Wed, 26 Mar 2008 15:14:17 -0500</pubDate>
</item>

<item>
<title>IT Job In Charlotte?</title>
<description><![CDATA[<p>My youngest brother <a href="mailto:madisonjw@gmail.com">Madison Williams</a> is looking for a tech/IT job in the Charlotte NC area. He's eager and hardworking and already has some good IT experience, <a href="http://damienkatz.net/files/madisonresume.pdf">here is his resume in PDF.</a> Though I live in Charlotte, unfortunately most of my business contacts are in Silicon Valley and other tech hubs, so any Charlotte area job leads or advice is much appreciated.</p>]]></description>
<link>http://damienkatz.net/2008/03/it_job_in_charlotte.html</link>
<guid>http://damienkatz.net/2008/03/it_job_in_charlotte.html</guid>
<category></category>
<pubDate>Wed, 26 Mar 2008 12:57:08 -0500</pubDate>
</item>

<item>
<title>CouchDB Progress</title>
<description><![CDATA[<p>For the past few weeks I've been working on the guts of the next release of CouchDB. Right now I'm nearly done with a big refactoring of the core code, completely separating out the view engine from the storage engine, so the storage engine doesn't know at all about the view engine. Partially this is necessary for live compaction (reclaiming wasted disk space while the database is running), and partially it's just to make the code more manageable.</p>

<p>The upshot is the interaction between storage and view engine is getting simpler (and the code smaller) and will allow each to be coded and developed independently. The simplification will also allow for different query and indexing engines to be integrated into CouchDB.</p>

<p>Once compaction is done then it's on to incremental reduce, which is something I'm really excited about. By storing the intermediate reductions directly in the BTree inner nodes,  the index update and query costs are Olog(N), allowing real-time map/reduce queries of huge databases.</p>

<p>And with this structure it is possible to do a "range reduce", which allows not only to get reduce results of a single key, but also a range of keys. So for example, if you created a map/reduce view of all purchases keyed by date, you can then query for the sum, average, min and max spent for all purchases between any 2 dates (the range), and CouchDB will calculate them nearly instantly. Not a reduced value for each unique key in the range (that's possible too), but a single reduced value of all the keys in the range.</p>

<p>BTW, I upgraded this blogs Movable Type installation from 3.x to 4.1, mostly to fix a bug that's been irritating the hell out of me, and to get better spam filtering. But now it seems I borked my installation but good. Since the upgrade the spam filter stopped working completely, letting in a new spam message every few minutes. So I turned off all comments to stop the flow. And now I can't get them to turn back on. It says they are on. But they aren't on. Doh.</p>

<p>Update: I've figured out why Movable Type comments weren't working, I didn't specify anonymous comments (or any other kind) are allowed. Fixed. Now if I can just get the comment spam filter working to slow down the spam deluge I'll be happy.</p>]]></description>
<link>http://damienkatz.net/2008/03/couchdb_progres.html</link>
<guid>http://damienkatz.net/2008/03/couchdb_progres.html</guid>
<category></category>
<pubDate>Sun, 23 Mar 2008 09:54:23 -0500</pubDate>
</item>

<item>
<title>Twitter Feed</title>
<description><![CDATA[<p>Because I keep hearing good things about it, I've decided to try Twitter. But I'm only half-in, I'm not interested in following other peoples feeds, I don't need more distractions. I'm currently in coding mode, and this might be workable way to keep people up to date on progress without disturbing my flow too much.</p>

<p><a href="http://twitter.com/damienkatz">http://twitter.com/damienkatz</a><br />
</p>]]></description>
<link>http://damienkatz.net/2008/03/twitter_feed.html</link>
<guid>http://damienkatz.net/2008/03/twitter_feed.html</guid>
<category></category>
<pubDate>Tue, 18 Mar 2008 13:43:50 -0500</pubDate>
</item>


</channel>
</rss>