January 26, 2007

Coming soon to CouchDb: Full text indexing

Jan has been doing a bunch of work integrating Apache Lucene with CouchDb. Lucene is very powerful with a rich query syntax and its document model is a perfect match for CouchDb.

The working code is checked into version control and he's already got it incrementally indexing databases and performing queries. Right now we are working on getting it more tightly integrated with the server for the next release.

Once we get this work finalized, creating a useful full text index for a database will be a single step process. Then it will be possible from the CouchDb HTTP API to perform searches of entire databases, or just the documents that appear in certain views such that rows are returned in order of relevance. This is very cool, powerful stuff.


January 17, 2007

Negative CAPTCHA

The CouchDb demos were getting slammed by spammers, so today Jan put in something that's kind of like a CAPTCHA, but almost the exact opposite.

It's a neat idea, instead of asking the user to prove he's human, it instead tricks the spam bot into revealing it's a bot. It does this with a email field that is hidden from the user by CSS.

When a human user fills out the form, the hidden field will always be blank. But when filled out by a spam bot, it doesn't know the field is supposed to be hidden, so it adds a bogus email address and submits the form. When the back-end code sees the email in the posting, it knows the email was filled in by a bot and ignores the whole submission.

The beauty is it requires no intervention from the end user, no extra steps, no UI clutter and no false positives. Though this technique likely won't work on big community sites (for long), it will work just fine for most smaller sites. Very clever.

Ned has written a great article about this and related anti-spam techniques.


The Lotusphere Mooch

Anyone going to Lotusphere have a bed for me crash either Saturday or Sunday night? I'd like to go see old friends and have some fun, but I'd rather not spend actual money. Mail me: damien_katz@yahoo.com


January 16, 2007

Looking for a Job

I've been isolated here in Charlotte for too long. I miss being around people and being a part of a team. I miss geeking-out about tech stuff: bits and bytes, functional programming vs OOP, concurrency models, etc. I want to be around hardcore developers again.

So I'm looking for a permanent position as an engineer in a software development organization.

What am I looking for in a employer? More than anything I want to work with great people. Smart, hardworking, fun people. I'm not really concerned with the size of the company, but I don't function well in bureaucracy and hierarchy, so that eliminates most large companies.

My preference is to relocate to the Silicon Valley area, but I'm willing to consider elsewhere for the right opportunity.

(Also, I hear great things about SAS. If you have an inside contacts on jobs there, let me know.)

My resume is here: DamienResume.pdf


January 15, 2007

CouchDb Incorporated?

I’ve spent the past few weeks doing legwork to find investment funding for CouchDb in order to turn it into a business. Business plans, investors, revenue streams, timelines, ROI, burn rate, blah, blah, blah.

And I came to the conclusion that I don’t want to turn CouchDb into a business. I decided I’d rather continue developing it free of business demands.

Information technologies are the tools that help us organize, understand and share information. And I’m not just talking about computers. The spoken word, the written word, books, the moveable type press, telephone, radio, TV and the Internet are all tools that have helped us express, collect and share information. They allow us to stand on the shoulders of giants, to communicate ideas across space and time and unleash human creativity. Each wave of tools has added new potential to what we can collectively do to improve our world, our environment, our lives. But our tools could be so much better.

CouchDb isn’t just a way to store data. It's a method of communication, a way to think about collecting, organizing and sharing information. The current tools aren’t enough, human beings need more intuitive models and systems that more closely map to our real world problems.

So CouchDb means very much to me, at a very deep level. And because of that, I’d rather not risk ruining it though commercialization. I’d rather keep it free of business constraints and allow it to develop to its full potential in the open.

This work is truly a labor of love. Designing and developing CouchDb was very challenging, and often not in a fun way. I could never have gotten this far part time. To get up and running something big and complex as an ACID compliant, distributed database system with integrated query language is a no small task. It took many many months of careful design, planning and uninterrupted development, not to mention attacking every single problem that cropped up like it’s the only problem in the world.

And now CouchDb development is far enough along that I can continue part time. The biggest and most complex parts are in place and working, most of the remaining work is adding smaller features to the already working code base. Development will now continue in small steps that weren’t possible early in the project.

So in related news, the non-commercialization of CouchDb also means I will now looking for a real job! I’ve decided against remote contract work, I want to be back working with real people on real teams, which means I’ll certainly need to relocate from Charlotte, NC. I’ll be posting more about all that soon.


January 9, 2007

Five things you didn't know about me

Tagged by Mac and William.

  1. I was a terrible student. I had difficulty paying attention, doing homework and not being cut-up all the time. I likely would have been diagnosed with ADHD growing up. I'm still pretty much the same, though I tend to manage it better.
  2. I married my high school sweetheart. We first met when I was 17 and she was 16. As much as I loved her then I think I love her more now.
  3. In a seedy nightclub in Bangkok, my wife and I saw a woman pop balloons from across the room with darts shot out of her vagina. It was every bit as amazing as it sounds.
  4. I'm kind of a know-it-all jerk. Including knowing I'm a know-it-all. See how annoying that is? Like me dammit!
  5. I turned down a big contract job from Ray Ozzie at Microsoft. After creating the specs and estimates, I made a hard decision and turned it down to instead continue building CouchDb. Then it was announced Ray would be taking Bill Gates' title as Chief Software Architect. There's that sick feeling again.

I tag Ned, Pete, Ronnie, Raganwald and Jeff.


January 4, 2007

The Volkswagen Lisp

The Volkswagen Lisp is the most configurable and powerful car in automotive history.

The Lisp was invented in 1958 (some say discovered) and the automotive world hasn't been the same since.


Volkswagen was the first to realize a car is just made of parts, so why not design everything around that concept?


Some say it looks a little weird with its odd curves, but once people "get" Lisp, they always fall in love.


The Lisp's power comes from its infinite reconfigurability. It can be anything you want!

Don't like the curves? You can give it a brand new look.


Want a convertible? The Lisp has you covered.


How about a Van?


Pickup truck?








Dune buggy?


Dune buggy?


Dune buggy?


Dune Buggy?


(Everyone likes dune buggies!)

Stretch Limousine?


Tow Truck?


Amphibious Vehicle?




There is really no limit to what the Lisp can do and be.


What about luxury? You can't get more luxurious than this.




Who in their right mind would want a Lexus or Mercedes when you can have all that? Other cars try to control you with their ideas of what luxury is. Not the Lisp.

It's a shame more people don't drive a Lisp. Even if you don't take advantage all that power, just learning it will make you a smarter driver. Just ask an owner!