<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15459527</id><updated>2012-01-10T08:51:21.231-07:00</updated><category term='bazaar'/><category term='home'/><category term='job'/><category term='ant'/><category term='cdt'/><category term='xquery'/><category term='java'/><category term='python'/><category term='food'/><category term='books'/><category term='eclipse'/><category term='version control'/><category term='scons'/><category term='i am lame'/><category term='software builds'/><category term='computers'/><title type='text'>Ugliest Fountain in the World</title><subtitle type='html'>This blog will chronicle my many adventures. For instance, I like to get drunk and chase my cats around the house. Oh, what fun we have.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default?start-index=101&amp;max-results=100'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>157</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15459527.post-6589335714645657710</id><published>2012-01-09T10:40:00.000-07:00</published><updated>2012-01-09T10:40:53.952-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>dance with dragons review</title><content type='html'>Enormous wait&lt;br /&gt;&lt;br /&gt;I loved parts of it while I read it, and easily forgave its flaws.&lt;br /&gt;&lt;br /&gt;But... 3 months after finishing it... reflecting back on it I am increasingly annoyed by it, and the lack of forward movement. I don't need pages and pages and pages of turtle talk, or stone zombie talk. The feeling I'm left with is that GRRM doesn't have an editor who can kick his ass and tighten up his story.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For epic fantasy... I'm much, much happier with the Malazan books. They are plenty annoying at times too. But, they've churned all 10 books out on a regular schedule and built a fascinating, complex world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6589335714645657710?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6589335714645657710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6589335714645657710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6589335714645657710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6589335714645657710'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2012/01/dance-with-dragons-review.html' title='dance with dragons review'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-5522947788254068746</id><published>2012-01-09T10:16:00.000-07:00</published><updated>2012-01-09T10:16:30.015-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>no updates for many moons</title><content type='html'>No updates. Been mostly venting on twitter / facebook recently.&lt;br /&gt;&lt;br /&gt;In horrible movie reviews:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Tucker &amp;amp; Dale vs. Evil &lt;/b&gt;: OMG. Great, funny, gory, awesome.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Battle: Las Angeles &lt;/b&gt;&amp;nbsp;: WTF. This movie felt like it was 6 hours long. Meh.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;TV reviews:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Downton Abbey&lt;/b&gt;: &amp;nbsp;Where is the queue for the freaky threeway with Lady Sybil and Mr. Bates?&lt;/li&gt;&lt;li&gt;&lt;b&gt;The League&lt;/b&gt; : Best. Comedy. On. TV.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Archer&lt;/b&gt;: Pretty freakin' great.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Books reviews:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Books? What are books?&amp;nbsp;&lt;/li&gt;&lt;li&gt;Also, how do I reconcile my desire for a Kindle with the fact that I've read ... 2 books this year?&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Podcasts reviews:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;My Brother, My Brother And Me&lt;/b&gt;: I LOVE THE BROTHERS MCELROY SOOOO MUCH. Seriously. It may be unhealthy. Where should I turn for help?&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/15459527-5522947788254068746?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/5522947788254068746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=5522947788254068746' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5522947788254068746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5522947788254068746'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2012/01/no-updates-for-many-moons.html' title='no updates for many moons'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6705677414505472688</id><published>2011-03-15T20:52:00.000-06:00</published><updated>2011-03-15T20:52:31.924-06:00</updated><title type='text'>religion</title><content type='html'>This post from John Scalzi's blog expresses so much of what I've struggled with trying to explain (both to myself, and to my family when I left the church).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://whatever.scalzi.com/2011/03/14/reader-request-week-2011-1-children-and-faith/"&gt;http://whatever.scalzi.com/2011/03/14/reader-request-week-2011-1-children-and-faith/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A sample:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Cambria, Georgia, 'Lucida Grande', Helvetica, Arial, serif, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Cambria, Georgia, 'Lucida Grande', Helvetica, Arial, serif, sans-serif;"&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;i&gt;But again, that’s not about me as an agnostic opposing those who have faith. It’s me as a person who knows the message of Christ pointing out a hypocrite, and me as a person with my own moral, social and political standards countering one whose standards differ. As it happens, I know a reasonable number of people of faith who feel the same way I do, and have many of the same moral, social and political standards as I have. Do I fear them? Discount them? Think them defective? No; I say “I’m glad to know you.” We believe many of the same things; that some of their belief comes from the teachings of Jesus, or from Allah by way of Muhammad, or from Buddha, to name just three examples, does not trouble me. Whatever steps we took to get there, we’re walking the same path.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6705677414505472688?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6705677414505472688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6705677414505472688' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6705677414505472688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6705677414505472688'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2011/03/religion.html' title='religion'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2378691485229994610</id><published>2011-03-03T21:38:00.002-07:00</published><updated>2011-03-03T21:42:19.745-07:00</updated><title type='text'>i watch too much tv</title><content type='html'>Dish Network technician coming out tomorrow to deliver the new HD DVR. Excited? Perhaps.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But... now we need to enter all these timers in again. My dirty laundry:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;castle&lt;/li&gt;&lt;li&gt;30 rock&lt;/li&gt;&lt;li&gt;the office&lt;/li&gt;&lt;li&gt;the vampire diaries&lt;/li&gt;&lt;li&gt;desperate housewives&lt;/li&gt;&lt;li&gt;the gates&lt;/li&gt;&lt;li&gt;lie to me&lt;/li&gt;&lt;li&gt;chuck&lt;/li&gt;&lt;li&gt;modern family&lt;/li&gt;&lt;li&gt;glee&lt;/li&gt;&lt;li&gt;america's next top model&lt;/li&gt;&lt;li&gt;cougar town&lt;/li&gt;&lt;li&gt;raising hope&lt;/li&gt;&lt;li&gt;saturday night live&lt;/li&gt;&lt;li&gt;bones&lt;/li&gt;&lt;li&gt;no ordinary family&lt;/li&gt;&lt;li&gt;human target&lt;/li&gt;&lt;li&gt;parenthood&lt;/li&gt;&lt;li&gt;parks and recreation&lt;/li&gt;&lt;li&gt;community&lt;/li&gt;&lt;li&gt;in plain sight&lt;/li&gt;&lt;li&gt;it's always sunny in philadelphia&lt;/li&gt;&lt;li&gt;bob's burgers&lt;/li&gt;&lt;li&gt;the cape&lt;/li&gt;&lt;li&gt;nikita&lt;/li&gt;&lt;li&gt;ace of cakes&lt;/li&gt;&lt;li&gt;the graham norton show&lt;/li&gt;&lt;li&gt;warehouse 13&lt;/li&gt;&lt;li&gt;project runway&lt;/li&gt;&lt;li&gt;mr. sunshine&lt;/li&gt;&lt;li&gt;eureka&lt;/li&gt;&lt;li&gt;doctor who&lt;/li&gt;&lt;li&gt;psych&lt;/li&gt;&lt;li&gt;being human&lt;/li&gt;&lt;li&gt;the inbetweeners&lt;/li&gt;&lt;li&gt;house&lt;/li&gt;&lt;li&gt;'dexter'&lt;/li&gt;&lt;li&gt;covert affairs&lt;/li&gt;&lt;li&gt;episodes &lt;/li&gt;&lt;li&gt;haven&lt;/li&gt;&lt;li&gt;wipeout&lt;/li&gt;&lt;li&gt;masterpiece mystery!&lt;/li&gt;&lt;li&gt;the walking dead&lt;/li&gt;&lt;li&gt;burn notice&lt;/li&gt;&lt;li&gt;californication&lt;/li&gt;&lt;li&gt;archer&lt;/li&gt;&lt;li&gt;the big c&lt;/li&gt;&lt;li&gt;the it crowd&lt;/li&gt;&lt;li&gt;'big love'&lt;/li&gt;&lt;li&gt;top chef all-stars&lt;/li&gt;&lt;li&gt;ugly americans&lt;/li&gt;&lt;li&gt;the ricky gervais show&lt;/li&gt;&lt;li&gt;justified&lt;/li&gt;&lt;li&gt;white collar&lt;/li&gt;&lt;li&gt;being human&lt;/li&gt;&lt;li&gt;the venture brothers&lt;/li&gt;&lt;li&gt;the league&lt;/li&gt;&lt;li&gt;lights out&lt;/li&gt;&lt;li&gt;top chef&lt;/li&gt;&lt;li&gt;south park&lt;/li&gt;&lt;li&gt;the ultimate fighter&lt;/li&gt;&lt;li&gt;eagleheart&lt;/li&gt;&lt;li&gt;shameless&lt;/li&gt;&lt;li&gt;the daily show&lt;/li&gt;&lt;li&gt;the colbert report&lt;/li&gt;&lt;li&gt;bones&lt;/li&gt;&lt;li&gt;anthony bourdain&lt;/li&gt;&lt;li&gt;the soup&lt;/li&gt;&lt;li&gt;web soup&lt;/li&gt;&lt;li&gt;bully beatdown&lt;/li&gt;&lt;li&gt;metalocalypse&lt;/li&gt;&lt;li&gt;'weeds'&lt;/li&gt;&lt;li&gt;avengers: earth's mightiest&lt;/li&gt;&lt;li&gt;royal pains&lt;/li&gt;&lt;li&gt;rob dyrdek's fantasy factory&lt;/li&gt;&lt;li&gt;what would brian boitano make&lt;/li&gt;&lt;li&gt;tosh.0&lt;/li&gt;&lt;li&gt;chelsea lately&lt;/li&gt;&lt;li&gt;ncis&lt;/li&gt;&lt;li&gt;kitchen nightmares&lt;/li&gt;&lt;li&gt;torchwood&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/15459527-2378691485229994610?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2378691485229994610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2378691485229994610' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2378691485229994610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2378691485229994610'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2011/03/i-watch-too-much-tv.html' title='i watch too much tv'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2262470091079968078</id><published>2010-12-26T16:22:00.003-07:00</published><updated>2010-12-26T16:26:41.952-07:00</updated><title type='text'>for bad bart</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://basicinstructions.squarespace.com/storage/2010-12-19-Critresp.gif"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 600px; height: 600px;" src="http://basicinstructions.squarespace.com/storage/2010-12-19-Critresp.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://basicinstructions.net/basic-instructions/2010/12/19/how-to-criticize-someone-you-respect-deeply.html"&gt;http://basicinstructions.net/basic-instructions/2010/12/19/how-to-criticize-someone-you-respect-deeply.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2262470091079968078?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2262470091079968078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2262470091079968078' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2262470091079968078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2262470091079968078'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/12/for-bad-bart.html' title='for bad bart'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-979519206087379067</id><published>2010-12-25T23:51:00.002-07:00</published><updated>2010-12-25T23:58:05.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>apple and sausage stuffing recipe</title><content type='html'>&lt;span class="Apple-style-span" &gt;Made this recipe for the family: &lt;a href="http://www.epicurious.com/recipes/food/views/Apple-and-Sausage-Stuffing-107288"&gt;http://www.epicurious.com/recipes/food/views/Apple-and-Sausage-Stuffing-107288&lt;/a&gt; (go to the link to get a nicely printable version). It was a big hit.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', Arial, Verdana, sans-serif; "&gt;&lt;ul class="ingredientsList" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; "&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;2 tablespoons vegetable oil&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 pound spicy pork bulk sausage&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 cup diced celery&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 cup diced onion&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 cup diced peeled cored apple&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;2 garlic cloves, minced&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 tablespoon chopped fresh parsley&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;2 teaspoons minced fresh sage&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 bay leaf&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;ul class="ingredientsList" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; "&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;8 cups 1-inch cubes French bread with crusts (from 1-pound loaf)&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 cup whole milk&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;1 cup low-salt chicken broth&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;2 tablespoons (1/4 stick) butter, melted&lt;/span&gt;&lt;/li&gt;&lt;li class="ingredient" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;3 large eggs, beaten to blend&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;p class="instructions" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;Heat oil in heavy large skillet over medium heat. Add sausage; sauté until cooked through and brown, breaking into pieces with spoon, about 8 minutes. Using slotted spoon, transfer sausage to large bowl. Add celery and next 6 ingredients to drippings in skillet. Sauté over medium heat until vegetables are soft, about 5 minutes. Discard bay leaf. Add mixture to sausage. (Can be made 1 day ahead. Cover; chill. Reheat to lukewarm before continuing.)&lt;/span&gt;&lt;/p&gt;&lt;p class="instructions" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="instructions" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" &gt;Preheat oven to 350°F. Butter 13x9x2-inch glass baking dish. Add bread to sausage mixture. Whisk milk, broth, and butter in bowl to blend. Mix into stuffing; season stuffing with salt and pepper. Mix in eggs; transfer to prepared dish. Bake uncovered until cooked through and brown, about 50 minutes.&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', Arial, Verdana, sans-serif; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande', Arial, Verdana, sans-serif; "&gt;Details:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;doubled recipe&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;used granny smith apples. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;didn't find any good fresh parsley, so left it out&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;added some ground thyme&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;used 2% instead of whole milk&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;substituted apple juice for half the broth&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;used Johnsonville bulk mild italian sausage (for this crowd, that was teetering on the edge of too spicy for some)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" &gt;&lt;div&gt;Next time:&lt;/div&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" &gt;Double the apples. There wasn't a ton of apple flavor, despite following the proportions in the recipe &lt;b&gt;and &lt;/b&gt;adding apple juice.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-979519206087379067?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/979519206087379067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=979519206087379067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/979519206087379067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/979519206087379067'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/12/apple-and-sausage-stuffing-recipe.html' title='apple and sausage stuffing recipe'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6128228067531625077</id><published>2010-10-24T18:41:00.002-06:00</published><updated>2010-10-24T18:51:17.480-06:00</updated><title type='text'>further pointless reviews</title><content type='html'>Movies:&lt;div&gt;&lt;ul&gt;&lt;li&gt;Hurt Locker. Wuh? Why did people love this so much? &lt;/li&gt;&lt;li&gt;The Lovely Bones. Way too long and nowhere near as good as the book&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Books:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Finch, by Jeff VenderMeer. Fun, interesting, and a little gross at times. Reminded me of China Mieville&lt;/li&gt;&lt;li&gt;The Dead-Tossed Waves, by Carrie Ryan. Zombie goodness. Teenage-angsty badness. Meh.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I've actually been listening to podcasts lately, rather than doing much reading or movie watching...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Podcasts (in alphabetical order):&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Being a Dudecast&lt;/li&gt;&lt;li&gt;Chuck &amp;amp; Tina Spread TB &amp;amp; VD&lt;/li&gt;&lt;li&gt;Comedy Death-Ray Radio&lt;/li&gt;&lt;li&gt;Creeping with Armstrong&lt;/li&gt;&lt;li&gt;Doomhouse&lt;/li&gt;&lt;li&gt;Doug Loves Movies&lt;/li&gt;&lt;li&gt;The Geek Show Podcast&lt;/li&gt;&lt;li&gt;The Grandma's Virginity Podcast&lt;/li&gt;&lt;li&gt;MicrobeWorld's Meet the Scientist Podcast&lt;/li&gt;&lt;li&gt;The Nerdist&lt;/li&gt;&lt;li&gt;NPR: Wait wait... Don't Tell Me! Podcast&lt;/li&gt;&lt;li&gt;The Pod F. Tompkast&lt;/li&gt;&lt;li&gt;The Robot's Pajama Party&lt;/li&gt;&lt;li&gt;Savage Love Podcast&lt;/li&gt;&lt;li&gt;Television Zombies&lt;/li&gt;&lt;li&gt;This American Life&lt;/li&gt;&lt;li&gt;Today in the Past&lt;/li&gt;&lt;li&gt;WTF with Marc Maron Podcast&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Looking at the list... The majority are either geeks talking about geeky stuff, or comedians talking about comedy.&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/15459527-6128228067531625077?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6128228067531625077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6128228067531625077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6128228067531625077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6128228067531625077'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/10/further-pointless-reviews.html' title='further pointless reviews'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-5589030118225556656</id><published>2010-09-25T22:36:00.003-06:00</published><updated>2010-09-25T22:46:31.569-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Zucchini Bread</title><content type='html'>Made this tonight. Brought back lots of childhood memories. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Zucchini Bread&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;wet ingredients:&lt;/div&gt;&lt;div&gt;3 eggs&lt;/div&gt;&lt;div&gt;2 cups sugar&lt;/div&gt;&lt;div&gt;1 cup oil&lt;/div&gt;&lt;div&gt;2 tsp vanilla&lt;/div&gt;&lt;div&gt;2 cup grated zucchini&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;dry ingredients&lt;/div&gt;&lt;div&gt;3 cups flour&lt;/div&gt;&lt;div&gt;1 tsp baking soda&lt;/div&gt;&lt;div&gt;1/4 tsp baking powder&lt;/div&gt;&lt;div&gt;1 tsp salt&lt;/div&gt;&lt;div&gt;3 (heaping) tablespoons cinnamon. That's not a typo. 3+ Tablespoons&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Beat eggs until light and frothy&lt;/div&gt;&lt;div&gt;Combine rest of wet ingredients with eggs&lt;/div&gt;&lt;div&gt;Combine dry ingredients and whisk together&lt;/div&gt;&lt;div&gt;Combine dry mixture with wet&lt;/div&gt;&lt;div&gt;Split into 2 greased loaf pans&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;bake at 325' for 1 hour&lt;/div&gt;&lt;div&gt;remove from oven when inserted toothpick comes out clean&lt;/div&gt;&lt;div&gt;cool on rack outside of pans&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Freezes very well, I remember how happy I'd be when months after baking it my mom would pull a loaf out of the freezer for dessert after Sunday dinner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Be sure to be the one to slice the bread, that way you can be greedy and get the crunchier heels. Mmmmmmmmmmmmmm.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-5589030118225556656?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/5589030118225556656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=5589030118225556656' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5589030118225556656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5589030118225556656'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/09/zucchini-bread.html' title='Zucchini Bread'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1772689418830729547</id><published>2010-07-07T10:21:00.002-06:00</published><updated>2010-07-07T10:39:47.117-06:00</updated><title type='text'>latest developments</title><content type='html'>&lt;p&gt;Books read:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Forest of Hands and Teeth -- Like someone mashed up The Village with Zombies. Pretty good, except for the teenage angsty bits.&lt;/li&gt;&lt;li&gt;Ariel -- Post-apocolyptic, technology-fails, SCA members finally feel superier, boy-meets-unicorn story. You know, that old chestnut. Enjoyed it more than S.M. Stirlin's Dies the Fire.&lt;/li&gt;&lt;li&gt;Boneshaker -- Zeppelins, Zombies, Zteampunk. Fun and exciting.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Movies:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Valkrie -- Interesting story I'd heard bits of before. Unrealistic-sounding, preachy dialog about their motives kind of took you out of the story. Not that the end result of what they were trying for was bad... just that at least the politician's motives seemed more realistic, while the military guys were more pie-in-the-sky. But, maybe that's how it actually went down.&lt;/li&gt;&lt;li&gt;Undead or Alive -- Chris Kattan and James Denton as cowboys during a zombie outbreak. Suprisingly good and funny in a shut-off-your-brain kind of way. The zombies were too unkillable, but still fun. Navi Rawat was as annoying as ever. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1772689418830729547?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1772689418830729547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1772689418830729547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1772689418830729547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1772689418830729547'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/07/latest-developments.html' title='latest developments'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-198232236116010627</id><published>2010-03-16T20:32:00.000-06:00</published><updated>2010-03-16T20:33:31.940-06:00</updated><title type='text'>roomba: better than jesus?</title><content type='html'>Had a Roomba 550 for a month now. In non-Roomba online forums, read a few bad reviews &lt;br /&gt;about shoddy parts and difficulty with returns on the 5XX series. Decided to get it at &lt;br /&gt;Costco since their return policy is ludicrously good.&lt;br /&gt;&lt;br /&gt;So far, so good. It deals w/ electrical cords and rug tassles without any issues. It also &lt;br /&gt;doesn't appear to have any problems transitioning between rug and hardwood floor. Only &lt;br /&gt;have one extra-fluffy bathroom rug that it has trouble with.&lt;br /&gt;&lt;br /&gt;The scheduling feature is great. I can schedule it to clean up automatically while we're &lt;br /&gt;at work. I come home and it's waiting for me on the charger, ready to have its bin &lt;br /&gt;dumped. Typically, I'll clean it out, then set it loose in the basement while we're &lt;br /&gt;spending the evening upstairs. And when I go to bed I clean it out again and put it back &lt;br /&gt;on the charger for its automated run the next day.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On the whole, really really like it. We'd typically only vacuum once a week, and with the &lt;br /&gt;dog and cat that meant big dusty hairballs at the end of the week. Roomba's taken care of &lt;br /&gt;those.&lt;br /&gt;&lt;br /&gt;Definitely still need our other vacuum, since roomba's just bouncing around &lt;br /&gt;semi-randomly. But, I don't have to worry about neighbors popping over and getting &lt;br /&gt;swallowed by a dust bunny.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-198232236116010627?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/198232236116010627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=198232236116010627' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/198232236116010627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/198232236116010627'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/03/roomba-better-than-jesus.html' title='roomba: better than jesus?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3935555246062028121</id><published>2010-03-12T16:23:00.004-07:00</published><updated>2010-03-12T21:04:51.790-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='software builds'/><title type='text'>UnitTest++ == teh awesome</title><content type='html'>Been using UnitTest++ for the last couple months on my work project. So far, enjoying it. Very simple to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;set up&lt;/li&gt;&lt;li&gt;add new tests&lt;/li&gt;&lt;li&gt;explain to the other developers&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;li&gt;profit&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Our unit tests are part of our project's Visual Studio solution file. Each unit test's project is setup to run the unit test as a post-build step. So far, it's caught a number of 'simple' fixes that broke some.&lt;/p&gt;&lt;p&gt;I've also setup a Hudson server to automatically build our project... But, I didn't want it to fail the build if the tests failed. And, I wanted to collect the XML reports when it's built from the continuous integration server.&lt;/p&gt;&lt;p&gt;So, rather than always just blindly calling UnitTest::RunAllTests() in the unit tests's main() function, I made a utility library that'll look at an environment variable to determine how it should run the tests.&lt;/p&gt;&lt;p&gt;In the unit tests's main() :&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int main(int, char const *[])&lt;br /&gt;{&lt;br /&gt;return myUnitTest_runAllTests("my_test");&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;The utility function:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#include "cstdlib"&lt;br /&gt;#include "fstream"&lt;br /&gt;#include "iostream"&lt;br /&gt;&lt;br /&gt;#include "boost/filesystem.hpp"&lt;br /&gt;&lt;br /&gt;#include "UnitTest++/UnitTest++.h"&lt;br /&gt;#include "UnitTest++/XmlTestReporter.h"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace bfs = boost::filesystem;&lt;br /&gt;&lt;br /&gt;struct True&lt;br /&gt;{&lt;br /&gt;        bool operator()(const UnitTest::Test* const) const&lt;br /&gt;        {&lt;br /&gt;                return true;&lt;br /&gt;        }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DLLExport int myUnitTest_runAllTests(const char* const testName)&lt;br /&gt;{&lt;br /&gt;        char* xmlDir = 0;&lt;br /&gt;        size_t len;&lt;br /&gt;        errno_t err = _dupenv_s(&amp;xmlDir,&amp;len,"UNITTEST_XML_DIR");&lt;br /&gt;&lt;br /&gt;        if (err || len == 0)&lt;br /&gt;        {&lt;br /&gt;                // env var not set, just run the test w/ standard mechanism&lt;br /&gt;                return UnitTest::RunAllTests();&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;                bfs::path p = bfs::path(xmlDir);&lt;br /&gt;&lt;br /&gt;                // free memory from _dupenv_s&lt;br /&gt;                free(xmlDir);&lt;br /&gt;&lt;br /&gt;                // if necessary, create output directory&lt;br /&gt;                if (! bfs::exists(p) || ! bfs::is_directory(p))&lt;br /&gt;                {&lt;br /&gt;                        if (!bfs::create_directories(p))&lt;br /&gt;                        {&lt;br /&gt;                                std::cerr &lt;&lt; "Problem creating directory " &lt;&lt; p &lt;&lt; std::endl;&lt;br /&gt;                                return -1;&lt;br /&gt;                        }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                std::string fname(testName);&lt;br /&gt;                fname += ".xml";&lt;br /&gt;&lt;br /&gt;                // use / operator to append filename onto path&lt;br /&gt;                bfs::path fpath = p / fname;&lt;br /&gt;&lt;br /&gt;                std::ofstream f(fpath.file_string().c_str());&lt;br /&gt;                UnitTest::XmlTestReporter reporter(f);&lt;br /&gt;&lt;br /&gt;                UnitTest::TestRunner runner(reporter);&lt;br /&gt;&lt;br /&gt;                // if we're outputting to XML, don't return failure as return code&lt;br /&gt;                // this way tests can fail without it making the automated build think the build failed.&lt;br /&gt;                int ret = runner.RunTestsIf(UnitTest::Test::GetTestList(),NULL,True(),0);&lt;br /&gt;&lt;br /&gt;                return 0;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And then you just point Hudson's xUnit plugin at the generated reports. Came together suprisingly easy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3935555246062028121?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3935555246062028121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3935555246062028121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3935555246062028121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3935555246062028121'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/03/unittest-teh-awesome.html' title='UnitTest++ == teh awesome'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4346022692115931468</id><published>2010-03-09T12:40:00.002-07:00</published><updated>2010-03-12T16:35:21.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>movies</title><content type='html'>Stayed up waaaay too late last night watching movies...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Balls Out: Gary the Tennis Coach. Bizarre. Funny. If you enjoy Sean William Scott acting goofy, you might like this movie.&lt;/li&gt;&lt;li&gt;Boondock Saints. Meh. Not sure if I can say I watched this since really I fast-forwarded through most of it... especially parts with Willem Dafoe chewing up the scenery.&lt;/li&gt;&lt;li&gt;No Country For Old Men. Tense. Exciting. Good&lt;/li&gt;&lt;li&gt;The Reader. Good thing I saved this feel-good hit for last... OMG. Downer. But very good.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4346022692115931468?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4346022692115931468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4346022692115931468' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4346022692115931468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4346022692115931468'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/03/movies.html' title='movies'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2103040937320032144</id><published>2010-03-09T12:35:00.002-07:00</published><updated>2010-03-12T16:35:21.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>won't you please help... provide a MILF-related punchline</title><content type='html'>We got the following notice at work today&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Subject: Mountain Lion Warning&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;The following warning has been issued for the Research Park area:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Building management has recently noticed unusual wildlife activities around the Williams Building property. Specifically several mountain lions have been sighted in and around the parking deck. Building management is working with the Utah Division of Wildlife Resources with regard to this activity however we want to make you aware of the following guidelines from Wildlife Resources should you encounter a mountain lion when entering or leaving the facility:&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Do not panic. Most lions will try to avoid confrontation. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Raise your arms to make yourself appear as large as possible. Lions prefer smaller prey. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Slowly back away. Never run and never turn your back toward the cougar. Yell at the lion and wave your arms as you back away. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;Do not make direct eye contact. Lions perceive eye contact as aggressive behavior. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;If you are attacked, fight back. Try to prevent the lion from getting behind you.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;Please let us know if you notice any unusual wildlife activity in &amp;amp; around our parking lot.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2103040937320032144?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2103040937320032144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2103040937320032144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2103040937320032144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2103040937320032144'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/03/wont-you-please-help-provide-milf.html' title='won&apos;t you please help... provide a MILF-related punchline'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-263870866708418843</id><published>2010-01-19T21:15:00.003-07:00</published><updated>2010-03-12T16:35:21.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>dust of dreams</title><content type='html'>&lt;div&gt;Feels like I've spent the last 2 months catching up on all the plot threads by reading the last handful of books in the &lt;a href="http://en.wikipedia.org/wiki/Malazan_Book_of_the_Fallen"&gt;Malazan series&lt;/a&gt;, all in preparation for book 9.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finished said book #9 last night. &lt;a href="http://www.amazon.com/Dust-Dreams-Book-Malazan-Fallen/dp/0765316552"&gt;Dust of Dreams&lt;/a&gt; by Steven Erikson last night. Very good. A few huge cliff hangers for the final book. And a very exciting ending. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's going to be a long wait for the next book.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-263870866708418843?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/263870866708418843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=263870866708418843' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/263870866708418843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/263870866708418843'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2010/01/dust-of-dreams.html' title='dust of dreams'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-5460161548853340882</id><published>2009-12-01T19:52:00.001-07:00</published><updated>2009-12-01T20:27:54.237-07:00</updated><title type='text'>doxygen weirdness</title><content type='html'>Spent most of my day getting Doxygen working with Visual Studio 2008. Finally happy with the output after lots of fiddling and trial-and-error.  Now my API documentation is getting generated every time I do a build (and tested with UnitTest++).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some oddities I had to deal with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;doxygen doesn't report an error if you've got \msc in your docs, just silently puts a invalid image reference into the HTML. Doesn't seem to actually try to do anything with the \msc command unless you set MSCGEN_PATH&lt;/li&gt;&lt;li&gt;I've got doxygen/dot/mscgen checked-in to subversion relative to my project's source code. Running doxygen from a Visual Studio post-build step, and decided to wrap it with a batch script. At least on windows, doxygen seems to have trouble reading an environment variable to set DOT_PATH / MSCGEN_PATH. Seems like it expands the env variable just fine, but it reports an error saying it can't find dot.  Ended up just putting the relative path into the config file. Annoying since now I can't share the config file w/ multiple projects at different levels of the tree... but hey, free-ish UML sequence diagrams via mscgen.&lt;/li&gt;&lt;li&gt;If I enable HAVE_DOT, lots of unhelpful error messages whenever it tries to run dot. A little googling turned up the problem -- doxygen tries to avoid re-doing some work if it thinks it doesn't have to regenerate some files. Not sure why it isn't working, but you can work-around the problem by creating a pre-build step that deletes the document-output directory.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;When I wasn't messing with Doxygen, I was waiting in line at the DMV to renew my driver's license. Whee.&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/15459527-5460161548853340882?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/5460161548853340882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=5460161548853340882' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5460161548853340882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5460161548853340882'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/12/doxygen-weirdness.html' title='doxygen weirdness'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8944827924130185630</id><published>2009-11-30T22:28:00.001-07:00</published><updated>2009-11-30T22:34:30.114-07:00</updated><title type='text'>mingw vs. cygwin -- mingw fail</title><content type='html'>Cygwin has its warts. But, at least it has a single installer. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's documentation on the MinGW site with install instructions. Many, many pages w/ seemingly contradictory information. And then you've got to navigate SourceForge's horrible file download interface. Ick.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8944827924130185630?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8944827924130185630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8944827924130185630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8944827924130185630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8944827924130185630'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/11/mingw-vs-cygwin-mingw-fail.html' title='mingw vs. cygwin -- mingw fail'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1146048416897827572</id><published>2009-11-18T22:08:00.003-07:00</published><updated>2009-11-18T22:33:40.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>quit stealing my bits</title><content type='html'>The new job is going well. Working closely with a couple other developers to design and implement some functionality for our new system.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The bad part is... we all have very similar personalities and development styles. All of us are tending to get caught up in the 'big picture' and losing sight of the functionality we need to implement in the near-term. Looooooong conversations about the N number of ways we could do X, Y, or Z. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We need the big picture view to plan the total functionality we need, and to schedule the resources we'll need. But, none of us are being very decisive about limiting the options we have to choose from.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Scarily, I'm probably the least introverted of us -- and, since I'm the 'new guy' I have fewer responsibilities -- so I'm the one writing documents, drawing diagrams, and giving presentations. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In many good ways, I've had to leave my comfort zone. But, today in particular it became clear I'm going to have to be the one to keep us on task and moving forward.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Stupid shoes on other feets.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1146048416897827572?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1146048416897827572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1146048416897827572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1146048416897827572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1146048416897827572'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/11/quit-stealing-my-bits.html' title='quit stealing my bits'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7295511670032825020</id><published>2009-11-02T15:29:00.002-07:00</published><updated>2009-11-02T15:40:30.925-07:00</updated><title type='text'>dependency repository for visual studio / nant / msbuild / whatever</title><content type='html'>Dear LazyWeb,&lt;br /&gt;&lt;br /&gt;For Java builds, you've got both Ivy and Maven as mechanisms to publish / discover inter-project dependencies.&lt;br /&gt;&lt;br /&gt;Are there similar tools for C# or C++? Particularly within Visual Studio?&lt;br /&gt;&lt;br /&gt;Googling has turned up vague hints about running Ivy from within a NAnt script. And a Visual Studio Dependency Manager on Codeplex that sounds like it might fit the bill, but doesn't have much documentation to judge.&lt;br /&gt;&lt;br /&gt;We've got a bunch of thirdparty dependencies, as well as inhouse dependencies -- individual projects might change multiple times a day, or only every year.  It'd be nice to have a Ivy-like repository that we can publish new releases into.&lt;br /&gt;&lt;br /&gt;Ideally I'd like something integrated with Visual Studio to make our developers happy, as well as something easily scriptable/controllable to make our CM people happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7295511670032825020?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7295511670032825020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7295511670032825020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7295511670032825020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7295511670032825020'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/11/dependency-repository-for-visual-studio.html' title='dependency repository for visual studio / nant / msbuild / whatever'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3549728855799514138</id><published>2009-10-26T23:56:00.004-06:00</published><updated>2009-10-27T00:12:38.652-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>argh</title><content type='html'>I was playing around with some python code a couple months ago. Nothing that special, just a few hours work figuring out how to parse some text files. Nothing too elaborate, but I remember being particularly pleased with one or two pieces of it.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally getting back to it tonight and it's nowhere to be found... I've found tons of unrelated crap I saved off and will never use again. The time I'm not anal about putting some experiments into version control is also the time I deleted it without realizing it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think it must have also been when I was fiddling with eclipse+pydev+IronPython, and I hadn't bothered to change the project's path from the default place in the default Eclipse workspace. Normally I always change one or both of those... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sometime in the last few weeks I must have done my usual iteration of "eclipse is acting a little wonky, time to delete it and re-install it and all my usual plugins. Oh, and this workspace directory I never use."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Argh.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also distinctly remember thinking that I should make a blog post of some of the code. Didn't happen. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Double argh.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3549728855799514138?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3549728855799514138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3549728855799514138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3549728855799514138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3549728855799514138'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/10/argh.html' title='argh'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3288124267232004697</id><published>2009-10-22T21:47:00.004-06:00</published><updated>2009-10-26T13:38:10.931-06:00</updated><title type='text'>gentlemen broncos</title><content type='html'>Saw Gentlemen Broncos tonight at a screening. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yup. I've got the inside track on the Hollywood big time. My friends dog is in the film. The dog has bit me on the bum. I'm not sure how many degrees away that now makes me from Kevin Bacon. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;Update&lt;/strong&gt;: My buttocks are 4 degrees away from Kevin Bacon&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="360" width="580"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qdpFpfIBkXc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/qdpFpfIBkXc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="360"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3288124267232004697?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3288124267232004697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3288124267232004697' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3288124267232004697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3288124267232004697'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/10/gentlemen-broncos.html' title='gentlemen broncos'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6256367319888025082</id><published>2009-10-06T21:02:00.003-06:00</published><updated>2009-10-06T21:47:06.008-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>fall 2009 status</title><content type='html'>&lt;ul&gt;&lt;li&gt;dog still good. Other than chomping on the neighbor's cat. &lt;/li&gt;&lt;li&gt;new job still good. Fixed a long-outstanding bug in the code. Waiting to get more bugs to work on, and in the meantime working on a new tool to help ease our transition from ClearCase to Subversion. Getting to play in python most of the day, good times.&lt;/li&gt;&lt;li&gt;Best book I've read lately: &lt;a href="http://en.wikipedia.org/wiki/Soon_I_Will_Be_Invincible"&gt;Soon I Will Be Invincible&lt;/a&gt;, by Austin Grossman. &lt;/li&gt;&lt;li&gt;Best audiobook I've listened to lately: &lt;a href="http://www.podiobooks.com/title/how-to-succeed-in-evil-the-novel"&gt;How to Succeed in Evil&lt;/a&gt;, by Patrick McLean&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Odd that both the book and the audiobook are superhero satire/homage. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Currently reading: &lt;a href="http://en.wikipedia.org/wiki/Matter_(novel)"&gt;Matter&lt;/a&gt;, by Iain M. Banks&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6256367319888025082?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6256367319888025082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6256367319888025082' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6256367319888025082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6256367319888025082'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/10/fall-2009-status.html' title='fall 2009 status'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4609235805506891015</id><published>2009-09-20T20:49:00.002-06:00</published><updated>2009-09-20T20:51:05.524-06:00</updated><title type='text'>proof that babies provide excellent winter traction?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_gR0SRn4W478/Srbp7WQQGkI/AAAAAAAAAZ4/cYW5EvdzNX4/s1600-h/baby_ice_cleat.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 141px;" src="http://2.bp.blogspot.com/_gR0SRn4W478/Srbp7WQQGkI/AAAAAAAAAZ4/cYW5EvdzNX4/s200/baby_ice_cleat.jpg" alt="" id="BLOGGER_PHOTO_ID_5383747610363304514" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4609235805506891015?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4609235805506891015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4609235805506891015' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4609235805506891015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4609235805506891015'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/09/proof-that-babies-provide-excellent.html' title='proof that babies provide excellent winter traction?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gR0SRn4W478/Srbp7WQQGkI/AAAAAAAAAZ4/cYW5EvdzNX4/s72-c/baby_ice_cleat.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4335572597239516620</id><published>2009-09-08T21:36:00.001-06:00</published><updated>2009-09-08T21:47:17.444-06:00</updated><title type='text'>things learned on my first day at the new job</title><content type='html'>&lt;ul&gt;&lt;li&gt;eclipse is positively snappy on a 8-core workstation&lt;/li&gt;&lt;li&gt;lotus notes still exists&lt;/li&gt;&lt;li&gt;there is such thing as too big a monitor. So far, not liking the ginormous widescreen. Would much rather have 2 or more 19"-20" monitors.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4335572597239516620?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4335572597239516620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4335572597239516620' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4335572597239516620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4335572597239516620'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/09/things-learned-on-my-first-day-at-new.html' title='things learned on my first day at the new job'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7694526451476786716</id><published>2009-09-07T20:32:00.001-06:00</published><updated>2009-09-07T20:32:50.629-06:00</updated><title type='text'>good presentation on TDD</title><content type='html'>&lt;a href="http://www.infoq.com/presentations/tdd-ten-years-later"&gt;http://www.infoq.com/presentations/tdd-ten-years-later&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7694526451476786716?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7694526451476786716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7694526451476786716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7694526451476786716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7694526451476786716'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/09/good-presentation-on-tdd.html' title='good presentation on TDD'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4031589468411081473</id><published>2009-09-07T16:28:00.002-06:00</published><updated>2009-09-07T16:36:41.012-06:00</updated><title type='text'>daemon</title><content type='html'>Just finished &lt;a href="http://www.amazon.com/Daemon-Daniel-Suarez/dp/0525951113/ref=cm_cr_pr_product_top"&gt;Daemon&lt;/a&gt; by Daniel Suarez. Very good, devoured it in a day this weekend. Not sure if I liked how it ended -- very clearly setting up the sequel, which isn't due until 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4031589468411081473?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4031589468411081473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4031589468411081473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4031589468411081473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4031589468411081473'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/09/daemon.html' title='daemon'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1251776439896779869</id><published>2009-09-06T21:41:00.002-06:00</published><updated>2009-09-06T21:44:20.480-06:00</updated><title type='text'>how I spent my labor day weekend</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gR0SRn4W478/SqSBflQ4W_I/AAAAAAAAAZw/il9-2b2ON2Q/s1600-h/Photo0024.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_gR0SRn4W478/SqSBflQ4W_I/AAAAAAAAAZw/il9-2b2ON2Q/s200/Photo0024.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5378566234566056946" /&gt;&lt;/a&gt;&lt;br /&gt;putting dogs in swings&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1251776439896779869?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1251776439896779869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1251776439896779869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1251776439896779869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1251776439896779869'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/09/how-i-spent-my-labor-day-weekend.html' title='how I spent my labor day weekend'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gR0SRn4W478/SqSBflQ4W_I/AAAAAAAAAZw/il9-2b2ON2Q/s72-c/Photo0024.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4024184532495369747</id><published>2009-07-25T23:05:00.004-06:00</published><updated>2009-07-25T23:09:43.288-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>losing my geek cred</title><content type='html'>Finding pydev + eclipse a decent IDE for playing around with python. That place in my heart used to be held by Vim.&lt;br /&gt;&lt;br /&gt;The very new IronPython integration in pydev is surprisingly functional.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4024184532495369747?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4024184532495369747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4024184532495369747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4024184532495369747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4024184532495369747'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/07/losing-my-geek-cred.html' title='losing my geek cred'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8950632414871124523</id><published>2009-07-25T23:03:00.001-06:00</published><updated>2009-07-25T23:05:21.411-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>interesting dynamic languages on .net talk from 2008</title><content type='html'>&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="437" height="314" id="viddler"&gt;&lt;param name="movie" value="http://www.viddler.com/player/c24a5809/" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed src="http://www.viddler.com/player/c24a5809/" width="437" height="314" type="application/x-shockwave-flash" allowScriptAccess="always" allowFullScreen="true" name="viddler" &gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8950632414871124523?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8950632414871124523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8950632414871124523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8950632414871124523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8950632414871124523'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/07/interesting-dynamic-languages-on-net.html' title='interesting dynamic languages on .net talk from 2008'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7721182481577723901</id><published>2009-07-21T22:23:00.002-06:00</published><updated>2009-07-21T22:30:10.593-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>argh</title><content type='html'>why did it take 10+ years for us to realize our round-to-nearest-100th algorithm is busted (on windows)?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not sure why the original developer cast to 'long' rather than using some modulo division on the floating point number. Stupid windows 32bit long. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And, we can't do the easy solution of 'long long' because of incompatibility with the HP-UX C-runtime on the old-as-dirt patch levels some of our customers refuse to move from.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7721182481577723901?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7721182481577723901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7721182481577723901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7721182481577723901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7721182481577723901'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/07/argh.html' title='argh'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6794924038464578562</id><published>2009-07-18T20:25:00.002-06:00</published><updated>2009-07-18T20:55:28.048-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>why I love python</title><content type='html'>Lately, discussions at the NFJS conference and recent conversations with friends have made me introspective about why I like Python.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I first started using Python about 9 years ago.  Previously, I'd used mostly C, C++, Perl, Pascal, and a very little bit of Visual Basic. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pascal was what I'd learned in High School. VB, C, and C++ were what I'd used during college (I guess there was a teeeeny bit of Lisp thrown in there too). My first couple years as a software engineer, C++ was the hammer with which I'd pounded all programming nails.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Eventually I learned Perl. It was OK. But, like most people, I'd write Perl scripts and not be able to read them the next month. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After a recomendation I'd read online, I tried the Python tutorial. The conciseness was a revelation. The way it got out of my way and let me worry about the problem and not the compile/run/debug loop. Having dictionaries and lists as a first-class language features blew me away. I don't know why similar features in Perl never struck me in the same way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Learning Python not only completely reinvigorated my interest in programming, but it also and completely changed the way I program. Maybe I still love Python because of the sentimental attachment to it from that first revelatory period of experimentation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6794924038464578562?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6794924038464578562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6794924038464578562' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6794924038464578562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6794924038464578562'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/07/why-i-love-python.html' title='why I love python'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-5305186342547710270</id><published>2009-07-18T20:05:00.002-06:00</published><updated>2009-07-18T20:24:53.907-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>no fluff just stuff SLC 2009</title><content type='html'>It was pretty good. Only went to one session that was a dud.  Decided to try to go to a number of different speakers in an attempt to not get burnt out. But, I should have just stuck with all of Venkat Subramanian's sessions the first day's afternoon. He's an awesome speaker.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I enjoyed seeing other dynamic languages -- groovy, scala, clojure. Definitely seems like mixing in Groovy to any java project would be pretty easy. Loved that it removed a lot of Java's verbosity, but kept the barrier of entry low. Groovy also seemed to be much more readable than clojure or scala.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Scala seemed very interesting -- liked the type inference, and concurrency support. But, I hate hate hate the underscore. And that g-damn colon that changed the operator/operand. Maybe if I used it every day, it'd seem more readable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I guess if people can hate Python's significant whitespace (which I love), I can have an irrational hatred of Scala's underscores/colons.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-5305186342547710270?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/5305186342547710270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=5305186342547710270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5305186342547710270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5305186342547710270'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/07/no-fluff-just-stuff-slc-2009.html' title='no fluff just stuff SLC 2009'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1301370533570755134</id><published>2009-07-13T00:09:00.002-06:00</published><updated>2009-07-13T00:39:36.143-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>further adventures in horrible code -- effin assert</title><content type='html'>Lots of &lt;a href="http://en.wikipedia.org/wiki/Assert"&gt;assert()&lt;/a&gt; checks spread throughout our code, testing perfectly valid error conditions. Used sparingly, testing things that absolutely could not happen... ok. But checking for NULL values passed as parameters to various type comparison functions? Eeesh.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's caused problems up a couple times before... but last Friday's was extra awesome. I'd been working for 3 days with a customer, trying to resolve the cause of a crash of our application at their site. Finally get them to install WinDbg and run our debug build so we can get some crash dumps.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bang. Assertion failure. Nowhere near the crash we see when running a release build.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dig into the crash dump. Dirty data in their database that the release-compiled version of our application just ignores because the assert() check is turned into a no-op by the preprocessor for release builds.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I can't tell them it's their data that needs to be fixed. This application and its periodic releases has been running just fine on their system for 5+ years. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But, I also can't run the debug version of the latest release to diagnose their current problem. It's stopping during initialization due to the asserts. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Argh.&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/15459527-1301370533570755134?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1301370533570755134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1301370533570755134' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1301370533570755134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1301370533570755134'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/07/further-adventures-in-horrible-code.html' title='further adventures in horrible code -- effin assert'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6375005541926207272</id><published>2009-06-13T21:12:00.002-06:00</published><updated>2009-06-13T21:13:15.997-06:00</updated><title type='text'>what I've been up to</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_gR0SRn4W478/SjRqu1qTM1I/AAAAAAAAAZQ/TLi6uLI12DY/s1600-h/steve_n_lucy.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_gR0SRn4W478/SjRqu1qTM1I/AAAAAAAAAZQ/TLi6uLI12DY/s200/steve_n_lucy.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5347016010506646354" /&gt;&lt;/a&gt;&lt;br /&gt;walkin&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pickin up poop&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;trainin&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6375005541926207272?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6375005541926207272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6375005541926207272' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6375005541926207272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6375005541926207272'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/06/what-ive-been-up-to.html' title='what I&apos;ve been up to'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gR0SRn4W478/SjRqu1qTM1I/AAAAAAAAAZQ/TLi6uLI12DY/s72-c/steve_n_lucy.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1939773563542333819</id><published>2009-06-05T08:55:00.002-06:00</published><updated>2009-06-05T09:37:02.612-06:00</updated><title type='text'>readin'</title><content type='html'>Just finished Use of Weapons by Iain M. Banks. For whatever reason, found it hard to get through. Mostly because I wasn't in much of a reading mood. The two timelines also confused me at first. I enjoyed it though, and will definitely re-read in a few months to see if I like it better the second time.&lt;br /&gt;&lt;br /&gt;Next on the to-be-read pile, in no particular order&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IronPython in Action&lt;/li&gt;&lt;li&gt;Watchmen&lt;/li&gt;&lt;li&gt;Dark Knight Returns&lt;/li&gt;&lt;li&gt;In Defense of Food&lt;/li&gt;&lt;li&gt;Pride and Prejudice and Zombies&lt;/li&gt;&lt;/ul&gt;In other news: Got a promotion at work (in semi-official-title but not in salary). Now I get to do even more of the things I'd rather not be doing. Good times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1939773563542333819?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1939773563542333819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1939773563542333819' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1939773563542333819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1939773563542333819'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/06/readin.html' title='readin&apos;'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7916888775945495555</id><published>2009-02-16T22:47:00.001-07:00</published><updated>2009-02-16T22:47:47.090-07:00</updated><title type='text'>klingon night school</title><content type='html'>&lt;a style='display:block; color:#ffffff; width:421px; padding:5px 0px 7px 5px; background:#000000; font-family:Georgia, Palatino, Times New Roman; text-decoration:none; font-size:14px; font-weight:bold;' href='http://www.atom.com/funny_videos/3EFBFFFF01A5F0DC001700A70523/'&gt;Klingon Night School&lt;/a&gt;&lt;embed src='http://media.mtvnservices.com/mgid:hcx:content:atom.com:f1d6d68d-1ef6-4297-ac8d-40176be8ba47' type='application/x-shockwave-flash' wmode='window' width='425' height='354' allowFullscreen='true' flashvars='autoPlay=false'&gt;&lt;/embed&gt;&lt;div style='border-top:1px solid #343f43; padding:5px 0 7px 0; text-align:center; width:426px; font: bold 10px verdana, sans-serif; color:#c1ddf2; background:#000000;'&gt;Atom.com: &lt;a href='http://www.atom.com/' target='_blank' style='color:#c1ddf2; margin:0 5px;'&gt;Funny Videos&lt;/a&gt; | &lt;a href='http://www.atom.com/channels/category_spoofs/?tab=channels' target='_blank' style='color:#c1ddf2; margin-left:5px;'&gt;Spoofs&lt;/a&gt; | &lt;a href='http://www.atom.com/channel/channel_tv_movie_spoofs' target='_blank' style='color:#c1ddf2; margin:0 5px;'&gt;TV &amp; Movie Spoofs&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7916888775945495555?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7916888775945495555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7916888775945495555' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7916888775945495555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7916888775945495555'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/02/klingon-night-school.html' title='klingon night school'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4147297996514020674</id><published>2009-01-20T20:20:00.002-07:00</published><updated>2009-01-20T20:24:16.891-07:00</updated><title type='text'>parable of the goose</title><content type='html'>The windows near my cube overlook a winding river through the nearby golf course.&lt;br /&gt;&lt;br /&gt;Early this morning the ice was pretty patchy. Open in places, other sections just thin enough.&lt;br /&gt;&lt;br /&gt;Thin enough that geese walking across would crack through, plop into the water, and create a 3x-goose-size hole in the ice. A pair of them fell through within a section of ice around 30 feet across. Then, a different pair swam happily past in the open area.&lt;br /&gt;&lt;br /&gt;One goose got so upset it starts swimming back and forth. Zigging and zagging, banging into the sides of the ice. Trying to get closer to its fellow stuck in the ice, then zooming towards the freely swimming pair. Lots of excitement and action, but ultimately no movement.&lt;br /&gt;&lt;br /&gt;Later today....&lt;br /&gt;&lt;br /&gt;While talking over all the crazy synchronization steps that my team has to follow in order to stay useful and relevant to the rest of the project, and how we'll transition that into our long-term goals, I tell them the above parable of the goose.&lt;br /&gt;&lt;br /&gt;I was talking with the project's PM and current SD-manager (my boss), and was trying to describe how frustrated I was getting. Back and forth, the same discussions, different groups pulling our priorities all over, and ultimately no real progress towards the end goal.&lt;br /&gt;&lt;br /&gt;Of course... rather than end the story there, I accidentally finish it up with the goose getting fed up and flying away.&lt;br /&gt;&lt;br /&gt;The moral of the story:&lt;br /&gt;        I suck at fairy tales. But, I'm awesome at Fruedian slips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4147297996514020674?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4147297996514020674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4147297996514020674' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4147297996514020674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4147297996514020674'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/01/parable-of-goose.html' title='parable of the goose'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3907433250282409883</id><published>2009-01-12T22:01:00.003-07:00</published><updated>2009-01-12T22:09:39.777-07:00</updated><title type='text'>belated reading/listening/watching/playing updates</title><content type='html'>Read:&lt;div&gt;&lt;ul&gt;&lt;li&gt;The Algebraist, by Iain Banks. Re-read this. Even better the second time.&lt;/li&gt;&lt;li&gt;World War Z, by Max Brooks. Also a re-read, also awesome.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Listened:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Ancestor and Infected, by Scott Sigler. I think I'd have liked these better in print form than as audiobooks... The author does the audiobooks, which I assume allows them to be free. As stingey as I can be, I might pony up some cash if the voices of the characters weren't so lame. Story-wise, I much prefered Infected to Ancestor.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Watched:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Finally saw WALL*E, The Dark Knight, and Wanted. All great.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Played:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Many, many games with friends and family. Some new/continuing favorites: Ticket to Ride, Game of Thrones, Hey That's My Fish, Snorta, Samurai. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/15459527-3907433250282409883?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3907433250282409883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3907433250282409883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3907433250282409883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3907433250282409883'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/01/belated-readinglisteningwatchingplaying.html' title='belated reading/listening/watching/playing updates'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2681173055037699869</id><published>2009-01-10T00:03:00.003-07:00</published><updated>2009-01-10T00:28:48.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='software builds'/><title type='text'>best weird debugging experience ever</title><content type='html'>I am captivated by each nugget of horrible code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;typedef struct RMAP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   bill* pbill;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   line* pline;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   rule* prule;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;} rmap;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm not sure what I find the most interesting... The fact that somebody thought it was fine to copy that struct definition throughout 15+ .c files.&lt;br /&gt;&lt;br /&gt;Or, the fact that somebody slightly modified a couple of those instances.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;typedef struct RMAP&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;   bill* pbill;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;   line* pline;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;   rule* prule;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   Bool overrideFlg;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;} rmap;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;typedef struct RMAP&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family: courier new;"&gt;   bill* pbill;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family: courier new;"&gt;   line* pline;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family: courier new;"&gt;   rule* prule;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;   double accum;&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family: courier new;"&gt;} rmap;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or... the best subtle weirdness, in one instance someone reordered the pointers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;typedef struct RMAP&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-family: courier new;"&gt;   rule* prule;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;   bill* pbill;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;   line* pline;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;} rmap;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So... when you debug the following code in any of the _other_ .c files...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;void myCrazyFunction(rmap* a_rmap)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  rule* r = a_rmap-&gt;prule;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  double reduction = r-&gt;reduction;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;  ... blahblahblahblahblah ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At runtime, everything works -- the definition of rmap used by the compiler is the definition within the .c file, and the third set of pointer-size bits within the a_rmap struct are assigned to 'r'.&lt;br /&gt;&lt;br /&gt;But, when I try to debug the code in Visual Studio and hover over the a_rmap-&gt;prule I see a bunch of garbage. I hover of 'r', and I see it's got the values I expect.&lt;br /&gt;&lt;br /&gt;I'm guessing the debugger finds the first instance of the rmap type in the .pdb file, and the one oddly ordered struct just so happens to be in the first .c file alphabetically (and also first in build order).&lt;br /&gt;&lt;br /&gt;But, that realization doesn't come until about 2 hours of other wild goose chases through the rest of the call stack to eliminate the other 'more likely' possibilities.&lt;br /&gt;&lt;br /&gt;Good times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2681173055037699869?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2681173055037699869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2681173055037699869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2681173055037699869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2681173055037699869'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2009/01/best-weird-debugging-experience-ever.html' title='best weird debugging experience ever'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-27485043185589193</id><published>2008-11-25T04:03:00.003-07:00</published><updated>2008-11-25T04:22:14.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>further adventures in wasting time</title><content type='html'>The &lt;a href="http://neeber.blogspot.com/2008/10/2-days-ill-never-get-back.html"&gt;2 days I'd never get back&lt;/a&gt; eventually turned into around 4-5 days total of developing, creating unit tests, system testing, and correcting various bugs the tests didn't find.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And now 1 more day. Backing the changes out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Released ~2 weeks ago; customers and internal support are finally installing the new version and KABOOM! Unknown references in the C Runtime library.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Superfantastic news! Turns out our development / production testing environment isn't at the same HP-UX patch level as most customers' systems. Thanks, Oracle 11g! Thanks, budget constraints that made someone decide they had to stick it on the same server we use for support!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-27485043185589193?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/27485043185589193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=27485043185589193' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/27485043185589193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/27485043185589193'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/11/further-adventures-in-wasting-time.html' title='further adventures in wasting time'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2724435581857984386</id><published>2008-11-12T16:09:00.001-07:00</published><updated>2008-11-12T16:11:17.960-07:00</updated><title type='text'>twitterpated</title><content type='html'>I'm all aflutter over the news that HBO has ordered the pilot for Game of Thrones -- &lt;a href="http://grrm.livejournal.com/58155.html"&gt;http://grrm.livejournal.com/58155.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2724435581857984386?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2724435581857984386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2724435581857984386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2724435581857984386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2724435581857984386'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/11/twitterpated.html' title='twitterpated'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3844292759410144650</id><published>2008-11-10T22:15:00.001-07:00</published><updated>2008-11-10T22:19:09.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>'tis the season</title><content type='html'>For zombies. Sweet, sweet zombies.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://iamnotinfected.com/&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;http://survivetheoutbreak.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3844292759410144650?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3844292759410144650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3844292759410144650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3844292759410144650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3844292759410144650'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/11/tis-season.html' title='&apos;tis the season'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1832684152027537123</id><published>2008-11-10T21:24:00.001-07:00</published><updated>2008-11-10T22:19:09.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>great ringtone, or greatest ringtone?</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2uf1lEawgTE&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/2uf1lEawgTE&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1832684152027537123?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1832684152027537123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1832684152027537123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1832684152027537123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1832684152027537123'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/11/great-ringtone-or-greatest-ringtone.html' title='great ringtone, or greatest ringtone?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2922842633449062531</id><published>2008-11-10T20:41:00.003-07:00</published><updated>2008-11-10T22:19:09.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>don't gamble</title><content type='html'>I should learn not to bet for or against the weather.&lt;br /&gt;&lt;br /&gt;I'd let the leaves in the yard get away from me -- decided to take a few days off leaf duty until the maples dropped more of their leaves.&lt;br /&gt;&lt;br /&gt;I wasn't able to do the raking Saturday, due to a bunch of errands that couldn't wait till Sunday. Decided the weekend was a waste raking-wise due to the predicted weekend rain.&lt;br /&gt;&lt;br /&gt;Woke up Sunday to see that it hadn't rained. Decided I didn't want to get started on the leaves since the clouds looked ominous, and instead started on the rain gutters. Ick. No rain by the time I'd finished, and I was filthy anyway, so I started in on the leaves. Promised myself I'd go until the rain started.&lt;br /&gt;&lt;br /&gt;No rain. For the four hours it took me to get the leaves off the front and side yard. Lame. Stupid rain, you were supposed to give me an excuse to go inside and watch bad TV.&lt;br /&gt;&lt;br /&gt;16 new bags o' leaves to add to the 10+ from previous weekends. Still have the backyard to do, and about a quarter of the leaves from the maples in the front yard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2922842633449062531?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2922842633449062531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2922842633449062531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2922842633449062531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2922842633449062531'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/11/dont-gamble.html' title='don&apos;t gamble'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3931839371106040609</id><published>2008-11-05T21:44:00.002-07:00</published><updated>2008-11-05T22:21:13.453-07:00</updated><title type='text'>tell me what to do, lazyweb!</title><content type='html'>I want a laptop. Or a netbook. I don't particularly want to buy both.&lt;br /&gt;&lt;br /&gt;After trying to type on a Eee PC 900(?), if I go the netbook route I definitely want to actually try typing on it in person. Right now, leaning towards a Eee 1000H or maybe the Samsung NC10.&lt;br /&gt;&lt;br /&gt;Or, do I just spend another $800 or so and get a just-as-portable but more powerful system? Leaning towards either the Lenovo Thinkpad X200 (non-tablet) or buckling to peer pressure and getting a MacBook.&lt;br /&gt;&lt;br /&gt;Or... do I go for an even bigger model so that Eclipse isn't all scrunched up? Or, do I just use it for 'fun' projects where Vim is all I'll need?&lt;br /&gt;&lt;br /&gt;Yeah, I don't know what I want, and I've got conflicting requirements. Small! Big! Cheap! Oh, alright, spend 3x as much.&lt;br /&gt;&lt;br /&gt;A decent keyboard and sturdy build are my only consistent criteria.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3931839371106040609?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3931839371106040609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3931839371106040609' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3931839371106040609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3931839371106040609'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/11/tell-me-what-to-do-lazyweb.html' title='tell me what to do, lazyweb!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8616355508926163033</id><published>2008-10-27T18:26:00.002-06:00</published><updated>2008-11-10T22:18:52.827-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>2 days I'll never get back</title><content type='html'>Through sheer happenstance, one of the test databases for our new system was (mis)configured in such a way that an Oracle sequence was generating very large ID's for a certain field.&lt;br /&gt;&lt;br /&gt;Very large as in 123,456,789,236&lt;br /&gt;&lt;br /&gt;Guess which horrible application uses a 'long' type to hold those IDs? Guess which horrible application is supported on both HP-UX and Windows? Guess what type might be 32bit on Windows and 64bit on HP-UX? Ding! Ding! Ding!&lt;br /&gt;&lt;br /&gt;Spent all day Friday and today rejiggering the code to use 'long long'. Most of today was spent un-rejiggering and re-rejiggering the code to work around Oracle Pro*C's inability to use 'long long' as a host variable -- today I had to swap all that out of the embedded SQL in order to use character strings and stroll/sprintf to move values from the strings to 'long long' and vice-versa.&lt;br /&gt;&lt;br /&gt;I had thought the code was 'OK' on HP-UX... after all these recent changes, I'm not so sure. The code to transfer the values from the query results to their 'long' variable instances seems wrong. In any case... it'll work the same on both platforms now.&lt;br /&gt;&lt;br /&gt;I take some solace from finding the problem before any customer. We have at least 3 customers nearing 1-billion bills -- although the horrible app is 10+ years old, the rate they're adding bills to their systems grows every year. They can also start/change their sequences whenever they feel like it. So, maybe we had another 1-5 years before it became a major emergency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8616355508926163033?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8616355508926163033/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8616355508926163033' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8616355508926163033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8616355508926163033'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/10/2-days-ill-never-get-back.html' title='2 days I&apos;ll never get back'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7426004693731777732</id><published>2008-10-22T09:10:00.002-06:00</published><updated>2008-10-22T09:22:21.458-06:00</updated><title type='text'>disappointment, thy name is tiny keyboard</title><content type='html'>I've been resolutely avoiding purchasing an &lt;a href="http://eeepc.asus.com/"&gt;Eee PC&lt;/a&gt; (or other &lt;a href="http://www.liliputing.com/"&gt;netbook&lt;/a&gt;) until I actually could get my hands on one and try typing.&lt;br /&gt;&lt;br /&gt;Tried out an Eee 900? at BestBuy the other day -- not sure which exact 900 model. Too small. Maybe I'd eventually get used to it, but I've decided I definitely should go with the slightly larger Eee 1000H.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7426004693731777732?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7426004693731777732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7426004693731777732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7426004693731777732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7426004693731777732'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/10/disappointment-thy-name-is-tiny.html' title='disappointment, thy name is tiny keyboard'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7570261560564511903</id><published>2008-10-21T21:24:00.001-06:00</published><updated>2008-10-21T22:22:40.370-06:00</updated><title type='text'>not spam</title><content type='html'>I never imagined I'd get an e-mail with subject line "Help with goat talk" and it would not be spam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7570261560564511903?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7570261560564511903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7570261560564511903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7570261560564511903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7570261560564511903'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/10/not-spam.html' title='not spam'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4040105465078248711</id><published>2008-10-14T20:33:00.003-06:00</published><updated>2008-10-14T21:22:35.743-06:00</updated><title type='text'>which is better?</title><content type='html'>&lt;ol&gt;&lt;li&gt;Laughing/crying at the right-wing, loony spam mails I get from my kook of an Aunt.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Laughing at the "in no way related" e-mail containing the facts behind the rumors that inevitably follows a few days later&lt;/li&gt;&lt;/ol&gt;The latest example, a forward from the doublespeak-tastic 'American Family Council', with the subject line 'Fwd: If you think things are bad now, just wait....'&lt;br /&gt;&lt;blockquote&gt;{snip}&lt;br /&gt;&lt;br /&gt;In case you may think I’m a “the sky is falling” type of person, you should know: When it comes to predictions, I am a very reserved person. But not on this one. I cannot overstate the damage a liberal victory will do to our country. The upcoming election is the most important in the history of our nation. Yes, if the liberals win you will lose some of your religious freedoms and free speech rights. Churches and pastors will not be exempt. You will not be allowed to say certain things about a particular group. Every item of the homosexual agenda will be approved. All the laws protecting the unborn will be wiped away.&lt;br /&gt;&lt;br /&gt;{snip}&lt;br /&gt;&lt;/blockquote&gt;And 5 days later, the next e-mail from her with the subject line, 'In Fairness to B. Obama. AND  J. McCain.....Snopes.com' :&lt;br /&gt;&lt;blockquote&gt;There are so many derogatory Political Emails floating thru space out there, that I am personally tired of having to wade thru them all - and acknowledge that it's hard to get the straight-forward Truth....&lt;br /&gt;&lt;br /&gt;I think it might do us all well to consult those who have done the research on these (either bogus or real-truth) emails.  (See links below)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://snopes.com/politics/obama/obama.asp"&gt;Click here: snopes.com: Politics (Barack Obama)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://snopes.com/politics/mccain/mccain.asp"&gt;Click here: snopes.com: Politics (John McCain) &lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;My favorite part of the inevitable follow-up e-mail is the lack of self-awareness or any hint of an apology for adding to the onslaught of misinformation herself. Despite the fact that no one has asked her to, I'm glad she's warned us that she's "personally tired of &lt;span style="font-style: italic;"&gt;having &lt;/span&gt;to wade thru" all those spam messages she passes along.&lt;br /&gt;&lt;br /&gt;I've decided whenever I get baited into a political or religious discussion with my family, I'll make the saving throw by chiming in with, "While I appreciate that these Gay Agendas (*music sting*) make our meetings well organized, they're really making me re-think my conversion to Secret Islamism."&lt;br /&gt;&lt;br /&gt;P.S. Also plus too as well : http://www.factcheck.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4040105465078248711?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4040105465078248711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4040105465078248711' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4040105465078248711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4040105465078248711'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/10/which-is-better.html' title='which is better?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3961190360047297487</id><published>2008-10-14T20:25:00.002-06:00</published><updated>2008-11-10T22:19:49.949-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>worst. impression. ever.</title><content type='html'>Dear Autoflush Toilet,&lt;br /&gt;&lt;br /&gt;You ain't foolin' me! You're not a bidet!&lt;br /&gt;&lt;br /&gt;Why does your sensor think my back is transparent?&lt;br /&gt;&lt;br /&gt;You're horrible.&lt;br /&gt;&lt;br /&gt;Love,&lt;br /&gt;Steve&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P.S. Now that you're thinking about me pooping, I'd like to point out that I deftly avoided use of any onomatopoeia.&lt;br /&gt;&lt;br /&gt;P.P.S. Mostly because I couldn't connect the dots between this post and the punchline using the consignment store named "Grunts &amp;amp; Postures" near the first apartments of my wife and I.&lt;br /&gt;&lt;br /&gt;P.P.P.S. First one to comment with a "full of shit" joke gets 15 demerits.&lt;br /&gt;&lt;br /&gt;P.P.P.P.S. Yes, despite the demerits, it is still worth it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3961190360047297487?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3961190360047297487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3961190360047297487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3961190360047297487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3961190360047297487'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/10/worst-impression-ever.html' title='worst. impression. ever.'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1966350406866448288</id><published>2008-10-08T22:06:00.002-06:00</published><updated>2008-11-10T22:20:05.483-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='software builds'/><title type='text'>hudson == teh awesome</title><content type='html'>&lt;a href="https://hudson.dev.java.net/"&gt;Hudson&lt;/a&gt; is great. Lightyears beyond CruiseControl. Everything configurable through the (awesome) UI, a ecosystem of plugins, and incredibly simple installation.&lt;br /&gt;&lt;br /&gt;We don't have that complex a build, but our SCM team looks at me like I'm a crazy person when I point out yet another issue with the build. After the umpteenth time I've found yet another build problem, I decided to give Hudson a try. We need to checkout some modules from the trunk, and others from a branch. It was bad enough when their chosen solution to that problem meant we couldn't automatically trigger the builds with a check-in -- builds had to be forced from the UI, then a pre-build step did a CVS checkout of the modules from the appropriate branches. The last straw was realizing that the pre-build script also contained some logic that overwrote any changes we made to our build.xml file with some out-of-synch version of build.xml that one of them had created at some point in the past. The sort of thing you'd like a heads up about.&lt;br /&gt;&lt;br /&gt;With Hudson, builds have been a snap to set up -- monitor these CVS modules, run this script from the repository if any changes are checked-in, the build artifacts will match this regex pattern allow download of them from the UI, keep only X number of builds on the CI server.&lt;br /&gt;&lt;br /&gt;Hudson doesn't let you checkout from a mixture of HEAD/branch either -- but it's simple enough to set up multiple build commands, the first of which is doing the branch checkout. We won't get a complete changelog or CI automation, but it's good enough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1966350406866448288?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1966350406866448288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1966350406866448288' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1966350406866448288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1966350406866448288'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/10/hudson-teh-awesome.html' title='hudson == teh awesome'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4000921557605195888</id><published>2008-10-05T20:55:00.000-06:00</published><updated>2008-10-05T20:56:31.656-06:00</updated><title type='text'>disturbing. hilarious.</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/npP73QIApFE&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/npP73QIApFE&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4000921557605195888?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4000921557605195888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4000921557605195888' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4000921557605195888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4000921557605195888'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/10/disturbing-hilarious.html' title='disturbing. hilarious.'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1395153502156499662</id><published>2008-09-30T21:21:00.007-06:00</published><updated>2008-09-30T21:57:44.410-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>lessons in conflation : compare != sort</title><content type='html'>For months, the business people have complained that the rules engine sporadically produces different results on Windows than HP-UX. They'd complained previous developers said, "sorting is different on Windows and Unix". I did my best to restrain any reply more caustic than, "That's silly."&lt;br /&gt;&lt;br /&gt;Until this month they couldn't point me to bills that had the problem at the same time as we had log files from our regression tests (or find me any archived e-mails from the original developers). Given that we're probably the only people running the application on both HP-UX and Windows -- during our regression testing on the two platforms -- the bug hasn't been that high a priority.&lt;br /&gt;&lt;br /&gt;Finally tracked down the cause of the issue to be differences in the qsort() algorithm of the C runtime lib -- specifically how qsort() handles two elements that compare as equal (!). For some reason, the Windows qsort() performs some extra comparisons and 1 extra swap.&lt;br /&gt;&lt;br /&gt;The list we're sorting looks something like :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;5. $40.95&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On Unix, qsort() and this particular compare (descending order by amount) results in the following :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  5. $40.95&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 2. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 3. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 4. $23.96&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On Windows, its qsort() and the same compare function resulted in:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  5. $40.95&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 3. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  1. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  2. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  4. $23.96&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The values we're comparing are equal... but what we're actually sorting is the value and a reference to where it started in the list. Because the sorting produces different results we end up annotating the bill lines differently on Windows than Unix.&lt;br /&gt;&lt;br /&gt;Changing how we do the comparison fixed the problem. Now we compare left/right values, if they are equal we compare the originating line number of the values.&lt;br /&gt;&lt;br /&gt;And now we get consistent results no matter the platform:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  5. $40.95&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; 1. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  2. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  3. $23.96&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  4. $23.96&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next time, in Steve's job rants:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Typedefs on top of typedefs on top of typedefs. Oh yeah, and because of typedefs A, B, C, and D it turns out 95% of calls within the system look like pass-by-value but are in fact pass-by-reference. It took me ~2 months to realize that was going on. 4 months later and it still gives me the heebie jeebies.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1395153502156499662?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1395153502156499662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1395153502156499662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1395153502156499662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1395153502156499662'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/09/lessons-in-conflation-compare-sort.html' title='lessons in conflation : compare != sort'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8690081595264273688</id><published>2008-09-27T00:47:00.003-06:00</published><updated>2008-09-27T01:28:19.412-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>loving/hating Fit</title><content type='html'>We waste a huge amount of time on our legacy code base because we have no Unit tests, and no standard way the project's developers test their changes.&lt;br /&gt;&lt;br /&gt;It's typically some error-prone manual process -- run some SQL in Toad,  copy results to Excel, run the bill, re-run SQL, compare to the old results with eyeballs, pray.&lt;br /&gt;&lt;br /&gt;I read about &lt;a href="http://fit.c2.com/"&gt;Fit&lt;/a&gt; a few months ago, and it seemed like it'd solve a lot of our problems. Blackbox testing would help build tests up around our legacy codebase. It'd also help bridge the communication gaps between onshore/offshore development, and development/business.&lt;br /&gt;&lt;br /&gt;Finally took the time to play with it this week -- specifically, &lt;a href="http://fitnesse.info/dbfit"&gt;DbFit&lt;/a&gt;. Without any customization, I was able to write some simple SQL in a wiki page to generate a new test case for the issue I was working on this week.&lt;br /&gt;&lt;br /&gt;I'm in love. It seems like with some minor customization we can make some huge leaps in our productivity. But I really hate trying to navigate the Fit/&lt;a href="http://fitnesse.org/"&gt;Fitnesse&lt;/a&gt; web sites for reference information. Ugh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8690081595264273688?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8690081595264273688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8690081595264273688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8690081595264273688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8690081595264273688'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/09/lovinghating-fit.html' title='loving/hating Fit'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7281835007645636027</id><published>2008-09-27T00:24:00.002-06:00</published><updated>2008-09-27T01:28:19.413-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>additional offshoring adventures</title><content type='html'>My project at work is a set of Java applications for &lt;thing&gt; which communicate over UDP / RMI. The port numbers they talk over is configurable.  In our hosted environment our servers may be running the apps for multiple clients. So, the users (or our tech support people) have to configure unique port #'s in each set of config files if there are multiple &lt;thing&gt;s running against different databases. It's a annoying, but the least of our worries at the moment.&lt;br /&gt;&lt;br /&gt;Monday this week, I realize our configuration editor doesn't give the user the ability to edit a certain set of port #s. I ask the offshore team to add that ability to the config UI.&lt;br /&gt;&lt;br /&gt;When I come in the next day the offshore lead has decided the existing way we do things is too error prone. He's made a great change so that the configurable settings are just a range of port #'s and the application(s) will pick unused ports within the range.&lt;br /&gt;&lt;br /&gt;After reviewing the changes, the only issue I found was in some output files created by the apps once they pick a port number. Once the port # is selected, an output file will be written. It was implemented with a DataOutputStream to write an int primitive to the file, and read back in with DataInputStream. I'd prefer it to be human readable, so I respond with some notes saying to make the file a text file rather than a data file.&lt;br /&gt;&lt;br /&gt;I come in the following day, and find that the only thing he's changed is to give the file a ".txt" file extension.&lt;br /&gt;&lt;br /&gt;Wah?&lt;br /&gt;&lt;br /&gt;It's the 'little' things like this that drive me crazy. Things I assume don't need much specification. It's particularly annoying because this engineer is so awesome -- he's always quick to turn around any solution, and always asks great questions on our calls. And, he did a great job of taking the initiative to fix a major flaw just a day earlier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7281835007645636027?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7281835007645636027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7281835007645636027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7281835007645636027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7281835007645636027'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/09/additional-offshoring-adventures.html' title='additional offshoring adventures'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4477425096965008270</id><published>2008-09-16T08:52:00.004-06:00</published><updated>2008-09-16T09:03:42.089-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>further adventures in offshoring</title><content type='html'>Have not had time to do a code review for the project I've inherited. Decided to use &lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt; to pick off low hanging fruit.&lt;br /&gt;&lt;br /&gt;aiiiiiiiieeeee.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;bitwise '&amp;amp;' operator used instead of boolean '&amp;amp;&amp;amp;' operator&lt;/li&gt;&lt;li&gt;'==' operator used for Long/Integer/many-other-reference-types&lt;/li&gt;&lt;li&gt;String.equals() comparing a String to a DO object&lt;/li&gt;&lt;li&gt;Enum classes with their own extra-special equals() methods. Ick.&lt;/li&gt;&lt;li&gt;Classes with equals() but no hashCode()&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Who implements finalize()?&lt;/li&gt;&lt;li&gt;many, many more&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4477425096965008270?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4477425096965008270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4477425096965008270' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4477425096965008270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4477425096965008270'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/09/further-adventures-in-offshoring.html' title='further adventures in offshoring'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6503692657878039090</id><published>2008-09-10T19:26:00.000-06:00</published><updated>2008-09-27T01:28:36.310-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>what can make me watch an infomercial?</title><content type='html'>MR T&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="left: 0px ! important; top: 0px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab-07325558802418408 visible ontop" href="http://www.youtube.com/v/fYEEfjw2mHk&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/a&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fYEEfjw2mHk&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/fYEEfjw2mHk&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6503692657878039090?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6503692657878039090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6503692657878039090' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6503692657878039090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6503692657878039090'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/09/what-can-make-me-watch-infomercial.html' title='what can make me watch an infomercial?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6365944271754183188</id><published>2008-08-16T14:17:00.004-06:00</published><updated>2008-09-04T19:53:03.246-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>an afternoon I'll never get back, thanks Eclipse!</title><content type='html'>&lt;span style="font-family: georgia;"&gt;Spent Friday afternoon fighting with Ec&lt;/span&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;lipse. Around lunchtime, my development environment stopped working... When launched from Eclipse the app couldn't find the log4j, Spring, or Hibernate config files. After many false starts and much gnashing of teeth, finally noticed it wasn't all config files that weren't getting copied into the projects' output folders but only .xml files.&lt;br /&gt;&lt;br /&gt;Finally managed the right phrase in Google that found me the answer:  &lt;a title="http://dev.eclipse.org/newslists/news.eclipse.platform/msg74562.html" href="http://dev.eclipse.org/newslists/news.eclipse.platform/msg74562.html"&gt;http://dev.eclipse.org/newslists/news.eclipse.platform/msg74562.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;font-family:Arial;font-size:100%;"  &gt;&lt;span class="290075322-15082008"&gt;Apparently, Eclipse  plugins may update one of the preferences that tells the builders which file  extensions it shouldn't copy to the build output path. To fix it, you have to go to 'Preferences... -&gt; Java -&gt; Compiler -&gt; Building' and then check all the extensions entered into the Filtered Resources text field.&lt;br /&gt;&lt;br /&gt;I'm not sure if it was a plugin change, or (probably more likely) changes I was making to my launch configurations to not run out of the 'dist' directory into which the inter-project Ant build packages everything.&lt;br /&gt;&lt;br /&gt;I'm not sure if I should be happy that the offshore team I've now inherited at least got the Ant build right. Or, if I should be concerned about whether they've actually been running the code / configuration they think they are when running under Eclipse.&lt;br /&gt;&lt;br /&gt;One more in a long line of complaints I've had regarding how this set of applications is configured. Normally, I'm the one on whatever-team-I'm-on pushing for extensive runtime configurability. I don't know why this project's configuration setup -- not the Spring/Hibernate, the home-grown .properties file reading and command-line handling stuff -- rubs me the wrong way. The nonsensical or nonexistent documentation, the obfuscated search paths, the unhelpful error messages, or the fragility of the whole system when you're missing one piece... all of the above?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Even with that lost afternoon, I still love Eclipse. After all, it's free. Oooh, free. One plugin that now I can't live without: Remote System Explorer.&lt;br /&gt;&lt;br /&gt;I've got to run Windows at work, and the corporation-approved SSH client sucks balls. When you resize a terminal window... what would you expect to happen? More columns/rows? Bah! That's too obvious and old-school for Attachmate Reflection's SSH client-- instead the mother f*&amp;amp;#$*#&amp;amp;er resizes the font. Badly.&lt;br /&gt;&lt;br /&gt;PuTTY is mediocre. The corporation's security agent can't be disabled, and it prevents the cygwin install from running completely.&lt;br /&gt;&lt;br /&gt;Enter Remote System Explorer. Multiple terminal windows. Does the 'right' thing when resizing or scrolling. Gives me a file-tree view of the remote system via SFTP. I can edit remote files within Eclipse and it automagically saves them to the remote system.&lt;br /&gt;&lt;br /&gt;Eclipse is a beast, and a bit of overkill for a shell window. But, I've already got it open. And, unlike my Ubuntu system running under VMWare... I don't feel like the corporation's jackbooted thugs will re-educate me if/when they find I'm using it.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6365944271754183188?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6365944271754183188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6365944271754183188' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6365944271754183188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6365944271754183188'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/08/afternoon-ill-never-get-back-thanks.html' title='an afternoon I&apos;ll never get back, thanks Eclipse!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8944124267715158741</id><published>2008-08-16T14:16:00.002-06:00</published><updated>2008-08-16T14:58:38.051-06:00</updated><title type='text'>conclusions</title><content type='html'>&lt;ul&gt;&lt;li&gt;If you write an application where the order of command-line options matter, you're a bad person.&lt;/li&gt;&lt;li&gt;I need to use the adjective 'Diabolical' more often.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8944124267715158741?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8944124267715158741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8944124267715158741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8944124267715158741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8944124267715158741'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/08/conclusions.html' title='conclusions'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4193860191453119412</id><published>2008-08-05T17:05:00.004-06:00</published><updated>2008-08-06T13:09:41.369-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>so many resignations, none of them mine.</title><content type='html'>Two friends at current employer resigned. Unfortunately, they were both awesome engineers, so the future looks bleak. The only silver lining is there will be less competition for the 'good' projects. I was looking forward to working with them and learning from them.&lt;br /&gt;&lt;br /&gt;One friend at old employer resigned. &lt;span style="font-weight: bold;"&gt;Finally&lt;/span&gt;. Sucks for those that are left behind, but it's a great move for him.&lt;br /&gt;&lt;br /&gt;As for me, I'm still trying to decide how long to stick it out at the current employer. Finally feel like I'm getting the hang of my current project. We're continuing to refine our processes, and we've got two new engineers that seem to be very good. Now that I've settled into the rut, I've been knocked out of it to take over as tech lead for one of the people that's leaving. More responsibility, higher profile, more interesting work... I should want that right? And not the cozy rut?&lt;br /&gt;&lt;br /&gt;In less wishy-washy-I-am-lame news, things I'm enjoying:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sho.com/site/dexter"&gt;Dexter&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.drhorrible.com/"&gt;Dr. Horrible&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;'&lt;a href="http://en.wikipedia.org/wiki/A_Fire_Upon_the_Deep"&gt;A Fire Upon the Deep&lt;/a&gt;' by Vernor Vinge. I couldn't put it down. Read until 4am night before last, and 2am last night. Very good.&lt;/li&gt;&lt;/ul&gt;I bought &lt;a href="http://en.wikipedia.org/wiki/Toll_the_Hounds"&gt;Toll of the Hounds&lt;/a&gt; a month ago (delivered right after the return from vacation). Decided I'd re-read the Malazan series from the beginning before starting on the new book. Again. I'm amazed that it's holding together on the third read through. Picking up nuances and hints I'd completely missed before. And this is the third read through. I've made it through book four, and decided to read 'A Fire Upon the Deep' as a palate cleanser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4193860191453119412?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4193860191453119412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4193860191453119412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4193860191453119412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4193860191453119412'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/08/so-many-resignations-none-of-them-mine.html' title='so many resignations, none of them mine.'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4490033294388099721</id><published>2008-07-16T10:24:00.004-06:00</published><updated>2008-07-16T10:30:57.780-06:00</updated><title type='text'>another sign of the apocalypse</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_gR0SRn4W478/SH4hx-y0d5I/AAAAAAAAAEE/NQfRMOetw14/s1600-h/bud_clam.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_gR0SRn4W478/SH4hx-y0d5I/AAAAAAAAAEE/NQfRMOetw14/s200/bud_clam.jpg" alt="" id="BLOGGER_PHOTO_ID_5223649760349812626" border="0" /&gt;&lt;/a&gt;I was struck speechless while perusing the beer at the supermarket yesterday.&lt;br /&gt;&lt;br /&gt;Bud &amp;amp; Clamato == Chelada?&lt;br /&gt;&lt;br /&gt;It's not quite intriguing enough to want to try myself. But, inflicted upon someone else... Perhaps a six pack as a house warming gift for my enemies&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4490033294388099721?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4490033294388099721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4490033294388099721' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4490033294388099721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4490033294388099721'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/07/another-sign-of-apocalypse.html' title='another sign of the apocalypse'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_gR0SRn4W478/SH4hx-y0d5I/AAAAAAAAAEE/NQfRMOetw14/s72-c/bud_clam.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2152797475479943111</id><published>2008-07-15T22:47:00.013-06:00</published><updated>2008-07-15T23:15:52.443-06:00</updated><title type='text'>don't eat the chicken pizza</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_gR0SRn4W478/SH1-U4WJlMI/AAAAAAAAAC8/ZXPhjLuw9XU/s1600-h/DSCN1874.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_gR0SRn4W478/SH1-U4WJlMI/AAAAAAAAAC8/ZXPhjLuw9XU/s200/DSCN1874.JPG" alt="" id="BLOGGER_PHOTO_ID_5223470040007414978" border="0" /&gt;&lt;/a&gt;Back from a week in Cancun! Luckily, we only got horribly sick on the last day. Just in time to fly home. Awesome.&lt;br /&gt;&lt;br /&gt;We stayed at the &lt;a href="http://www.dreamsresorts.com/dretu/"&gt;Dreams Tulum Resort&lt;/a&gt;. For an all-inclusive, it was reasonably priced, and very nice. The staff was awesome. The food at the resort's restaurants was all very good.&lt;br /&gt;&lt;br /&gt;The majority of the week was spent listening to downloads of &lt;a href="http://www.geekshowpodcast.com/"&gt;the Geek Show Podcast&lt;/a&gt;, sipping mojitos, and staring at the ocean.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_gR0SRn4W478/SH1_8tFBfuI/AAAAAAAAADE/qnqnEhG-NO8/s1600-h/DSCN1899.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_gR0SRn4W478/SH1_8tFBfuI/AAAAAAAAADE/qnqnEhG-NO8/s200/DSCN1899.JPG" alt="" id="BLOGGER_PHOTO_ID_5223471823689187042" border="0" /&gt;&lt;/a&gt;Thursday, we took a tour to &lt;a href="http://en.wikipedia.org/wiki/Chichen_itza"&gt;Chichen Itza&lt;/a&gt;. Oh lord... it was a long drive from Tulum. But, the ruins were worth it. Very interesting, it was great to see the scale of things. Unfortunately, climbing the steps is now verboten.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_gR0SRn4W478/SH2A7wAwR7I/AAAAAAAAADU/JLBdDmeUzIs/s1600-h/DSCN1910.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_gR0SRn4W478/SH2A7wAwR7I/AAAAAAAAADU/JLBdDmeUzIs/s200/DSCN1910.JPG" alt="" id="BLOGGER_PHOTO_ID_5223472906808346546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Included in the tour package was a lunch at the buffet at the Mayaland hotel right next to the ruins. It looked risky, but we were lulled into complacency by the luck we had with our resort's food. All four of us got sick that night and the next day.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_gR0SRn4W478/SH2CjWkxYVI/AAAAAAAAAD0/uOsOdYv2gcI/s1600-h/DSCN1962.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_gR0SRn4W478/SH2CjWkxYVI/AAAAAAAAAD0/uOsOdYv2gcI/s200/DSCN1962.JPG" alt="" id="BLOGGER_PHOTO_ID_5223474686686486866" border="0" /&gt;&lt;/a&gt;On the way back from Chichen Itza, we stopped at an amazing &lt;a href="http://en.wikipedia.org/wiki/Cenote"&gt;cenote&lt;/a&gt;. We only had a half hour, so we decided not to take a dip.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2152797475479943111?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2152797475479943111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2152797475479943111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2152797475479943111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2152797475479943111'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/07/dont-eat-chicken-pizza.html' title='don&apos;t eat the chicken pizza'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_gR0SRn4W478/SH1-U4WJlMI/AAAAAAAAAC8/ZXPhjLuw9XU/s72-c/DSCN1874.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-280985358206109131</id><published>2008-07-02T23:14:00.005-06:00</published><updated>2008-07-02T23:57:41.859-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>further lessons in patience</title><content type='html'>I've been tracking down why a run of the rules engine on the Windows platform produced different results for a particular bill was different from Unix.&lt;br /&gt;&lt;br /&gt;After debugging the problem, I tell the business peeps the same thing the other 2 developers have been saying for the past month:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I can't reproduce that unexpected behavior on Windows or Unix, using my builds or the official release builds.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Also like the other 2 devs, I tell them there's a bug in the code we need to fix. The unexpected behavior is actually the desired behavior and fixing the bug will result in the desired results all the time.&lt;/li&gt;&lt;/ul&gt;Through pure chance... I realize the order in which bills work their way through the system will affect the outcome of the regression test. If bill A is part of a claim X, and claim X has one or more bills that haven't yet been reprocessed at the time bill A is pulled out of the FIFO bill processing queue... when the rules engine queries the database for the bills that are part of claim X, the engine won't retrieve the yet-to-be-processed bills.&lt;br /&gt;&lt;br /&gt;This fits a big symptom of our inconsistent results for this and other bills. We see an unexpected result, and we try to reproduce it after-the-fact... no luck.&lt;br /&gt;&lt;br /&gt;I can finally reproduce the original problem, but only if I run the regression test prep scripts, and then manually process a handful of bills from the claim and leave some stuck in limbo.&lt;br /&gt;&lt;br /&gt;I naively ask the person that runs the test suite, "I think I found the problem, but to confirm I need to look at the log files from the regression test run on Windows. Do we still have the logs?"&lt;br /&gt;&lt;br /&gt;I'm told, "I don't know, I don't think there is one. We were told that on Windows the log files aren't produced consistently."&lt;br /&gt;&lt;br /&gt;I look into it for 5 minutes. It turns out no one bothered to configure a log file in the INI file. So, no logs were produced.&lt;br /&gt;&lt;br /&gt;I'm dumbstruck. It's the latest in a long string of stupendous tales the previous developers have told the business people and test team. Lots of mythology around why the system acts oddly ... memory leaks, bad casts and pointer references, 'Windows can't do the log files', 'Windows sorts differently', 'You need to enter the password in all caps... No, not with the shift key, you have to enter it with CAPS LOCK'&lt;br /&gt;&lt;br /&gt;WTF?&lt;br /&gt;&lt;br /&gt;To be fair... I am hearing all these anecdotes second-hand and filtered through the non-technical team. But, taken as a whole I can't decide whether it lessens my confidence in the BAs and dev management, in that they couldn't successfully call the engineers on their bullshit... or if it just confirms my opinion that the engineers were lazy and outright lied about how things worked because they didn't want to take the time to correct the problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-280985358206109131?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/280985358206109131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=280985358206109131' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/280985358206109131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/280985358206109131'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/07/further-lessons-in-patience.html' title='further lessons in patience'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4920015324042875306</id><published>2008-06-21T12:47:00.002-06:00</published><updated>2008-07-03T00:00:07.658-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>triumph! ... oh, dammit</title><content type='html'>Friday was a bittersweet day.&lt;br /&gt;&lt;br /&gt;On our horrible project-released-every-month, they are frequently late starting their regression test, and very often late with the release. In 2007, it was only released on-time twice.&lt;br /&gt;&lt;br /&gt;As bad as that is, the good(?) thing is they don't release until their regression test says the only differences are the ones they expect. Unfortunately, that typically means a team of 12+ BA's, developers and testers work the weekend.&lt;br /&gt;&lt;br /&gt;But not this month. We started the regression test when we were scheduled to on Monday. And, rather than posting the release on the drop-dead Monday date, we passed the release off to customer-facing site on Friday. This is the first time in years that that has happened.&lt;br /&gt;&lt;br /&gt;The process-improvements Jeff and I have been insisting on deserve some of the credit.&lt;br /&gt;Odd things. You know, completely out-of-left-field things like code-reviews and communicating. It's unclear how much of this month's success was the amount of work included in this release, and how much of it was our process changes.&lt;br /&gt;&lt;br /&gt;Unfortunately, the day of triumph was made bittersweet by Jeff's resignation. Probably not accurate to call it a resignation, since he was a contractor and decided not to pursue extending his contract. Or, to be precise... not wait until the final day of his contract to find out if they were going to extend his contract.&lt;br /&gt;&lt;br /&gt;I don't blame him for finding something else, and I may follow him soon enough. The monthly release meat-grinder can be made less painful... but it'll never be fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4920015324042875306?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4920015324042875306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4920015324042875306' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4920015324042875306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4920015324042875306'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/06/triumph-oh-dammit.html' title='triumph! ... oh, dammit'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-4697434564261329408</id><published>2008-06-18T22:54:00.005-06:00</published><updated>2008-06-18T23:52:29.191-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>ready. set. go?</title><content type='html'>I'm coming to the realization that I was so focused on leaving the previous employer that I didn't think critically enough before accepting the offer at current employer. Beyond the many dead horses I've already beaten, there were plenty of hints to which I should have paid attention prior to accepting the offer.&lt;br /&gt;&lt;br /&gt;More mixed feelings today after a meeting discussing our project's migration from usage under the current application framework to its replacement over the next 2-3 years. Felt good that our hard work to stabilize the crumbling infrastructure is recognized by the business people. Felt worse when I realized that 2+ years into a multi-million dollar project, they're finally discussing the actual mechanics and workflow of how both systems are going to be developed and maintained together. "Oh yeah... we want to release in October. We need to figure that out."&lt;br /&gt;&lt;br /&gt;Nearly all the positives about the new job have been snuffed out. There is the potential for it to get better, but it's hard to hold on to the glimmer of hope. Other than feeling like I'm giving up, it's getting harder to find reasons to stay.&lt;br /&gt;&lt;br /&gt;Friends at 4 different employers are looking for people... positions with varying levels of awesomeness. Or, I could strike out on my own and find something different.&lt;br /&gt;&lt;br /&gt;But, what do I want? That's the million dollar question.&lt;br /&gt;&lt;br /&gt;Someplace more engineer-y than my most recent work in content publishing or healthcare. Some of the work was great and challenging... other parts have been mind-numbing or downright eeeeeeeeviiiiiil. Not that the previous work in simulation was fluffy kittens.&lt;br /&gt;&lt;br /&gt;Someplace that views R&amp;amp;D as a vital part of their business plan, rather than whining by engineers for 'fun' work. Maintenance can be fun -- debugging an issue, finding the cause of the crazy and esoteric problems is like unlocking a puzzle and can be very rewarding. But, it's not something that you look forward to doing as your sole activity for the next 3+ years.&lt;br /&gt;&lt;br /&gt;Something more back-end rather than UI or web-applications. I'm pretty sure that new fangled interwebernet thing will never work. It's all TUBES! TUBES I TELLS YA!&lt;br /&gt;&lt;br /&gt;It'd also be nice to land someplace where I could use Python for more than just throw-away utilities, and not be viewed as a rabble-rouser.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-4697434564261329408?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/4697434564261329408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=4697434564261329408' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4697434564261329408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/4697434564261329408'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/06/ready-set-go.html' title='ready. set. go?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8769088709213078983</id><published>2008-06-18T20:14:00.003-06:00</published><updated>2008-06-18T20:29:56.229-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>pink eye!</title><content type='html'>Liz's brother's family visited us for a couple days while they were in town for a funeral. Bart turned us on to one of our new favorite shows, &lt;a href="http://www.cornergas.com/"&gt;Corner Gas&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Good silly fun. Needs more explosions.&lt;br /&gt;&lt;br /&gt;&lt;a style="left: 0px ! important; top: 0px ! important;" title="Click here to block this object with Adblock Plus" class="abp-objtab-03509237838630549 visible ontop" href="http://www.youtube.com/v/QGFS-NNlIgs&amp;amp;hl=en"&gt;&lt;/a&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/QGFS-NNlIgs&amp;amp;hl=en"&gt;&lt;embed src="http://www.youtube.com/v/QGFS-NNlIgs&amp;amp;hl=en" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8769088709213078983?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8769088709213078983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8769088709213078983' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8769088709213078983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8769088709213078983'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/06/pink-eye.html' title='pink eye!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6649720813497232259</id><published>2008-05-29T00:01:00.003-06:00</published><updated>2008-05-29T00:36:29.883-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>waaaaaah?</title><content type='html'>I was feeling good this morning. Ran the regression suite overnight through Purify, and it had found some problems. Uninitialized memory references. Who would have thought that hundreds of 5-50 field structs in a 300 kloc code base with no standard initialization routines would have this problem. Bizarre.&lt;br /&gt;&lt;br /&gt;So far I've resisted the urge to go fix all the potential instances of the problems, and only fixed the problems exposed by the regression suite. Maybe for next month's release.&lt;br /&gt;&lt;br /&gt;Then I spent about 4 hours in conference calls. At about the third hour in I realize the crick in my neck that I'd blamed on sleeping oddly was more in fact from the previous day's conference calls. Jeff helpfully points out over IM, "Yes, this meeting is a pain in the neck."&lt;br /&gt;&lt;br /&gt;Then I finally get a response from technical support on 2 of my tickets, after they'd spent ~3 weeks in a black hole.&lt;br /&gt;"Due to ... blahblahlbha... we cannot install open source applications on any servers."&lt;br /&gt;&lt;br /&gt;The offending applications? Zip. Unzip. GNU Make.&lt;br /&gt;&lt;br /&gt;I can't decide to laugh or cry. The HP-UX server in question already has the GCC toolchain, GNU tar, ant, CVS, CruiseControl and the list goes on. Not to mention widespread use of Hibernate, Spring, ehcache, and tons of Apache and Jakarta projects throughout our Java and .Net products. WTF?&lt;br /&gt;&lt;br /&gt;I've learned my lesson. Attempts at following procedure will only be made as a last resort. I need anti-action-item-Wonder-Woman-bracelets to deflect IT-related action items onto my coworkers.&lt;br /&gt;&lt;br /&gt;Speaking of playing dress up...&lt;br /&gt;&lt;a href="http://www.astrobasego.com/"&gt;&lt;img src="http://www.astrobasego.com/images/banner-shirt-club-1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have to keep reminding myself I have better things to do than spend $250 on t-shirts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6649720813497232259?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6649720813497232259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6649720813497232259' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6649720813497232259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6649720813497232259'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/waaaaaah.html' title='waaaaaah?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-996442339958791455</id><published>2008-05-25T01:56:00.002-06:00</published><updated>2008-05-25T02:01:52.106-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>further lessons in not believing anyone</title><content type='html'>&lt;p&gt;More whining about work.&lt;/p&gt;&lt;p&gt;It's becoming increasingly apparent that the previous development staff of Project A were lazy. Definitely not stupid, only people confident in their brilliance could produce such a poorly documented and nightmarish code base. &lt;/p&gt;&lt;p&gt;Lazy in terms of, "Hey, that's acting weird... it seems hard to figure out too. I'll blame X and the business people will live with it."&lt;/p&gt;&lt;p&gt;The latest example is the supposedly 'inconsistent' regression test results. When Jeff and I joined the project, we were repeatedly warned in reverent tones of the odd non-deterministic regression test. The first time the 10k+ bills in the regression suite are run, some bills fail. If you run those bills through again, they work.&lt;/p&gt;&lt;p&gt;On the face of it, it seems very odd. The way it was presented to us it &lt;strong&gt;seemed&lt;/strong&gt; that the failing bills were random, and on re-run the identical bill would produce different results. Various things were blamed: memory leaks, buffer overrun, bad casts.&lt;/p&gt;&lt;p&gt;As we dug into it, it became clear that wasn't the case:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;the bill processing engine wasn't re-started between the failure and success.&lt;/li&gt;&lt;li&gt;for at least one large set of the failing bills, the same bills fail every time the regression test is run. &lt;/li&gt;&lt;li&gt;The regression test's preparatory script actually modifies the bill in such a way that they become illegal bills&lt;/li&gt;&lt;li&gt;the engine sees the illegal bill, and tweaks it such that works again&lt;/li&gt;&lt;li&gt;but, many of the failing bills are only partially tweaked because they have manual override codes. The partial tweaking sets the bill up to fail the first time, but corrects things enough that it will work the second time through the system.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Definitely a bug in the engine. The data that's reset by the prep script shouldn't make it behave that badly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-996442339958791455?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/996442339958791455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=996442339958791455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/996442339958791455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/996442339958791455'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/further-lessons-in-not-believing-anyone.html' title='further lessons in not believing anyone'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7579332717664278744</id><published>2008-05-24T23:45:00.005-06:00</published><updated>2008-05-25T01:53:05.557-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>python + elixir + pyyaml == yay!</title><content type='html'>And so... I'm playing with a little toy script to ease some pain at work. We've got a bunch of bills in a very large database, the bill data our application reads/modifies is split across a number of tables.&lt;br /&gt;&lt;br /&gt;At the moment, the developers manually run SQL scripts to peek at various bits of data. Definitely a huge waste of time.&lt;br /&gt;&lt;br /&gt;So, I'm playing with Python + &lt;a href="http://elixir.ematia.de/trac/"&gt;Elixir&lt;/a&gt; + &lt;a href="http://pyyaml.org/wiki/PyYAML"&gt;PyYAML&lt;/a&gt; to get a script that I can just pass in the bill ID and it'll query the 5-6 tables and serialize the bill to something more human readable. If I play my cards right, I'll never have to deal with Toad again.&lt;br /&gt;&lt;br /&gt;Elixir works its magic and I can query my database. The autoload didn't work, and there are a couple tables with 50-100+ columns. Serializing it to YAML without repeating myself is now the trick.&lt;br /&gt;&lt;br /&gt;I'm sure there's a better way to do this, but here's what I came up with... applied to the Elixir tutorial. Not the most exciting thing ever. But, it's the start of building a better testing framework. Doing the same for the real tables will make it much easier to compare a bill before and after running through our application.&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;&lt;I&gt;&lt;FONT COLOR="#B22222"&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;I&gt;&lt;FONT COLOR="#B22222"&gt;# -*- coding: latin-1 -*-&lt;br /&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;/I&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;from&lt;/FONT&gt;&lt;/B&gt; elixir &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;import&lt;/FONT&gt;&lt;/B&gt; *&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;from&lt;/FONT&gt;&lt;/B&gt; yaml &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;import&lt;/FONT&gt;&lt;/B&gt; load, dump&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;try&lt;/FONT&gt;&lt;/B&gt;:&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;from&lt;/FONT&gt;&lt;/B&gt; yaml &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;import&lt;/FONT&gt;&lt;/B&gt; CLoader as Loader&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;from&lt;/FONT&gt;&lt;/B&gt; yaml &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;import&lt;/FONT&gt;&lt;/B&gt; CDumper as Dumper&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;except&lt;/FONT&gt;&lt;/B&gt; ImportError:&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;from&lt;/FONT&gt;&lt;/B&gt; yaml &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;import&lt;/FONT&gt;&lt;/B&gt; Loader, Dumper&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;def&lt;/FONT&gt;&lt;/B&gt; &lt;B&gt;&lt;FONT COLOR="#0000FF"&gt;_toYamlRep&lt;/FONT&gt;&lt;/B&gt;(ent):&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;&lt;br /&gt;    Given an elixir entity, query the entity's members via its __dict__ &lt;br /&gt;&lt;br /&gt;    and return a dict&lt;br /&gt;&lt;br /&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/FONT&gt;&lt;/B&gt;&lt;br /&gt;&lt;br /&gt;    ret = {}&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;for&lt;/FONT&gt;&lt;/B&gt; (k,v) &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;in&lt;/FONT&gt;&lt;/B&gt; ent.__dict__.items():&lt;br /&gt;&lt;br /&gt;        &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;if&lt;/FONT&gt;&lt;/B&gt; k.startswith(&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;'_'&lt;/FONT&gt;&lt;/B&gt;) &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;or&lt;/FONT&gt;&lt;/B&gt; k == &lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;'row_type'&lt;/FONT&gt;&lt;/B&gt;:&lt;br /&gt;&lt;br /&gt;            &lt;I&gt;&lt;FONT COLOR="#B22222"&gt;# don't print out the 'hidden' keys&lt;br /&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;/I&gt;            &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;continue&lt;/FONT&gt;&lt;/B&gt;&lt;br /&gt;&lt;br /&gt;        &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;if&lt;/FONT&gt;&lt;/B&gt; v:&lt;br /&gt;&lt;br /&gt;            ret[k] = str(v)&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;return&lt;/FONT&gt;&lt;/B&gt; ret&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;class&lt;/FONT&gt;&lt;/B&gt; YamlEntity(Entity):&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;def&lt;/FONT&gt;&lt;/B&gt; &lt;B&gt;&lt;FONT COLOR="#0000FF"&gt;toYamlRep&lt;/FONT&gt;&lt;/B&gt;(self):&lt;br /&gt;&lt;br /&gt;        &lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;&lt;br /&gt;        Wrap the _toYamlRep() dict in another dict, use the class' name as the header.&lt;br /&gt;&lt;br /&gt;        &amp;quot;&amp;quot;&amp;quot;&lt;/FONT&gt;&lt;/B&gt;&lt;br /&gt;&lt;br /&gt;        &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;return&lt;/FONT&gt;&lt;/B&gt; {self.__class__.__name__ : _toYamlRep(self) }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;class&lt;/FONT&gt;&lt;/B&gt; Movie(YamlEntity):&lt;br /&gt;&lt;br /&gt;    title = Field(String(30))&lt;br /&gt;&lt;br /&gt;    year = Field(Integer())&lt;br /&gt;&lt;br /&gt;    description = Field(Text())&lt;br /&gt;&lt;br /&gt;    director = ManyToOne(&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;'Director'&lt;/FONT&gt;&lt;/B&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;def&lt;/FONT&gt;&lt;/B&gt; &lt;B&gt;&lt;FONT COLOR="#0000FF"&gt;__repr__&lt;/FONT&gt;&lt;/B&gt;(self):&lt;br /&gt;&lt;br /&gt;        &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;return&lt;/FONT&gt;&lt;/B&gt; &lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;'&amp;lt;Movie: &amp;quot;%s&amp;quot; (%d)&amp;gt;'&lt;/FONT&gt;&lt;/B&gt;%(self.title,self.year)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;class&lt;/FONT&gt;&lt;/B&gt; Director(YamlEntity):&lt;br /&gt;&lt;br /&gt;    name = Field(String(60))&lt;br /&gt;&lt;br /&gt;    movies = OneToMany(&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;'Movie'&lt;/FONT&gt;&lt;/B&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;def&lt;/FONT&gt;&lt;/B&gt; &lt;B&gt;&lt;FONT COLOR="#0000FF"&gt;__repr__&lt;/FONT&gt;&lt;/B&gt;(self):&lt;br /&gt;&lt;br /&gt;        &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;return&lt;/FONT&gt;&lt;/B&gt; &lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;'&amp;lt;Director: &amp;quot;%s&amp;quot;&amp;gt;'&lt;/FONT&gt;&lt;/B&gt;%(self.name)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;def&lt;/FONT&gt;&lt;/B&gt; &lt;B&gt;&lt;FONT COLOR="#0000FF"&gt;main&lt;/FONT&gt;&lt;/B&gt;():&lt;br /&gt;&lt;br /&gt;    metadata.bind = &lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;sqlite://&amp;quot;&lt;/FONT&gt;&lt;/B&gt;&lt;br /&gt;&lt;br /&gt;    setup_all()&lt;br /&gt;&lt;br /&gt;    create_all()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    rscott = Director(name=&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;Ridley Scott&amp;quot;&lt;/FONT&gt;&lt;/B&gt;)&lt;br /&gt;&lt;br /&gt;    glucas = Director(name=&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;George Lucas&amp;quot;&lt;/FONT&gt;&lt;/B&gt;)&lt;br /&gt;&lt;br /&gt;    alien = Movie(title=&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;Alien&amp;quot;&lt;/FONT&gt;&lt;/B&gt;, year=1979, director=rscott)&lt;br /&gt;&lt;br /&gt;    swars = Movie(title=&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;Star Wars&amp;quot;&lt;/FONT&gt;&lt;/B&gt;, year=1977, director=glucas)&lt;br /&gt;&lt;br /&gt;    brunner = Movie(title=&lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;&amp;quot;Blade Runner&amp;quot;&lt;/FONT&gt;&lt;/B&gt;, year=1982, director=rscott)&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    session.flush()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;for&lt;/FONT&gt;&lt;/B&gt; m &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;in&lt;/FONT&gt;&lt;/B&gt; Movie.query().all():&lt;br /&gt;&lt;br /&gt;        &lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;print&lt;/FONT&gt;&lt;/B&gt; dump(m.toYamlRep(),Dumper=Dumper,default_flow_style=False)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    cleanup_all()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;B&gt;&lt;FONT COLOR="#A020F0"&gt;if&lt;/FONT&gt;&lt;/B&gt; __name__ == &lt;B&gt;&lt;FONT COLOR="#BC8F8F"&gt;'__main__'&lt;/FONT&gt;&lt;/B&gt;:&lt;br /&gt;&lt;br /&gt;    main()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And, here's the output:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;Movie:&lt;br /&gt;  director: '&amp;lt;Director: "George Lucas"&amp;gt;'&lt;br /&gt;  director_id: '2'&lt;br /&gt;  id: '3'&lt;br /&gt;  title: Star Wars&lt;br /&gt;  year: '1977'&lt;br /&gt;&lt;br /&gt;Movie:&lt;br /&gt;  director: '&amp;lt;Director: "Ridley Scott"&amp;gt;'&lt;br /&gt;  director_id: '1'&lt;br /&gt;  id: '4'&lt;br /&gt;  title: Alien&lt;br /&gt;  year: '1979'&lt;br /&gt;&lt;br /&gt;Movie:&lt;br /&gt;  director: '&amp;lt;Director: "Ridley Scott"&amp;gt;'&lt;br /&gt;  director_id: '1'&lt;br /&gt;  id: '5'&lt;br /&gt;  title: Blade Runner&lt;br /&gt;  year: '1982'&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7579332717664278744?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7579332717664278744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7579332717664278744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7579332717664278744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7579332717664278744'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/python-elixir-pyyaml-yay.html' title='python + elixir + pyyaml == yay!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3882798076718893457</id><published>2008-05-24T23:38:00.004-06:00</published><updated>2008-05-25T01:52:41.043-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='software builds'/><title type='text'>cruisecontrol == teh suck</title><content type='html'>Every time I try to dive into configuring CruiseControl, I hate it a little bit more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3882798076718893457?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3882798076718893457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3882798076718893457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3882798076718893457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3882798076718893457'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/cruisecontrol-teh-suck.html' title='cruisecontrol == teh suck'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8673295082078424896</id><published>2008-05-21T18:18:00.004-06:00</published><updated>2008-05-23T16:08:42.784-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>can it be? finally done? ... WTF?</title><content type='html'>And now, the servers have been installed (all except for the HP-UX I may give up on).&lt;br /&gt;&lt;br /&gt;after the following loop through the tech support desk:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;go to system A&lt;/li&gt;&lt;li&gt;go to system B&lt;/li&gt;&lt;li&gt;go to system C&lt;/li&gt;&lt;li&gt;go to system D&lt;/li&gt;&lt;li&gt;go to system F&lt;/li&gt;&lt;li&gt;no, go to system C. enter text 'XYZ A'&lt;/li&gt;&lt;li&gt;FAIL&lt;/li&gt;&lt;li&gt;no, go to system C. enter text 'XYZ B'&lt;/li&gt;&lt;li&gt;SUCCESS&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The admin rights have been granted.&lt;/p&gt;&lt;p&gt;It seems obvious now, but if you're not given a definitive answer when you ask "Doesn't Umbrella Corp already have a pool of licenses we can pull from?", keep asking. &lt;/p&gt;&lt;p&gt;Turns out, we had the licenses all along. SWEET ZOMBIE JESUS, that was good times.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8673295082078424896?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8673295082078424896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8673295082078424896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8673295082078424896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8673295082078424896'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/can-it-be-finally-done-wtf.html' title='can it be? finally done? ... WTF?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7652747209636031070</id><published>2008-05-19T12:03:00.003-06:00</published><updated>2008-05-23T16:09:00.702-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>progress?</title><content type='html'>When last we saw "Steve's lame-assed adventures in IT", I was relating my struggles with our IT department. This morning's update:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I reply, "I don't know what group name you're asking for? How do I find that information?"&lt;/li&gt;&lt;li&gt;Tech-support person #6 replies, "Global group used by your team to access servers."&lt;/li&gt;&lt;li&gt;I reply, "I have a 'global group to access servers'? I log in using my XYZ domain account. I don't know what group you're asking for. Is the global group one of the access groups listed in service request system F?"&lt;/li&gt;&lt;li&gt;Tech-support person #6 replies, "Yes, global group is a access group."&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I don't know if this is progress or not. &lt;/p&gt;&lt;p&gt;Further complicating matters... the process improvements Jeff and I have suggested appear to have helped us meet this month's release. The group's communication is improving, the code reviews caught some subtle problems, and it seems like meeting the deadline may not only be because of the handful of items they dropped off the release plan. And, Jeff and I are spitballing some ideas to for a unit testing framework so the developers can test their modifications without manually running SQL statements to verify the result of their changes.&lt;/p&gt;&lt;p&gt;It seems like we could be successful. If only we're not ground up by the monthly release chaos. &lt;/p&gt;&lt;p&gt;But, is it worth it? I'd hate to run away after only 2 months, but it gets very discouraging. There are at least two friends who have jobs to fill, one unknown but potentially awesome and another known and good-to-awesome.&lt;/p&gt;&lt;p&gt;I don't feel like I'm growing technically. But, I'm definitely growing in terms of dealing with projects, customers, and other developers onshore-and-offshore. Maybe the pain is worth it. On the plus side, Jeff and I have the complete support of the business-side to make the changes we're planning. They're suprisingly enthusiastic.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7652747209636031070?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7652747209636031070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7652747209636031070' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7652747209636031070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7652747209636031070'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/progress.html' title='progress?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2566565440997096233</id><published>2008-05-18T17:44:00.004-06:00</published><updated>2008-05-23T16:09:13.241-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>are you there Mordac? it's me steve</title><content type='html'>Because the purpose of my life is to serve as a warning for others, please note the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Don't spend the first 3 weeks after your initial "I need software X" request, lackadaisically monitoring the request's progress every 2-3 days. Expect to spend 1-3 hours per day following up on e-mails and on the phone.&lt;/li&gt;&lt;li&gt;Don't bother trying to navigate the 'helpful' self-service website, or the dozen+ service request web apps. Go directly to the Help Line. While one-on-one interaction with actual people is scary, at least there will be someone to hear your plaintive cries.&lt;/li&gt;&lt;li&gt;If tech-support person #1 helpfully forwards your e-mail to person #2 for clarification, don't assume that person #1 would take note of person #2's out-of-office reply that says they'll be out for the rest of the month.&lt;/li&gt;&lt;li&gt;Don't assume #3 wouldn't happen twice. The same day.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Assume every person 'helping' you is actually actively preventing you from reaching your&lt;br /&gt;goal through a clever misinformation campaign meant to drive you slowly insane.&lt;/li&gt;&lt;/ol&gt;As the owner of the action item, it does make me feel slightly better to be an obstruction to the people waiting on me to get this done. Their pitiful cries bring delight to my cruel, cruel heart.&lt;br /&gt;&lt;br /&gt;Last week's status meeting:&lt;br /&gt;&lt;br /&gt;Person Z asks, "Steve, any progress on &lt;software&gt;?"&lt;br /&gt;&lt;br /&gt;I reply, "I've got it installed on the two wintel servers I had admin rights to. I can't find anyone to give me a straight answer on who owns the other two wintel servers, or the 'right' process for requesting admin access. I've entered a Unix service request on the fifth server, I assume someone may see it eventually."&lt;br /&gt;&lt;br /&gt;The assorted people in the room nod sympathetically, apparently my struggles are par for the course.&lt;br /&gt;&lt;br /&gt;Project Manager F asks, "Is there anything we can do to help?"&lt;br /&gt;&lt;br /&gt;"Pray."&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_minor_characters_in_Dilbert#Mordac"&gt;Mordac&lt;/a&gt;'s latest trick, masquerading as other IT service members:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;As persona #1, point me to intranet URL #1 telling me to use service request system A to apply for admin rights.&lt;/li&gt;&lt;li&gt;I submit request, push the approval through my management chain.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;As persona #2, reject request. "System A is only to request admin access to your desktops. Not servers. You need to follow the set of instructions at this URL."&lt;/li&gt;&lt;li&gt;URL #2 describes in the vaguest way possible how to gain access to various intranet web applications through service request system B&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I reply, "WAH? Person #1 told me this, and its clearly documented at URL #1. If that's wrong, it needs to be updated. I follow your instructions, but I don't see which access group I need to belong to gain access rights, can you clarify?"&lt;/li&gt;&lt;li&gt;Persona #2 forwards it along to persona #3.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Persona #3 says "You need to follow the instructions at URL #3, and use service request system C."&lt;/li&gt;&lt;li&gt;System C looks like its asking for the right information. I submit the request.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The request is rejected by Persona #4, "You can't do that for your specific user id. You have to enter your team's group name."&lt;/li&gt;&lt;li&gt;This is the first I've heard that my team has a group name.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No one on my team is aware we have a group name, or what it may be. Not even those who already have admin on those servers.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No reply from Persona #4 yet.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2566565440997096233?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2566565440997096233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2566565440997096233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2566565440997096233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2566565440997096233'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/are-you-there-mordac-its-me-steve.html' title='are you there Mordac? it&apos;s me steve'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7736243334410594265</id><published>2008-05-05T22:28:00.009-06:00</published><updated>2008-05-05T23:47:22.200-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><category scheme='http://www.blogger.com/atom/ns#' term='software builds'/><title type='text'>project A makes baby jesus cry</title><content type='html'>And so... for some reason I'd gotten it into my head to volunteer for Project A at work. Project A is a rules engine for processing ... things... Myself and another fellow newbie on the project (Hi Jeff!) are slowly coming up to speed on the crazy.&lt;br /&gt;&lt;br /&gt;How crazy? Let me count the ways...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Release every month!&lt;/li&gt;&lt;li&gt;Without a project manager, development manager, or release manager. Who needs 'em? Crybabies.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;We can't control the # or scope of change requests coming in each month. State regulations drive all the changes to the system. Some nebulous decision process allows us to occasionally drop some changes from the queue... but we don't know which until the deadline has been blown.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Crumbling 12+ year old code base. Not given love or documentation over the years. Occasionally tossed a bucket of fish heads. You can tell which dark corners survived from the halcyon days -- they use the hacked-in exception handling in what appears to be the correct way. While I appreciate the cleverness of adding exception handling to C (preprocessing macros around some setjump/longjump magic), I'd appreciate it more if anyone had bothered to write a brief document describing said 'right' way. An example in the .h file? Pshaw! That's for suckers! In the 3 weeks I've spent diving through the code to correct memory leaks, there's at least 4-5 different exception handling idioms. Many possibly broken sections of code, swallowing exceptions with no comment to explain whether the author did accidentally or on purpose. If there aren't comments, it's usually right... for certain values of right. If there are comments, the author clearly thinks exceptions either work like Java's or has no clue.&lt;/li&gt;&lt;li&gt;Functions are named as ambiguously as possible with regard to whether it returns a reference to a list that shouldn't be modified, or a copy of the list that's safe to modify and  needs to be cleaned up by the caller.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It doesn't matter that developers create the builds pushed to customers, right?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Oh, and developers have been doing the source control labeling too.&lt;/li&gt;&lt;li&gt;Oh, and they're doing both of those tasks half-assed&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The developers have been too lazy or too scared of the HP-UX makefile to allow it to work without manually copying all source files from their CVS checkout directory to the application directory.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You know what'd be a great idea? Basing the fancy new .Net-based Product B's rules engine on Project A. Wait... let's add a Java JNI wrapper around its re-packaged Project A. Awww, yeah... now that's good and f*^@#$ed up.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cherry on top: some genius decides to branch to support Project B. "Branches are neat! Wait... branches are hard... oh well, we'll just branch this one directory that has the DAO stuff, that code definitely has to be different between Project A and B. That's what branching is for, right?" The branched directory also contains nearly identical files that will be slowly, and not-so-slowly , diverging to meet each project's mostly identical monthly release requirements. What? Labels on the branch/trunk to indicate merged code? Nah, that'd be too helpful. I should consider myself lucky that the branch has only existed for a year.&lt;/li&gt;&lt;li&gt;Oh yeah, we're releasing Project B mid-Summer. Sweet!&lt;/li&gt;&lt;/ul&gt;Somehow, I'm the calming influence on Jeff. Probably up to the point where he reads this rant. C'mon, we're in it together! You know, like Musketeers! But less flouncy.&lt;br /&gt;&lt;br /&gt;I'm pretty sure I'm living in a sitcom written by &lt;a href="http://thedailywtf.com/"&gt;The Daily WTF&lt;/a&gt;. The alternative is unthinkable.&lt;br /&gt;&lt;br /&gt;This is Mark's cue to waltz through with a comment where he doesn't say a thing. Which I appreciate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7736243334410594265?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7736243334410594265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7736243334410594265' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7736243334410594265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7736243334410594265'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/05/your-project-makes-baby-jesus-cry.html' title='project A makes baby jesus cry'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1139372595305700661</id><published>2008-04-19T20:37:00.004-06:00</published><updated>2008-04-19T20:48:10.965-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='software builds'/><title type='text'>more ponytails than should be allowed by law</title><content type='html'>Decided to go to the &lt;a href="http://www.ujug.org/web/content/view/108/1/"&gt;April UJUG&lt;/a&gt; meeting a couple nights ago. The presenters varied a little in quality, but were average to great. The topic was interesting, I would have enjoyed more "What went horribly wrong" war stories.&lt;br /&gt;&lt;br /&gt;I thought it was telling that even though Maven was held up as a savior for many of the projects, everyone who spoke up mentioned their love/hate relationship with it. It sounded like the LDS church's team had embraced it the most, and a big part of their success with it appears to be because they've dedicated 2-3 engineers to supporting it full time within their organization.&lt;br /&gt;&lt;br /&gt;Turnout was huge, 100+. I think I prefer the smaller, and less formal, UPyUG meetings. And it's not just because I think software developers with long hair look silly. So many ponytails at the UJUG meeting. And at least one beret.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1139372595305700661?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1139372595305700661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1139372595305700661' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1139372595305700661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1139372595305700661'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/04/more-ponytails-than-should-be-allowed.html' title='more ponytails than should be allowed by law'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1965998975059661944</id><published>2008-03-27T21:53:00.004-06:00</published><updated>2008-03-27T22:12:41.323-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>Spring, best thing since sliced bread?</title><content type='html'>I've been reading a lot about the &lt;a href="http://www.springframework.org/"&gt;Spring Framework&lt;/a&gt; lately. It's been aggravating me... realizing how much easier it could have made the last 2 years of my life, if I'd dug into it before starting on my last big project.&lt;br /&gt;&lt;br /&gt;I'm enjoying &lt;a href="http://www.amazon.com/Spring-Action-Craig-Walls/dp/1933988134/"&gt;Spring in Action&lt;/a&gt;. Only a few chapters into it. So far a good introductory book. I like the light tone of the examples, but the jokes are becoming grating.&lt;br /&gt;&lt;br /&gt;I also picked up &lt;a href="http://www.amazon.com/Expert-One-One-Development-without/dp/0764558315/"&gt;Expert One-on-One J2EE Development without EJB&lt;/a&gt;. I'm pretty sure it wins for the creepiest cover on a technical book ever. Kids, if he pulls up to your playground in a ice cream truck, RUN AWAY!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1965998975059661944?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1965998975059661944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1965998975059661944' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1965998975059661944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1965998975059661944'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/03/spring-best-thing-since-sliced-bread.html' title='Spring, best thing since sliced bread?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-5547416804683071185</id><published>2008-03-27T21:29:00.003-06:00</published><updated>2008-03-27T22:13:01.305-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>what? just because we don't have a customer we have to stop working?</title><content type='html'>The job switch has been... odd. Spent the first week and a half scrambling, reading non-stop to catch up with the rest of the team on the Java frameworks we'll be using.&lt;br /&gt;&lt;br /&gt;Spent the second week and a half wondering what I'll be working on. The original project was put 'on hold' due to lack of business funding. We'll be shuffled off onto different projects for the time being, likely never to return to the original project.&lt;br /&gt;&lt;br /&gt;It's good times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-5547416804683071185?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/5547416804683071185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=5547416804683071185' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5547416804683071185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5547416804683071185'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/03/what-just-because-we-dont-have-customer.html' title='what? just because we don&apos;t have a customer we have to stop working?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-700771818494795617</id><published>2008-03-16T14:11:00.004-06:00</published><updated>2008-03-17T22:33:37.029-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>chastened by mother nature for act of hubris</title><content type='html'>After enjoying spring-ish weather, walking around the new neighborhood, and doing some cleanup in the yard... we decided to purchase some patio furniture for the back deck.&lt;br /&gt;&lt;br /&gt;I feel I must apologize to everyone in the valley for resulting snow fall. We had at least 2-3 inches at our house.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-700771818494795617?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/700771818494795617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=700771818494795617' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/700771818494795617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/700771818494795617'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/03/chastened-by-morther-nature-for-act-of.html' title='chastened by mother nature for act of hubris'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1590520212206850945</id><published>2008-02-26T21:00:00.004-07:00</published><updated>2008-02-26T21:24:36.992-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>adrift</title><content type='html'>Not sure why I feel more adrift now that I've not only made the decision to leave my current employer, I've done a bunch of job hunting, interviewed and accepted an offer.&lt;br /&gt;&lt;br /&gt;I thought once I'd made my decision, things would have solidified in my mind. Maybe I'm realizing how much I'll miss my co-workers. Nothing like them being laid off, and conspiring with them against  'the man,' to bring you closer together. Their last day is Friday the 29th. My last day is the following Friday, and I'll start the new job the next Monday.&lt;br /&gt;&lt;br /&gt;It was difficult to choose where to go. I could go someplace unknown, or I could go back to the ex-employer, or I could follow some friends that left current-employer last year. Doors #2 and #3 seem fairly recession proof; military work for the former, health for the latter.&lt;br /&gt;&lt;br /&gt;All the reasons I had for picking door #2 were comfort-based -- very close to the new house, great friends, and interesting work. Door #3 is more of an unknown and a ton more responsibility, but with a safety net of other good friends. Ultimately picked door #3, the riskier job that could be huge career-wise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1590520212206850945?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1590520212206850945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1590520212206850945' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1590520212206850945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1590520212206850945'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/02/adrift.html' title='adrift'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8069078322477115124</id><published>2008-02-19T22:19:00.005-07:00</published><updated>2008-02-20T17:06:17.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cdt'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>eclipse + cdt + cygwin = hours of misery! hooray!</title><content type='html'>Holy dammit Christmas, every step along the way to debug a simple hello world app is an exercise in misery.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;it appears to have found make/gcc/etc... but then won't actually run anything. Launching eclipse via a batch script that adds c:\cygwin\bin to the path before starting eclipse fixes this. It would have been nice if eclipse threw up more red flags about not finding the things it needed.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I get everything building, launch the debugger and it complains that it can't find the source file. This was answered by the &lt;a href="http://wiki.eclipse.org/index.php/CDT/User/FAQ#I.27m_using_cygwin_and_when_launching_the_debugger.2C_it_complains_that_it_can.27t_find_the_source_file"&gt;FAQ&lt;/a&gt;... once I found the FAQ.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I hate that I didn't think to look for the FAQ as the first step. I hate that the top google search results were all 3 or more years out of date. I hate Eclipse's web site -- it's as bad as my employer's intranet site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8069078322477115124?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8069078322477115124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8069078322477115124' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8069078322477115124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8069078322477115124'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/02/eclipse-cdt-cygwin-hours-of-misery.html' title='eclipse + cdt + cygwin = hours of misery! hooray!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3249966823958605013</id><published>2008-01-21T15:37:00.000-07:00</published><updated>2008-01-23T14:38:38.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>demotivation</title><content type='html'>After a Holiday season filled with indecision over staying at my employer, I got motivated again last week. I decided that there was interesting work to be done, and that I really like everyone I'm working with.&lt;br /&gt;&lt;br /&gt;Then, the bombshell Wednesday. Lay offs. Because while we're profitable, we're not growing fast enough for our parent company. Why not outsource all our content production? All our competitors are doing it, so it must work! Quick, outsource everything in a month and a half!&lt;br /&gt;&lt;br /&gt;Out of my group of 10 (including my manager), I'm one of 4 software developers left. The content production team was hit much worse, only 2 left out of over 20.&lt;br /&gt;&lt;br /&gt;Now we're looking at an avalanche of legacy code maintenance work for at least the next few months as we train outsourced software developers to maintain our convoluted production system that has grown into a horrible mess over the last 10-15 years. There are a ton of services and applications that interact in odd and poorly documented ways. As if that wasn't bad enough, anything over 5 years old frequently isn't in source control.&lt;br /&gt;&lt;br /&gt;We have an experienced set of users who know how to push the data through the tangle of applications. We'll lose that in a little over a month.&lt;br /&gt;&lt;br /&gt;Fun times ahead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3249966823958605013?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3249966823958605013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3249966823958605013' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3249966823958605013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3249966823958605013'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/01/demotivation.html' title='demotivation'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8029361301701128198</id><published>2008-01-08T22:36:00.000-07:00</published><updated>2008-01-08T22:54:25.397-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>house chaos, kitchen chaos, more lame book reviews</title><content type='html'>We've slowly been settling into the house. Hampered in large part by our decision to remodel the kitchen. So far, so good. It has stayed on schedule, and is turning out well.&lt;br /&gt;&lt;br /&gt;A little over one more week of no kitchen sink or appliances to go, then we'll be able to stop living off of the kindness of friends and family, the mini-fridge and microwave, and waaaaaaay too many take-away and fast food dinners.&lt;br /&gt;&lt;br /&gt;Further lame book reviews accumulated during the move and holidays.  To further distill my always lame, and always blessedly brief reviews, they will be presented in list form.&lt;br /&gt;&lt;br /&gt;First the Good:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Camouflage, by Joe Haldeman. Interesting alien(s).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;They Call me Naughty Lola, edited by David Rose. A collection of personals from the London Review of Books. Bizarre and very funny.&lt;/li&gt;&lt;li&gt;Do Androids Dream of Electric Sheep (aka Bladerunner), Philip K. Dick.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Also decided to pick up some science fiction classics I had never read. All pretty fun. A Deepness in the Sky, by Vernor Vinge. Also, The Mote in God's Eye, and The Gripping Hand, by Larry Niven and Jerry Pournelle.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Next, the mediocre:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Storm Front, by Jim Butcher&lt;/li&gt;&lt;li&gt;The Summer Tree, The Wandering Fire, and The Darkest Road -- by Guy Gavriel Kay. Re-read these. I remember picking them up years ago because I'd heard such good reviews. I remembered not liking them much. I thought I'd give them another go since my tastes have changed quite a bit since then. Still found them very annoying. Stilted dialogue, and the whole college-kids transported into alternate medieval reality thing kept making me think Ren Faire.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8029361301701128198?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8029361301701128198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8029361301701128198' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8029361301701128198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8029361301701128198'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2008/01/house-chaos-kitchen-chaos-more-lame.html' title='house chaos, kitchen chaos, more lame book reviews'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7865066462700127108</id><published>2007-12-05T18:23:00.000-07:00</published><updated>2007-12-05T18:34:21.722-07:00</updated><title type='text'>the thank you that keeps on thanking</title><content type='html'>The best way to thank your friends and family for helping you move?&lt;br /&gt;&lt;br /&gt;Food poisoning.&lt;br /&gt;&lt;br /&gt;Including myself and the lovely wife, nine of the dozen or so people who helped us move were struck down by the Subway sandwich platter. I don't think I've ever been so sick. About 24 hours of sick, sick, sickness followed by a week of not eating solid food.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7865066462700127108?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7865066462700127108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7865066462700127108' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7865066462700127108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7865066462700127108'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/12/thank-you-that-keeps-on-thanking.html' title='the thank you that keeps on thanking'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-254124728538137156</id><published>2007-11-08T08:07:00.000-07:00</published><updated>2007-11-13T10:43:06.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xquery'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><title type='text'>MarkMail, sweet!</title><content type='html'>&lt;a href="http://neeber.blogspot.com/2007/05/san-francisco-day-3.html"&gt;Last May&lt;/a&gt;, at the Mark Logic User Conference, Jason Hunter showed off MarkMail. It's finally available to the public at &lt;a href="http://markmail.org/"&gt;http://markmail.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Various links about it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An &lt;a href="http://www.marklogic.com/products/mmoverview.html"&gt;overview&lt;/a&gt; at Mark Logic's site&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A &lt;a href="http://marklogic.blogspot.com/2007/11/introducing-markmail.html"&gt;message&lt;/a&gt; from Mark Logic's CEO&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An &lt;a href="http://www.oreillynet.com/onjava/blog/2007/11/markmail_interesting_mailling_1.html"&gt;article&lt;/a&gt; at O'Reilly OnJava&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;One part that wowed me is the ability to view attachments within the interface. Maybe I'm easily impressed. For an example, go &lt;a href="http://markmail.org/message/7ktzbtdrqwma7res"&gt;here&lt;/a&gt; for email with a PDF attached. Click on the link for the attachment. Search for other attachments with a search string like 'extension:ppt' or 'extension:doc'&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-254124728538137156?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/254124728538137156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=254124728538137156' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/254124728538137156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/254124728538137156'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/11/markmail-sweet.html' title='MarkMail, sweet!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-2526263340264796314</id><published>2007-10-30T21:54:00.000-06:00</published><updated>2007-10-30T21:55:33.973-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>who knew?</title><content type='html'>Finally added labels to the blog posts. Who'd have guessed? Tied for the most frequent label:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;computers&lt;/li&gt;&lt;li&gt;i am lame&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-2526263340264796314?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/2526263340264796314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=2526263340264796314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2526263340264796314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/2526263340264796314'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/10/who-knew.html' title='who knew?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1384235215960251636</id><published>2007-10-30T08:41:00.000-06:00</published><updated>2007-10-31T21:07:25.440-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>so close, yet so far</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_gR0SRn4W478/RydDAqGaBcI/AAAAAAAAACU/ilMA8o4Muvs/s1600-h/backdeck2.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_gR0SRn4W478/RydDAqGaBcI/AAAAAAAAACU/ilMA8o4Muvs/s200/backdeck2.jpg" alt="" id="BLOGGER_PHOTO_ID_5127140379364820418" border="0" /&gt;&lt;/a&gt;The appraisal is complete and our buyers haven't complained so it must have covered the sale price. Our buyers decided to do the inspection themselves, which we found odd. It's a fairly new home, and we are paying for a home warranty, so maybe they don't think much could be wrong. But, we're baffled that they wouldn't spend a couple hundred to get a professional to look over the house to verify there aren't any non-obvious problems.&lt;br /&gt;&lt;br /&gt;The sellers on our new home were happy to extend the closing date on our contract for another couple weeks, so everything is looking good for the closing and move in the next 2 weeks.&lt;br /&gt;&lt;br /&gt;Our buyers came by on Sunday to do the inspection, said they needed 3 hours. We decided to head up to the new house, visit our friends across the street, and rake leaves. I'd assumed it would be about an hour's job.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_gR0SRn4W478/RydC7aGaBbI/AAAAAAAAACM/T8lDPtRDgMY/s1600-h/backdeck1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_gR0SRn4W478/RydC7aGaBbI/AAAAAAAAACM/T8lDPtRDgMY/s200/backdeck1.jpg" alt="" id="BLOGGER_PHOTO_ID_5127140289170507186" border="0" /&gt;&lt;/a&gt;15 orange bags, 6 blisters, and 4 hours later, we were done.&lt;br /&gt;&lt;br /&gt;Did I mention we've got 7 big trees on the new lot? 2 ash trees, 3 maples, and another 2... something else ... and a couple assorted smaller trees -- peach, crab apple, birch. The ashes and had dropped all their leaves, the maples and other big trees still had the majority of their leaves. Guess what I get to look forward to doing again in a few days?&lt;br /&gt;&lt;br /&gt;We roll back home around 8pm, and realize our buyers had left the back door out of the garage wide open. Awesome!&lt;br /&gt;&lt;br /&gt;Soon all the contract drama will be over, and all that will be left is moving 9 years of accumulated crap. And then we can kick back on the huge back deck at the new house.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1384235215960251636?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1384235215960251636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1384235215960251636' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1384235215960251636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1384235215960251636'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/10/so-close-yet-so-far.html' title='so close, yet so far'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_gR0SRn4W478/RydDAqGaBcI/AAAAAAAAACU/ilMA8o4Muvs/s72-c/backdeck2.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8491588294903394869</id><published>2007-10-26T15:57:00.000-06:00</published><updated>2007-10-30T21:53:11.641-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>where's the suggestion box?</title><content type='html'>The employer frequently elicits employee ideas for additional revenue streams. I have decided on one that beats my previous "Nominal fees for helping minors purchase alcohol" stream.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Form Hannah Montana tribute band, 'Amanda Bandana'&lt;/li&gt;&lt;li&gt;Prey on gullible parents thinking they're purchasing Hannah Montana tickets.&lt;/li&gt;&lt;li&gt;Profit&lt;/li&gt;&lt;/ol&gt;However, brief googling suggests 'Amanda Bandana' is already taken for a teen's myspace/livejournal/etc.&lt;br /&gt;&lt;br /&gt;This is as disappointing a googling as when I found that 'Hell Toupee' was already &lt;a href="http://www.helltoupee.com/"&gt;taken&lt;/a&gt;. Back to the lame-cover-band-name drawing board.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8491588294903394869?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8491588294903394869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8491588294903394869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8491588294903394869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8491588294903394869'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/10/wheres-that-suggestion-box.html' title='where&apos;s the suggestion box?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-6087801280894934741</id><published>2007-10-22T11:09:00.000-06:00</published><updated>2007-10-30T10:15:01.890-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>under contract!</title><content type='html'>Lots of interest on the house -- typically 5-10 viewings a week, for the 5-6 weeks we'd been listed. No offers till about 1.5 weeks ago when we got two in one day: one good offer, one low offer.&lt;br /&gt;&lt;br /&gt;The 'good offer' went south fast. They had acted very flaky, so we were disappointed but not surprised.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Our agent is told (on Wednesday): "We'll send you an offer today!"&lt;/li&gt;&lt;li&gt;No offer. Our agent calls them and is told: "Oh, they're putting an offer in on a different house"&lt;/li&gt;&lt;li&gt;24 hours later, we get their offer. They've only offered $500 earnest money, ask for %3 in closing costs, and don't have show any money down for the loan.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;We decide to counter-offer, asking for $1000 in earnest money, and say we'll cover $5000 in closing costs rather than %3. Send the counter-offer Friday morning.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Saturday: We hear from their agent, "I'll be talking to my clients this afternoon"&lt;/li&gt;&lt;li&gt;Sunday: No word&lt;/li&gt;&lt;li&gt;Monday: No word... Our agent calls, and is told "I'll be talking to my clients this afternoon"&lt;/li&gt;&lt;li&gt;Monday evening: Their agent says the deal is off. Leaves some nonsensical message for our agent saying we should have just accepted the offer and we could have closed in 3 days. I don't know why he thought he could get the inspection, appraisal, and loan stuff all worked out in that time.&lt;/li&gt;&lt;/ul&gt;In the meantime, we'd also counter-offered the other offer. And did the counter-offer thing every day last week. The buyers appeared solid financially, and were motivated to buy in our neighborhood -- their cousins had just bought up the street from some desperate sellers (they had been on the market 6 months). That house also probably screwed everyone in the subdivision on appraisals (they'd listed in May for $280 and gradually dropped to $250, accepting a $237 offer). It was nearly identical to our house -- 100 sq feet more, but hideous inside. Despite the hideousness, it was clear from the start that our buyers really, really didn't want to spend more than their cousins.&lt;br /&gt;&lt;br /&gt;After talking them up $7k from their initial offer, we ended up accepting quite a bit less than the asking price. However, with the current market, and the fact that we'd already found our new house and were under contract on it, we decided that we couldn't wait for the perfect offer. At the price we accepted we wouldn't have any worries with appraisal and it gives us enough profit to put 20% down on the new house with a bit left over.&lt;br /&gt;&lt;br /&gt;Our agent's co-workers are amazed she got us under contract in ~5 weeks. Some of it was us being priced right, in the right location, and our hard work keeping the house clean. But a huge part of it was how hard she worked. Lots of marketing, including at least one open house a week. She was awesome, and very funny. Best of all, unlike a lot of horror stories we'd heard about realtors, she was always available. Any time we had questions, she was very quick to respond to phone calls or e-mails.&lt;br /&gt;&lt;br /&gt;If you're selling (or buying) or planning to, I have no reservations recommending her. Shauna Thomas at the Sugarhouse Keller Williams (599-9126). Shauna also hooked us up with a mortgage broker: &lt;a href="http://activerain.com/rainiac"&gt;Rain Wallace&lt;/a&gt; at Citywide Home Loans. We didn't have as much one-on-one time with Rain, but she was great -- quick to answer phone/email questions, patiently showed us our options, and helped us lock in a loan with a great rate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-6087801280894934741?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/6087801280894934741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=6087801280894934741' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6087801280894934741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/6087801280894934741'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/10/under-contract.html' title='under contract!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7206810504216369574</id><published>2007-09-27T16:28:00.001-06:00</published><updated>2007-10-30T21:12:58.845-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><title type='text'>nuggets from the dumb monkey sack</title><content type='html'>We've got a new developer in the group. As he's installing all the supporting tools he'll need for the projects he'll be working on, he came to me when Ant stopped working. Odd messages about Ant core/tools version incompatibilities.&lt;br /&gt;&lt;br /&gt;We fiddle and fiddle with JAVA_HOME, with ANT_HOME, with PATH... No luck. Same messages, despite the Ant we want being right there at the start of PATH and in ANT_HOME.&lt;br /&gt;&lt;br /&gt;Like a revelation from heaven, I realize... wait... what's in CLASSPATH? Well, there's a Documentum Jar in there... but that wouldn't have stuff to do with Ant, right?&lt;br /&gt;&lt;br /&gt;The documentum Jar in question turned out to not have any classes in it, but it did have a giant list of other Jars in the manifest's classpath. Including Ant. More specifically, a local install of Ant 1.2 beneath the Documentum installation.&lt;br /&gt;&lt;br /&gt;As much as I'd like to blame Sun for not providing a non-insane standard for application startup, I think its more appropriate to vent at EMC/Documentum for creating an installer that modifies the system's classpath environment variable to add their kitchen-sink Jar. For as much money as they charge, you'd think they could write an installer that doesn't screw up your system.&lt;br /&gt;&lt;br /&gt;I'm not sure why I was surprised. Nearly every other interaction I've had with Documentum has been an exercise in agony. They must have a burlap sack full of exceptionally dumb monkeys deciding how their software gets installed and configured. Other nuggets from the monkey sack:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No desktop application needs to talk to more than content server, right? Well, if they do, they can manually edit this INI file in c:\windows.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;No desktop application needs to talk to more than one version of a content server right? Well... if they do, they can uninstall/re-install to do so.&lt;/li&gt;&lt;/ul&gt;I can excuse their crappy, obfuscated APIs. Still hate them, but I can understand inflicting them on software developers. But to screw things up for all the end-users, QA, and support that need to use their crappy desktop apps, seems mind-numbingly stupid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7206810504216369574?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7206810504216369574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7206810504216369574' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7206810504216369574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7206810504216369574'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/09/nuggets-from-dumb-monkey-sack.html' title='nuggets from the dumb monkey sack'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3231521836779368497</id><published>2007-09-26T13:31:00.000-06:00</published><updated>2007-10-30T21:53:11.642-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='i am lame'/><title type='text'>blog comment spam</title><content type='html'>I had to enable moderation on the comments due to the spam getting added. Moderating seemed like a better solution than going in and deleting the comments after-the-fact.&lt;br /&gt;&lt;br /&gt;The first thing that clued me in to their spaminess:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;em&gt;These articles are fantastic; the information you show us is interesting for everybody and is really good written. It’s just great!! [more sales pitch and spammy URLs here...]&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anyone who actually read my blog would know that it has never been, and never will be any of those things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3231521836779368497?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3231521836779368497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3231521836779368497' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3231521836779368497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3231521836779368497'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/09/blog-comment-spam.html' title='blog comment spam'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7871000930719201592</id><published>2007-09-25T21:31:00.000-06:00</published><updated>2007-10-30T10:20:53.017-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><title type='text'>hardware problems are teh suck</title><content type='html'>Why does my home PC pick the worst time to decide to stop booting? I really didn't want to spend 4 hours tonight fiddling in the XP recovery console, the BIOS settings, and running disk tests.&lt;br /&gt;&lt;br /&gt;At first, I thought it was the height of inconvenience that I'd packed up my Windows XP install disk, had to search the basement, unpack the box, re-pack the box. Then, unpack the box again after realizing I forgot to grab the floppy disk with the SATA drivers.&lt;br /&gt;&lt;br /&gt;However, that turned out to be minor compared to having to reboot twice every time I changed something in the XP recovery console. Once to get out of the console, and again so that the XP install disk would release itself from the CD-ROM drive. Gah!&lt;br /&gt;&lt;br /&gt;System Rescue CD and the XP recovery console both seemed happy to read the disks, no problem getting into the partitions and looking at files. Tried fixboot, tried fixmbr, ran &lt;a href="http://www.hitachigst.com/hdd/support/download.htm#DFT"&gt;DFT&lt;/a&gt;'s tests on both hard disks. No love from the boot gods.&lt;br /&gt;&lt;br /&gt;Finally, decided to start fiddling with the BIOS. Swapped the order in which the hard disks are booted (SATA then IDE), and it came up. Not sure why I didn't notice it before. Also not sure why the BIOS implies it'll check disk #1 then disk #2 when booting, but only actually try #1 and give up.&lt;br /&gt;&lt;br /&gt;Also not sure what would have screwed it up. I re-installed Ad-Aware, and Spybot S&amp;amp;D over the weekend. We also had a couple power-bumps a couple days ago.&lt;br /&gt;&lt;br /&gt;In less annoying news, &lt;a href="http://www.sysresccd.org/Main_Page"&gt;System Rescue CD&lt;/a&gt; is 4-6x as awesome as it was the last time I tried it a few months ago.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7871000930719201592?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7871000930719201592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7871000930719201592' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7871000930719201592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7871000930719201592'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/09/hardware-problems-are-teh-suck.html' title='hardware problems are teh suck'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-7208785756563355749</id><published>2007-09-14T11:18:00.000-06:00</published><updated>2007-10-30T10:22:54.504-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>found it!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_gR0SRn4W478/RurC7FJrnmI/AAAAAAAAABs/VDNsSZO8hbA/s1600-h/fr3.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_gR0SRn4W478/RurC7FJrnmI/AAAAAAAAABs/VDNsSZO8hbA/s200/fr3.jpg" alt="" id="BLOGGER_PHOTO_ID_5110111047456104034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The pictures of our house are now on the online &lt;a href="http://utahrealestate.com/729221"&gt;listing&lt;/a&gt;... all the paint colors and floor photographed well. And, our cat is now famous.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, things are looking pretty good for selling our house. Lots of interest. Open house this Sunday.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_gR0SRn4W478/RurESFJrnoI/AAAAAAAAAB8/t-vuRnRp8Hc/s1600-h/mr1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_gR0SRn4W478/RurESFJrnoI/AAAAAAAAAB8/t-vuRnRp8Hc/s200/mr1.jpg" alt="" id="BLOGGER_PHOTO_ID_5110112542104723074" border="0" /&gt;&lt;/a&gt; Our realtor is so optimistic, she's going to have a 2 co-workers there to help her out.&lt;br /&gt;&lt;br /&gt;Hopefully it'll all work out because we found the house to buy. The location we wanted, near my parents, near friends. Great neighborhood. We'll be going under contract on it tonight. I'm not sure if I feel relieved, or more panicky.&lt;br /&gt;&lt;br /&gt;Best of all... the new house optionally includes 6 chickens. I know it's a bizarre and sad thing to have always wanted... but I really have liked the idea of having chickens. We're already speculating&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_gR0SRn4W478/RurFDVJrnpI/AAAAAAAAACE/p9Oi2c5uc50/s1600-h/chickens.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_gR0SRn4W478/RurFDVJrnpI/AAAAAAAAACE/p9Oi2c5uc50/s200/chickens.jpg" alt="" id="BLOGGER_PHOTO_ID_5110113388213280402" border="0" /&gt;&lt;/a&gt; that our cat is finally going to be even more fascinated and intrigued by the outside. Maybe enough to get over her fear of the unknown.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-7208785756563355749?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/7208785756563355749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=7208785756563355749' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7208785756563355749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/7208785756563355749'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/09/found-it.html' title='found it!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_gR0SRn4W478/RurC7FJrnmI/AAAAAAAAABs/VDNsSZO8hbA/s72-c/fr3.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8330029123254193606</id><published>2007-09-10T10:01:00.000-06:00</published><updated>2007-10-30T10:15:01.890-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>sweet spot</title><content type='html'>After many self-imposed deadlines came and went, finally listed our house for sale this weekend.&lt;br /&gt;We felt bad about letting the deadlines pass, but we wanted finish all the painting and staging of the house before we listed. Turns out that was a very good idea.&lt;br /&gt;&lt;br /&gt;Listed it about 3pm Saturday. Around 5pm Saturday we got a from our realtor saying there was someone who wanted to look. Aaaiiiiieeee! We weren't ready. The house was a mess. Paint cans, cleaning supplies, unpacked rooms. A couple hours of last-minute cleanup got 90% of the rooms ready for viewing. They seemed to like the house, and also said that even with our mess, it was one of the top two homes they'd seen in the area.&lt;br /&gt;&lt;br /&gt;Got a wake-up call Sunday from our realtor. Another group wanted a viewing. We didn't have to do much because of the previous day's frantic cleanup. We run a few errands while they look at the house with a realtor. Afterwards, we get back home to be accosted by a family in a mini-van asking about the house.&lt;br /&gt;&lt;br /&gt;Late Sunday afternoon, I finally get a breather and mow the lawn. Interrupted once by a couple while mowing the front lawn. Interrupted a second time, and nearly had a heart attack, while mowing the backyard when a realtor waltzes through the gate with another couple in tow asking if they can view the house.&lt;br /&gt;&lt;br /&gt;I guess we hit the sweet spot w/ regard to location, price, and size of home. We don't even have the pictures online yet (that should happen today). It's a big relief, seeing the amount of interest in the home. And, seeing that our work over the past 2 months was worth it.&lt;br /&gt;&lt;br /&gt;If only our own house hunt was as successful. Still having found the right home after viewing probably 70+ homes. At least we're done with our own home now and we can focus on finding our new home.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;update&lt;/span&gt;: Got a call from the lovely wife. Another realtor and their clients just dropped by "We were in the neighborhood...". 4 viewings in the 2.5 days it's been listed. Aiiiiieeeee. We're beginning to wonder when we'll have time to do the final cleaning for the open-house next weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8330029123254193606?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8330029123254193606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8330029123254193606' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8330029123254193606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8330029123254193606'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/09/sweet-spot.html' title='sweet spot'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-5622472869683058089</id><published>2007-08-13T23:01:00.000-06:00</published><updated>2007-10-30T10:15:01.890-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>stressful vacation, house hunting, awesome basement</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_gR0SRn4W478/RsE4CizIoEI/AAAAAAAAABM/3AyzgcKwhR4/s1600-h/7435_5.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_gR0SRn4W478/RsE4CizIoEI/AAAAAAAAABM/3AyzgcKwhR4/s200/7435_5.jpg" alt="" id="BLOGGER_PHOTO_ID_5098417869512286274" border="0" /&gt;&lt;/a&gt;Just finished a week of vacation. 'Vacation' being code for fixing up the house -- finished laying the laminate floors, installing new baseboards, some new bathroom cabinets, and lots of painting.&lt;br /&gt;&lt;br /&gt;Still not terribly near the end point. Plenty more painting and packing to do before we'd feel comfortable having potential buyers look at the house.&lt;br /&gt;&lt;br /&gt;The lovely wife and I have been house hunting with our realtor. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_gR0SRn4W478/RsE4zizIoHI/AAAAAAAAABk/JOHIWMZqGyk/s1600-h/7435_15.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_gR0SRn4W478/RsE4zizIoHI/AAAAAAAAABk/JOHIWMZqGyk/s200/7435_15.jpg" alt="" id="BLOGGER_PHOTO_ID_5098418711325876338" border="0" /&gt;&lt;/a&gt;So many open houses, they're all a blur now.&lt;br /&gt;&lt;br /&gt;The price on one with a super-awesome basement has finally dropped enough to be worth it. Those are indeed built-in sofas. The tales those cushions could tell.&lt;br /&gt;&lt;br /&gt;But seriously, that house has a great location, great square footage, and the extra fantastic basement. And, the price has dropped enough that we should be able to update the kitchen and a couple other out-of-date rooms prior to moving in.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_gR0SRn4W478/RsE4dSzIoGI/AAAAAAAAABc/9JF6pABF2lw/s1600-h/7435_14.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_gR0SRn4W478/RsE4dSzIoGI/AAAAAAAAABc/9JF6pABF2lw/s200/7435_14.jpg" alt="" id="BLOGGER_PHOTO_ID_5098418329073786978" border="0" /&gt;&lt;/a&gt;Of course, the basement would have to stay as-is. It's just too awesome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-5622472869683058089?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/5622472869683058089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=5622472869683058089' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5622472869683058089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5622472869683058089'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/08/stressful-vacation-house-hunting.html' title='stressful vacation, house hunting, awesome basement'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_gR0SRn4W478/RsE4CizIoEI/AAAAAAAAABM/3AyzgcKwhR4/s72-c/7435_5.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8066895813588642233</id><published>2007-08-02T15:24:00.000-06:00</published><updated>2007-10-30T10:15:14.041-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>crappy neighbor water hazard</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_gR0SRn4W478/RrJMXS0YXsI/AAAAAAAAABE/_h2_Zkz35D4/s1600-h/DSCN1587.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_gR0SRn4W478/RrJMXS0YXsI/AAAAAAAAABE/_h2_Zkz35D4/s200/DSCN1587.JPG" alt="" id="BLOGGER_PHOTO_ID_5094218091581693634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Three times over the last couple weeks, my and one of my neighbor's backyards have flooded. The picture is the view from my yard into the neighbor's. Our house isn't that effected... but the water is right against the neighbors foundation. Not good.&lt;br /&gt;&lt;br /&gt;Seems another neighbor can't figure out their inflatable above-ground pool.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The first time, I think they forgot to turn on the filter and decided to the drain the funky water&lt;/li&gt;&lt;li&gt;The second time, they started refilling the pool and left for the day.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The third time (two days after flood #2), they hadn't tightened a coupling and didn't notice the leak.&lt;/li&gt;&lt;/ul&gt;On the plus side... I've talked to my fellow-floodee neighbor more in the last week than I have in the ~2 years they've been in their house.&lt;br /&gt;&lt;br /&gt;On the minus side. The flooder neighbor seems more annoyed that we're upset, rather than apologetic. I understand that once the water is out there isn't much they can do about it. But, it'd be nice if they seemed slightly concerned about things they do that effect their neighbors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8066895813588642233?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8066895813588642233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8066895813588642233' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8066895813588642233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8066895813588642233'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/08/crappy-neighbor-water-hazard.html' title='crappy neighbor water hazard'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_gR0SRn4W478/RrJMXS0YXsI/AAAAAAAAABE/_h2_Zkz35D4/s72-c/DSCN1587.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-1373048594916627163</id><published>2007-07-14T20:40:00.000-06:00</published><updated>2007-10-30T10:18:24.781-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>mmm... pie!</title><content type='html'>A friend helped us move our furniture around for the work we're doing on the house. Last time, he and his girlfriend raved about Left Fork Grill (68 W. 3900 South, 266-4322). We had him over again this weekend to move furniture back into the finished room, and as a reward for helping us we stopped there for breakfast.&lt;br /&gt;&lt;br /&gt;I had a breakfast sandwich (sausage and egg), the lovely wife french toast, and our friend had a fried egg sandwich. Everything was delicious. And, they made hash browns correctly -- the right ratio of crisp to tender, and not greasy.&lt;br /&gt;&lt;br /&gt;To top it all off, they have the best pie ever. The lovely wife had banana cream, I had raspberry-rhubarb. Excellent crust, freshly made fillings. Both were great. Many others &lt;a href="http://www.slweekly.com/article.cfm/theendofdiningpolitics"&gt;think so too&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's shot right up to top of our list of breakfast spots -- great food, reasonable prices.&lt;br /&gt;&lt;br /&gt;A shame that it's only open for breakfast and lunch. Pie for breakfast may become a family tradition.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-1373048594916627163?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/1373048594916627163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=1373048594916627163' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1373048594916627163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/1373048594916627163'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/07/mmm-pie.html' title='mmm... pie!'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8847370062276689589</id><published>2007-07-09T09:44:00.000-06:00</published><updated>2007-10-30T10:18:24.782-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='home'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>finally, a chance to wear a toolbelt</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_gR0SRn4W478/RpJakHyGADI/AAAAAAAAAA0/g5sHU3qvRiQ/s1600-h/DSCN1574_small.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_gR0SRn4W478/RpJakHyGADI/AAAAAAAAAA0/g5sHU3qvRiQ/s320/DSCN1574_small.jpg" alt="" id="BLOGGER_PHOTO_ID_5085226505865658418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We've been thinking of moving for a couple years now. But, we'd wanted to get a few things fixed up with the house. I needed to get the yard and flower beds into better shape, and we wanted to replace some of our carpet.&lt;br /&gt;&lt;br /&gt;A few months ago, we'd bought some glueless laminate flooring at Costco while it was on sale (ended up saving around $150 because of the sale). Finally got around to starting the project last weekend. Finally realized the extent to which one of our cats ruined the carpet. Ugh.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_gR0SRn4W478/RpJawnyGAEI/AAAAAAAAAA8/rv6QZ5Y6iV0/s1600-h/DSCN1575_small.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_gR0SRn4W478/RpJawnyGAEI/AAAAAAAAAA8/rv6QZ5Y6iV0/s320/DSCN1575_small.jpg" alt="" id="BLOGGER_PHOTO_ID_5085226720614023234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The flooring went down quick. Not as easy as the instructions make it seem. But, it looks nice, and gave me my once-every-two-years excuse to wear a toolbelt.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And, in odd things I've stuck in my pie-hole news:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The 'Hog Burger' at Britton's (964 East Union Square in Sandy). A burger with grilled onions nestled between a grilled-cheese sandwich with bacon, and a second grilled-cheese sandwich with tomato. The first half was good. The second half was 'what have I gotten myself into?'&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8847370062276689589?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8847370062276689589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8847370062276689589' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8847370062276689589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8847370062276689589'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/07/finally-chance-to-wear-toolbelt.html' title='finally, a chance to wear a toolbelt'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_gR0SRn4W478/RpJakHyGADI/AAAAAAAAAA0/g5sHU3qvRiQ/s72-c/DSCN1574_small.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-5151036078880087274</id><published>2007-06-25T17:40:00.000-06:00</published><updated>2007-10-30T10:22:45.898-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><title type='text'>impatient book review</title><content type='html'>I couldn't be bothered to wait the year(s?) for the U.S. release of Steven Erikson's newest Malazan book, &lt;a href="http://www.amazon.co.uk/Malazan-Book-Fallen-Reapers-Gale/dp/0593046315/ref=pd_bbs_sr_2/026-0502851-7561263?ie=UTF8&amp;s=books&amp;amp;qid=1182815061&amp;sr=8-2"&gt;Reaper's Gale&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After comparing the Canada/UK prices on the respective Amazon sites, and plugging in the conversion rate, it was cheaper to order from the UK and have it shipped across the Atlantic. Odd.&lt;br /&gt;&lt;br /&gt;It was very good. Heartbreaking (and other not-so-heartbreaking) deaths of main characters. Resolution of plot lines. Very enjoyable.&lt;br /&gt;&lt;br /&gt;I also picked up &lt;a href="http://www.amazon.co.uk/Night-Knives-Novel-Malazan-Empire/dp/0593057813/ref=pd_bbs_3/026-0502851-7561263?ie=UTF8&amp;amp;s=books&amp;qid=1182815061&amp;amp;sr=8-3"&gt;Night of Knives&lt;/a&gt;, by Ian Cameron Esslemont. Also set in the Malazan universe. It was pretty good, but not great. It could have used another round of editing -- typos and a couple confusing sections. But, it was fast-paced and fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-5151036078880087274?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/5151036078880087274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=5151036078880087274' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5151036078880087274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/5151036078880087274'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/06/impatient-book-review.html' title='impatient book review'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-3482843958905057576</id><published>2007-06-24T16:47:00.000-06:00</published><updated>2007-10-30T21:46:03.737-06:00</updated><title type='text'>roller derby -- violence, short skirts, beer -- what's not to like?</title><content type='html'>The lovely wife and I went to the roller derby last night. Lots of fun. Lots of violence. Lots of hot chicks in short skirts zooming around the track and knocking each other down. And beer! Mmm... Beer.&lt;br /&gt;&lt;br /&gt;It was an All Star match between the &lt;a href="http://www.saltcityderbygirls.com/"&gt;local league&lt;/a&gt; and their opponents from Idaho.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-3482843958905057576?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/3482843958905057576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=3482843958905057576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3482843958905057576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/3482843958905057576'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/06/roller-derby-violence-short-skirts-beer.html' title='roller derby -- violence, short skirts, beer -- what&apos;s not to like?'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-84444763888382757</id><published>2007-06-24T16:14:00.000-06:00</published><updated>2007-10-30T21:15:37.098-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Salt Lake Software Symposium, day #2</title><content type='html'>Last day. Still pretty good, but didn't rock as much as the first.&lt;br /&gt;&lt;br /&gt;Attended a couple more of Jared Richardson's sessions: "Agile Testing Strategies", and "Software Development Techniques". Lots of good real-world examples, and lots of inspiration for changing our processes. Definitely thinking of picking up &lt;a href="http://www.amazon.com/Practical-Guide-Successful-Software-Projects/dp/0974514047/ref=pd_bbs_1/103-3463227-3245453?ie=UTF8&amp;s=books&amp;amp;amp;amp;qid=1182572030&amp;amp;sr=8-1"&gt;Ship It!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Neal Ford's "Pragmatic Extreme Programming" was good. But, I think it'll be easier to work in lessons from Jared's sessions (on days 1 and 2) into our existing process.&lt;br /&gt;&lt;br /&gt;I wasn't going to attend Brian Sam-Bodden's "Complex Builds with Ant" session. From the slides, it appeared like I'd already knew the major tips on my own. But, I was wiped out by the last session. Decided it was worth going to a topic I was familiar with in order to pick an expert's brain. Only three attendees, so the session went fast and I was able to ask a lot of questions.&lt;br /&gt;&lt;br /&gt;More sour-grapes today over all the Ruby rah-rah-rah. Again, Neal Ford declared Ruby the winner in the dynamic language race on the JVM. Neal is a very smart guy, a great presenter, and also great to talk to one-on-one. I don't have any issue with him advocating Ruby. Any language that makes developers more productive is a good thing. But, it seems disingenuous to declare a victor in a &lt;a href="https://scripting.dev.java.net/"&gt;wide open race&lt;/a&gt; to a room full of people who have little to no experience with dynamic languages.&lt;br /&gt;&lt;br /&gt;Personally, I prefer Python over Ruby. Others can and should disagree. &lt;a href="http://blog.ianbicking.org/ruby-python-power.html"&gt;Here&lt;/a&gt;'s a fair, but slightly biased (since the author is familiar with Python), comparison of Python vs. Ruby.&lt;br /&gt;&lt;br /&gt;I'm not sure who to blame for lack of Python excitement in the Java world (or at least at this conference). Maybe with the recent revitalization of the Jython project, it will get more Java developer's attention.&lt;br /&gt;&lt;br /&gt;Microsoft's CLR (and the new DLR and Silverlight) seems very exciting. See &lt;a href="http://www.voidspace.org.uk/python/weblog/arch_d7_2007_04_28.shtml"&gt;here&lt;/a&gt; and &lt;a href="http://www.iunknown.com/2007/05/how_many_progra.html"&gt;here&lt;/a&gt; and &lt;a href="http://www.hanselman.com/blog/PuttingMixSilverlightTheCoreCLRAndTheDLRIntoContext.aspx"&gt;here&lt;/a&gt;.  The second link is a screencast showing interoperation between Ruby, JavaScript, Python, and VB.&lt;br /&gt;&lt;br /&gt;All in all, the conference was very good. I'll definitely plan on going next year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-84444763888382757?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/84444763888382757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=84444763888382757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/84444763888382757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/84444763888382757'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/06/salt-lake-software-symposium-day-2.html' title='Salt Lake Software Symposium, day #2'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15459527.post-8077596169136111540</id><published>2007-06-22T21:55:00.000-06:00</published><updated>2007-10-30T21:15:37.099-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Salt Lake Software Symposium, day #1</title><content type='html'>Since this blog is all about (pick one):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;lame book reviews&lt;/li&gt;&lt;li&gt;lame software conference anecdotes&lt;/li&gt;&lt;li&gt;odd things I've put in my mouth&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Here's more software conference anecdotes.&lt;br /&gt;&lt;br /&gt;Spent today at the &lt;a href="http://www.nofluffjuststuff.com/show_view.jsp?showId=84"&gt;Salt Lake Software Symposium (aka No Fluff Just Stuff)&lt;/a&gt;. So far, the conference is very good. Attended presentations by Neal Ford, Jared Richardson, and Brian Sletten. All great presenters, showing off great technology.&lt;br /&gt;&lt;br /&gt;A friend has tried 2-3 times to explain Aspect Oriented Programming to me. It sounded... like more trouble than it was worth. Brian Sletten's AOP presentation was very useful in cluing me in. Seeing the AspectJ/Eclipse tools in action got me all excited to try it out. The immediate use-case I have would to remove a bunch of cut-n-paste concurrent locking boilerplate in my pipeline application. If I understood it correctly (always a questionable assumption), I can replace all that code scattered throughout my class with an aspect that'll do the&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  writeLock();&lt;br /&gt;  try {&lt;br /&gt;       // .... do stuff....&lt;br /&gt;  } finally {&lt;br /&gt;       releaseWriteLock();&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;logic all from a single place for all the setters methods in my class. And a similar readLock() aspect for my getters.&lt;br /&gt;&lt;br /&gt;Brian also presented &lt;a href="http://www.1060.org/"&gt;NetKernel&lt;/a&gt;. Also awesome. Still trying to get a handle on how exactly we can leverage it for our needs. His Mashup/SemanticWeb/RDF presentation was also good.&lt;br /&gt;&lt;br /&gt;Jared Richardson's presentation &lt;a href="http://www.amazon.com/Practical-Guide-Successful-Software-Projects/dp/0974514047/ref=pd_bbs_1/103-3463227-3245453?ie=UTF8&amp;s=books&amp;amp;amp;qid=1182572030&amp;amp;sr=8-1"&gt;Shippers Unite&lt;/a&gt; was very good. The best part, calling sales people 'Sales Critters'. He had lots of great advice, and great best-practice type information.&lt;br /&gt;&lt;br /&gt;Neal Ford's SOA presentation, and his keynote after dinner were also very good. His keynote, "Polyglot Programming" was very interesting. Contrasted the increasing cruft, and complexity (and irrelevancy) of the Java language against the awesomeness of the Java platform.  Described the increasing place Dynamic Languages will have within the software industry. In particular their place inside managed runtime environments (either JVM or CLR).&lt;br /&gt;&lt;br /&gt;The only major disappointment I experienced was the (apparent) disdain the conference presenters seemed to show for Python/Jython. Lots of Groovy/Ruby/JRuby/Grails rah-rah-rah. I know Rails is the new poster child, and Ruby folks should be proud. But, to give Python/Jython/IronPython hardly a mention. And, the one time the word Python appeared on a slide, to explicitly declare Ruby the winner over Python... seems premature.&lt;br /&gt;&lt;br /&gt;Yeah, yeah. Sour grapes. Maybe I should try Ruby before deciding I don't like it... but the Perl-like $ and @ syntax rubs me the wrong way.  And, maybe I should just be happy about the rising tide of dynamically typed languages that'll lift all boats.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15459527-8077596169136111540?l=neeber.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neeber.blogspot.com/feeds/8077596169136111540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15459527&amp;postID=8077596169136111540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8077596169136111540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15459527/posts/default/8077596169136111540'/><link rel='alternate' type='text/html' href='http://neeber.blogspot.com/2007/06/salt-lake-software-symposium-day-1.html' title='Salt Lake Software Symposium, day #1'/><author><name>neeber</name><uri>http://www.blogger.com/profile/17353268857080912635</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://www.xmission.com/~stnchris/horsham_fountain_small.jpg'/></author><thr:total>0</thr:total></entry></feed>
