<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUABSHk_eip7ImA9WxBSEUw.&quot;"><id>tag:blogger.com,1999:blog-15929719</id><updated>2009-12-17T21:22:39.742-08:00</updated><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="hub" href="http://pubsubhubbub.appspot.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></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>625</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" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CUEASHs5cCp7ImA9WxBTGUU.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6872319668965181103</id><published>2009-12-16T09:14:00.000-08:00</published><updated>2009-12-16T09:14:09.528-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-16T09:14:09.528-08:00</app:edited><title>Steampunk LCD - classy and cool</title><content type="html">At lunch yesterday a colleague from Sun introduced me to the term "steampunk."&amp;nbsp; Steam what?&amp;nbsp; &lt;a href="http://en.wikipedia.org/wiki/Steampunk"&gt;Wikipedia showed me I was way behind the times&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I was thinking back to movies and books I've read, realizing they were "steampunk" and I didn't even know it, like &lt;a href="http://www.amazon.com/Golden-Compass-Dark-Materials-Book/dp/0679879242"&gt;The Golden Compass&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.nipissingu.ca/department/history/MUHLBERGER/uploaded_images/golden-compass-704987.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://www.nipissingu.ca/department/history/MUHLBERGER/uploaded_images/golden-compass-704987.png" width="291" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
This same friend today pointed me to this awesome page where &lt;a href="http://steampunkworkshop.com/lcd.shtml"&gt;someone shows you step by step how they souped up their LCD monitor to be a steampunk monitor&lt;/a&gt;.&amp;nbsp; My goodness, look at this thing, that is just cool and classy.&amp;nbsp; That keyboard is pretty cool too, although I'm not sure it's practical (but probably good for preventing RSI).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://steampunkworkshop.com/images/M19.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://steampunkworkshop.com/images/M19.jpg" width="640" /&gt;&lt;/a&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-6872319668965181103?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6872319668965181103/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=6872319668965181103" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6872319668965181103?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6872319668965181103?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/vt7R0jN4dH8/steampunk-lcd-classy-and-cool.html" title="Steampunk LCD - classy and cool" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/12/steampunk-lcd-classy-and-cool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ICSX06eCp7ImA9WxBTEkQ.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-4379830486864104170</id><published>2009-12-08T10:06:00.000-08:00</published><updated>2009-12-08T10:06:08.310-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-08T10:06:08.310-08:00</app:edited><title>What wakes men up, what wakes women up</title><content type="html">From &lt;a href="http://www.themindlab.org/ourwork"&gt;MindLab&lt;/a&gt;, by way of the&lt;a href="http://parenting.blogs.nytimes.com/2009/12/08/why-mom-wakes-up-when-baby-cries/"&gt; New York Times&lt;/a&gt;.  Note the complete lack of "baby crying" from the men's top ten list :)&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Top 10 sounds most likely to wake women:&lt;br /&gt;
&lt;br /&gt;
* Baby crying&lt;br /&gt;
* Dripping tap&lt;br /&gt;
* Rowdiness outside&lt;br /&gt;
* Snoring&lt;br /&gt;
* Buzzing fly&lt;br /&gt;
* Drilling/workmen&lt;br /&gt;
* Sirens&lt;br /&gt;
* Car alarm&lt;br /&gt;
* Howling wind&lt;br /&gt;
* Noise from drains&lt;br /&gt;
&lt;br /&gt;
Top 10 sounds most likely to wake men:&lt;br /&gt;
&lt;br /&gt;
* Car alarm&lt;br /&gt;
* Howling wind&lt;br /&gt;
* Buzzing fly&lt;br /&gt;
* Snoring&lt;br /&gt;
* Noise from drains&lt;br /&gt;
* Crickets chirping&lt;br /&gt;
* Sirens&lt;br /&gt;
* Clock ticking&lt;br /&gt;
* Drilling/workmen&lt;br /&gt;
* Dripping tap&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Some things I would like to add to my list:&lt;br /&gt;
&lt;br /&gt;
* The sound of a mouse scratching in the drywall right behind my bed&lt;br /&gt;
* My wife throwing a pillow on my head (long story)&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;* Too much heat and still air (sadly, what wakes my wife up is too much cold and a draft)&lt;br /&gt;
&lt;/div&gt;* My iPhone buzzing under my pillow (well, that's on purpose, that's my alarm)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-4379830486864104170?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/4379830486864104170/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=4379830486864104170" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4379830486864104170?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4379830486864104170?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/i2NlXSEMAZM/what-wakes-men-up-what-wakes-women-up.html" title="What wakes men up, what wakes women up" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/12/what-wakes-men-up-what-wakes-women-up.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQBSHw6eCp7ImA9WxNaGUk.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8421718548099921300</id><published>2009-12-04T09:37:00.000-08:00</published><updated>2009-12-04T09:39:19.210-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-04T09:39:19.210-08:00</app:edited><title>Going Postel</title><content type="html">In our code base here, we have a utility class called Observable that makes it easy to apply the observer pattern to a class.&lt;br /&gt;
&lt;br /&gt;
I was using it, and in the process (having been bitten by this in NetBeans), I wrote a unit test to see what would happen if a user of this class added Observers and then dereferenced them without removing them.  I used a form of &lt;a href="http://blog.palantirtech.com/2007/11/06/writing-junit-tests-for-memory-leaks/"&gt;memory leak testing described here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Sure enough, there was a memory leak, because the underlying list of observers in the Observable class was still hanging on to the observers.&lt;br /&gt;
&lt;br /&gt;
So I modified the class to use WeakReference and ReferenceQueue to detect when an observer was no longer strongly referenced, and then removed "stale" references from the observer list.&lt;br /&gt;
&lt;br /&gt;
When I submitted the code for review, our technical director here, who had written the original Observable code, pushed back, saying it was adding unnecessary complexity to the class.  &lt;br /&gt;
&lt;br /&gt;
I argued that my experience with listeners/observers was that people often did not do the right thing and forgot to remove their observers, and Evil Things ensued.  &lt;br /&gt;
&lt;br /&gt;
He pointed me to this &lt;a href="http://www.joelonsoftware.com/items/2008/03/17.html"&gt;wonderful, hilarious, incredibly well-written article by Joel Spolsky &lt;/a&gt;about (among other things) Martian headsets, the problem of standards, and the disaster caused by Jon Postel's robustness principle ("“Be conservative in what you do, be liberal in what you accept from others.”)  I highly recommend you read it, but in case you don't, the point was, this principle encouraged sloppy and incorrect web pages to proliferate, which has put us into a terrible compatibility mess today.&lt;br /&gt;
&lt;br /&gt;
I argued that although this made a lot of sense, we weren't building a standard or pseudo-standard with lots of implementations, and look what Java did to ease programmer's lives by introducing garbage collection to the masses.  &lt;br /&gt;
&lt;br /&gt;
He made an interesting point that services should probably follow the robustness principle, but lower-level building blocks, where implementation is more transparent, should expect users to use them correctly and not adapt to incorrect use.&lt;br /&gt;
&lt;br /&gt;
I finally relented because (a) he's the boss, and at some point just to make progress you let the boss make the call :) and (b) I had to admit that we had never actually encountered this problem after being in the field for many years, so perhaps I was inventing a dragon where none existed.  &lt;br /&gt;
&lt;br /&gt;
It still makes me nervous.  I saw nasty problems with zombie observers in NetBeans.  But I'm willing to give it a shot.  In general I am happier with code that is simpler and cleaner and only complicate it if you have to.  I think we'll just have to see how it goes.  &lt;br /&gt;
&lt;br /&gt;
I'm curious, what do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8421718548099921300?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8421718548099921300/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=8421718548099921300" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8421718548099921300?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8421718548099921300?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/Z9FfAthEq3U/going-postel.html" title="Going Postel" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/12/going-postel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEFR3c4cCp7ImA9WxNbFks.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-3581232854434639890</id><published>2009-11-19T14:10:00.000-08:00</published><updated>2009-11-19T14:10:16.938-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-19T14:10:16.938-08:00</app:edited><title>Applying OO principles to interpersonal relationships</title><content type="html">I formally admit my geekiness by seeing the interesting similarities between good OO design and healthy interpersonal relationships.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Healthy boundaries&lt;/b&gt;&lt;br /&gt;
Objects need to collaborate and interact and depend on each other, but it's important to maintain healthy boundaries. &amp;nbsp;Other objects are not allowed to touch your private parts, and you get to say what is visible and what is not.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Multitasking&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Objects must know how to handle multiple requests at once while maintaining their state. &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;/span&gt;Grace Under Pressure&lt;/b&gt;&lt;br /&gt;
Well-designed objects need to be able to handle stress and overload. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Honoring your commitments&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Objects provide public interfaces, which provide an agreement as to what they are willing to do. &amp;nbsp;You can not change your agreements without talking about it first. &lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Interdependence&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;No object is an island unto itself; all objects have dependencies on other objects. &amp;nbsp;But an object should not be overly dependent on others, as this means it becomes fragile to changes made in the other object.&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;However, it's important to recognize there are some OO principles that should not be applied to relationships.&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Single Responsibility Principle&lt;/b&gt; - each object has one and only one responsibility in a system. &amp;nbsp;Shyeah, right.&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;b&gt;Pluggability &lt;/b&gt;- you should be able to replace one object with another that plays the same role. &amp;nbsp;No thanks.&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&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-3581232854434639890?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/3581232854434639890/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=3581232854434639890" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/3581232854434639890?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/3581232854434639890?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/tPxlbmZh1Xc/applying-oo-principles-to-interpersonal.html" title="Applying OO principles to interpersonal relationships" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/11/applying-oo-principles-to-interpersonal.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQHQncyeCp7ImA9WxNbEU4.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8421965757294379723</id><published>2009-11-13T10:35:00.000-08:00</published><updated>2009-11-13T10:35:33.990-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T10:35:33.990-08:00</app:edited><title>TDD taken to logical conclusion - write acceptance tests first</title><content type="html">I'm reading an interesting book called &lt;a href="http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1258136678&amp;amp;sr=8-1"&gt;Growing Object-Oriented Software Systems&lt;/a&gt; by Steve Freeman and Nat Price (based on &lt;a href="http://twitter.com/mfeathers/status/5539798044"&gt;@mfeathers recommendation&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
For the most part the first two chapters are nothing new for me (I'm expecting that will change in subsequent chapters), but there was one thing that made me stop and step back.&amp;nbsp; To me TDD has been about unit tests, but they strongly recommend something that I had never though of before but which made a lot of sense.&amp;nbsp; Not only do you write tests first at the unit level, &lt;b&gt;you also write your end-to-end acceptance test first&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
This gave me pause.&amp;nbsp; I am so used to QA reactively writing acceptance tests either after or in parallel with feature development.&amp;nbsp; But the more I thought of it, the more it made sense.&amp;nbsp; It defines a contract in black-and-white, and it also helps you focus on building &lt;i&gt;just as much as you need&lt;/i&gt; and no more.&lt;br /&gt;
&lt;br /&gt;
Of course the acceptance tests will break, and then you work towards making it pass by writing unit tests that break and making those unit tests work.&amp;nbsp; This really makes sense, and I'm going to try this with my next project.&amp;nbsp; I talked with our QA engineer, and he loves the idea and wants to give it a go.&lt;br /&gt;
&lt;br /&gt;
If it works, I'll talk to the rest of the team about it.&amp;nbsp; This is the kind of thing that turns standard development process on its head and has to be introduced very gently... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8421965757294379723?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8421965757294379723/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=8421965757294379723" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8421965757294379723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8421965757294379723?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/5A_aRoPnH3U/tdd-taken-to-logical-conclusion-write.html" title="TDD taken to logical conclusion - write acceptance tests first" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/11/tdd-taken-to-logical-conclusion-write.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAARn4_eip7ImA9WxNVF0g.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8711057345718951417</id><published>2009-10-28T12:05:00.000-07:00</published><updated>2009-10-28T12:05:47.042-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-28T12:05:47.042-07:00</app:edited><title>LinkedIn looking for top-notch database engineers</title><content type="html">I recently talked with Jean-Luc Valliant, the CTO at LinkedIn, about a new project they're starting.  Of course I was interested, but I'm here at Symantec now and jumping ship after just six months is just not how I do things.&lt;br /&gt;
&lt;br /&gt;
But I did say I'd put the word out.  They're looking for top-level database theorists - people who have a solid understanding of and have contributed to database research.  They're also looking for people with real-world experience building and deploying high performance, highly scalable database solutions, dealing with things like storage, caching, sharding/clustering, messaging and so on.&lt;br /&gt;
&lt;br /&gt;
If you're interested, contact Jean-Luc Valliant at LinkedIn.  If you have trouble reaching him, let me know at david at vancouvering dot com and I'll connect you up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8711057345718951417?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8711057345718951417/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=8711057345718951417" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8711057345718951417?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8711057345718951417?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/9UtIVBB5ktI/linkedin-looking-for-top-notch-database.html" title="LinkedIn looking for top-notch database engineers" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/linkedin-looking-for-top-notch-database.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcCSHg6cSp7ImA9WxNVFkU.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-626728152599808462</id><published>2009-10-27T16:27:00.000-07:00</published><updated>2009-10-27T16:27:49.619-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T16:27:49.619-07:00</app:edited><title>H1N1 Un-scare</title><content type="html">I really appreciated this newsletter from our pediatrician, a different perspective on it all, so I thought I'd pass it on...&lt;br /&gt;
&lt;br /&gt;
By the way, Michael and I already got it, and it looks like Linda is getting it too.&amp;nbsp; Not fun, it hangs on for a while, but no worse than any normal flu.&amp;nbsp; It was weird having cold-like symptoms and also feeling a bit flu-ish.&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Dear Families,&lt;br /&gt;
&lt;br /&gt;
Don't panic. Breathe. Wait, don't breathe, you might catch a germ!&amp;nbsp; Stay home! Wear masks!&amp;nbsp; Wash your hands constantly!&amp;nbsp; Remove your children from all public activities!&amp;nbsp; Stay home! Build a flu bunker!&lt;br /&gt;
&lt;br /&gt;
Well, you get the idea.&amp;nbsp; There has been a lot of media coverage of the flu this week.&amp;nbsp; Unfortunately, the media's job is to obtain viewers, not to give you balanced, non-sensational medical information.&amp;nbsp; We have been inundated with H1N1 flu questions this past week. Everyone seems much more nervous, due in large part to the escalating news coverage.&amp;nbsp; Everyone remembers the one exception covered on 60 minutes, but let's set some basic facts straight about this flu:&lt;br /&gt;
&lt;br /&gt;
1.&amp;nbsp; It is milder than typical winter influenza.&lt;br /&gt;
&lt;br /&gt;
2.&amp;nbsp; This is a very contagious strain, so it is likely that many members of our community will get it.&amp;nbsp; The incubation period is 3 days.&amp;nbsp; If you have no symptoms 5 days after exposure, you likely will not get the virus.&lt;br /&gt;
&lt;br /&gt;
3.&amp;nbsp;If you get the virus, 30% of you won't even get a fever and will think you have just a cold.&amp;nbsp; If you do get fever, it will typically be for 2-3 days.&amp;nbsp; A few children have had fever for as long as 5-7 days, but this is very unusual in our patients who are treating their flu with natural means.&lt;br /&gt;
&lt;br /&gt;
4.&amp;nbsp; Most of the people who have gotten very ill have significant pre-existing medical conditions like chronic lung disease.&amp;nbsp; In fact, proportionally, more "healthy" people get very ill with regular winter flu than have gotten very ill with this flu.&lt;br /&gt;
&lt;br /&gt;
5.&amp;nbsp; So far, our families that have had the flu have recovered quickly and easily, with little need for bloodwork, antibiotics, chest x-rays, etc.&amp;nbsp; Even children with a history of asthma or wheezing seem to be less likely to wheeze with this illness.&amp;nbsp; We are very happy overall with how our patients are weathering this storm.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
6.&amp;nbsp; If you have had a flu like illness (fever, muscle aches, headache the first day, with runny nose and cough symptoms) then you may have already had H1N1!&amp;nbsp; The CDC says unless you know for sure it was H1N1 you should still get the vaccine, but this is likely overkill and you probably don't need it.&lt;br /&gt;
&lt;br /&gt;
7.&amp;nbsp; Initially we were quite concerned about the H1N1 vaccine because it was going to contain a controversial new ingredient that had not been used in regular vaccines in the U.S.&amp;nbsp; Luckily, the CDC changed their mind and opted not to use this new adjuvant, squalene.&amp;nbsp; As far as we know, the vaccine that will be supplied to us from the government will be manufactured in a manner similar to our usual preservative-free flu vaccine.&amp;nbsp; So, we feel more comfortable with the idea of our patients receiving this vaccine.&lt;br /&gt;
&lt;br /&gt;
We will have a limited supply of preservative-free H1N1 vaccine.&amp;nbsp; We will prioritize vaccine for high-risk families such as those with pregnant women, or children of any age with a history of pneumonia or asthma.&amp;nbsp;&amp;nbsp; Once these families are covered, we can open up our supplies to any families that desire the vaccine.&amp;nbsp; Adults should get their vaccine from their primary care provider.&amp;nbsp; Pregnant women should be sure to ask for the preservative free version as it does not contain mercury.&lt;br /&gt;
&lt;br /&gt;
8.&amp;nbsp; Let us be clear, again, that we feel most people don't need this vaccine.&amp;nbsp; This is a mild flu and it may be better to get it now and have immunity for the next time it goes around, or next year's strain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-626728152599808462?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/626728152599808462/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=626728152599808462" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/626728152599808462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/626728152599808462?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/OHVpJHLk9x0/h1n1-un-scare.html" title="H1N1 Un-scare" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/h1n1-un-scare.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYEQnc5eCp7ImA9WxNVEEs.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6033129456809686024</id><published>2009-10-20T12:01:00.001-07:00</published><updated>2009-10-20T12:15:03.920-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-20T12:15:03.920-07:00</app:edited><title>Online equation solver</title><content type="html">I'm working with &lt;a href="http://www-rp.lip6.fr/site_npa/site_rp/_publications/740-rbf_cameraready.pdf"&gt;Retouched Bloom Filters (PDF)&lt;/a&gt;, and am trying to figure out how to calculate the size of a filter given a desired false positive and false negative rate.  I tried to do some of the math, but I'm just too rusty.&lt;br /&gt;&lt;br /&gt;Then I remembered my old friend  The Web, and sure enough a search for an equation solver &lt;a href="http://www.numberempire.com/equationsolver.php"&gt;uncovered this site&lt;/a&gt;.  Very useful - enter in a linear equation, and the variable you want to solve for, et voila!&lt;br /&gt;&lt;br /&gt;For example, from the paper above, the false negative rate is given by&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;fn = 1 - (1 - s/(p1 * m))^k&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;where &lt;i&gt;fn&lt;/i&gt; is the false negative rate, &lt;i&gt;s&lt;/i&gt; = the number of bits reset, &lt;i&gt;p1&lt;/i&gt; is the probability a given bit is set in the filter after all &lt;i&gt;n &lt;/i&gt;elements have been added to it (about 1/2 for an optimized filter), &lt;i&gt;m&lt;/i&gt; is the size of the filter, and &lt;i&gt;k&lt;/i&gt; is the number of hash functions.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I wanted to know what &lt;i&gt;s&lt;/i&gt; is, the number of bits to reset, if I know the other values.  So I entered in the equation above to the equation solver, and like magic, I have&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;s = (1-(1-fn)^(1/k))*m*p1&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Nice!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BTW, once I have the numbers worked out to my satisfaction, I'll post them here.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6033129456809686024?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6033129456809686024/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=6033129456809686024" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6033129456809686024?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6033129456809686024?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/ljso2jxxLPc/online-equation-solver.html" title="Online equation solver" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/online-equation-solver.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEFRXwyfCp7ImA9WxNWGEk.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-4061715983712495772</id><published>2009-10-17T22:43:00.000-07:00</published><updated>2009-10-17T22:43:34.294-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-17T22:43:34.294-07:00</app:edited><title>More on blatant counterfeiting in Wall Street</title><content type="html">&lt;a href="http://www.rollingstone.com/politics/story/30481512/wall_streets_naked_swindle"&gt;A well written, if expletive, article by Matt Taibbi in the Rolling Stone&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This is again about naked short selling - shorting stock that you don't actually have, and someone else then selling this same stock, thus driving the stock down.&amp;nbsp; It turns out that buying and selling stuff you don't acdtually have is also done in commodities, mortgages, and bonds.&lt;br /&gt;
&lt;blockquote&gt;A paper presented at the American Bankruptcy Institute earlier this year reports that up to a third of all notes for mortgage-backed securities may have been "misplaced or lost" — meaning they're backed by IOUs instead of actual mortgages.&lt;br /&gt;
&lt;/blockquote&gt;He can't get his hands on the smoking gun, but all arrows do seem to point towards Wall Street robbing us all blind, with wolves guarding the hen house in Washington.&lt;br /&gt;
&lt;br /&gt;
This week I watched a homeless man standing with handcuffs while two policemen talked to him and searched his stuff.&amp;nbsp; Meanwhile there are these companies in the center of our financial world who are basically greedy schmucks laughing while they rob us for billions and billions of dollars.&amp;nbsp; Greed gone wild.&lt;br /&gt;
&lt;blockquote&gt;The nation's largest financial players are able to write the rules for own their businesses and brazenly steal billions under the noses of regulators, and nothing is done about it. A thing so fundamental to civilized society as the integrity of a stock, or a mortgage note, or even a U.S. Treasury bond, can no longer be protected, not even in a crisis, and a crime as vulgar and conspicuous as counterfeiting can take place on a systematic level for years without being stopped, even after it begins to affect the modern-day equivalents of the Rockefellers and the Carnegies. What 10 years ago was a cheap stock-fraud scheme for second-rate grifters in Brooklyn has become a major profit center for Wall Street. Our burglar class now rules the national economy. And no one is trying to stop them.&lt;br /&gt;
&lt;/blockquote&gt;If history is any lesson, this will end, and end ugly.&amp;nbsp; It's like watching a tidal wave build up behind you, seeing the water all pull away and you wonder if anyone else is noticing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-4061715983712495772?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/4061715983712495772/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=4061715983712495772" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4061715983712495772?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4061715983712495772?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/1eATWFi5wXY/more-on-blatant-counterfeiting-in-wall.html" title="More on blatant counterfeiting in Wall Street" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/more-on-blatant-counterfeiting-in-wall.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QAQXsyeyp7ImA9WxNWF0w.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6865250249883443468</id><published>2009-10-16T11:45:00.000-07:00</published><updated>2009-10-16T11:55:40.593-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-16T11:55:40.593-07:00</app:edited><title>Pitch for ReviewBoard for code reviews</title><content type="html">Back in the nineties, code reviews were painful, horrible experiences.  You would be handed a thick parchment of source output and line numbers, and you had to go into a meeting for two hours to review all the code.  The waterfall method at work.&lt;br /&gt;&lt;br /&gt;Things got a little better when people would quickly send out diffs or attach them to a bug, but not by much.  In the open source world, the reviews would go on for days with twenty levels of indents on long long email threads.  At the end I'd scratch my head and wonder where things stood.&lt;br /&gt;&lt;br /&gt;In my new job here at Symantec, I was introduced to &lt;a href="http://www.reviewboard.org/"&gt;ReviewBoard&lt;/a&gt;, an open source tool for code reviews.  Wow.  What a difference a tool makes.  You make a change, and then use a tool to submit it for review.  It gets the diff and submits it to Review Board.  You then go in and specify who the reviewers are, submit, and you're done.&lt;br /&gt;&lt;br /&gt;As a reviewer, you can look at the diffs in context with the source, and then click on any line and you can add a comment.  When you're done, submit, and an email is sent out.  The change owner can then go to specific comments and reply - each comment can have its own dialog which is logged in the tool.  All this is done with AJAX style interaction, which is sweet.&lt;br /&gt;&lt;br /&gt;The change owner can submit a new patch for review, and if they use the same changeset id, the tool lets you as a reviewer see the diff between the original and the updated version, so you can focus on what's changed since the last review.  When you're satisfied, you click on "ship it" and you're done.&lt;br /&gt;&lt;br /&gt;Atlassian also has a code review tool but (a) it's not free and (b) it doesn't handle iterative reviews - where you address comments by a few small changes.   Their tool doesn't let you see the differences between iterations in the review, and that's pretty crucial when you have a large patch and the new revision only has a small set of updates.  Also, it's difficult to submit a change &lt;b&gt;before &lt;/b&gt;it is committed.  So I think overall ReviewBoard is the better tool.&lt;br /&gt;&lt;br /&gt;Because of this tool, we can now have a policy that every change be submitted for review before it's committed.  Of course we are flexible with this, but this is the overall policy.  I don't think such a policy would be bearable or enforceable without a tool like ReviewBoard.  Thanks, guys!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6865250249883443468?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6865250249883443468/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=6865250249883443468" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6865250249883443468?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6865250249883443468?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/wYbBNMWenpQ/pitch-for-reviewboard-for-code-reviews.html" title="Pitch for ReviewBoard for code reviews" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/pitch-for-reviewboard-for-code-reviews.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cESXc4fSp7ImA9WxNWF0w.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-4620720563730314185</id><published>2009-10-16T09:35:00.000-07:00</published><updated>2009-10-16T09:36:48.935-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-16T09:36:48.935-07:00</app:edited><title>Calling out to hungry spirits</title><content type="html">I was listening to &lt;a href="http://www.amazon.com/Krishna-Das-Door-of-Faith/dp/B000U0F6UO/ref=sr_1_3?ie=UTF8&amp;amp;s=sporting-goods&amp;amp;qid=1255710918&amp;amp;sr=8-3-spell"&gt;Door of Faith by Krishna Das&lt;/a&gt;, and I just had to share this beautiful poem he sang in English. It really touched my heart.  To me, this is the heart of God, which we all carry within us.&lt;br /&gt;
&lt;blockquote&gt;Calling out to hungry hearts&lt;br /&gt;
Everywhere through endless time&lt;br /&gt;
You who wander, you who thirst&lt;br /&gt;
I offer you this heart of mine&lt;br /&gt;
&lt;br /&gt;
Calling out to hungry spirits&lt;br /&gt;
Everywhere through endless time&lt;br /&gt;
Calling out to hungry hearts&lt;br /&gt;
All lost and left behind&lt;br /&gt;
&lt;br /&gt;
Gather round and share this meal&lt;br /&gt;
Your joy and your sorrow I make it mine.&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-4620720563730314185?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/4620720563730314185/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=4620720563730314185" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4620720563730314185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/4620720563730314185?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/QjgjrwZNS90/calling-out-to-hungry-spirits.html" title="Calling out to hungry spirits" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/calling-out-to-hungry-spirits.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQFSXo5eCp7ImA9WxNWFkk.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1622988528267588402</id><published>2009-10-15T14:31:00.000-07:00</published><updated>2009-10-15T14:31:58.420-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-15T14:31:58.420-07:00</app:edited><title>Short a stock, then bring the company down: sounds like a plan</title><content type="html">&lt;a href="http://www.deepcapture.com/the-story-of-deep-capture-by-mark-mitchell/"&gt;This blog tells quite an incredible story&lt;/a&gt; about the CEO of Overstock.com, Patrick Byrne, bringing to light the strategy of some hedge funds to short a stock and then use various mechanisms to bring the company down, and how the media appears to be involved in a coverup. &amp;nbsp;I don't know how well sourced this material is, but it's a good read anyway, and to be honest, it doesn't surprise me at all.&lt;br /&gt;
&lt;blockquote&gt;A small group of powerful hedge fund managers stop at nothing to annihilate the companies they sell short. Their tactics include: blackmail, smear campaigns, espionage, fraud, harassment, extortion, bribery, rumor-mongering, sabotage, off-shore money laundering, political cronyism, frivolous lawsuits, witness tampering, biased financial research, false identities, bogus credit ratings, bribery, libelous blogs, bad science, forgery, wiretapping, counterfeiting, collusion, lying, cheating, threats and theft.&lt;br /&gt;
&lt;/blockquote&gt;Sounds like the Wall Street I know and ... well, definitely not love.&lt;br /&gt;
&lt;br /&gt;
Greed gone wild.&lt;br /&gt;
&lt;br /&gt;
"When I despair, I remember that all through history the way of truth and love has always won. There have been tyrants and murderers and for a time they seem invincible, but in the end, they always fall.. think of it, always." - Mahatma Gandhi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1622988528267588402?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1622988528267588402/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=1622988528267588402" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1622988528267588402?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1622988528267588402?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/gW5luHj_WNM/short-stock-then-bring-company-down.html" title="Short a stock, then bring the company down: sounds like a plan" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/short-stock-then-bring-company-down.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IBQ348fSp7ImA9WxNWEE8.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-5530699171686132577</id><published>2009-10-08T08:31:00.000-07:00</published><updated>2009-10-08T10:05:52.075-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-08T10:05:52.075-07:00</app:edited><title>Answers to life's persistent questions</title><content type="html">I was recently working on some algebraic problems when I was studying a &lt;a href="http://www-rp.lip6.fr/site_npa/site_rp/_publications/740-rbf_cameraready.pdf"&gt;Retouched Bloom Filter&lt;/a&gt; (PDF). I was trying to see if I could calculate how much smaller the Bloom Filter could be depending on how many bits I reset to 0.&lt;br /&gt;&lt;br /&gt;I found myself stumped - it has just been too long since I did this stuff in college. My numbers came out all wrong.&lt;br /&gt;&lt;br /&gt;So I found it quite appropriate when I found these real-life answers, copied from an email sent to me.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f6ZqotKiPao/Ss4bsG0vCuI/AAAAAAAAAOA/QrDP9pc3o1I/s1600-h/question7.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 186px;" src="http://4.bp.blogspot.com/_f6ZqotKiPao/Ss4bsG0vCuI/AAAAAAAAAOA/QrDP9pc3o1I/s400/question7.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390276248569055970" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f6ZqotKiPao/Ss4bsG0vCuI/AAAAAAAAAOA/QrDP9pc3o1I/s1600-h/question7.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4brghyDDI/AAAAAAAAAN4/jLkHAavk2kQ/s1600-h/question9.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 399px;" src="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4brghyDDI/AAAAAAAAAN4/jLkHAavk2kQ/s400/question9.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390276238289013810" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4brghyDDI/AAAAAAAAAN4/jLkHAavk2kQ/s1600-h/question9.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4brOAgFfI/AAAAAAAAANw/cjwWhCqYIGE/s1600-h/question8.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 199px;" src="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4brOAgFfI/AAAAAAAAANw/cjwWhCqYIGE/s400/question8.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390276233317586418" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4brOAgFfI/AAAAAAAAANw/cjwWhCqYIGE/s1600-h/question8.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bqua-dmI/AAAAAAAAANo/ZKY9srHdzu0/s1600-h/question6.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 79px;" src="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bqua-dmI/AAAAAAAAANo/ZKY9srHdzu0/s400/question6.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390276224838694498" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bqua-dmI/AAAAAAAAANo/ZKY9srHdzu0/s1600-h/question6.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f6ZqotKiPao/Ss4bqZ_0pgI/AAAAAAAAANg/vqjZmdXh38A/s1600-h/question5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 367px;" src="http://2.bp.blogspot.com/_f6ZqotKiPao/Ss4bqZ_0pgI/AAAAAAAAANg/vqjZmdXh38A/s400/question5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390276219356096002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bWKwAhSI/AAAAAAAAANY/W29UuQ15jiQ/s1600-h/question5.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f6ZqotKiPao/Ss4bVtdPL8I/AAAAAAAAANQ/dpPt6NDPlHM/s1600-h/question4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 87px;" src="http://2.bp.blogspot.com/_f6ZqotKiPao/Ss4bVtdPL8I/AAAAAAAAANQ/dpPt6NDPlHM/s400/question4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390275863802490818" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f6ZqotKiPao/Ss4bVtdPL8I/AAAAAAAAANQ/dpPt6NDPlHM/s1600-h/question4.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bVJ9sgCI/AAAAAAAAANI/KpaaZrScQw0/s1600-h/question3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bVJ9sgCI/AAAAAAAAANI/KpaaZrScQw0/s400/question3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390275854274953250" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bVJ9sgCI/AAAAAAAAANI/KpaaZrScQw0/s1600-h/question3.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f6ZqotKiPao/Ss4bUlYNNUI/AAAAAAAAANA/Jqav3R_U9BI/s1600-h/question2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_f6ZqotKiPao/Ss4bUlYNNUI/AAAAAAAAANA/Jqav3R_U9BI/s400/question2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390275844454036802" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_f6ZqotKiPao/Ss4bUlYNNUI/AAAAAAAAANA/Jqav3R_U9BI/s1600-h/question2.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bUHRoj9I/AAAAAAAAAM4/cp2fkDqUcgs/s1600-h/question1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 107px;" src="http://1.bp.blogspot.com/_f6ZqotKiPao/Ss4bUHRoj9I/AAAAAAAAAM4/cp2fkDqUcgs/s400/question1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5390275836373405650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&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-5530699171686132577?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/5530699171686132577/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=5530699171686132577" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/5530699171686132577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/5530699171686132577?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/fXY9eYyhjEU/answers-to-lifes-persistent-questions.html" title="Answers to life's persistent questions" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_f6ZqotKiPao/Ss4bsG0vCuI/AAAAAAAAAOA/QrDP9pc3o1I/s72-c/question7.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/answers-to-lifes-persistent-questions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUABSHwzeCp7ImA9WxNXFE4.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8310723111448617382</id><published>2009-10-01T15:38:00.000-07:00</published><updated>2009-10-01T15:55:59.280-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-01T15:55:59.280-07:00</app:edited><title>Concurrency.next and the suckiness of explicit concurrency management</title><content type="html">&lt;a href="http://www.tbray.org/ongoing/When/200x/2009/09/27/Concur-dot-next#comments"&gt;Tim Bray has a nice blog (with lots of fun comments)&lt;/a&gt; about multicore chips, parallelization and concurrency, and how this may bring about a new set of popular languages.  Nice analysis, most of it makes sense.&lt;br /&gt;&lt;br /&gt;But what he said last struck me the most, because it's been bothering me for a while too and I thought I was a loner.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Assumption&lt;/b&gt; · I’m taking the following as an axiom: Exposing real pre-emptive threading with shared mutable data structures to application programmers is wrong. Once you get past Doug Lea, Brian Goetz, and a few people who write operating systems and database kernels for a living, it gets very hard to find humans who can actually reason about threads well enough to be usefully productive.&lt;br /&gt;&lt;br /&gt;When I give talks about this stuff, I assert that threads are a recipe for deadlocks, race conditions, horrible non-reproducible bugs that take endless pain to find, and hard-to-diagnose performance problems. Nobody ever pushes back.&lt;/blockquote&gt;&lt;br /&gt;When I started working NetBeans, where you the coder are responsible for concurrency, rather than the app server container, I was stunned, literally stunned, at how ugly things could get so easily.  I almost immediately introduced deadlocks, data corruptions, and other icky stuff, and found myself desperately reading the bibles on concurrency and thread safety.&lt;br /&gt;&lt;br /&gt;But I also found myself shaking my head.  Why are we all doing this as if it makes sense for programmers to have to worry about this.  This level of complexity and shooting-yourself-in-the-footedness indicates to me something inherently wrong with the programming model.  It's like a hotel asking arriving guests to coordinate with each other to assign themselves rooms.&lt;br /&gt;&lt;br /&gt;I had heard about the asynchronous, immutable state, message passing model of Erlang and Scala, and these seemed to me what we were looking for.  You write an actor, it does what it does, and doesn't share its state with anyone except through copies.  Simple, nice, elegant, parallelizable.&lt;br /&gt;&lt;br /&gt;It's very hard to move from one language to another, so I'm with Java for now, but I'm looking forward to an opportunity to try out Scala or Erlang for Real Work.  I'm sure the opportunity will come soon enough.&lt;br /&gt;&lt;br /&gt;It's kind of nice that the new chip architectures are forcing programmers to think about parallelism, and thus good parallel concurrency models, and thus looking at the asynchronous/message-passing architectures of Scala and Erlang.  Maybe we'll get out of this synchronized-volatile-deadlock-semaphore-thread-pool-latch madness that exists today in Java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8310723111448617382?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8310723111448617382/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=8310723111448617382" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8310723111448617382?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8310723111448617382?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/_qSLlV-1Ih8/concurrencynext-and-suckiness-of.html" title="Concurrency.next and the suckiness of explicit concurrency management" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/concurrencynext-and-suckiness-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YCRng5fip7ImA9WxNXFE8.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-8931969204894814234</id><published>2009-10-01T12:26:00.000-07:00</published><updated>2009-10-01T12:26:07.626-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-01T12:26:07.626-07:00</app:edited><title>Excellent article on doing UI right</title><content type="html">&lt;a href="http://www.softwareceo.com/discussions/com070604.aspx"&gt;This is a great article on Software CEO about a new McAfee product&lt;/a&gt; (yes, I know, Symantec's sworn enemy :)), how successful it was in terms of usability, and what went behind that.&lt;br /&gt;
&lt;br /&gt;
Lots of great tips about how to build your engineering process around your users, from soup to nuts. &amp;nbsp;Hiring an outside design team to design your UI - what a concept! :) &lt;br /&gt;
&lt;br /&gt;
Here is just one tip to whet your appetite:&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;UI tip #6: Let user demand defend against code creep&lt;/b&gt;. &lt;br /&gt;
" Our team strove to understand what is necessary versus what's desirable," Ries says. "Everything you add in to the product affects documentation, support, and code.&lt;br /&gt;
&lt;br /&gt;
"With every feature, you have to make a design decision. We tried to make reasonable and good assumptions about setting limits; we actively eliminated options, and then validated those options with the users.&lt;br /&gt;
&lt;br /&gt;
"We ran into lots of feature that are good ideas, but they were clipped until we can get enough evidence that there's enough demand. There are always next versions that we can use to include them."&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-8931969204894814234?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/8931969204894814234/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=8931969204894814234" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8931969204894814234?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/8931969204894814234?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/3QaXo3wbLF4/excellent-article-on-doing-ui-right.html" title="Excellent article on doing UI right" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/10/excellent-article-on-doing-ui-right.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEGQ3o8cSp7ImA9WxNXEUg.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1854106882664981227</id><published>2009-09-28T10:07:00.000-07:00</published><updated>2009-09-28T10:07:02.479-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-28T10:07:02.479-07:00</app:edited><title>Integrated vs. open: what's more "free"?</title><content type="html">OK, first of all, don't get me wrong. &amp;nbsp;I am totally an open-source advocate. &amp;nbsp;I worked in open source a lot at Sun, and I make use of a lot of open source in my day job. &lt;br /&gt;
&lt;br /&gt;
But I also have a Mac and an iPhone. &amp;nbsp;As a matter of fact, &lt;b&gt;many&lt;/b&gt;&amp;nbsp;developers in the open source community have Macs and iPhones. &amp;nbsp;But Apple is the King of Proprietary. &amp;nbsp;So what's going on?&lt;br /&gt;
&lt;br /&gt;
I recently got a comment on my Facebook page when I mentioned I was trying to unlock my wife's iPhone, basically warning me to stay away from proprietary systems that try to lock you in. &amp;nbsp;Now, I don't believe phones should be locked, or that you should have to revert to a downloaded software tool that hacks into the phone to unlock it. &amp;nbsp;But this comment did get me thinking: why do I use the iPhone even though it's proprietary and does try to lock me in, as does my Mac? &lt;br /&gt;
&lt;br /&gt;
The problem with Apple's stuff is, it's just so gawdawfully easy to use. &amp;nbsp;My wife observed the same thing I did three years ago: "hey, this stuff just works!".&lt;br /&gt;
&lt;br /&gt;
Apple can do this &lt;b&gt;because&lt;/b&gt;&amp;nbsp;they're proprietary and closed - they can build a completely integrated system and not worry about having to build something that works when it's pieced together by different vendors with different configurations. &amp;nbsp;The can focus on their configuration and just make it work.&lt;br /&gt;
&lt;br /&gt;
So, when it comes down to it, I'll take proprietary over open when it offers such incredibly obvious advantages as the Mac and iPhone do. &amp;nbsp;Have I sold myself to the Devil in a Black Turtleneck?&lt;br /&gt;
&lt;br /&gt;
In the midst of those ruminations, &lt;a href="http://twitter.com/timbray/statuses/4444294422"&gt;Tim Bray tweeted&lt;/a&gt; a link to &lt;a href="http://www.economist.com/blogs/democracyinamerica/2009/09/userfriendliness_and_fascism.cfm"&gt;this article in the Economist, that compares Mac vs. PC with our banking and health care systems&lt;/a&gt;. &lt;br /&gt;
&lt;blockquote&gt;Like Microsoft operating systems, America's health-insurance system is incoherent, hard to understand, often dysfunctional and bloated by obsolete legacy systems. (Though unlike Windows machines, it's not cheap.) Different parts fail to operate properly with each other, and the whole thing is incomprehensible to most users, patients and doctors alike. But try to set up a central authority like MedPAC to make decisions about how to fix Medicare, or to mandate that policies cover a set of basic conditions, or to make end-of-life counseling available to seniors so they don't go through their final weeks in a blizzard of legal confusion—try to fix any of this stuff, and you'll be accused of "taking the control of health care out of the hands of patients and their doctors." This rhetoric is often driven by vested commercial interests. Medical-industry groups don't want a panel of experts making decisions about Medicare because it reduces their ability to buy concessions through congressional lobbying.&lt;br /&gt;
&lt;br /&gt;
The same goes for the banking and credit-card industries, where small-print legal confusion is used as a tool to extract money from customers, and efforts to ban such practices are attacked as restrictions on consumer freedom. In health insurance or credit cards, freedom's just another word for not understanding what's in your contract. A perfect illustration, from Republican congressman Jeb Hensarling: "The ironically named Consumer Financial Protection Agency (CFPA) would have the power to strip from consumers their freedom of choice and restrict their credit opportunities in the midst of a financial recession—all in the name of 'consumer protection'. Positively Orwellian."&lt;br /&gt;
&lt;br /&gt;
What's Orwellian is describing your credit-card company's ability to arbitrarily raise the interest it charges you on past debt to 35% as "freedom". More broadly, we need to move away from the Orwell "1984" paradigm. It was a brilliant description of the most important threats to freedom in the middle of the 20th century, but it no longer describes the most important threats to freedom today*. It was already clear how creaky the paradigm was in 1984, when the Mac ad came out; it's only gotten creakier over the past 25 years. Orwell didn't pay much attention to the problem of an oppressive blizzard of "choices" designed to take advantage of the consumer or citizen by manipulating asymmetries of information. But that is the way the American commercial and political landscape feels much of the time&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Definitely something to think about.  What is the true freedom here?  And, in terms of health care and other social services, who is benefiting from this 'freedom'?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1854106882664981227?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1854106882664981227/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=1854106882664981227" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1854106882664981227?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1854106882664981227?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/N7nYZu02Nns/integrated-vs-open-whats-more-free.html" title="Integrated vs. open: what's more &quot;free&quot;?" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/integrated-vs-open-whats-more-free.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cMQ348eip7ImA9WxNQGU0.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-7127226077447503339</id><published>2009-09-25T10:23:00.001-07:00</published><updated>2009-09-25T10:51:22.072-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-25T10:51:22.072-07:00</app:edited><title>Why I didn't want to do Test-Drive Development - and why I like it now</title><content type="html">I've been thinking about why I didn't do Test-Driven Development for so many years (in particular, &lt;i&gt;writing tests first&lt;/i&gt;), and why others don't.&lt;br /&gt;&lt;br /&gt;You can be shown lots of books.  You can be told it's important.  But you still don't do it.&lt;br /&gt;&lt;br /&gt;I think it's about discomfort.  You're being asked to change.  For years, the way I coded was: I did some analysis, thought about the design, and then started coding the design as I saw it, either from my head or from some basic UML.&lt;br /&gt;&lt;br /&gt;TDD doesn't let you do that.  You have to (ick) write a test first.  Why on Earth would I ever want to do that?  I'm trying to implement my design, not muck around with tests!  So as much as I appreciated from afar the values of TDD, I just never get around to doing it, because it's just not how I did things.  It's almost like you're coding naked or with a keyboard with a different layout - it's awkward, uncomfortable, and just feels wrong.&lt;br /&gt;&lt;br /&gt;So I came up with all sorts of justifications for not doing it - I don't have time; I'm already writing tests, writing them first seems like overkill; I'm already overwhelmed with things I need to deal with; people who that are just anal design-freaks, and so on.  But I think ultimately it came down to - that's just not how I do things.&lt;br /&gt;&lt;br /&gt;But recently I finally forced myself to start doing it.  I slowly started becoming more comfortable with this approach, and started to see the benefits. &lt;br /&gt;&lt;br /&gt;To me the key thing is this concept of &lt;i&gt;letting the design emerge&lt;/i&gt; rather than trying to impose a design.  It's similar to starting with use cases first, and regularly validating your product with the customer, rather than building a technology and hoping they'll come.&lt;br /&gt;&lt;br /&gt;Once I got used to letting the design emerge, I started really enjoying TDD.  It was an act of discovery as much as an act of creation.  And I truly believe the best creations are done that way - as an act of joyous discovery.&lt;br /&gt;&lt;br /&gt;And yes, by the way, you get much better code coverage when you do TDD, because you ensure that each "piece" you build is tested, rather than writing a bunch of code and then trying to figure out how to test it.&lt;br /&gt;&lt;br /&gt;And yes, by the way, you get designs that are much less coupled and more cohesive.&lt;br /&gt;&lt;br /&gt;But to me my favorite part of it is that joyous process of discovery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-7127226077447503339?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/7127226077447503339/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=7127226077447503339" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7127226077447503339?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7127226077447503339?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/Lz0OYqvsK00/why-i-didnt-want-to-do-test-drive.html" title="Why I didn't want to do Test-Drive Development - and why I like it now" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/why-i-didnt-want-to-do-test-drive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YNRHkycSp7ImA9WxNQGEQ.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-9073343026243982291</id><published>2009-09-25T10:19:00.000-07:00</published><updated>2009-09-25T10:19:55.799-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-25T10:19:55.799-07:00</app:edited><title>Why make methods small and do one thing?</title><content type="html">I've been reading the &lt;a href="http://blog.objectmentor.com/"&gt;ObjectMentor blog&lt;/a&gt;, and it's got some fun stuff in it.  The one I particularly liked is &lt;a href="http://blog.objectmentor.com/articles/2009/09/11/one-thing-extract-till-you-drop"&gt;how do you know when a function does "just one thing"&lt;/a&gt; - the answer - extract methods until you can't extract any more.&lt;br /&gt;
&lt;br /&gt;
Now, I know there is the feeling of - why should I waste all this time writing lots of tiny little functions?  But after trying it for a bit, I'm convinced, for two main reasons (although I am sure there are more):&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Readability&lt;/b&gt;&lt;br /&gt;
When you write small functions, each one is eminently readable. &amp;nbsp;You look at it, and in an instant you understand what it does and its intent. &amp;nbsp;You don't have to "decode" the method to understand the intent - it just tells you. &amp;nbsp;I think this is essential - when you understand a code's intent, you can also understand if it is doing what you want it to.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Discovering New Classes&lt;/b&gt;&lt;br /&gt;
When you extract functions, sometimes you run into this situation where you are passing umpteen (meaning more than two) parameters into the function. &amp;nbsp;To me, particularly when the list of parameters is long, this indicates the need to extract a class which encapsulates all this data you're passing around.&lt;br /&gt;
&lt;br /&gt;
And I often find once I've extracted the class, it clarifies the design for me. &amp;nbsp;You have an idea of a design, but you should really let the design reveal itself to you, and this is one of the great ways I have found that happening.&lt;br /&gt;
&lt;br /&gt;
Also, often once a class is extracted, I can see how it can be used elsewhere - I have a new unit of reusability.&lt;br /&gt;
&lt;br /&gt;
Anyway, I recommend keeping an eye on the ObjectMentor blog, there's good stuff there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-9073343026243982291?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/9073343026243982291/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=9073343026243982291" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/9073343026243982291?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/9073343026243982291?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/QDRO60sSwuE/why-make-methods-small-and-do-one-thing.html" title="Why make methods small and do one thing?" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/why-make-methods-small-and-do-one-thing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ECR304eip7ImA9WxNQGEw.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6372391352293470462</id><published>2009-09-24T09:03:00.000-07:00</published><updated>2009-09-24T11:07:46.332-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-24T11:07:46.332-07:00</app:edited><title>You should like what you do</title><content type="html">I was sitting down for dinner last night, after having grilled some chicken kabobs.&amp;nbsp; I mentioned that I thought I had cooked them long enough but they seemed undercooked.&lt;br /&gt;
&lt;br /&gt;
My 9-year old daughter, Ariel, after a pause, said "You should like what you do."&amp;nbsp; I looked at her, confused.&amp;nbsp; "You're always saying something bad about what you do.&amp;nbsp; I get tired of it.&amp;nbsp; And it makes me not want to eat what you make."&lt;br /&gt;
&lt;br /&gt;
She really stopped me in my tracks.&amp;nbsp; She was right!&amp;nbsp; And I told her so, "you're absolutely right, Ariel."&amp;nbsp;&amp;nbsp; The words "never apologize!" from Julia Child's book "My Life in France" came back to me.&amp;nbsp; She tells a story of making a horrific dish, but she and her guests just shouldered through the dish as best as they could, and Julia never apologized and the guests never complained.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
I was so touched by Ariel's sentiment: "you should like what you do."&amp;nbsp; It was an admonishment, yes, but more than that, an encouragement - I believe in you, and you should too.&lt;br /&gt;
&lt;br /&gt;
I spent some time looking at myself, and saw that indeed, yes, I have an underlying idea of myself as "not good enough."&amp;nbsp; We could go back into my history to understand how this happened, but I'd rather work with the present moment.&amp;nbsp; How can I work with this now?&lt;br /&gt;
&lt;br /&gt;
"You should like what you do."&amp;nbsp; I see this in two ways.&amp;nbsp; First of all, whatever I do, take pride in it.&amp;nbsp; Yes, it may not be "perfect" but all the same take pride in it.&amp;nbsp; It is a creation from the heart.&amp;nbsp; Secondly, I should like what I do, rather than wish I were doing something else.&amp;nbsp; This is the key to a happy life.&amp;nbsp; "It is not doing the thing we like to do, but liking the thing we have to do, that makes life blessed," said Goethe.&lt;br /&gt;
&lt;br /&gt;
So, I'm not rash enough to believe I can change my underlying perception of myself in a flash, but it's something to practice and be aware of.&amp;nbsp; When I find myself being overly critical or unhappy with something I'm going or have done, I can remember, "you should like what you do" and be happy about it.&amp;nbsp; Always room for improvement, but it's great the way it is.&amp;nbsp; My cooking is great.&amp;nbsp; My code is great.&amp;nbsp; My pictures are great.&amp;nbsp; My words are great.&amp;nbsp; My nose is great.&amp;nbsp; I am great.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6372391352293470462?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6372391352293470462/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=6372391352293470462" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6372391352293470462?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6372391352293470462?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/VX4I7X6NBNE/you-shoud-like-what-you-do.html" title="You should like what you do" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/you-shoud-like-what-you-do.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ANR3Y7fSp7ImA9WxNQEkQ.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6987351131024061703</id><published>2009-09-18T10:43:00.000-07:00</published><updated>2009-09-18T10:43:16.805-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-18T10:43:16.805-07:00</app:edited><title>A balance between flux and immutability</title><content type="html">&lt;a href="http://blogs.sun.com/jrose/entry/thursday_at_the_summit"&gt;A fun blog post by John Rose&lt;/a&gt; about the delicate balance between the world of flux (e.g. volatile memory) and our attempts to enforce immutability through functional languages like Erlang. &amp;nbsp;Immutability is great, is helps rationalize and simplify your logic, but it just doesn't play well with the notion that "you don't step into the same river twice." &amp;nbsp;His overall conclusion - work with a language that encourages immutability but allows for in-place mutation where it is needed. &amp;nbsp;You know a craftsman at work when he sees the issues of software from the perspective of ancient philosophy :)&lt;br /&gt;
&lt;blockquote&gt;But we know from common sense (that trusty yet abused helper) that we live somewhere between the fluxy world of Heraclitus and the timeless world of Parmenides. In the days of Plato, it was his student Aristotle who balanced the claims of the two accounts, picking a middle way between the two. In short, the formal ideas we perceive and know inhere (in a way real though bound) in the mutable, moving reality around us. Object identities (what he called "substances") are real, though temporal. If Aristotle had marketers like we do, he might have called his account a hybrid paradigm (more Greek, actually, though to him "hybrid" would mean "having hubris") of flux and form. I think it's likely the story will end similarly for us, in our professional difficulties with software, with some sort of middle way.&lt;br /&gt;
&lt;br /&gt;
Just to speculate wildly, maybe those hybrid functional-and-object-oriented languages (like Scala and F#) can provide a sort of dictionary and grammar of useful terms and constructs. These would somehow describe computations as immutable in most places, and manageably mutable in those few aspects needed to model real-world transitions. (Or to implement localized compute engines, like a quick-sorter.&lt;br /&gt;
&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6987351131024061703?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6987351131024061703/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=6987351131024061703" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6987351131024061703?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6987351131024061703?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/QwYrOBhMJlQ/balance-between-immutability.html" title="A balance between flux and immutability" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/balance-between-immutability.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMCSHs_fSp7ImA9WxNQEk0.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-7620588570135376956</id><published>2009-09-17T09:21:00.001-07:00</published><updated>2009-09-17T09:21:09.545-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T09:21:09.545-07:00</app:edited><title>Racism in America?  Shocking!</title><content type="html">What?!&amp;nbsp; Racism still exists in America?!&amp;nbsp; I am shocked!&amp;nbsp; And some of the media and politicians are trying to use this to get attention and money?!&amp;nbsp; Doubly shocking!&lt;br /&gt;
&lt;br /&gt;
I like Obama's approach: we all know racism exists, let's move on and focus on doing our job: fixing health care, fixing the economy, dealing with global warming, and so on.&amp;nbsp; I suspect he's done that all his life.&amp;nbsp; Why waste your time putting energy and attention into something that is divisive and ultimately gets you nowhere.&amp;nbsp; I've never met someone who stopped being racist because someone said "you're a racist!" to them.&lt;br /&gt;
&lt;br /&gt;
I suspect that underlying all of this is not racism per se but a fear of the unknown.&amp;nbsp; If we work together create a country where each individual feels safer - in terms of their job, their health, and their overall prospects in life - then there will be less hate-filled speech and actions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-7620588570135376956?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/7620588570135376956/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=7620588570135376956" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7620588570135376956?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7620588570135376956?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/duXroxaby5A/racism-in-america-shocking.html" title="Racism in America?  Shocking!" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/racism-in-america-shocking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HSXg7fCp7ImA9WxNQEEk.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-1466367870512206171</id><published>2009-09-15T13:52:00.000-07:00</published><updated>2009-09-15T13:52:18.604-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-15T13:52:18.604-07:00</app:edited><title>Time out on timeouts</title><content type="html">&lt;a href="http://www.nytimes.com/2009/09/15/health/15mind.html"&gt;A very interesting (and somewhat tragic) article about the long-term damage caused by withholding attention and affection as a way to discipline children.&lt;/a&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
The most common tool in this toolbox is "time-outs".&amp;nbsp; My wife and I just didn't feel comfortable with this - it felt humiliating and mean - and the research seems to be confirming it's not the best approach&lt;br /&gt;
&lt;blockquote&gt;The studies found that both positive and negative conditional parenting were harmful, but in slightly different ways. The positive kind sometimes succeeded in getting children to work harder on academic tasks, but at the cost of unhealthy feelings of “internal compulsion.” Negative conditional parenting didn’t even work in the short run; it just increased the teenagers’ negative feelings about their parents.&lt;br /&gt;
&lt;br /&gt;
What these and other studies tell us, if we’re able to hear the news, is that praising children for doing something right isn’t a meaningful alternative to pulling back or punishing when they do something wrong. Both are examples of conditional parenting, and both are counterproductive.&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
In practice, according to an impressive collection of data by Dr. Deci and others, unconditional acceptance by parents as well as teachers should be accompanied by “autonomy support”: explaining reasons for requests, maximizing opportunities for the child to participate in making decisions, being encouraging without manipulating, and actively imagining how things look from the child’s point of view.&lt;br /&gt;
&lt;br /&gt;
The last of these features is important with respect to unconditional parenting itself. Most of us would protest that of course we love our children without any strings attached. But what counts is how things look from the perspective of the children — whether they feel just as loved when they mess up or fall short&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-1466367870512206171?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/1466367870512206171/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=1466367870512206171" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1466367870512206171?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/1466367870512206171?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/8NSizP6VsRg/time-out-on-timeouts.html" title="Time out on timeouts" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/time-out-on-timeouts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QEQHY-eip7ImA9WxNRGUQ.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-7217704741780011247</id><published>2009-09-14T22:08:00.000-07:00</published><updated>2009-09-14T22:08:21.852-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-14T22:08:21.852-07:00</app:edited><title>Health care is the new sexy</title><content type="html">&lt;span id="goog_1252991106938"&gt;&lt;/span&gt;&lt;span id="goog_1252991106939"&gt;&lt;/span&gt;This is very funny.&amp;nbsp; BTW, anyone know why I can't embed this video?&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=XCw_UoRhTUk"&gt;http://www.youtube.com/watch?v=XCw_UoRhTUk&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-7217704741780011247?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/7217704741780011247/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=7217704741780011247" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7217704741780011247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7217704741780011247?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/Xa6C3BCzRwE/health-care-is-new-sexy.html" title="Health care is the new sexy" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/health-care-is-new-sexy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UNQXoyfCp7ImA9WxNRE04.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-7574560895074657335</id><published>2009-09-07T09:01:00.003-07:00</published><updated>2009-09-07T09:01:30.494-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T09:01:30.494-07:00</app:edited><title>Color photographs of Russia from 100 years ago</title><content type="html">&lt;a href="http://www.newsweek.com/id/214585"&gt;Go look at these amazing photos on Newsweek&lt;/a&gt;.&lt;br /&gt;
&lt;blockquote&gt;Between 1907 and 1915, Prodkun-Gorskii rode through even restricted parts of revolutionary Russia in his specially fitted darkroom rail-car, shooting color photos ... by a method of his own invention&lt;/blockquote&gt;Really quite stunning.  So used to seeing black-and-white photos of these times, and here it is, the turn of the century in living color.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-7574560895074657335?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/7574560895074657335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=7574560895074657335" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7574560895074657335?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/7574560895074657335?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/Z-oTFh45QcM/color-photographs-of-russia-from-100_07.html" title="Color photographs of Russia from 100 years ago" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/color-photographs-of-russia-from-100_07.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UCQXw5eCp7ImA9WxNRE04.&quot;"><id>tag:blogger.com,1999:blog-15929719.post-6190367617282585058</id><published>2009-09-07T09:01:00.001-07:00</published><updated>2009-09-07T09:01:00.220-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-07T09:01:00.220-07:00</app:edited><title>Color photographs of Russia from 100 years ago</title><content type="html">Go look at these amazing photos on Newsweek.&lt;blockquote&gt;Between 1907 and 1915, Prodkun-Gorskii rode through even restricted parts of revolutionary Russia in his specially fitted darkroom rail-car, shooting color photos ... by a method of his own invention&lt;/blockquote&gt;Really quite stunning.  So used to seeing black-and-white photos of these times, and here it is, the turn of the century in living color.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15929719-6190367617282585058?l=davidvancouvering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://davidvancouvering.blogspot.com/feeds/6190367617282585058/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=15929719&amp;postID=6190367617282585058" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6190367617282585058?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/15929719/posts/default/6190367617282585058?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/VanCouveringIsNotAVerb/~3/KY2mqZ84ncY/color-photographs-of-russia-from-100.html" title="Color photographs of Russia from 100 years ago" /><author><name>David Van Couvering</name><uri>http://www.blogger.com/profile/04898259486137280102</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="08088274965415424833" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://davidvancouvering.blogspot.com/2009/09/color-photographs-of-russia-from-100.html</feedburner:origLink></entry></feed>
