<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Damien Katz</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/" />
    <link rel="self" type="application/atom+xml" href="http://damienkatz.net/atom.xml" />
    <id>tag:damienkatz.net,2008-05-05://1</id>
    <updated>2008-05-09T19:48:58Z</updated>
    <subtitle>Everybody keeps on talking about it
Nobody&apos;s getting it done</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Personal 4.1</generator>

<entry>
    <title>Catapult Operator</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/05/catapult-operator.html" />
    <id>tag:damienkatz.net,2008://1.473</id>

    <published>2008-05-09T19:45:25Z</published>
    <updated>2008-05-09T19:48:58Z</updated>

    <summary>If you lived in the Dark Ages, and you were a catapult operator, I bet the most common question people would ask is, &apos;Can&apos;t you make it shoot farther?&apos; No. I&apos;m sorry. That&apos;s as far as it shoots. - Jack...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![CDATA[<blockquote><div>If you lived in the Dark Ages, and you were a catapult operator, I bet the most common question people would ask is, 'Can't you make it shoot farther?' No. I'm sorry. That's as far as it shoots. - Jack Handey</div></blockquote>]]>
        
    </content>
</entry>

<entry>
    <title>HDR</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/05/hdr.html" />
    <id>tag:65.181.143.42,2008://1.472</id>

    <published>2008-05-09T00:02:11Z</published>
    <updated>2008-05-09T00:33:37Z</updated>

    <summary>This is my first ever try at HDR photography.This is a real store on Old Statesville road near our house in Charlotte NC. I used our Sony Cyber-shot DSC-N2 with its built-in exposure burst mode and the trial version of...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![CDATA[This is my first ever try at HDR photography.<div><br /><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://damienkatz.net/pics/DSC01592_3_4_tonemapped.jpg"><img alt="DSC01592_3_4_tonemapped.jpg" src="http://damienkatz.net/pics/DSC01592_3_4_tonemapped-thumb-450x336.jpg" width="450" height="336" class="mt-image-none" style="" /></a></span></div><div><br /></div><div>This is a real store on Old Statesville road near our house in Charlotte NC. I used our <a href="http://www.amazon.com/Sony-Cybershot-DSC-N2-Digital-Optical/dp/B000DZKNM2">Sony Cyber-shot DSC-N2</a> with its built-in exposure burst mode and the trial version of <a href="http://www.hdrsoft.com/">Photomatix Pro </a>(you can see the trialware watermarks) to merge the multiple exposures into an HDR image.</div></div>]]>
        
    </content>
</entry>

<entry>
    <title>CouchDB Roundup</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/couchdb-news.html" />
    <id>tag:65.181.143.42,2008://1.471</id>

    <published>2008-04-27T17:11:22Z</published>
    <updated>2008-05-05T23:53:59Z</updated>

    <summary>Jan summarizes recent happenings: Another week (or two) in CouchDB...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>Gwendolyn</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/gwendolyn.html" />
    <id>tag:65.181.143.42,2008://1.469</id>

    <published>2008-04-25T12:34:21Z</published>
    <updated>2008-05-05T23:53:58Z</updated>

    <summary> Me and my oldest. I&apos;m under blankie....</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>Roseanna</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/roseanna.html" />
    <id>tag:65.181.143.42,2008://1.468</id>

    <published>2008-04-25T11:50:33Z</published>
    <updated>2008-05-05T23:53:58Z</updated>

    <summary> Me and my littlest, about 2 minutes ago....</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>RubyFringe</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/rubyfringe.html" />
    <id>tag:65.181.143.42,2008://1.467</id>

    <published>2008-04-21T16:07:37Z</published>
    <updated>2008-05-05T23:53:58Z</updated>

    <summary>So I&apos;ve been meaning to write about a conference I&apos;ll be going to, RubyFringe in Toronto, July 18-20. I&apos;m looking forward to it, partially because it&apos;s described as &quot;Deep nerd tech with punk rock spirit&quot; and the speakers sound pretty...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>Forgive me, El Guapo</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/forgive-me-el-guapo.html" />
    <id>tag:65.181.143.42,2008://1.466</id>

    <published>2008-04-19T03:22:15Z</published>
    <updated>2008-05-05T23:53:58Z</updated>

    <summary>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?...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>Lisp as Blub</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/lisp-as-blub.html" />
    <id>tag:65.181.143.42,2008://1.465</id>

    <published>2008-04-14T12:22:01Z</published>
    <updated>2008-05-05T23:53:58Z</updated>

    <summary>There&apos;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&apos;re still not sure what the problem is. My guess from the external evidence is...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>Compaction</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/compaction.html" />
    <id>tag:65.181.143.42,2008://1.464</id>

    <published>2008-04-07T23:19:28Z</published>
    <updated>2008-05-05T23:53:58Z</updated>

    <summary>File compaction is now checked into the Apache CouchDB SVN repos. 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. The...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>Area Man Annoyed By Lotus Notes</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/area-man-annoye.html" />
    <id>tag:65.181.143.42,2008://1.463</id>

    <published>2008-04-04T18:53:02Z</published>
    <updated>2008-05-05T23:53:57Z</updated>

    <summary>Lotus Notes logs-off at seemingly random times if I&apos;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 &quot;Private User Information...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>IdeaJam</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/ideajam.html" />
    <id>tag:65.181.143.42,2008://1.462</id>

    <published>2008-04-03T18:16:34Z</published>
    <updated>2008-05-05T23:53:57Z</updated>

    <summary>Bruce Elgort, a friend and long time supporter of CouchDB, has created IdeaJam. IdeaJam is a site where users of IBM&apos;s Lotus software products can exchange and promote ideas on how to improve Lotus products. Features, fixes, changes, better documentation,...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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 :)</p>]]>
        
    </content>
</entry>

<entry>
    <title>Katz Housing Changes</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/katz-housing-ch.html" />
    <id>tag:65.181.143.42,2008://1.461</id>

    <published>2008-04-02T16:55:58Z</published>
    <updated>2008-05-05T23:53:57Z</updated>

    <summary>Yesterday was indeed an April Fools joke. No plans to switch, Erlang rules, Java drools, etc etc. I guess as penance to the April Fools haters, my wife and I just found out in two months we have to move...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>CouchDB Language Change</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/04/couchdb-language-change.html" />
    <id>tag:65.181.143.42,2008://1.460</id>

    <published>2008-04-01T13:09:45Z</published>
    <updated>2008-05-05T23:53:57Z</updated>

    <summary>So, after a lot of heated discussion internally, I&apos;m somewhat sad to say that Erlang will not be used in future releases of CouchDB. We are switching the whole codebase to (...drumroll..) Java. Now while I say I am somewhat...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>This Week In CouchDB</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/03/this-week-in-couchdb.html" />
    <id>tag:65.181.143.42,2008://1.459</id>

    <published>2008-03-26T19:14:17Z</published>
    <updated>2008-05-05T23:53:56Z</updated>

    <summary>Jan summarizes recent events and news related to CouchDB: This Week In CouchDB...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

<entry>
    <title>IT Job In Charlotte?</title>
    <link rel="alternate" type="text/html" href="http://damienkatz.net/2008/03/it-job-in-charlotte.html" />
    <id>tag:65.181.143.42,2008://1.458</id>

    <published>2008-03-26T16:57:08Z</published>
    <updated>2008-05-05T23:53:56Z</updated>

    <summary>My youngest brother Madison Williams is looking for a tech/IT job in the Charlotte NC area. He&apos;s eager and hardworking and already has some good IT experience, here is his resume in PDF. Though I live in Charlotte, unfortunately most...</summary>
    <author>
        <name>Damien Katz</name>
        
    </author>
    
    
    <content type="html" xml:lang="en" xml:base="http://damienkatz.net/">
        <![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>]]>
        
    </content>
</entry>

</feed>
