<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEUGRH05cCp7ImA9WhRWF0U.&quot;"><id>tag:blogger.com,1999:blog-15929719</id><updated>2012-01-05T08:50:25.328-08:00</updated><category term="ruby" /><category term="virtualization" /><category term="green" /><category term="technology" /><category term="personal" /><category term="funny" /><category term="mysql" /><category term="java" /><category term="opensource" /><category term="mac" /><category term="family" /><category term="politics" /><category term="culture" /><category term="synchronization" /><category term="music" /><category term="blogging" /><category term="solaris" /><category term="javadb" /><category term="working" /><category term="netbeans" /><category term="humor" /><category term="databases" /><title>Van Couvering Is Not a Verb</title><subtitle type="html">Ongoing musings, tips, and observations from a Van Couvering, not someone who is going to Vancouver.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://davidvancouvering.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>668</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/VanCouveringIsNotAVerb" /><feedburner:info uri="vancouveringisnotaverb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;A0QEQXszeip7ImA9WhZWEEs.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-2637388751715744705</id><published>2011-05-10T16:15:00.000-07:00</published><updated>2011-05-10T16:15:00.582-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T16:15:00.582-07:00</app:edited><title>Running spotlight from your Mac terminal window</title><content type="html">A colleague just showed me this most excellent little command you can add to your .profile on the Mac to do Spotlight-indexed searches from the command line.  Very nice.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
function slocate() {&lt;br /&gt;
mdfind "kMDItemDisplayName == '$@'wc";&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
config[master]% time slocate my.cnf&lt;br /&gt;
/private/etc/my.cnf&lt;br /&gt;
/opt/local/var/macports/sources/rsync.macports.org/release/ports/databases/mysql4/files/my.cnf&lt;br /&gt;
real 0m0.018s&lt;br /&gt;
user 0m0.006s&lt;br /&gt;
sys 0m0.006s&lt;br /&gt;
&lt;br /&gt;
&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-2637388751715744705?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/2637388751715744705/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=2637388751715744705" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/2637388751715744705?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/2637388751715744705?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/307GxSJgqFs/running-spotlight-from-your-mac.html" title="Running spotlight from your Mac terminal window" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2011/05/running-spotlight-from-your-mac.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IERnw-fyp7ImA9Wx9XGUg.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-5709207894652138822</id><published>2011-01-13T14:56:00.000-08:00</published><updated>2011-01-13T14:58:27.257-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-13T14:58:27.257-08:00</app:edited><title>How I do a smart phone on the cheap</title><content type="html">&lt;img height="400" src="http://1.bp.blogspot.com/_3m65KNJ6jVQ/TIjcqT6RrkI/AAAAAAAABPE/Y8cE8pmtR0s/s400/smart_phone.jpg" width="316" /&gt;&lt;br /&gt;&lt;br /&gt;I really like having a smart phone, but I don't think it's worth shelling out almost $80-100 a month for service, especially since I almost never use the data services and only make about 70-100 minutes of calls a month.&lt;br /&gt;&lt;br /&gt;&lt;img height="240" src="http://macbigot.com/media/iPhoneWallpaper300x225.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;For the longest time, what I had was an unlocked iPhone Classic with a T-Mobile prepaid plan where I paid .10c a minute, and no data plan.  Very cheap - I spent $100 for 1000 minutes in November, and I still have 500 minutes left.&lt;br /&gt;&lt;br /&gt;But there are times when I really could use data.  But I only wanted to pay for it when I needed it.  Also, I have watched various disasters in the last few years and having access to information, particularly through your cell phone, is very very important.&lt;br /&gt;&lt;br /&gt;&lt;img height="200" src="http://thenewsoftoday.com/wp-content/uploads/2010/09/virgin-mifi.jpg" width="166" /&gt;&lt;br /&gt;&lt;br /&gt;Then, a few months ago, Virgin Mobile came out with a MiFi plan of $30/month unlimited or $10/100MB/10 days.  This was what I was looking for.  I'm in casual carpool in the morning - I turn on my MiFi, do a little email, turn it off.  I'm driving somewhere and want to find a restaurant - just turn on my Mifi, search, get the map, turn it off.  I can manage my own costs, rather than paying these huge fees for plans.  Plus, I'm on T-Mobile - I don't get dropped calls like many of my friends do.&lt;br /&gt;&lt;br /&gt;My iPhone started having problems recently, and I researched the iPhone 4, but it's very very hard to unlock, and it's very expensive.  So I researched various Android phones, and I had a colleague who raved about his T-Mobile Vibrant by Samsung.&lt;br /&gt;&lt;br /&gt;&lt;img height="236" src="http://latestpriceindia.com/wp-content/uploads/2010/07/samsung-vibrant.png" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;I finally splurged when T-Mobile offered this for free with a 2-year plan (sorry, this offer seems to be gone now).  I have to wait a month for the "buyer's remorse" period to end, then I can cancel the plan ($70/month) and switch to prepaid and pay the $200 early termination fee.  All I had to do was replace the GSM chip that came with the phone with my existing prepaid chip - I didn't even need to unlock the phone,  Works for me!&lt;br /&gt;&lt;br /&gt;I also just found out that T-Mobile just started offering Internet-for-a-day on their prepaid plan.  You pay $1.20, and you get unlimited data on your phone for 1 day.  Now that's what I'm talking about! Prepaid data as well as prepaid minutes.  I am still keeping my MiFi for now, since I use a leetle bit of data every day, so it ends up being cheaper.  But I think finally somebody (T-Mobile) is getting the idea that not everybody wants or can afford the big whopping post-paid plans.&lt;br /&gt;&lt;br /&gt;Android positive: I can do things Apple would never let me do on my iPhone.  Like using an mp3 I bought on Amazon for a ring tone.  Like playing Rhapsody in the background.  Like easy synchronization with Google calendard and Gmail.&lt;br /&gt;&lt;br /&gt;Android negative: nasty battery usage.  I have to monitor very carefully, shutting down GSM, Wifi, background apps, display very carefully or I can't even make it through the day.   I never had this problem with the iPhone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-5709207894652138822?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/5709207894652138822/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=5709207894652138822" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/5709207894652138822?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/5709207894652138822?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/zqWv6ONi0_M/how-i-do-smart-phone-on-cheap.html" title="How I do a smart phone on the cheap" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_3m65KNJ6jVQ/TIjcqT6RrkI/AAAAAAAABPE/Y8cE8pmtR0s/s72-c/smart_phone.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2011/01/how-i-do-smart-phone-on-cheap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UCRHo5fCp7ImA9Wx9QF0k.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1934997964488677259</id><published>2010-12-30T13:41:00.000-08:00</published><updated>2010-12-30T13:41:05.424-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-30T13:41:05.424-08:00</app:edited><title>An expression of joy</title><content type="html">&lt;img src="http://being.publicradio.org/programs/2009/rumi/images/dervish-thumb.jpg" width="400" /&gt;&lt;br /&gt;
&lt;br /&gt;
A friend just posted this poem by the great Sufi saint Hafiz:&lt;br /&gt;
&lt;blockquote&gt;I am happy even before I have a reason. &lt;br /&gt;
&lt;br /&gt;
I am full of light even before the sky can greet the sun or the moon. &lt;br /&gt;
&lt;br /&gt;
Dear companions, we have been in love with God for so very, very, long. What can Hafiz now do but forever dance!&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1934997964488677259?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1934997964488677259/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=1934997964488677259" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1934997964488677259?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1934997964488677259?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/gjIdDSJkTqs/expression-of-joy.html" title="An expression of joy" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/12/expression-of-joy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcHRnozfSp7ImA9Wx9QEUs.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-9056129609075409766</id><published>2010-12-23T19:40:00.000-08:00</published><updated>2010-12-23T19:40:37.485-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-23T19:40:37.485-08:00</app:edited><title>Wow, taking the train rocks</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.rrpicturearchives.net/pictures%5C13276%5CAmtk_84_East_Manuelito_edited-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="275" src="http://www.rrpicturearchives.net/pictures%5C13276%5CAmtk_84_East_Manuelito_edited-2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
This Christmas we decided to take the train to my Mom's place in New Mexico rather than fly. &amp;nbsp;What a wonderful experience. &lt;br /&gt;
&lt;br /&gt;
For the same cost of a flight, we got first class service on the Southwest Chief from Los Angeles to Albuquerque. &lt;br /&gt;
&lt;br /&gt;
Someone gave us and our luggage a ride to checkin and then another ride straight to our car on the train.&amp;nbsp;We had a porter who turned down our beds at night and made them back into chairs in the morning. &amp;nbsp;Free meals, coffee, paper, juice. &amp;nbsp;Hot steaming washcloths to refresh your face, and hot showers with towels and soap provided. &amp;nbsp;Serious leg room, quiet quiet cars, an observation car to hang out in, and incredible, gorgeous views. &amp;nbsp;I mean, incredible, gorgeous views.&lt;br /&gt;
&lt;br /&gt;
Quiet, relaxing, the kids were happy, we were happy, and arrived in Albuquerque refreshed and relaxed.&lt;br /&gt;
&lt;br /&gt;
Then I think about airplanes. &amp;nbsp;Long lines, zero leg room, security checks, kids are not allowed to move around and have nothing to do.&lt;br /&gt;
&lt;br /&gt;
I'm telling you, trains are the hidden secret of travel. &amp;nbsp;I highly recommend it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-9056129609075409766?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/9056129609075409766/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=9056129609075409766" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/9056129609075409766?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/9056129609075409766?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/kZ9TgnwoLcE/wow-taking-train-rocks.html" title="Wow, taking the train rocks" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/12/wow-taking-train-rocks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHQXk6eCp7ImA9Wx9XGUo.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-791069089050374722</id><published>2010-09-27T17:15:00.000-07:00</published><updated>2011-01-13T20:25:30.710-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-13T20:25:30.710-08:00</app:edited><title>Foxmarks closing its doors</title><content type="html">&lt;div&gt;Update: Foxmarks was bought by LastPass, which is also a great company, so it's great to hear they'll stick around!  We'll see how LastPass monetizes this; it's a great service!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;----------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I love the &lt;a href="http://www.xmarks.com/"&gt;Foxmarks &lt;/a&gt;service. But it appears &lt;a href="http://blog.xmarks.com/?p=1886"&gt;they couldn't come up with a business model&lt;/a&gt;.&lt;br /&gt;&lt;blockquote&gt;For four years we have offered the synchronization service for no charge, predicated on the hypothesis that a business model would emerge to support the free service.&lt;/blockquote&gt;&lt;br /&gt;I am amazed people are still finding investors for a business plan like this.  Oy vei..&lt;br /&gt;&lt;br /&gt;Remind me, when and if I ever join a startup, to make sure there is money coming in from day one.&lt;br /&gt;&lt;br /&gt;I guess I'll need to move to sync for Firefox and Chrome.  Sorry to see a cross-browser solution go...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-791069089050374722?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/791069089050374722/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=791069089050374722" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/791069089050374722?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/791069089050374722?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/Gql9rw8URfU/foxmarks-closing-its-doors.html" title="Foxmarks closing its doors" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/09/foxmarks-closing-its-doors.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08HSXw5eSp7ImA9Wx5WFkw.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1456557852715527325</id><published>2010-09-27T11:23:00.000-07:00</published><updated>2010-09-27T11:23:58.221-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-27T11:23:58.221-07:00</app:edited><title>BigCouch: HA, clustered, scalable CouchDB</title><content type="html">Not sure how I missed this one, this is awesome news.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;JA&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;    &lt;w:UseFELayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;    &lt;m:smallFrac m:val="off"/&gt;    &lt;m:dispDef/&gt;    &lt;m:lMargin m:val="0"/&gt;    &lt;m:rMargin m:val="0"/&gt;    &lt;m:defJc m:val="centerGroup"/&gt;    &lt;m:wrapIndent m:val="1440"/&gt;    &lt;m:intLim m:val="subSup"/&gt;    &lt;m:naryLim m:val="undOvr"/&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
 {mso-style-name:"Table Normal";
 mso-tstyle-rowband-size:0;
 mso-tstyle-colband-size:0;
 mso-style-noshow:yes;
 mso-style-priority:99;
 mso-style-qformat:yes;
 mso-style-parent:"";
 mso-padding-alt:0in 5.4pt 0in 5.4pt;
 mso-para-margin:0in;
 mso-para-margin-bottom:.0001pt;
 mso-pagination:widow-orphan;
 font-size:11.0pt;
 font-family:"Calibri","sans-serif";
 mso-ascii-font-family:Calibri;
 mso-ascii-theme-font:minor-latin;
 mso-hansi-font-family:Calibri;
 mso-hansi-theme-font:minor-latin;}
&lt;/style&gt; &lt;![endif]--&gt;  &lt;br /&gt;
&lt;div class="MsoNormal"&gt;&lt;a href="http://github.com/cloudant/bigcouch"&gt;http://github.com/cloudant/bigcouch&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
“BigCouch is a highly available, fault-tolerant, clustered, mostly api-compliant version of &lt;a href="http://couchdb.apache.org/"&gt;&lt;span&gt;Apache CouchDB&lt;/span&gt;&lt;/a&gt;. While it appears to the end-user as one CouchDB instance, it is in fact one or more nodes in an elastic cluster, acting in concert to store and retrieve documents, index and serve views, and serve CouchApps. BigCouch has been developed and is continually maintained by &lt;a href="http://cloudant.com/"&gt;&lt;span&gt;Cloudant&lt;/span&gt;&lt;/a&gt; who offer hosted CouchDB as a service.&lt;br /&gt;
Clusters behave according to concepts outlined in &lt;a href="http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html"&gt;&lt;span&gt;Amazon's Dynamo paper&lt;/span&gt;&lt;/a&gt;, namely that each node can accept requests, data is placed on partitions based on a consistent hashing algorithm, and quorum protocols are for read/write operations”&lt;br /&gt;
&lt;br /&gt;
I worked with the &lt;a href="https://cloudant.com/"&gt;Cloudant &lt;/a&gt;team, the folks who created BigCouch, when I was doing some CouchDB work on the side, and they seemed like a smart, fun, dedicated team.&lt;br /&gt;
&lt;br /&gt;
This puts CouchDB on my short list of technologies to consider when looking for a scalable data storage solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1456557852715527325?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1456557852715527325/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=1456557852715527325" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1456557852715527325?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1456557852715527325?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/9bVwGBVaneU/bigcouch-ha-clustered-scalable-couchdb.html" title="BigCouch: HA, clustered, scalable CouchDB" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/09/bigcouch-ha-clustered-scalable-couchdb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEBRX86cSp7ImA9Wx5WE0U.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-7813454733725188865</id><published>2010-09-24T21:07:00.000-07:00</published><updated>2010-09-24T21:07:34.119-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-24T21:07:34.119-07:00</app:edited><title>Republicans promise to abolish all government</title><content type="html">I love this line from&lt;a href="http://www.nytimes.com/2010/09/24/opinion/24krugman.html"&gt; Krugman's editorial about the Republican budget proposals&lt;/a&gt; (where they propose to continue the Bush tax cuts, while the only cut they propose is TARP, and that they will keep their hands off Social Security, Medicare, and the defense budget).&lt;br /&gt;
&lt;blockquote&gt;Howard Gleckman of the nonpartisan Tax Policy Center has done the math. As he points out, the only way to balance the budget by 2020, while simultaneously (a) making the Bush tax cuts permanent and (b) protecting all the programs Republicans say they won’t cut, is to completely abolish the rest of the federal government: “No more national parks, no more Small Business Administration loans, no more export subsidies, no more N.I.H. No more Medicaid (one-third of its budget pays for long-term care for our parents and others with disabilities). No more child health or child nutrition programs. No more highway construction. No more homeland security. Oh, and no more Congress.” &lt;/blockquote&gt;Of course what is obviously really going on is that the Republicans are using the populist fiscal responsibility tune as a Trojan horse for handing money to the people who are funding their elections.&amp;nbsp; It's basically a smoke-and-mirrors approach to looting the treasury and handing out gifties to their buddies.&amp;nbsp; They don't really care about balancing the budget, they're just using that as a cover.&lt;br /&gt;
&lt;br /&gt;
So what should we do about it?&amp;nbsp; I don't know.&amp;nbsp; It seems that the only time people are really ready for change is when the truth can no longer be denied.&amp;nbsp; It's true for addiction, and I suspect it's true for governance and economic policy as well...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-7813454733725188865?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/7813454733725188865/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=7813454733725188865" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7813454733725188865?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7813454733725188865?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/KtfbLhc2d7M/republicans-promise-to-abolish-all.html" title="Republicans promise to abolish all government" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/09/republicans-promise-to-abolish-all.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcDRn84fip7ImA9Wx5WEkU.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-2931107435814655301</id><published>2010-09-23T15:14:00.000-07:00</published><updated>2010-09-23T15:14:37.136-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-23T15:14:37.136-07:00</app:edited><title>Personal favorites for upcoming Java 7 features</title><content type="html">Through the power of a Twitter search column in Tweetdeck, I found a &lt;a href="http://www.infoq.com/news/2010/09/javaone2010-d2general"&gt;great InfoQ article&lt;/a&gt; which did a quick summary with lots of links to what's new for Java 7.&lt;br /&gt;
&lt;br /&gt;
After reading through this, here are some of my favorites:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000009.html"&gt;&lt;b&gt;Automatic Resource Management&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
Tired of closing input streams, SQL connections, sockets, and so on?&amp;nbsp; You will no longer need to in Java 7.&amp;nbsp; Sweet!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://mail.openjdk.java.net/pipermail/coin-dev/2009-February/000009.html"&gt;&lt;b&gt;Generic Type Inference&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;
Allows you to leave off specifying generic types if they can be easily inferred. &lt;br /&gt;
&lt;br /&gt;
I'd show you an example but this stupid Blogger editor gets completely confused with all the less-than and greater-than symbols, and I simply don't have the time to futz with it.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://cr.openjdk.java.net/%7Emr/lambda/straw-man/"&gt;Closures through Lambda Expressions&lt;/a&gt;&lt;br /&gt;
This looks like a very promising implementation of closures in Java.&amp;nbsp; Of course the devil is in the details, but I look forward to making use of this - personally I'm quite tired of anonymous inner classes. &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://openjdk.java.net/projects/jigsaw/"&gt; Modules (Project Jigsaw)&lt;/a&gt;&lt;br /&gt;
I have worked with NetBeans modules and played around with OSGi, and I have seen the power of a well-defined module framework.&amp;nbsp; I look forward to seeing this as part of the language (again, hoping it is implemented well.&amp;nbsp; We'll see of course).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-2931107435814655301?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/2931107435814655301/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=2931107435814655301" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/2931107435814655301?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/2931107435814655301?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/narAIA_Nj68/personal-favorites-for-upcoming-java-7.html" title="Personal favorites for upcoming Java 7 features" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/09/personal-favorites-for-upcoming-java-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkENQXY-eCp7ImA9Wx5XFkg.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1150049528944295810</id><published>2010-09-16T08:17:00.000-07:00</published><updated>2010-09-16T08:24:50.850-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-16T08:24:50.850-07:00</app:edited><title>Calvin demonstrates socialism for the rich</title><content type="html">I've always loved this particular Calvin and Hobbes strip. It's still as appropriate today as when it was written, if not more so...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.dianahsieh.com/blog/uploaded_images/CH-economics-716094.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://www.dianahsieh.com/blog/uploaded_images/CH-economics-716094.jpg" border="0" height="444" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1150049528944295810?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1150049528944295810/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=1150049528944295810" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1150049528944295810?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1150049528944295810?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/dpfzFrucCbw/calvin-demonstrates-socialism-for-rich.html" title="Calvin demonstrates socialism for the rich" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/09/calvin-demonstrates-socialism-for-rich.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IEQ3c4eCp7ImA9Wx5XFk0.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6449342310348215915</id><published>2010-09-15T20:57:00.000-07:00</published><updated>2010-09-15T20:58:22.930-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-15T20:58:22.930-07:00</app:edited><title>My visit to Ground Zero</title><content type="html">I had the honor and fortune to pay my respects at Ground Zero today, coming back from a business meeting.  It really is quite awesome to place yourself there where it all happened.  I also feel I got a chance to pay my respects to all those who lost their lives here, whose lives were affected, and who gave (and continue to give) their hearts and bodies to saving lives, digging through the rubble, cleaning it up, and now building new buildings and memorials that honor the power and sacredness of this place.&lt;br /&gt;&lt;br /&gt;I watched the construction workers working on the new memorials, and I thought, whereas most construction is "just a job", those working here are truly blessed and are doing a labor of love.&lt;br /&gt;&lt;br /&gt;I also went to the small little museum in honor of 9/11.  What an incredible, moving exhibit.  It was all so personal, with simple artifacts and quotes and stories from those who lived through it.  Each artifact had meaning and impact - the melted, destroyed window from a plane, a half-burnt menu from Windows on the World, a fireman's helmet and torn jacket, and a wall covered with copies of all the "missing person" leaflets that were placed out by desperate families looking for their loved ones.  I am not one to cry easily, but I was in tears many times as my heart leaped to my throat.&lt;br /&gt;&lt;br /&gt;Then, downstairs, was a place you could leave a note for everyone, and many of these were placed lovingly on a wall for all to read.  People from around the world expressed their love, their sadness, and their hope.  This place is impactful, important, and very moving.  I highly recommend everyone try to make it here at least once.&lt;br /&gt;&lt;br /&gt;I also saw the plans for the new memorial.  Truly beautiful - two square waterfalls going into the ground in the place of the original towers, with the names of all who perished around the walls of the waterfall, inset in a beautiful contemplative garden of oak trees.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://weblogs.baltimoresun.com/features/gardening/groundzero%20memorial.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Today was a crisp, clear blue September day here in New York, much like the day 9 years ago when this happened.  What happened here was so horrific, but now it feels like there is a power here that holds it with great care, with gentle, loving hands.  You feel yourself bow inwardly in prayer and respect, and offer your love and blessings.&lt;br /&gt;&lt;br /&gt;So, in honor of the memories of all who lost their lives and their loved ones here, I offer my blessing:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;May we all experience and offer love and protection, and may we always remember that each and every life in this world is supremely precious and sacred.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Om Shanti Shanti Shantihi (OM peace, peace, peace).&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://photos.travelblog.org/Photos/136729/441646/t/4321754-A-Fireman-s-Helmet-from-the-September-11th-Attacks-0.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6449342310348215915?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6449342310348215915/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=6449342310348215915" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6449342310348215915?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6449342310348215915?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/7SpKOZqeE18/my-visit-to-ground-zero.html" title="My visit to Ground Zero" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/09/my-visit-to-ground-zero.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYHQXwzcCp7ImA9WxFaFkg.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-4176788718720353830</id><published>2010-07-20T13:18:00.000-07:00</published><updated>2010-07-20T13:18:50.288-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-20T13:18:50.288-07:00</app:edited><title>Mass extinctions, basalt flows, and us</title><content type="html">Verbatim from my Pa (Dr. John Van Couvering, geologist and all-around Scientist), who wrote this up for a his local neighborhood newsletter in upstate New York&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Most of us have heard of the great extinction that wiped the dinosaurs off the face of the earth.&amp;nbsp; Of course this didn’t really happen, because birds – aha! -- are dinosaurs. But few may be aware that the human presence on the planet follows, not one, but four narrow escapes from extinction, going all the way back before dinosaurs even evolved. We are rather like Fearless Fosdick (Li’l Abner’s comic hero) who pops up unscathed, with the lid on his head, from his hiding place in a trash can that has been riddled to shreds by the mob’s tommy guns. The crooks are gobsmacked. “Fosdick! We shot ya fulla holes!” “Took a bit of dodging,” he jauntily replies.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;What did we dodge? In fact, those “extinction events” are deadly beyond belief: moments in planetary history when nearly everything on land dies, as well a great deal of marine life. In the last of these, 65 million years ago, four entire orders of dinosaurs were exterminated, plus all but the airborne varieties of a fifth order, as well as two out of three orders of coral and entire groups of other marine life. To put the extinction of an order in perspective, extinguishing the modern Carnivora would require that every single living animal in that order -- every last cat, lion, tiger, leopard, cheetah, puma, jaguar, hyaena, aardvark, civet, dog, wolf, fox, bear, panda, seal, sea lion, walrus, weasel, mink, skunk, badger, wolverine, otter, raccoon, kinkajou, coati mundi and meerkat – would have to perish. If even one lonely pair of any of these species survived to reproduce, so would the Order Carnivora. The magnitude of disaster that can totally erase not one but a dozen orders is difficult to comprehend. &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Huge meteorite impacts have been found to coincide with some major extinction events, but they may have been just the last straw. For one thing, giant impacts are turning out to be surprisingly common, with little or no extinction effect. While the asteroid that punched into Yucatan may have finished off Tyrannosaurus and the tetracorals, they were apparently sick and dying already. A few million years later, the equally large flying rock that blew a 57-mile wide hole into the bedrock under what is now Delaware and Maryland had no effect on earthly life whatever. Not only that, no impact has been found to coincide with the worst extinction of all, the Permo-Triassic event 250 million years ago, that killed off all but one species of non-amphibian land animals – which species, of course, is our ancestor. The real cause of extinction events appears to be flood basalts – extraordinary volcanic episides that go on for a million years as flow after flow of lava wells from cracks in the continent to build up country-sized mounds called “traps”. It is probable, but not yet proven, that the gases emitted from the thousand of cubic kilometers of flood basalts create toxic pollution of land and sea. The Deccan Traps of central India mark the end of the dinosaurs, while the traps that underlie the steppes of Siberia are the same age as the great Permo-Triassic extinction. &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Given the odds, it is to be expected that mass extinctions have chancy, even unfair consequences. After the Permo-Triassic massacre our ancestral line succesively developed into anapsids (turtles), synapsids (mammals) and diapsids (everything else). Each of these is a higher stage of evolution, with a basic physiology better adapted to life on land. By some freak chance, a single lowly synapsid got through the 190-my extinction at the end of theTriassic, along with a variety of diapsids.on their way to crocodiles, lizards, and all kinds of dinosaurs. This primitive synapsid line, which seems to have favored bugs and fruit, quietly developed warm-blooded circulation, milk glands and eventually a uterus. And when the grand house of the dinosaurs came crashing down, guess who was hiding under the ruins? &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Our final lucky break came around 48 million years ago, when a solitary species of primitive primate got stranded on the (then) island of Africa, never to see its many relatives in North America and Asia again. Bingo, Columbia River basalts. This was not one of the great extinction events, but it was enough to kill every primate in the world – except for that forgotten waif in Africa. Now, many lemurs and lorises and monkeys and apes later, here we are, self-importantly going on about our human-caused extinction event. If we knew how far we have yet to go, perhaps we just might give it up. &lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-4176788718720353830?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/4176788718720353830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=4176788718720353830" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4176788718720353830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4176788718720353830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/lGQ3adNcCSg/mass-extinctions-basalt-flows-and-us.html" title="Mass extinctions, basalt flows, and us" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/07/mass-extinctions-basalt-flows-and-us.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YGQ3s8eSp7ImA9WxFaE00.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6958077508644686957</id><published>2010-07-16T10:25:00.000-07:00</published><updated>2010-07-16T10:25:22.571-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-16T10:25:22.571-07:00</app:edited><title>Apache Cassandra: materialized queries (one table per query please)</title><content type="html">&lt;a href="http://maxgrinev.com/"&gt;Max Grinev&lt;/a&gt; has done an excellent job giving a &lt;a href="http://maxgrinev.com/2010/07/09/a-quick-introduction-to-the-cassandra-data-model/"&gt;quick overview of Cassandra here&lt;/a&gt;, and then has a followup blog post that discusses &lt;a href="http://maxgrinev.com/2010/07/12/do-you-really-need-sql-to-do-it-all-in-cassandra/"&gt;how to accomplish various SQL-style operations such as select, join, and group by&lt;/a&gt;. &amp;nbsp;Very helpful, thanks, Max!&lt;br /&gt;
&lt;br /&gt;
Note that in every example, you don't write a query against the existing data. &amp;nbsp;Instead, you create a new column family to represent the query. &amp;nbsp;It's as if you write your query as a data structure. &amp;nbsp; It's basically a &lt;a href="http://en.wikipedia.org/wiki/Materialized_view"&gt;materialized view&lt;/a&gt;. &amp;nbsp; Max argues that this is OK for most applications: "However, typically in Web applications and enterprise OLTP applications queries are well known in advance, few in number, and do not change often." &lt;br /&gt;
&lt;br /&gt;
OK, fair enough, but it is definitely something to keep in mind: if you want to support ad-hoc queries in your application, then Cassandra is probably not the right choice.&lt;br /&gt;
&lt;br /&gt;
It also looks like it is your job as a user of Cassandra to update all your various views when data changes. &amp;nbsp;&amp;nbsp;I agree with Maxim that &lt;a href="http://en.wikipedia.org/wiki/Denormalization"&gt;denormalization&lt;/a&gt; and "push on change" rather than "pull on demand" is probably the&lt;a href="http://highscalability.com/blog/2009/10/13/why-are-facebook-digg-and-twitter-so-hard-to-scale.html"&gt;&amp;nbsp;right approach for highly intertwined systems like Twitter and Facebook&lt;/a&gt;. &amp;nbsp;But it would be nice if the system helped you maintain consistency across all these denormalized copies.&lt;br /&gt;
&lt;br /&gt;
For example, &lt;a href="http://couchdb.apache.org/"&gt;CouchDB &lt;/a&gt;has a very similar model of materialized views, but their views are defined as map/reduce operations on the primary document(s), and CouchDB takes care of keeping the views in sync as you update your data. &amp;nbsp;That saves me a lot of time and worry. &lt;br /&gt;
&lt;br /&gt;
Perhaps something like that exists in Cassandra and I don't know about it?&lt;br /&gt;
&lt;br /&gt;
Anyway, I've been very interested in Cassandra, and Max's blogs were quite helpful in &amp;nbsp;helping me get my head around it. &amp;nbsp;I highly recommend reading them if you'd like to learn more about Cassandra, or what a distributed column-oriented key/value store looks like (Cassandra is modeled after Google's &lt;a href="http://en.wikipedia.org/wiki/BigTable"&gt;BigTable&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6958077508644686957?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6958077508644686957/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=6958077508644686957" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6958077508644686957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6958077508644686957?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/EcGl1TjpgrA/apache-cassandra-materialized-queries.html" title="Apache Cassandra: materialized queries (one table per query please)" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/07/apache-cassandra-materialized-queries.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQn8yfyp7ImA9WxFQGEs.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-307513019269829798</id><published>2010-05-14T13:11:00.000-07:00</published><updated>2010-05-14T13:21:43.197-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-14T13:21:43.197-07:00</app:edited><title>Facebook's deal with the Devil</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://thumbs.dreamstime.com/thumb_383/123885678235vtW8.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 303px;" src="http://thumbs.dreamstime.com/thumb_383/123885678235vtW8.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I wanted to share what I thought was a &lt;a href="http://www.zephoria.org/thoughts/archives/2010/05/14/facebook-and-radical-transparency-a-rant.html"&gt;very enlightening blog post by Danah Boyd &lt;/a&gt;on the recent ruckus around Facebook and her issues with how Facebook is handling all this.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think she particularly nailed what's bothering me here:&lt;/div&gt;&lt;blockquote&gt; I’d be a whole lot less pissed off if people had to opt-in in December. Or if they could’ve retained the right to keep their friends lists, affiliations, interests, likes, and other content as private as they had when they first opted into Facebook. Slowly disintegrating the social context without choice isn’t consent; it’s trickery.&lt;/blockquote&gt;It's clear that Facebook really really &lt;b&gt;really&lt;/b&gt; wants to make all the content people are posting as public as possible, because they are not making money on ads.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can just see all these marketers from Big Companies in Big Conversations with Facebook execs in closed rooms waving wads of cash at them saying "Boy do we want this content!  People are telling us exactly what they like and what they care about!  Just make this content available, and we will give you so much money you'll be swimming in it."  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the other room are the board members saying "so, when are you going to monetize this big thing you've got going?"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, you take the Devil's deal, what's a little privacy, I mean, people want to be transparent anyway.  Rationalize and justify, I know that path.  So, hoping nobody's watching, and putting on a show of "choice" and "options", you open up the content, and the guys with the money cheer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If it were me, and I were at Facebook, I'd have a bad taste in my mouth right now...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-307513019269829798?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/307513019269829798/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=307513019269829798" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/307513019269829798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/307513019269829798?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/YfbTthHeB0Q/facebooks-deal-with-devil.html" title="Facebook's deal with the Devil" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/05/facebooks-deal-with-devil.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEARng_fyp7ImA9WxFQEkw.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8772841733695935652</id><published>2010-05-06T23:08:00.000-07:00</published><updated>2010-05-06T23:10:47.647-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-06T23:10:47.647-07:00</app:edited><title>Time to tie my camel to the tree</title><content type="html">I like to not worry too much about security, and try to feel relaxed about living my life on the planet.  But I also know that you need to take necessary care.  As the old saying goes "trust in God, but tie your camel to the tree."&lt;br /&gt;&lt;br /&gt;I read today in the New York Times that &lt;a href="http://www.nytimes.com/2010/05/03/technology/internet/03facebook.html"&gt;hackers have made 1.5 &lt;b&gt;million&lt;/b&gt; Facebook user credentials for sale&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I also got a phone call today from someone saying they were extending my Popular Science subscription, and confirmed my address and name.  Then they said if I could just give them my credit card number they could go ahead and extend my subscription.&lt;br /&gt;&lt;br /&gt;When I refused, they were OK, but asked for my email so they could send me an email confirmation.  When I refused again, they wanted to have me talk to their "manager" and I just hung up.  This is the second time I've gotten a call like that.  This isn't just random identity theft - this is a &lt;b&gt;business&lt;/b&gt;.  And I suspect a very profitable one.&lt;br /&gt;&lt;br /&gt;I also was reading about online payment services, and how PayPal is targetted for attacks on a regular basis.&lt;br /&gt;&lt;br /&gt;And I have a feeling it's only going to get worse - the hackers are on the attack, and from what I know about online sites, they &lt;b&gt;try&lt;/b&gt; to be secure (maybe) but with dynamic client-side code and phishing and Trojan horses and worms and insider attacks and just dumb human error, the weaknesses will be found and taken advantage of, more and more and more.&lt;br /&gt;&lt;br /&gt;I can't protect myself from all of this, but I do need to take necessary precautions.   We already have a shredder and shred anything that has our personal information on it.  But I've been lazy about my passwords. I've kept the same one for years; it's short, and it's everywhere.  Well, that changed tonight.  The key passwords have all been changed, and I'll do more as I bump into them.&lt;br /&gt;&lt;br /&gt;Symantec has me change my password every three months.  I'll be using that as a trigger for me to change all my online passwords.&lt;br /&gt;&lt;br /&gt;I've had enough, it's time to tie my camel to the tree.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8772841733695935652?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8772841733695935652/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=8772841733695935652" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8772841733695935652?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8772841733695935652?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/34VXgIW2FDA/time-to-tie-my-camel-to-tree.html" title="Time to tie my camel to the tree" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/05/time-to-tie-my-camel-to-tree.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4NRnk5eSp7ImA9WxFQEEo.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-3455327493105778833</id><published>2010-05-05T09:46:00.000-07:00</published><updated>2010-05-05T09:46:37.721-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-05T09:46:37.721-07:00</app:edited><title>Diagrammr - very cool diagramming tool</title><content type="html">I just want to do a shout out for a very nice diagramming tool I bumped into via a referral from my Twitter stream.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.diagrammr.com/"&gt;http://www.diagrammr.com&lt;/a&gt;&amp;nbsp;lets you write simple English phrases that describe either relationships between entities/objects/concepts or interactions between them. &amp;nbsp;For each sentence, the tool creates two nodes (subject and object) and a path between them (either a relationship or an interaction). &amp;nbsp;You can easily share this, collaborate, or embed it, as below (just right-click on diagram and copy the image URL, and paste it into an &lt;i&gt;img&lt;/i&gt;&amp;nbsp;tag)&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://www.diagrammr.com/png?zx=0.19363206066191196&amp;amp;key=d6gBWWiGfhX" /&gt;&lt;br /&gt;
&lt;br /&gt;
I can imagine even doing this live during a design walkthrough or presentation, to help make the learning more dynamic. &lt;br /&gt;
&lt;br /&gt;
The web site doesn't say who the author is, but kudos to whoever they are, very creative and very simple. &amp;nbsp;Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-3455327493105778833?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/3455327493105778833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=3455327493105778833" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/3455327493105778833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/3455327493105778833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/LuCT5NmKoZU/diagrammr-very-cool-diagramming-tool.html" title="Diagrammr - very cool diagramming tool" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/05/diagrammr-very-cool-diagramming-tool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIGR3oyeyp7ImA9WxFQEEo.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6604108502535176677</id><published>2010-05-05T09:38:00.000-07:00</published><updated>2010-05-05T09:38:46.493-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-05T09:38:46.493-07:00</app:edited><title>Bay Area casual carpool - an experiment in market dynamics</title><content type="html">For the last year I have been using the "casual carpool" that has evolved on its own here in the Bay Area.  It costs $4.00 to cross the bridge, and $3.50 to take BART into San Francisco.  The bridge is also always jammed.&lt;br /&gt;
&lt;br /&gt;
However, if you have a carpool of three people, you get a special lane through the bridge tolls, and there is no charge.  As a natural law of the free market, the casual carpool developed.  There are agreed upon locations, and there is a line of people and a line of cars.  Two people get into a car, and together you go across the bridge for no charge and faster than both BART or driving alone.  Perfect!&lt;br /&gt;
&lt;br /&gt;
Now CalTrans has thrown a wrench into a beautifully running machine: as of June they will be charging $2.50 for carpools to go across the bridge.  Ugh.  They could at least have made it $3 so it would be easy to split amongst three people.&lt;br /&gt;
&lt;br /&gt;
So what happens?  Do people stop doing casual carpool?  If not, do riders pay, or does the driver eat the cost?  Do we have competition in the lines, with people jockeying for the front of the line if they're willing to pay more to get into the car?  What happens when there is a line of cars and no people?  Do cars willing to take riders for no charge get precedence?  Do they stick a sign out of their window saying "will take riders no charge?"  Does each car have a sign on the window saying how much you have to pay to ride?  What happens if one rider pays and the next rider to get in refuses to pay?&lt;br /&gt;
&lt;br /&gt;
As a driver, I think I would just take whatever people are willing to pay me.  &lt;br /&gt;
&lt;br /&gt;
As a rider, I would pay what I feel is my fair share and also an amount to maintain good will - I value good will a lot when riding in someone's car :).  So I'll probably be prepared to pay $1, regardless of what the other rider pays.  I am not interested in haggling with either the driver or the other rider - this just creates unnecessary tension, which is not worth it for me in my daily commute.&lt;br /&gt;
&lt;br /&gt;
How this will ultimately evolve, I'm not sure, but it will be a very interesting experiment in market forces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6604108502535176677?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6604108502535176677/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=6604108502535176677" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6604108502535176677?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6604108502535176677?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/h6R70Wf6bGA/bay-area-casual-carpool-experiment-in.html" title="Bay Area casual carpool - an experiment in market dynamics" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/05/bay-area-casual-carpool-experiment-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEENQXY8fyp7ImA9WxFSFE4.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-7113741711668508085</id><published>2010-04-16T09:31:00.000-07:00</published><updated>2010-04-16T09:51:30.877-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-16T09:51:30.877-07:00</app:edited><title>In code, a rose by any other name smells less sweet</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://hs.riverdale.k12.or.us/~pnelson/photo/gallery/brittany/mid_rose_drop%20copy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://hs.riverdale.k12.or.us/~pnelson/photo/gallery/brittany/mid_rose_drop%20copy.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I regularly get jibed by coworkers for having naming discussions. When my daughter was hanging out at the office the other day and sitting in the back of one of my meetings, she snorted trying not to laugh as we kept going back and forth on how to name something.   Just yesterday someone forwarded me Juliet's quote "What's in a name?  A rose by any other name would smell as sweet."  Very true, very true.&lt;br /&gt;&lt;br /&gt;But in code, there is a lot in a name.  A different name does not smell as sweet.&lt;br /&gt;&lt;br /&gt;The name you give something has a lot of power.  In many spiritual traditions, great importance is given to words.  &lt;a href="http://en.wikipedia.org/wiki/Kashmir_Shaivism"&gt;Kashmir Shaivism&lt;/a&gt; holds that the world is created through the power inherent in syllables and words - &lt;i&gt;matrika shakti&lt;/i&gt;.  Syllables actually concentrate the universal energy and create form, like vibrations of sound forming shapes in water or grains of sand.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GtiSCBXbHAg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/GtiSCBXbHAg&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I find this to be particularly true in code.  The name you give something gives it a certain power.  If you name it well, the role and intent of the class becomes crystal clear.  It helps you refine what the class is doing, and strip away what it shouldn't be doing.  If it is poorly named, often the code in the class is unclear in its design and role as well.&lt;br /&gt;&lt;br /&gt;A great example of fuzzy naming is the famous "Utils" class.  You might as well call this class "DumpingGround" because that's what it becomes.  Same regularly goes for FooManager, FooHelper, and so on.  It doesn't give any real idea what it's for, so it becomes a "whatever" class.  Hm, I have a method I want to write, and I don't really know how it fits into the overall design, but hey, here is this Utils class, I'll just use that!&lt;br /&gt;&lt;br /&gt;Names also become short-hand for well understood design patterns.  If you name something FooBuilder, FooProxy, FooObserver, and so on, then readers expect it to generally follow the pattern.  Misusing these well-understood suffixes is asking for trouble.&lt;br /&gt;&lt;br /&gt;I often find myself renaming classes over and over again as I work on a piece of code.  Each time it helps me refine my understanding. It's like the class and its role in life is slowly taking form out of the primordial ooze, until it stands there clear and strong, with a well-defined shape and purpose.&lt;br /&gt;&lt;br /&gt;So laugh and snort all you want, ye plebians.  Shakespeare wrote beautiful, beautiful prose, and I am sure he took great care to find the right words.  He even invented many words we continue to use to this day.  To me writing good, clear code is like the craft of prose - there is a lot to a name, and finding the right name is both an effort and a joy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-7113741711668508085?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/7113741711668508085/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=7113741711668508085" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7113741711668508085?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7113741711668508085?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/UAlcsIuwtYw/in-code-rose-by-any-other-name-smells.html" title="In code, a rose by any other name smells less sweet" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/04/in-code-rose-by-any-other-name-smells.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUCQH0yeSp7ImA9WxFTGEk.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-7738592705132285548</id><published>2010-04-09T09:26:00.000-07:00</published><updated>2010-04-09T13:01:01.391-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-09T13:01:01.391-07:00</app:edited><title>Deploying a  Google Web Toolkit app to CouchDB using couchapp</title><content type="html">I've been working on a side project using &lt;a href="http://code.google.com/webtoolkit/"&gt;Google Web Toolkit&lt;/a&gt; (GWT), and I'm using &lt;a href="http://couchdb.apache.org/"&gt;CouchDB &lt;/a&gt;as the backend store.&lt;br /&gt;&lt;br /&gt;There is a project called &lt;a href="http://github.com/couchapp/couchapp"&gt;couchapp&lt;/a&gt; which makes it very easy to write an HTML/Javascript-only application (you know, the new cewl way to build apps), and store it directly in CouchDB.&lt;br /&gt;&lt;br /&gt;Huh? What are the benefits of doing this?&lt;br /&gt;&lt;br /&gt;Well, offline support is the big one for me.  If I install a CouchDB instance on my local machine, and then set up replication, my app &lt;i&gt;and its data &lt;/i&gt;can automatically be replicated to my local CouchDB.  I lose my connection, that's fine, everything I need is there.  I get back online, my changes are automatically replicated back to my CouchDB in the cloud.&lt;br /&gt;&lt;br /&gt;It also makes it easy to share apps - just publish to a common 'app hub' and anyone who wants to can subscribe and get the app.  If you're feeling kumbaya, your app can be read/write, so that app users not only modify the content, they can also modify your app itself and replicate your changes back up.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One more thing: with my app deployed to CouchDB, I don't need to write server-side code.  None.  No PHP, servlets, JAXB, XML, MySQL, blah blah blah.  I can directly access CouchDB (and other web services like Facebook, Twitter, etc.) from my client-side JavaScript.  To me that's a much simpler, cleaner environment.&lt;br /&gt;&lt;br /&gt;But the thing is, couchapp by itself just supports HTML, JavaScript, and attachments.  After much soul searching and feeling un-hip, I have finally come to terms with the fact that I am comfortable and happy in Java.  I could learn JavaScript, but I think and breathe Java, it's what comes naturally to my fingers.  But Java isn't native to the browser, and that's not the way the wind is blowing.  So recently I took another look at Google Web Toolkit, and I liked what I found:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dynamic client-side browser-native apps without having to write a lot of HTML/Javascript.  Yeah, I like that.&lt;/li&gt;&lt;li&gt;Work in Eclipse, a comfortable place for me to be&lt;/li&gt;&lt;li&gt;Excellent integration with CSS, allowing easy styling of widgets by applying style settings your GWT Java widgets&lt;/li&gt;&lt;li&gt;Static typing.  I actually like that, I have much more confidence that when I run it works.&lt;/li&gt;&lt;li&gt;Very easy code/run/debug cycle, in Eclipse&lt;/li&gt;&lt;li&gt;No need to deploy, just refresh your browser and your new changes are in&lt;/li&gt;&lt;li&gt;Excellent support for AJAX-style HTTP requests&lt;/li&gt;&lt;li&gt;Lots of widgets, and some very cool libraries, including a visualization library&lt;/li&gt;&lt;li&gt;Open source under a flexible license&lt;/li&gt;&lt;li&gt;Strong community&lt;/li&gt;&lt;/ul&gt;Basically, in the GWT world, JavaScript is like your bytecode - you really don't need to look at it and in general you don't care.  As with 'asm' in C, you can 'drop into JavaScript' if you need to, but really that can be kept to a minimum.  I &lt;b&gt;highly&lt;/b&gt; recommend doing the tutorial, it's one of the best I've worked with in a while.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div&gt;So, what do couchapp and GWT have to do with each other?&lt;br /&gt;&lt;br /&gt;Well, it turns out it's pretty darn easy to drop a GWT app into the couchapp framework, press 'couchapp push', and voila, your GWT app is deployed to a CouchDB instance.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://davidvc.cloudant.com:5984/stockticker/_design/stockticker/StockWatcher.html"&gt;Take a look at the GWT StockWatcher tutorial app&lt;/a&gt; running out of CouchDB on &lt;a href="http://www.cloudant.com/"&gt;cloudant&lt;/a&gt;.  Add some pretend symbols and it simulates random fluctuations in stock price.  This was all written in Java, compiled down to JavaScript, and then deployed to a CouchDB instance on cloudant with a simple one line command...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, here's all you need to do:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://github.com/couchapp/couchapp/downloads"&gt;Get couchapp&lt;/a&gt; (on Linux or Mac you should be able to do &lt;i&gt;sudo easy_install -U couchapp&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;Run &lt;i&gt;couchapp generate myapp&lt;/i&gt; to generate a directory structure for your app. &lt;/li&gt;&lt;li&gt;Remove everything under myapp/_attachments.  You can keep the views if you want, or remove them.&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/webtoolkit/download.html"&gt;Get GWT&lt;/a&gt; (preferably the plugin for Eclipse)&lt;/li&gt;&lt;li&gt;Create a GWT project&lt;/li&gt;&lt;li&gt;When you're done testing/debugging locally, compile your GWT project for deployment&lt;/li&gt;&lt;li&gt;Copy everything under the 'war' directory &lt;b&gt;except&lt;/b&gt; WEB-INF to the &lt;i&gt;_attachments&lt;/i&gt; directory of your couchapp application directory&lt;/li&gt;&lt;li&gt;Run &lt;i&gt;couchapp push&lt;/i&gt; (set up your .couchapprc first with the right settings)&lt;/li&gt;&lt;li&gt;Go to the URL provided by couchapp push and you should see your app running beautifully&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-7738592705132285548?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/7738592705132285548/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=7738592705132285548" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7738592705132285548?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7738592705132285548?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/M22S8nfrZpk/deploying-google-web-toolkit-app-to.html" title="Deploying a  Google Web Toolkit app to CouchDB using couchapp" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/04/deploying-google-web-toolkit-app-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4ESHg8eCp7ImA9WxFTEEw.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8741421314173987957</id><published>2010-03-30T22:21:00.000-07:00</published><updated>2010-03-30T22:21:49.670-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-30T22:21:49.670-07:00</app:edited><title>A girl and a fish</title><content type="html">Tears in eyes laughing.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://hyperboleandahalf.blogspot.com/2010/03/how-fish-almost-destroyed-my-childhood.html"&gt; http://hyperboleandahalf.blogspot.com/2010/03/how-fish-almost-destroyed-my-childhood.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I had a very similar going fishing with my Dad, where I caught a fish and couldn't stand to see it suffer.&amp;nbsp; Dad told me to whack it with a stick - whack/flop/whack/flop - OMG I am *never* going fishing again.&amp;nbsp; Horrible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8741421314173987957?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8741421314173987957/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=8741421314173987957" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8741421314173987957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8741421314173987957?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/Y3hbbFApiG0/girl-and-fish.html" title="A girl and a fish" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/03/girl-and-fish.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIHR3k5eip7ImA9WxBaGUU.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-3644078847971369119</id><published>2010-03-30T15:35:00.000-07:00</published><updated>2010-03-30T15:35:36.722-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-30T15:35:36.722-07:00</app:edited><title>WTF? - SQLite files as a network messaging format</title><content type="html">A colleague told me about an idea his team is considering that at first had me going ewww!&lt;br /&gt;
&lt;br /&gt;
They are thinking of replacing the use of Google protocol buffers with a SQLite file for their network communication format.&lt;br /&gt;
&lt;br /&gt;
Huh? &amp;nbsp;It didn't make sense at first. &amp;nbsp;But then I chewed on it some more.&lt;br /&gt;
&lt;br /&gt;
Their protocol is primarily about sending one or more queries, and getting back potentially quite large tabular data sets as a result. &amp;nbsp;What better format than a compressed relational data format?&lt;br /&gt;
&lt;br /&gt;
The SQLite database format is in the public domain. &amp;nbsp;It is self-describing. &amp;nbsp;It is compressed, saving network overhead. &amp;nbsp;The format is portable across platforms. &amp;nbsp;It is tabular in nature. &amp;nbsp;You can use the SQLite APIs to to inspect, slice and dice the results, both for processing as well as for troubleshooting/debugging. &amp;nbsp;You can also use the SQLite API (e.g. SQL INSERT) to incrementally build up a request or response before sending it over the network.&lt;br /&gt;
&lt;br /&gt;
SQLite is embedded, so you don't have to deal with connecting to the server and yada yada, and it's quite cheap to create new databases (each request and response is a new SQLite database).&lt;br /&gt;
&lt;br /&gt;
The more I think about it, the more it seems like a very compelling approach... &amp;nbsp;It goes against everything I've learned about network protocols, but for their use case, it actually makes a lot of sense.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-3644078847971369119?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/3644078847971369119/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=3644078847971369119" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/3644078847971369119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/3644078847971369119?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/pEhGWB4uNRM/wtf-sqlite-files-as-network-messaging.html" title="WTF? - SQLite files as a network messaging format" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/03/wtf-sqlite-files-as-network-messaging.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGQXc8eCp7ImA9WxBaFkw.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-5557757900542971389</id><published>2010-03-26T08:57:00.000-07:00</published><updated>2010-03-26T08:57:00.970-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-26T08:57:00.970-07:00</app:edited><title>Error message 101 - help me fix the problem - Facebook FAIL</title><content type="html">Facebook has a new feature that lets you reply to a comment by email. &amp;nbsp;Very nice!&lt;br /&gt;
&lt;br /&gt;
But if for some reason this doesn't work, here's the message you get by email:&lt;br /&gt;
&lt;blockquote&gt;Sorry, your comment could not be added at this time. Please try again later.&lt;br /&gt;
&lt;br /&gt;
Please try submitting this comment through the Facebook website instead.&lt;br /&gt;
&lt;br /&gt;
Thanks,&lt;br /&gt;
The Facebook Team&lt;/blockquote&gt;OK, what comment? &amp;nbsp;For what status update?  You could provide me a link to the status update and a copy of the comment I tried to send.&lt;br /&gt;
&lt;br /&gt;
So instead I have to do all this work of tracking down the original email I sent, if I still have it, and then go to the status page and copy and paste it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-5557757900542971389?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/5557757900542971389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=5557757900542971389" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/5557757900542971389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/5557757900542971389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/yvRneOo6TW4/error-message-101-help-me-fix-problem.html" title="Error message 101 - help me fix the problem - Facebook FAIL" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/03/error-message-101-help-me-fix-problem.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFRXw5eCp7ImA9WxBaFEg.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-4353252735747623321</id><published>2010-03-24T10:10:00.000-07:00</published><updated>2010-03-24T10:10:14.220-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-24T10:10:14.220-07:00</app:edited><title>Design principle: question your assumptions</title><content type="html">A lot about good software engineering and design is about listening - listening to that little voice in your head that's telling you you're pushing it, forcing a design or an implementation onto a problem that's not a good fit.&lt;br /&gt;
&lt;br /&gt;
It's very hard for me to listen to this voice when I've got a particular solution in mind, and I'm plugging away implementing this solution, and if I can just get past this next hurdle, it will work, dammit!&lt;br /&gt;
&lt;br /&gt;
Yesterday I finally noticed I was banging my head against a problem. &amp;nbsp;I thought about what the struggle was, and I realized that most of my pain was in trying to coordinate two separate threads of control through the system - one doing updates and one posting those updates to listeners.&lt;br /&gt;
&lt;br /&gt;
So I decided to apply a common principle for me: &lt;b&gt;question your assumptions&lt;/b&gt;. &amp;nbsp;Did they really have to be coordinated? &amp;nbsp;I&amp;nbsp;contacted some other members of the team and our product manager and asked what they thought. &amp;nbsp;It turns out there was much more flexibility than I thought was possible. &amp;nbsp;If I tried to stop having absolute control, as it were, relaxed a bit, and let things be a little loosy-goosy, then my overall design became much less coupled and thus much simpler. &amp;nbsp;Ahhh....&lt;br /&gt;
&lt;br /&gt;
It reminds me of the &lt;a href="http://davidvancouvering.blogspot.com/2007/12/eventual-consistency-following-middle.html"&gt;beauty of eventual consistency&lt;/a&gt; - if you let go some of your tight constraints, it's amazing how it opens things up and brings new possibilities into the solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-4353252735747623321?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/4353252735747623321/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=4353252735747623321" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4353252735747623321?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4353252735747623321?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/doN0IhpwfNA/design-principle-question-your.html" title="Design principle: question your assumptions" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/03/design-principle-question-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8BRXc9eSp7ImA9WxBaEk4.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1050650617131531713</id><published>2010-03-21T21:36:00.000-07:00</published><updated>2010-03-21T21:40:54.961-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T21:40:54.961-07:00</app:edited><title>Armageddon - to a doctor!</title><content type="html">&lt;a href="http://congress.blogs.foxnews.com/2010/03/20/boehner-its-armageddon-health-care-bill-will-ruin-our-country/"&gt;According to House Minority Leader John Boehner&lt;/a&gt;, Armageddon is here because the healthcare bill passed.&lt;br /&gt;&lt;br /&gt;I suspect for the millions of uninsured or underinsured, that's true.  They're all saying "Armageddon to a doctor, finally!"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1050650617131531713?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1050650617131531713/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=1050650617131531713" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1050650617131531713?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1050650617131531713?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/8OeIGVaA2YY/armageddon-to-doctor.html" title="Armageddon - to a doctor!" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/03/armageddon-to-doctor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMBQnw7eyp7ImA9WxBaEk4.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1705440643790124292</id><published>2010-03-21T21:34:00.000-07:00</published><updated>2010-03-21T21:34:13.203-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-21T21:34:13.203-07:00</app:edited><title>Pepper in your water?  I'm sorry...</title><content type="html">Michael loves mechanical things. &amp;nbsp;So it's no surprise he loves our big fancy pepper shaker that we bring out to the dinner table sometimes.&lt;br /&gt;
&lt;br /&gt;
Tonight when he saw it on the table he asked Linda "can I put pepper in your water?" &amp;nbsp;She said no.&lt;br /&gt;
&lt;br /&gt;
He asked me next. &amp;nbsp;I said "I don't have any water." (I don't usually drink water with my meals).&lt;br /&gt;
&lt;br /&gt;
"Why not?"&lt;br /&gt;
&lt;br /&gt;
"Because I don't want anyone to put pepper in it."&lt;br /&gt;
&lt;br /&gt;
&lt;hr&gt;&lt;br /&gt;
Fade to fifteen minutes later. &amp;nbsp;Linda looks at her glass of water, and there are little black granules floating in it. She says "Michael, did you put pepper in my water?"&lt;br /&gt;
&lt;br /&gt;
He says, with great sincerity, "I'm sorry".&lt;br /&gt;
&lt;br /&gt;
We all laugh.&lt;br /&gt;
&lt;br /&gt;
He says, "It was an accident."&lt;br /&gt;
&lt;br /&gt;
The little rascal.&lt;br /&gt;
&lt;br /&gt;
The amazing thing was there were four others sitting at the table, and none of us saw him do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1705440643790124292?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1705440643790124292/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=1705440643790124292" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1705440643790124292?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1705440643790124292?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/wKqyI5smqlI/pepper-in-your-water-im-sorry.html" title="Pepper in your water?  I'm sorry..." /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/03/pepper-in-your-water-im-sorry.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUBQHs-fip7ImA9WxBbGU4.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8264584503322732454</id><published>2010-03-18T10:06:00.000-07:00</published><updated>2010-03-18T10:10:51.556-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-18T10:10:51.556-07:00</app:edited><title>Zone of Big Things</title><content type="html">&lt;a href="http://twitter.com/ntoll/status/10679652219"&gt;Via @ntol&lt;/a&gt;l, I really liked &lt;a href="http://www.knowing.net/index.php/2010/03/16/project-managers-vs-developers-view/"&gt;this graphic&lt;/a&gt; comparing the Project Manager's view vs. the Developer's View of various technologies. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;CouchDB - you're up there in the No-Fly Zone! Cassandra and Redis are probably off the map...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.knowing.net/wp-content/uploads/2010/03/zones_of_tech.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 650px; height: 665px;" src="http://www.knowing.net/wp-content/uploads/2010/03/zones_of_tech.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8264584503322732454?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="related" href="http://www.knowing.net/index.php/2010/03/16/project-managers-vs-developers-view/" title="Zone of Big Things" /><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8264584503322732454/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=15929719&amp;postID=8264584503322732454" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8264584503322732454?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8264584503322732454?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/uZf8FLlKT3E/zone-of-big-things.html" title="Zone of Big Things" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="28" height="32" src="http://3.bp.blogspot.com/_f6ZqotKiPao/SX4FDpi8nFI/AAAAAAAAAMI/Brun7CPesoQ/S220/mugshot.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2010/03/zone-of-big-things.html</feedburner:origLink></entry></feed>

