<?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'><id>tag:blogger.com,1999:blog-6952638</id><updated>2009-02-21T03:40:25.151-08:00</updated><title type='text'>Notes From The Bullpen</title><subtitle type='html'>Sports, technology &amp; current events.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default?start-index=26&amp;max-results=25'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>108</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6952638.post-111263650937321113</id><published>2005-04-04T10:39:00.000-07:00</published><updated>2005-04-04T10:53:32.376-07:00</updated><title type='text'>This Bird Has Flown</title><content type='html'>I've had it with blogger's sketcy, unreliable service. I'm surprised that this Google-backed enterprise is of such consistently poor quality. I'm sure they will eventually put a couple of smart interns on it to fix it, but in the meanwhile I've had enough.&lt;br /&gt;&lt;br /&gt;You can now find "Notes From The Bullpen" at &lt;a href="http://www.livejournal.com/users/alexvollmer/"&gt;http://www.livejournal.com/users/alexvollmer/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-111263650937321113?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/111263650937321113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=111263650937321113' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111263650937321113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111263650937321113'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/04/this-bird-has-flown.html' title='This Bird Has Flown'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-111215744189871707</id><published>2005-03-29T20:31:00.000-08:00</published><updated>2005-03-30T09:03:50.583-08:00</updated><title type='text'>Draft Day Results</title><content type='html'>It's been a long time since my last post. We finally closed on both houses and we're deep in the middle of packing, painting and prepping to move. Fortunately I was able to grab enough time here and there to get my pre-draft analysis complete. &lt;br /&gt;&lt;br /&gt;This year's analysis was much like the approach I took last year. I calculated a regression line for several offensive and defensive categories and then evaluated how far above or below the regression line (called a residual) each player was in those categories. Since this model is inherently biased towards players with major-league experience, it highlights past performances instead of estimating the future. This year I wrote some &lt;a href="http://www.python.org"&gt;Python&lt;/a&gt; to pull down the projected depth charts from &lt;a href="http://www.baseballprospectus.com"&gt;Baseball Prospectus&lt;/a&gt; and simply multiplied hitters' total residual scores by their projected plate appearances.&lt;br /&gt;&lt;br /&gt;I decided not to do this with pitchers because multiplying the residual scores by projected innings pitched buried relievers far down on the chart. By not multiplying you could argue that relievers bubbled up a little &lt;span style="font-style:italic;"&gt;too high&lt;/span&gt; on the list, but I was less likely to miss some reliever with the pitchers sorted in this order.&lt;br /&gt;&lt;br /&gt;So without further ado, here is the rosters for your 2005 Swing Kids:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Jorge Posada (NYY - C)&lt;/span&gt; - My second overall pick and perhaps drafted a little too high. Last year I got killed with unproductive catchers. This year I vowed not to let that happen&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;K. Cash (TB - C)&lt;/span&gt; - OK, so Cash was one of the lame catchers I had last-year. He was a very late-round pickup and at that point all of the remaining catchers were awful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Mi. Sweeney (KC - 1B)&lt;/span&gt; - God I hope they don't let him play in the field any more than he has to. If he sticks with being DH I figure there's that much less of a chance of him hurting himself. If I can get 400 plate appearances out of him I'll be happy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;J. Cantu (TB - 2B,3B)&lt;/span&gt; - A late-round pickup. Honestly, who would draft anyone from the D-Rays before round 15?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;J. Crede (CWS - 3B)&lt;/span&gt; - This was a guy I drafted based entirely off of my computed draft sheet, not from any first-person knowledge. If you asked me to pick his mug out of a lineup, I couldn't do it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Á. Berroa (KC - SS)&lt;/span&gt; - I really wanted to steer clear of any Devil Rays, Tigers and Royals as much as possible. But as a mid-round pick when all of the most productive middle-infielders were gone, Berroa could work out. I have to think that somewhere between his rookie campaign and his awful sophomore year lies the real Berroa.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;J. Gibbons (Bal - 1B,OF)&lt;/span&gt; - Roster-filler&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;R. Adams (Tor - SS)&lt;/span&gt; - See Jay Gibbons&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;G. Sheffield (NYY - OF)&lt;/span&gt; - I know, I know. I said to myself I wasn't going to draft a bunch of old guys. As great as Sheffield was for me last year, he was hurt and he's on the wrong side of the age-curve. But there he was in round 6. I couldn't just let him go by? That's leaving .300/35/110 on the table! I couldn't let him go by?! Could I?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;J. Damon (Bos - OF)&lt;/span&gt; - Here's hoping that Jesus, er, Johnny has another year in him like last year.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;S. Finley (LAA - OF)&lt;/span&gt; - Yes I know that Mr. Finley is old. But he is also a freak of nature and has somehow managed to remain extremely productive for a long time. I was thrilled to get him&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;T. Nixon (Bos - OF)&lt;/span&gt; - Probably one of the best names in baseball. He was almost worth drafting for that alone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;F. Catalanotto (Tor - OF)&lt;/span&gt; - See Jay Gibbons&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;E. Durazo (Oak - Util)&lt;/span&gt; - I had to get at least one Athletic. Unfortunately it wasn't Eric Chavez.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;R. Johnson (NYY - P)&lt;/span&gt; - My first pick. I had to get one super-star pitcher. Since our league does a down-and-back style draft I had the next immediate pick and spent an awfully long time thinking about picking up Curt Schilling to boot (see Jorge Posada)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;T. Percival (Det - P)&lt;/span&gt; - In the real-world the Angels made the right move by letting Percival and his increasing salary and declining skills walk. In fantasy-baseball land he's still gotta be good for 30+ saves and a good pile of K's&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;K. Millwood (Cle - P)&lt;/span&gt; - A good-enough addition to the rotation and a mid-round pick I was happy to land.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;B. Ryan (Bal - P)&lt;/span&gt; - Should be the closer in Baltimore. They should be close enough in enough games that he should get about 30 saves.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;E. Guardado (Sea - P)&lt;/span&gt; - Yeah yeah yeah. Another old guy. Sure everyday-Eddie could turn out to be a bust and never pitch again. But if he can come back healthy enough to close for the M's I should have enough K's, WHIP, ERA and Saves from Ryan and Percival to have a good staff.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;P. Byrd (LAA - P)&lt;/span&gt; - See Kevin Millwood&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;M. Timlin (Bos - P)&lt;/span&gt; - This year we added 'holds' as a new category in our fantasy league. Timlin is in the small group of guys who are practically &lt;span style="font-style:italic;"&gt;guaranteed&lt;/span&gt; to get a pile of holds.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;W. Miller (Bos - P)&lt;/span&gt; - Of the new additions to the Red Sox rotation, he is the weakest. I really wanted to get Matt Clement, but as a number five started Miller should do...or I'll cut him.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;O. Hernández (CWS - P)&lt;/span&gt; - Sure El Duque ain't what he used to be, but he should be an adequate space-filler.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-111215744189871707?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/111215744189871707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=111215744189871707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111215744189871707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111215744189871707'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/03/draft-day-results.html' title='Draft Day Results'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-111134374513131400</id><published>2005-03-20T10:26:00.000-08:00</published><updated>2005-03-20T10:39:51.256-08:00</updated><title type='text'>A Mover And A Shaker</title><content type='html'>It's been quite a while since my last post--mostly due to the craziness that comes from buying and selling a house in the middle of a white-hot real estate market.&lt;br /&gt;&lt;br /&gt;Getting our house ready has been a wonderful exercise in the types of lies adults tell one another. In order to present our current house as spacious and livable we have had to put in a Herculean effort over the last week to move most of our stuff off-site. Presenting our house is not about describing &lt;span style="font-style:italic;"&gt;our&lt;/span&gt; lives, it's about describing a kind of life one could have in this living space. But the truth is that anyone who is buying a house in this market probably has lots of stuff--a consequence of being a participant in the modern consumer society. Realistically no one could really live a life so spartan, clean and &lt;span style="font-style:italic;"&gt;presentable&lt;/span&gt; as the one we are portraying for today's open house. &lt;br /&gt;&lt;br /&gt;Similarly, when we looked at the house we bought we tried to keep this in mind, but the presentation by the seller greatly enhanced our feeling that our new home was spacious. In the new house we could have a neater, more organized life in the new house instead of living in sprawling clutter.&lt;br /&gt;&lt;br /&gt;The pessimist in me believes that it's only a matter of time before we acquire more possessions which will prompt us to look for yet a bigger house once again. But if there is one thing I've learned in the last week of hyper-accelerated home improvement, is that I've been pretty lazy getting our house in order. For an organizationally-oriented personality like me the investment of a little time each weekend to "take care of business" pays off big dividends. While I understand that the fictional life portrayed in open-houses is non-existant, there is a measure of  satisfaction in getting close.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-111134374513131400?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/111134374513131400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=111134374513131400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111134374513131400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111134374513131400'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/03/mover-and-shaker.html' title='A Mover And A Shaker'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-111056104895949040</id><published>2005-03-11T09:05:00.000-08:00</published><updated>2005-03-11T09:10:48.960-08:00</updated><title type='text'>Quick Notes</title><content type='html'>Some of my most creative baseball thinking happens in March. But after going to an open-house on Sunday any baseball content in my brain has been replaced almost wholesale by thoughts housing, contractors and financing. Yes I'm going to explore new levels of property-backed debt in an effort to pursue the American dream of a pot roast on every stove and 2.5 kids. Our offer was accepted on a new house that we absolutely love and so we are now in a mad scramble to prepare our current house for sale.&lt;br /&gt;&lt;br /&gt;All of that means less time for baseball. Fortunately I have a very understanding wife who is okay with me disappearing for six to eight hours the day before the first open house to attend my fantasy baseball league's draft. And once we run out of boxes to pack for the evening and Audrey has gone to bed I have managed to get some quality time in on the laptop preparing for Draft Day. I'm optimistic that I will be able to show up with something prepared rather than a freshly-purchased fantasy guide from the local 7-11.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-111056104895949040?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/111056104895949040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=111056104895949040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111056104895949040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/111056104895949040'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/03/quick-notes.html' title='Quick Notes'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110991369573115740</id><published>2005-03-03T21:20:00.000-08:00</published><updated>2005-03-03T21:24:50.233-08:00</updated><title type='text'>Act Your Age (Pt. III)</title><content type='html'>My original question was "do players follow a general aging pattern with respect to playing time?" To answer this question we first looked at very general trends. In the last installment we explored this question along a temporal dimension, focusing on the last forty years of baseball. Today I want to see how aging differs over a positional dimension.&lt;br /&gt;&lt;br /&gt;To start, I created some graphs of average games played, by age for each position. Each graph has a line for every five-year period explored. Here they are by position:&lt;br /&gt;First basemen:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/1b-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/1b-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/1b-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Second basemen:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/2b-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/2b-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/2b-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Third basemen:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/3b-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/3b-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/3b-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Shortstops:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/ss-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/ss-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/ss-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Catchers:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/c-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/c-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/c-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Outfielders:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/of-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/of-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/of-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;What is interesting is how wild the variation is for 1B and 2B versus the other positions. Between the ages of 26 and 34 all other positions, other than OF, don't show any particular trend over time--just noisy consistency. Now outfielders are another story. Note how far off of the bottom outfielders fall in average number of games since 1995. What can possibly explain the precipitous drop-off? One guess is the heavy increase in platooning outfielders. But is it enough to cause an &lt;span style="font-style:italic;"&gt;average&lt;/span&gt; drop of twenty games?&lt;br /&gt;&lt;br /&gt;This final chart looks at average playing time by position since 2000. Clearly designated hitters are in a category by themselves. Like outfielders in the previous graph, this probably reflects the DH platoon situation many clubs face. Additionally inter-league play eats into their playing time.&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/recent-by-pos.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/recent-by-pos.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/recent-by-pos-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;What can we conclude from all of these graphs and numbers? The only certain conclusion is that any trends about age only apply at a very gross level. We can say that players tend to get a steady amount of playing time between the ages 26 and 34 with a sharp drop-off thereafter.&lt;br /&gt;&lt;br /&gt;How will this affect my strategy on Draft Day? I'm definitely going to be very wary of drafting anyone over 34. When looking at players like Gary Sheffield or Steve Finley I would think twice about the inevitable effects of aging. He's had a great career, but when will Father Time finally catch up? On the other hand, if we have learned anything from this exercise it is that baseball tends to have more exceptions than rules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110991369573115740?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110991369573115740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110991369573115740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110991369573115740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110991369573115740'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/03/act-your-age-pt-iii.html' title='Act Your Age (Pt. III)'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110978302519652852</id><published>2005-03-02T08:48:00.000-08:00</published><updated>2005-03-02T09:03:45.196-08:00</updated><title type='text'>Why BP Rocks</title><content type='html'>This morning the line at the local coffee joint was huge. I knew I had a good ten-minute wait from enqueueing to getting my morning go-juice so I cracked open my phone-book sized 2005 Baseball Prospectus to pass the time. Lucky for me the canned music covered up my snorting laughter when I read a passage in which the BP boys described the Angels decision to move Mo Vaughn to from DH to first base akin to "putting a glove on a jelly donut". That's funny.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110978302519652852?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110978302519652852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110978302519652852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110978302519652852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110978302519652852'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/03/why-bp-rocks.html' title='Why BP Rocks'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110973698666199131</id><published>2005-03-01T20:16:00.000-08:00</published><updated>2005-03-01T20:18:46.560-08:00</updated><title type='text'>BP!</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/36455265@N00/5720651/" title="photo sharing"&gt;&lt;img src="http://photos6.flickr.com/5720651_d394e62f8c_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/36455265@N00/5720651/"&gt;A Picture Share!&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/36455265@N00/"&gt;livollmers&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;After a teeth-gnashing February, I managed to finally track down a copy of the elusive 2005 Baseball Propectus. Oh Amazon! How you have failed me! Oh Elliot Bay Books! How you have won me over again!&lt;br /&gt;&lt;br /&gt;When I checked out I saw two other people pickup up their copy. If you don't have yours yet, you'd better get cracking!&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110973698666199131?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110973698666199131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110973698666199131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110973698666199131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110973698666199131'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/03/bp.html' title='BP!'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110953878638858590</id><published>2005-02-27T13:06:00.000-08:00</published><updated>2005-02-27T17:13:24.703-08:00</updated><title type='text'>Unit-Testing Hibenate with HSQLDB</title><content type='html'>&lt;h3&gt;The Motivation&lt;/h3&gt;&lt;br /&gt;Since the beginning of my career as a software developer, I've ended up on projects that, one way or another, make use of relational databases. I've used lots of methods to schlep data between databases and my code; from hand-coded SQL to JDO to EJB. I've never found a method I liked particularly well. This has become especially acute since adopting test-driven development as a guiding philosophy. To support TDD it's vital to keep database access code away from the core object model and to test as much as possible without touching a real database.&lt;br /&gt;&lt;br /&gt;This has often led me to one of two patterns. The first is externalizing all data access to domain objects and their relationships to separate classes or interfaces. This is the easiest to mock-out for unit-testing, but tends to leave your domain model objects as dumb bags of data. Ideally I'd like to be able to access child records directly from the parent object rather than handing the parent object to some data oracle (no pun intended) to determine the children.&lt;br /&gt;&lt;br /&gt;The other method has been to have the domain objects have access to an interface into the data-mapping layer a la Martin Fowlers Data Mapper pattern. This makes a lot of sense and certainly seems to leave you with a better feeling about how your domain objects are factored.&lt;br /&gt;&lt;br /&gt;The problem for me came down to trying to insert a layer of indirection while using the uber-powerful Hibernate as my data mapper. The extra layer was so flimsy that it felt embarassing to write it--there was no "there" there. The real deployed version was simply a pass-through to a Hibernate-specific implementation. Strangely enough my mock versions had more complexity in them than the real "production" version simply because it didn't have some of the basic object storage that came with Hibernate.&lt;br /&gt;&lt;br /&gt;This left me with another problem which was that I had a fair degree of complexity in my Hibernate code that I wanted to unit-test. However, testing against a "real live" database was simply out of the question. I've gone down this path before with the best of intentions and have always ended up creating a maintenance nightmare for myself. Ideally individual test-methods on your test cases are independent from one another. If you're like me you tend to use the same obvious primary-key fields in constructing test fixture data. This requires lots of code to clean your database before each test case which can become a serious nightmare when lots of relationships are involved.&lt;br /&gt;&lt;br /&gt;I settled on the idea of investigating in-memory databases that would allow me to test the Hibernate layer without having to startup a full-featured RDBMS external to my development environment. I can say with much satisfaction that this was a very worthy exercise. I found numerous bugs I would not have been able to catch without this technique.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Setting up HSQLDB&lt;/h3&gt;&lt;br /&gt;I'm using version 1.7.3.0 of the HSQLDB. To use an in-memory version of the database you need to invoke the static loader for the &lt;code&gt;org.hsqldb.jdbcDriver&lt;/code&gt;. Then when you get a JDBC connection you use JDBC url of something like &lt;code&gt;jdbc:hsqldb:mem:yourdb&lt;/code&gt; where 'yourdb' is the name of the in-memory database you want to use.&lt;br /&gt;&lt;br /&gt;Since I'm using Hibernate (3.0 beta 4), I hardly ever need to touch real-live JDBC objects. Instead I can let Hibernate do the heavy lifting for me--including automatically creating the database schema from my Hibernate mapping files. Since Hibernate creates its own connection pool it will automatically load the HSQLDB JDBC driver based on the configuration code lives in a class called &lt;code&gt;TestSchema&lt;/code&gt;. Below is the static initializer for the class. &lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;public class TestSchema {&lt;br /&gt;&lt;br /&gt;    static {&lt;br /&gt;        Configuration config = new Configuration().&lt;br /&gt;            setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect").&lt;br /&gt;            setProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver").&lt;br /&gt;            setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:baseball").&lt;br /&gt;            setProperty("hibernate.connection.username", "sa").&lt;br /&gt;            setProperty("hibernate.connection.password", "").&lt;br /&gt;            setProperty("hibernate.connection.pool_size", "1").&lt;br /&gt;            setProperty("hibernate.connection.autocommit", "true").&lt;br /&gt;            setProperty("hibernate.cache.provider_class", "org.hibernate.cache.HashtableCacheProvider").&lt;br /&gt;            setProperty("hibernate.hbm2ddl.auto", "create-drop").&lt;br /&gt;            setProperty("hibernate.show_sql", "true").&lt;br /&gt;            addClass(Player.class).&lt;br /&gt;            addClass(BattingStint.class).&lt;br /&gt;            addClass(FieldingStint.class).&lt;br /&gt;            addClass(PitchingStint.class);&lt;br /&gt;&lt;br /&gt;        HibernateUtil.setSessionFactory(config.buildSessionFactory());&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Thanks to the smart guys over at Hibernate I have a couple of options for configuring the framework, including programmatic configuration. The code above sets up the connection pool. Note that the username 'sa' is &lt;span style="font-style:italic;"&gt;required&lt;/span&gt; to use HSQLDB's in-memory database. Also be sure to specify a blank as the password.&lt;br /&gt;&lt;br /&gt;The other imporant configuration option was setting the &lt;code&gt;hibernate.hbm2ddl.auto&lt;/code&gt; property to 'create-drop'. This is the bit of magic that makes Hibernate create my database schema in the HSQLDB database auto-magically for me.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Testing In Practice&lt;/h3&gt;&lt;br /&gt;My project is crunching a bunch of baseball statistics so I add the four classes that I'm mapping. Finally I create a Hibernate &lt;code&gt;SessionFactory&lt;/code&gt; and insert it into the &lt;code&gt;HibernateUtil&lt;/code&gt; class which simply provides a single access method for my entire application for Hibernate sessions. The code for the &lt;code&gt;HibernateUtil&lt;/code&gt; is below:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;import org.hibernate.*;&lt;br /&gt;import org.hibernate.cfg.Configuration;&lt;br /&gt;&lt;br /&gt;public class HibernateUtil {&lt;br /&gt;&lt;br /&gt;    private static SessionFactory factory;&lt;br /&gt;&lt;br /&gt;    public static synchronized Session getSession() {&lt;br /&gt;        if (factory == null) {&lt;br /&gt;            factory = new Configuration().configure().buildSessionFactory();&lt;br /&gt;        }&lt;br /&gt;        return factory.openSession();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public static void setSessionFactory(SessionFactory factory) {&lt;br /&gt;        HibernateUtil.factory = factory;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Since all of my code (production code as well as unit-tests) get their Hibernate sessions from the &lt;code&gt;HibernateUtil&lt;/code&gt; I can configure it in one place. For unit-tests the first bit of code to access the &lt;code&gt;TestSchema&lt;/code&gt; class will invoke the static initializer which will setup Hibernate and inject the test &lt;code&gt;SessionFactory&lt;/code&gt; into the &lt;code&gt;HibernateUtil&lt;/code&gt;. For production code the &lt;code&gt;SessionFactory&lt;/code&gt; will be initialized lazily using the standard &lt;code&gt;hibernate.cfg.xml&lt;/code&gt; configuration mechanism.&lt;br /&gt;&lt;br /&gt;So what does this look like in the unit-tests? Below is a snippet of a test that checks the &lt;code&gt;getEligiblePositions&lt;/code&gt; method of the &lt;code&gt;Player&lt;/code&gt; class:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;    public void testGetEligiblePositions() throws Exception {&lt;br /&gt;        Player player = new Player("playerId", null);&lt;br /&gt;        TestSchema.addPlayer(player);&lt;br /&gt;        &lt;br /&gt;        FieldingStint stint1 = new FieldingStint("playerId", 2004, "SEA", Position.CATCHER);&lt;br /&gt;        stint1.setGames(20);&lt;br /&gt;        TestSchema.addFieldingStint(stint1);&lt;br /&gt;        &lt;br /&gt;        Set&lt;Position&gt; positions = player.getEligiblePositions(2004);&lt;br /&gt;        assertEquals(1, positions.size());&lt;br /&gt;        assertTrue(positions.contains(Position.CATCHER));&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I first create a new &lt;code&gt;Player&lt;/code&gt; instance and add it to the &lt;code&gt;TestSchema&lt;/code&gt; via the &lt;code&gt;addPlayer()&lt;/code&gt; method. This step &lt;span style="font-style:italic;"&gt;must&lt;/span&gt; occur first because the &lt;code&gt;FieldingStint&lt;/code&gt; class has a foreign-key relationship to the &lt;code&gt;Player&lt;/code&gt; class. If I didn't add this instance first I would get a foreign-key constraint violation when I try to add the &lt;code&gt;FieldingStint&lt;/code&gt;. Below is the code for the &lt;code&gt;addPlayer()&lt;/code&gt; method. You will notice that I don't use bare-metal JDBC, but instead leverage Hibernate to do the heavy lifting for me:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;    public static void addPlayer(Player player) {&lt;br /&gt;        if (player.getPlayerId() == null) {&lt;br /&gt;            throw new IllegalArgumentException("No primary key specified");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        Session session = HibernateUtil.getSession();&lt;br /&gt;        Transaction transaction = session.beginTransaction();&lt;br /&gt;        try {&lt;br /&gt;            session.save(player, player.getPlayerId());&lt;br /&gt;            transaction.commit();&lt;br /&gt;        }&lt;br /&gt;        finally {&lt;br /&gt;            session.close();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;One of the most important things in unit-testing is to keep your test-cases isolated. Since this method still involves a database, you need a way to clean your database prior to each test case. Since I only have four tables I simply wrote a &lt;code&gt;reset()&lt;/code&gt; method on the &lt;code&gt;TestSchema&lt;/code&gt; that removes all rows from my four tables using JDBC. Note because HSQLDB knows about foreign keys, the order in which the tables are deleted is important. Here is the code:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;    public static void reset() throws SchemaException {&lt;br /&gt;        Session session = HibernateUtil.getSession();&lt;br /&gt;        try {&lt;br /&gt;            Connection connection = session.connection();&lt;br /&gt;            try {&lt;br /&gt;                Statement statement = connection.createStatement();&lt;br /&gt;                try {&lt;br /&gt;                    statement.executeUpdate("delete from Batting");&lt;br /&gt;                    statement.executeUpdate("delete from Fielding");&lt;br /&gt;                    statement.executeUpdate("delete from Pitching");&lt;br /&gt;                    statement.executeUpdate("delete from Player");&lt;br /&gt;                    connection.commit();&lt;br /&gt;                }&lt;br /&gt;                finally {&lt;br /&gt;                    statement.close();&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            catch (HibernateException e) {&lt;br /&gt;                connection.rollback();&lt;br /&gt;                throw new SchemaException(e);&lt;br /&gt;            }&lt;br /&gt;            catch (SQLException e) {&lt;br /&gt;                connection.rollback();&lt;br /&gt;                throw new SchemaException(e);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        catch (SQLException e) {&lt;br /&gt;            throw new SchemaException(e);&lt;br /&gt;        }&lt;br /&gt;        finally {&lt;br /&gt;            session.close();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;One dumb mistake I made here (mostly out of habits developed over writing tons of hand-crafted JDBC code), was to close the JDBC &lt;code&gt;Connection&lt;/code&gt;. Since I configured Hibernate to create a connection pool with only one &lt;code&gt;Connection&lt;/code&gt; I completely torpedoed any tests after the first one.&lt;br /&gt;&lt;br /&gt;Since you're never sure what state the database may be in when your test class is running (imagine running all of your test cases), I put database cleanup in my &lt;code&gt;setUp()&lt;/code&gt; method like so:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;    public void setUp() throws Exception {&lt;br /&gt;        TestSchema.reset();&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;br /&gt;Being able to test against a real-live RDBMS without all of the hassles of trying to run tests against your deployed database is essential, even when working with sophisticated O/R mappers like Hibernate. The example I showed here is not exclusive to Hibernate and could probably be made to work with JDO or TopLink. Though Hibernate makes this kind of testing particularly easy since it has a built-in schema generation tool. With a setup like the one described above you don't ever have to leave the comfort of your IDE and still have extensive test coverage over your code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110953878638858590?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110953878638858590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110953878638858590' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110953878638858590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110953878638858590'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/02/unit-testing-hibenate-with-hsqldb.html' title='Unit-Testing Hibenate with HSQLDB'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110909181787803845</id><published>2005-02-22T09:02:00.000-08:00</published><updated>2005-02-22T20:50:26.610-08:00</updated><title type='text'>Act Your Age (Pt. II)</title><content type='html'>In my last post we looked at the gross trends for age as it relates to playing time. In general hitters peak around age 26 and pitchers about a year later. You may recall that pitchers showed some interesting spikes toward the far right-hand side of the graph which can be explained by some truly exceptional, long-lasting pitchers. It is interesting to note that no such spike was observed with hitters.&lt;br /&gt;&lt;br /&gt;One of the important dimensions missing from the first part of our data analysis is the effects of sports medicine and improved conditioning on playing time. In this installment we will explore the observed playing times related to five-year "eras" (a misnomer to be sure), since 1960.&lt;br /&gt;&lt;br /&gt;The graph below shows total AB by age by "era". In general, the trend is for AB to increase in each progressive era. The change is most radically apparent around age 28. Note that the gap between the 1960-1965 era and the 1965-1970 is larger than any other gaps. This is most likely due to the change from 154-game seasons to 162-game seasons in 1961. Similarly the 1980-1985 and 1990-1994 eras short-change themselves due to strike-shortened seasons. Lastly the 2000-2005 era is missing the last year of data so the arbitrary five-year sample period leaves a bit to be desired. These anomalies will appear again and again in the graphs below, so keep them in mind.&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/batting-by-age-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/batting-by-age-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/batting-by-age-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;The next graph looks at the average number of AB by era. &lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/avg-ab-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/avg-ab-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/avg-ab-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;In the meaty part of the graph the general trend is downward as you move forward across eras. For example, at age 28 the players playing between 1965 and 1970 as well as between 1975 and 1980 averaged around 172 AB. Conversely, players between 1995 and 2000 only averaged around 128 AB. However if you note the two bookend eras (1960-1965 and 2000-2005), you will see two very different trends. In the '60-'65 era players peaked in average AB around 33 and then begin a sharp decline. However in the 2000-2005 era players peak around 38 before they begin a similar decline perhaps highlighting the differences between player conditioning in the 1960's vs. the 21st century.&lt;br /&gt;&lt;br /&gt;You will notice that the data between ages 18 and 21 as well as 33 to 45 are pretty noisy. Look below at the graph of batting samples. The 18-21 block is a very small part of the overall sample curve. While not quite as small, the 33-45 block in the curve are dwarfed by the main 22-32 block.&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/batting-samples-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/batting-samples-by-era.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/batting-samples-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Because of these small samples sizes at the extremes, we need to look at the middle to get a good feel for the differences between eras. Remember, we are trying to understand differences in playing time through the years--not how long players played or how early phenoms make their presence felt in the majors.&lt;br /&gt;&lt;br /&gt;While the total number of AB by age &lt;span style="font-style:italic;"&gt;increased&lt;/span&gt; over time, the average AB tends to &lt;span style="font-style:italic;"&gt;decrease&lt;/span&gt;. I suspect this is due to expansion more than anything else. More players are coming into the game (increasing overall ABs), but younger players are getting less ABs that similarly-aged players in previous years.&lt;br /&gt;&lt;br /&gt;The next graph shows the average number of IPOuts (for IP just divide by 3) for each age by era.&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/avg-ipouts-by-era" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/avg-ipouts-by-era.png',400,950);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/avg-ipouts-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;Like the batting graphs we just looked at, you see a lot of noise and wild variation at the right-hand side of the graph starting at around age 34. Similarly there is some noise between ages 18 and 21, though not as much as is seen for the veterans.&lt;br /&gt;&lt;br /&gt;It's interesting to note that in the meaty part of the graph (between ages 22 and 33) we see that the average for pitchers between 1960 and 1980 hardly changes. By 1980 we start to see the beginning of an overall downward trend (per age) for each era. This is most likely due to the widespread adoption of the five-man rotation as well as the emergence of the relief pitcher which ate into starting pitchers innings pitched.&lt;br /&gt;&lt;br /&gt;The pitching graphs shows a much shallower climb (compared to hitters) from ages 23 to 34. Past that, the graph devolves into noise and outliers. It is interesting to note that hitters tend to display a noticeable downward trend before hitting the noisy portion of the graph. In contrast the pitchers seem to steadily increase their workload before all hell breaks lose and we can no longer determine any trends. The graph below shows the number of samples used. The small number under the curve from age 34 onward confirms our small sample-size theory.&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/pitching-samples-by-era.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/pitching-samples-by-era.png',400,700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/pitching-samples-by-era-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;What about that long right-hand tail for the 1960-1965 era? Who is that statistical outlier? Why that's none other than the king of baseball aphorisms, Satchel Paige.&lt;br /&gt;&lt;br /&gt;To complete our look at aging, we need to explore the differences in playing time across positions. Common sense would dictate that catchers don't play nearly as long as say, first basemen (Carlton Fisk not withstanding). However I'm much more interested in data than common sense. Stay tuned to see what the numbers have to tell us next.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110909181787803845?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110909181787803845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110909181787803845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110909181787803845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110909181787803845'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/02/act-your-age-pt-ii.html' title='Act Your Age (Pt. II)'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110853433117249869</id><published>2005-02-15T21:53:00.000-08:00</published><updated>2005-02-22T08:59:24.006-08:00</updated><title type='text'>Act Your Age (Pt. I)</title><content type='html'>In preparing for this year's Fantasy Baseball Season, I decided to re-evaluate last year's feet-first jump in the pool of Sabermetric analysis. While I was happy with the work I did last year, I really felt the pain of not accounting for the effects of aging and injury. With injuries to Magglio Ordonez and Kevin Brown I decided that this year's preparation would include a look at the effects of aging on playing time.&lt;br /&gt;&lt;br /&gt;I started out by looking the last 130 years of recorded baseball history to get a rough feel for what the breakdown is for playing time by age. The two graphs below are simply a sum of at-bats (for hitters) and outs pitched (for pitchers) at a given age:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/batting-samples.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/batting-samples.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/batting-samples-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/pitching-samples.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/pitching-samples.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/pitching-samples-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;There's no real surprise here. Conventional baseball wisdom has always said that the peak age is around 27 or 28 years old. It's slightly interesting to note that the "peak" age for pitchers is a bit later than hitters, which is probably due to the slower rate at which pitching skills improve relative to batting. &lt;br /&gt;&lt;br /&gt;The following graphs look at the same data but track a running average of at-bats or outs pitched as well as a running standard deviation:&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/batting-avg.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/batting-avg.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/batting-avg-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="http://home.comcast.net/~alexvollmer/graphs/pitching-avg.png" target="_new" onclick="return popUp('http://home.comcast.net/~alexvollmer/graphs/pitching-avg.png', 400, 700);"&gt;&lt;br /&gt;&lt;img border="0" src="http://home.comcast.net/~alexvollmer/graphs/pitching-avg-thumb.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br/&gt;&lt;br /&gt;The batting graph was no real surprise, but the pitching graph set off some alarm bells. The standard deviation &lt;span style="font-style:italic;"&gt;drops&lt;/span&gt; over time, while the average outs pitched peaks at around age 34--six &lt;span style="font-style:italic;"&gt;years&lt;/span&gt; later than the peak age for total samples. I believe this reflects the fact that the real work-horses of major-league staffs are mature pitchers that range from Pedro Martinez to Tim Wakefield to Randy Johnson, not all young-guns a la Bronson Arroyo.&lt;br /&gt;&lt;br /&gt;Even more fascinating is the fact that around age 40 we see some serious upward-ticks in the average for outs pitched. I think this is due to the fact that pitchers who are still in the league at age forty are probably some of the best pitchers in the game. Below is a list of pitchers who have pitched beyond the age of 40 since 1960. You will note that this list stocked with either current or future Hall of Fame-quality pitchers, or "crafy"-type pitchers like Gaylord Perry, the Niekro brothers and Jamie Moyer&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Larry       Andersen&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Doug        Bair&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jim Bibby&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bert        Blyleven&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Wade        Boggs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Hal Brown&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jim Bunning&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lew Burdette&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tom Burgmeier&lt;/li&gt;&lt;br /&gt;&lt;li&gt;John        Candelaria&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tom Candiotti&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Steve       Carlton&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Roger       Clemens&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dave        Concepcion&lt;/li&gt;&lt;br /&gt;&lt;li&gt;David       Cone&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dennis      Cook&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mike        Cuellar&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Danny       Darwin&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rick        Dempsey&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dennis      Eckersley&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Roy Face&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jeff        Fassero&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mike        Fetters&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Chuck       Finley&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mike        Flanagan&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ken Forsch&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tony        Fossas&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Art Fowler&lt;/li&gt;&lt;br /&gt;&lt;li&gt;John        Franco&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Woodie      Fryman&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Gary        Gaetti&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Gene        Garber&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bob Gibson&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ruben       Gomez&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rich        Gossage&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Harvey      Haddix&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dick        Hall&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Greg        Harris&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bill        Henry&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Roberto     Hernandez&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Orel        Hershiser&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Joe Hoerner&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rick        Honeycutt&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Charlie     Hough&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Grant       Jackson&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mike        Jackson&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fergie      Jenkins&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tommy       John&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Randy       Johnson&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Doug        Jones&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jim Kaat&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Johnny      Klippstein&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jerry       Koosman&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dennis      Lamp&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dennis      Martinez&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bob McClure&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lindy       McDaniel&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tug McGraw&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Don McMahon&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Stu Miller&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mike        Morgan&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jamie       Moyer&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Terry       Mulholland&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Joe Niekro&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Phil        Niekro&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Diomedes    Olivo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jesse       Orosco&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Satchel     Paige&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Orlando     Pena&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Gaylord     Perry&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jim Perry&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dan Plesac&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ron Reed&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rick        Reuschel&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Jerry       Reuss&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Robin       Roberts&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rich        Rodriguez&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Kenny       Rogers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nolan       Ryan&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Scott       Sanderson&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tom Seaver&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Diego       Segui&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Lee Smith&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Warren      Spahn&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Gerry       Staley&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dave        Stieb&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Don Sutton&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Frank       Tanana&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Billy       Taylor&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Kent        Tekulve&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Luis        Tiant&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ed  Vosberg&lt;/li&gt;&lt;br /&gt;&lt;li&gt;David       Wells&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Hoyt        Wilhelm&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Al  Worthington&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Early       Wynn&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Geoff       Zahn&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Next time we'll start looking at how the effects of aging have changed over time in baseball.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110853433117249869?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110853433117249869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110853433117249869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110853433117249869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110853433117249869'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/02/act-your-age-pt-i.html' title='Act Your Age (Pt. I)'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110805383947182238</id><published>2005-02-10T08:41:00.000-08:00</published><updated>2005-02-10T09:08:44.366-08:00</updated><title type='text'>Where Starbuck Is Not Coffee</title><content type='html'>I saw the &lt;a href="http://slashdot.org/articles/05/02/09/2130257.shtml?tid=214"&gt;good news today on Slashdot&lt;/a&gt; that the Sci-Fi Network is renewing &lt;a href="http://www.scifi.com/battlestar/"&gt;Battlestar Galactica&lt;/a&gt; for another season. I was a big fan of the original show when I was a kid, but I can definitely see the warts as an adult. However the new series is surprisingly sophisticated. Even my wife admits that it's pretty engaging!&lt;br /&gt;&lt;br /&gt;If you haven't yet checked this series out you should tune in. I'm not the world's biggest sci-fi fan and hardly ever watch the Sci-Fi network so this show passed through a lot of checkpoints for me before it made the regular Tivo rotation. I'm ashamed as an adult to tell everyone "I watch Battlestar Galactica". Now if they made some kind of cool mugs or something...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110805383947182238?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110805383947182238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110805383947182238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110805383947182238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110805383947182238'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/02/where-starbuck-is-not-coffee.html' title='Where Starbuck Is Not Coffee'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110770297929937492</id><published>2005-02-06T06:55:00.000-08:00</published><updated>2005-02-06T07:16:19.300-08:00</updated><title type='text'>Super Bull</title><content type='html'>Here we are at the end of another football season. I'm facing today's Super Bowl much like an already-full diner faces the final bite of an all-too-rich dessert. I've come this far on this gigantic empty-calorie cake called the NFL, I might as well finish it off.&lt;br /&gt;&lt;br /&gt;My attention to the Super Bowl has varied over the years. As a kid my dad used to get together with co-workers and have Super Bowl parties which were very fun. I faithfully watched the Big Game until I hit college where I lost interest and became more fully devoted to baseball. After living in San Francisco I regained my love for the sport, helped greatly by the Super Bowl-winning 49ers of the 1994 season. Ever since I've tuned into every game.&lt;br /&gt;&lt;br /&gt;However I face today's game with some trepidation. I'm not overly eager to watch, although I feel somewhat obligated to do so as an informed sports-fan. The glitzier-than-usual, non-stop, never-ending coverage of the game is beginning to sour me on the whole experience. From tamed-down commercials to watered-down half-time shows, to the exclusion of the Florida A&amp;M marching band from the televised half-time show, to the sponsorship of every single moment of the game--I'm getting pretty fed up with the whole thing. &lt;br /&gt;&lt;br /&gt;Don't try bring out the old saw about the "purity" of the college game. The players are less skilled and the institution is easily more corrupt. For all of its warts, I'll take the NFL any day.&lt;br /&gt;&lt;br /&gt;However my enthusiasm not helped by the overwhelming feeling that the Patriots will again walk away as winners. Aren't we supposed to be in the age where dynasties are a thing of the past? When will salary-caps, luxury taxes and free agency catch up with these guys? I don't find the Eagles a particularly compelling team to root for other than they are not the Patriots.&lt;br /&gt;&lt;br /&gt;Well, if the game gets boring I can turn to a copy of "Napolean Dynamite" that I haven't watched yet and I can comfort myself in the stack of baseball books I bought yesterday. Finally I can find solace in seven hopeful words: pitchers and catchers report in two weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110770297929937492?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110770297929937492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110770297929937492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110770297929937492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110770297929937492'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/02/super-bull.html' title='Super Bull'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110753683494526138</id><published>2005-02-04T08:58:00.000-08:00</published><updated>2005-02-04T09:07:14.946-08:00</updated><title type='text'>The End Of The Line For Your PC</title><content type='html'>I found an interesting link on &lt;a href="http://www.slashdot.org"&gt;Slashdot&lt;/a&gt; today about a &lt;a href="http://www.extremetech.com/article2/0,1558,1759679,00.asp"&gt;proposal from the House of Representatives for computer recycling&lt;/a&gt;. The proposal requires a $10 fee added to any hardware purchase. This would fund some sort of federal recycling program.&lt;br /&gt;&lt;br /&gt;I definitely feel small pangs of guilt whenever I buy new computer equipment and try to figure out what to do with the old stuff. Given the high turnover of computer equipment in the marketplace one has to wonder where all of this toxic stuff is getting dumped. It seems like a serious problem that is growing and needs to be dealt with.&lt;br /&gt;&lt;br /&gt;Of course this type of issue will line up parties on both side in their usual fighting positions. Environmentalists will accuse manufacturers and retailers of being concerned only with the Almighty Dollar at the expense of the environment. Business leaders will cry foul that their industry is being regulated over threats that don't yet exist. This is to say nothing of the fact that the majority of run-of-the-mill PC hardware is manufactured outside of the United States; how these types of fees, tariffs or laws would apply is open for debate.&lt;br /&gt;&lt;br /&gt;The auto industry might be a place to look for a similar model. Each year auto makers put out new vehicles at a staggering rate. Consumers sell their old cars to purchase new ones, effectively dividing the auto-buying public into two categories: those who purchase the new cars coming into the system, and those who are taking over the used ones. We have to wonder then about what happens to the cars the second category of consumers are shedding. Land fill? Junk yards? Recycled for parts?&lt;br /&gt;&lt;br /&gt;It seems that given the rate of technological advancement of PC internals, re-use can only cover so much. Consumers buy new machines because they are more powerful than the old ones that they have. These accelerations tend to be core components of the system leaving little behind that is re-usable except for basics like cases. That still leaves a measurable amount of toxic parts left behind that nobody wants. What happens to these items is going to be the challenge for the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110753683494526138?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110753683494526138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110753683494526138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110753683494526138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110753683494526138'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/02/end-of-line-for-your-pc.html' title='The End Of The Line For Your PC'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110711539142931270</id><published>2005-01-30T11:51:00.000-08:00</published><updated>2005-01-30T12:03:11.430-08:00</updated><title type='text'>Coke/Soda/Pop</title><content type='html'>I stumbled onto &lt;a href="http://www.washingtonmonthly.com/blogphotos/Blog_Cola_Large.gif"&gt;this graphical breakdown&lt;/a&gt; of the regional differences in requesting a sugary, carbonated beverage. I have no idea how they got this data or if it is even real, but it's funny nonetheless. &lt;br /&gt;&lt;br /&gt;There was also an &lt;a href="http://seattletimes.nwsource.com/html/sports/2002164665_blai30.html"&gt;article&lt;/a&gt; in this Sunday's Seattle Times about why the M's should bring 19-year old phenom Felix Hernandez up to the bigs. The fine folks over at the USS Mariner &lt;a href="http://ussmariner.com/index.php?p=2234"&gt;saw the article the same way I did&lt;/a&gt;, which is to say "huh?". Perhaps my favorite line from this article was:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;...he is either ready to pitch in the big leagues or he isn't.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ooh that's good. If he were an investment advisor he could give you equally helpful advice such as, "the stock will either go up or down this year." Thanks, but I think I can figure out the short list of possiblities on my own.&lt;br /&gt;&lt;br /&gt;While we're on the subject of baseball here's a little funny story for you. I walked into the local bookstore on Friday in search of the baseball annuals that come out around this time of year (Athlon sports, Street &amp; Smith's, etc). I picked up the least dog-eared copy I could find and happily took it back to the office. Over lunch I checked out their predictions for the season. To my surprise they projected the Mariners to take first place in the AL West. Intrigued, I flipped over to the Mariners section of the magazine and nearly fell out of my chair when I read the headline "Smart signings of Aurillia and Ibanez strengthen veteran ball club". What?&lt;br /&gt;&lt;br /&gt;A quick check of the cover revealed that the magazine I had bought was for 2004, not 2005. Grrr. It looks like I'm going back there Monday to look for a refund. &lt;br /&gt;&lt;br /&gt;While I don't know if anyone could predict the magnitude of the collapse the M's experienced in 2004, I will probably avoid buying a Street &amp; Smith's preview again based on their 2004 predictions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110711539142931270?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110711539142931270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110711539142931270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110711539142931270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110711539142931270'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/cokesodapop.html' title='Coke/Soda/Pop'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110697942485195270</id><published>2005-01-28T22:11:00.000-08:00</published><updated>2005-01-28T22:17:04.853-08:00</updated><title type='text'>Flashdance</title><content type='html'>What did &lt;span style="font-style:italic;"&gt;you&lt;/span&gt; do on your Friday night? Go out for drinks with friends? Catch a show? Dinner and a movie? As for me, I watched three episodes of "West Wing" and got into the gritty details of &lt;a href="http://linux-hotplug.sourceforge.net"&gt;hotplug&lt;/a&gt; and getting my USB flash drive to auto-mount when it's plugged in and unmount when unplugged. &lt;br /&gt;&lt;br /&gt;After much searching around I finally seemed to get all the fiery hoops lined up. First you have to get your &lt;code&gt;/etc/hotplug/usb.usermap&lt;/code&gt; lined up so that it can refer to a control script. Either I mis-read various sites or they steered me astray but I mistakenly thought the first hex code in this file indicated a bit mask of which fields I wanted to match on. This was incorrect. Instead it mapped to the same hex code matching the kernel module I was using that is specified in &lt;code&gt;/etc/hotplug/usb.distmap&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;Once I got that figured out I pretty much hi-jacked some other guys simple script to mount and unmount the flash drive. With a little &lt;code&gt;/etc/fstab&lt;/code&gt; magic I can get the USB drive to always be owned by the user I always log into the laptop with.&lt;br /&gt;&lt;br /&gt;Now I have a weird issue where my writes (e.g. &lt;code&gt;touch /mnt/flash/foo&lt;/code&gt;) don't seem to persist between mounts. I'll have to look into this some more. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110697942485195270?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110697942485195270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110697942485195270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110697942485195270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110697942485195270'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/flashdance.html' title='Flashdance'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110650496013931654</id><published>2005-01-23T10:23:00.000-08:00</published><updated>2005-01-23T10:46:22.743-08:00</updated><title type='text'>Preferential Treatment</title><content type='html'>This new laptop has given me the opportunity to re-consider how I want the desktop to behave. At work I'm often under the pressure to be "doing something productive", and figuring out how to seamlessly integrate some esoteric feature into my desktop is not often a big priority. With the new laptop I have the luxury of getting everything setup just the way I want it.&lt;br /&gt;&lt;br /&gt;I used &lt;a href="http://www.kde.org"&gt;KDE&lt;/a&gt; for a long time having always found it more stable than &lt;a href="http://www.gnome.org"&gt;GNOME&lt;/a&gt;. At my current job we're a predominantly GNOME shop so I figured it was just easier to go with the flow and run GNOME on my work machine than swim upstream. However, for my laptop I've decided to run KDE again. &lt;br /&gt;&lt;br /&gt;I've always believed that the KDE team was far ahead of the GNOME team in terms of total desktop integration and the overall "tightness" of the desktop environment. I know that there are lots of arguments about bloated libraries (Qt. vs. GTK) and such, but honestly I have never &lt;span style="font-style:italic;"&gt;perceived&lt;/span&gt; any performance difference between the two. What I have noticed is GNOME going off the rails and crashing in ways that KDE doesn't seem to.&lt;br /&gt;&lt;br /&gt;As an example of good integration, KDE has done a remarkable job integrating &lt;a href="http://www.gnupg.org"&gt;GPG&lt;/a&gt; into the desktop. You can simply popup the encryption tool from the system tray and encrypt something from the clipboard, decrypt something from the clipboard or pop up a text editor and save the file as encrypted text. Similarly you can encrypt and decrypt files using the file-browsing mode of Konqueror with the click of a mouse button. How many times have I had Nautilus simply crash or even fail to load?&lt;br /&gt;&lt;br /&gt;Honestly I don't mind running split-brained. My other desktop machine is running GNOME and I'm not terribly inclined to move it over to KDE. I'm one of the few people that can keep lots of &lt;a href="http://www.retrologic.com/jargon/B/bucky-bits.html"&gt;Bucky Bits&lt;/a&gt; in my head (I'm just about equally comfortable with &lt;code&gt;vi&lt;/code&gt; and &lt;code&gt;emacs&lt;/code&gt; too.) Some people focus their brains or storing massive amounts of information, others use it for complex abstraction. Mine is wasted on useless trivia and &lt;span style="font-style:italic;"&gt;lots&lt;/span&gt; of keyboard shortcuts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110650496013931654?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110650496013931654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110650496013931654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110650496013931654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110650496013931654'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/preferential-treatment.html' title='Preferential Treatment'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110636903878946999</id><published>2005-01-21T20:41:00.000-08:00</published><updated>2005-01-21T21:16:02.976-08:00</updated><title type='text'>We Are The Champions</title><content type='html'>I am posting this with a real-live 802.11 connection on my new laptop! Ladies and gentlemen this was not an easy task, but kind of satisfying. I even managed to get 128-bit WEP working. This was suprisingly difficult and I only found the answer when I stumbled upon a Linux/Wireless HOWTO written in German. Folks, my German is limited almost entirely to World War II military terminology, but thanks to the universal language of Linux commands I grokked the important setting.&lt;br /&gt;&lt;br /&gt;It turns out that you can't do this:&lt;br /&gt;&lt;code&gt;iwconfig eth1 essid myessid&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And then follow it up with:&lt;br /&gt;&lt;code&gt;iwconfig eth1 key xxxxxxxxxx&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;They are like ships passing in the night. You need to set the ESSID and WEP key &lt;span style="font-style:italic;"&gt;all at the same time&lt;/span&gt; with:&lt;br /&gt;&lt;code&gt;iwconfig eth1 essid myessid key xxxxxxxxx&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;While I find this a little irritating, at least I've overcome a major hurdle. Right now I'm using all 64-bit via the smart fellas over at &lt;a href="http://www.linuxant.com"&gt;Linuxant&lt;/a&gt;. I have a trial license that is still good for about a month so I'll probably still try to see if I can get this working with &lt;a href="http://ndiswrapper.sourceforge.net"&gt;Ndiswrapper&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110636903878946999?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110636903878946999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110636903878946999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110636903878946999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110636903878946999'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/we-are-champions.html' title='We Are The Champions'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110602473340706742</id><published>2005-01-17T20:58:00.000-08:00</published><updated>2005-01-17T21:05:33.406-08:00</updated><title type='text'>Laptop Post</title><content type='html'>I am posting this blog from my brand-new AMD 64 laptop. While I don't have &lt;span style="font-style:italic;"&gt;everything&lt;/span&gt; working yet, I'm pretty damn close. I'm holding out hope that one of the release candidates of &lt;a href="http://ndiswrapper.sourceforge.net"&gt;ndiswrapper&lt;/a&gt; will create a kernel module that doesn't reboot my machine. But I've got Java, Eclipse, Python, zsh, sound and DVD support working.&lt;br /&gt;&lt;br /&gt;I knew going into this project that there was going to be a lot of careful hand-crafting to get this box up and running. I decided to be extra-methodical and make small changes, one step at a time. I decided to make a CVS module where I put kernel configurations, Xorg files, zsh files and the like. At any point I could rollback to a known point and recover using the version history CVS provides.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110602473340706742?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110602473340706742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110602473340706742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110602473340706742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110602473340706742'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/laptop-post.html' title='Laptop Post'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110568240650914414</id><published>2005-01-13T21:58:00.000-08:00</published><updated>2005-01-13T22:00:06.510-08:00</updated><title type='text'>It Boots!</title><content type='html'>By god there are days when you think you can cure a rainy day. After a few initial hiccups I've finally got the new laptop booting up with a 2.6 kernel. Now it's time to give the ol' CPU a real work-out by emerging Xorg and Gnome. I figure if my house doesn't burn down in the middle of the night from cooling failures I'll be in good shape.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110568240650914414?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110568240650914414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110568240650914414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110568240650914414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110568240650914414'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/it-boots.html' title='It Boots!'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110563502479739332</id><published>2005-01-13T08:45:00.000-08:00</published><updated>2005-01-13T08:50:24.796-08:00</updated><title type='text'>No Class In The Heartland</title><content type='html'>Apparently the Vikings felt they hadn't damaged their image badly enough with Randy Moss' butt-rubbing at Lambeau Field last week. Now Vikes owner &lt;a href="http://sports.espn.go.com/nfl/playoffs04/news/story?id=1965529"&gt;Red McCombs has demanded that Fox remove Joe Buck from the broadcast booth&lt;/a&gt; for calling Moss' action "a disgusting act". &lt;br /&gt;&lt;br /&gt;I'm so completely floored by the temerity of this action I can hardly write. Where is the apology for Moss' behavior in front of some the NFL's best fans? Under what circumstances are his actions ever acceptable? (okay, maybe in Oakland). &lt;br /&gt;&lt;br /&gt;While I rarely find myself on the side of the Fox Network, kudos to them for standing up for their guy. Joe Buck called it right and Red McCombs should be disciplining his players, not upbraiding a broadcaster for calling Randy Moss' demonstration what it was...a digusting act.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110563502479739332?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110563502479739332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110563502479739332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110563502479739332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110563502479739332'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/no-class-in-heartland.html' title='No Class In The Heartland'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110559186740711403</id><published>2005-01-12T20:51:00.000-08:00</published><updated>2005-01-12T21:03:01.636-08:00</updated><title type='text'>The New Laptop!</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/36455265@N00/3298648/" title="photo sharing"&gt;&lt;img src="http://photos1.flickr.com/3298648_4ac1bdadec_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/36455265@N00/3298648/"&gt;The New Laptop!&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/36455265@N00/"&gt;livollmers&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Oh great day of days, the new laptop is here. I gave myself a real treat with this AMD 64-bit beauty! Right now I'm in the process of putting &lt;a href="http://www.gentoo.org"&gt;Gentoo Linux&lt;/a&gt; on it. We'll see just how much teeth-gnashing I have to go through to get this thing up and running. But I would like to say that I &lt;span style="font-style:italic;"&gt;never&lt;/span&gt; booted this thing up with the copy of Windows XP that came with it. Now I just have to figure out how to get that damn decal off of there...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110559186740711403?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110559186740711403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110559186740711403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110559186740711403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110559186740711403'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/new-laptop.html' title='The New Laptop!'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110537626675273841</id><published>2005-01-10T08:55:00.000-08:00</published><updated>2005-01-10T09:59:37.356-08:00</updated><title type='text'>Playoffs</title><content type='html'>Did I really see Randy Moss pretend to pull his pants down and rub his rear-end on the goal posts at Lambeau Field? Did I really see that, or was it just some awful nightmare? Say what you will about Terrell Owens' end-zone hijinks, I doubt he would pull off a class-less maneuver like that.&lt;br /&gt;&lt;br /&gt;When you consider what it takes to complete a pass play in the NFL it's simply mind-boggling. First, all of the players have to know the play inside and out in order to make last-second adjustments. The offensive line, and perhaps the backfield, have to quickly read the defense as the ball is snapped to change blocking assignments according to the pass-rush. The receivers need to run their routes, throw fakes, shake off blocks and get open. The quarterback has to quickly read his progression and pick a receiver to throw to in an instant before getting sacked. The ball has to get downfield untouched by linemen and finally, if all these things happen, the receiver has to wrap his hands around the ball and hit the ground without dropping it. &lt;br /&gt;&lt;br /&gt;In Sunday's Seahawks-Rams game all of these things happened except for the last bit. I won't argue that catching a football thrown by an NFL-caliber quarterback isn't difficult, but when everything else goes right so often and the last step fails so much, you have to wonder if you have the right personnel on the field.&lt;br /&gt;&lt;br /&gt;Give credit to Matt Hasselbeck for not killing any of his receivers this season. He's said all the right things in the media and taken all the blame. The fact of the matter is that no one who calls themselves an NFL receiver should drop passes &lt;span style="font-style:italic;"&gt;that hit them in the numbers&lt;/span&gt; as much as the 'Hawks receivers do. This problem is more than a statistical anomaly, it's a crisis of skill. You can't run the precision West Coast Offense (or the vertical game for that matter) if your QB can't rely on his receivers making catches.&lt;br /&gt;&lt;br /&gt;Finally, can anyone tell me why Jerry Rice didn't even &lt;span style="font-style:italic;"&gt;touch&lt;/span&gt; the ball on Saturday? I understand that he may have lost a step over the years, but he can still play. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110537626675273841?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110537626675273841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110537626675273841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110537626675273841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110537626675273841'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/playoffs.html' title='Playoffs'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110521113534591182</id><published>2005-01-08T10:53:00.000-08:00</published><updated>2005-01-08T11:05:35.346-08:00</updated><title type='text'>Four Sweet Words</title><content type='html'>A check of my inbox this morning revealed a very pleasant surprise--a message from HP with the subject "Your Order Has Shipped". I feel like a little kid who mail-ordered some toy after saving up a million cereal box tops. Only instead of a secret agent decoder ring, this is an AMD 64-bit laptop with lots (but not all) of the fixins.&lt;br /&gt;&lt;br /&gt;All of this is part of a post-Christmas effort to scale down our life. I realize that this is a very common post-holiday psychological reaction, much like the urge people feel to buy exercise equipment after spending November and December stuffing their faces. But having experienced my 33rd Christmas, I feel like there are so few things I really &lt;span style="font-style:italic;"&gt;need&lt;/span&gt; and there is so much in my house I don't need.&lt;br /&gt;&lt;br /&gt;The goal of the laptop is to replace one of the desktop machines under my desk. I'll keep my Linux box for a server, but the 17" monitor and the XP box are either going to get sold or donated to the local Boys &amp; Girls Club. This replacement is part of an overall plan I have to replace items in my collection of "stuff", not to enlarge it. For example, I went clothes shopping last weekend (oh the sales!) and for every shirt or pair of pants purchased, I pulled one out of the wardrobe and either put it in the rag bin or bagged it for a donation. &lt;br /&gt;&lt;br /&gt;My laptop should be here in a week. Oh what fun we'll have getting it all setup and tuned! By the way if anyone wants an XP box with monitor, let me know. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110521113534591182?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110521113534591182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110521113534591182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110521113534591182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110521113534591182'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/four-sweet-words.html' title='Four Sweet Words'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110494393733552801</id><published>2005-01-05T08:40:00.000-08:00</published><updated>2005-01-06T08:08:14.993-08:00</updated><title type='text'>There's Another Game On?</title><content type='html'>Yesterday's public de-pantsing of the Oklahoma Sooners by USC gave me some small measure of satisfaction. The only thing worse than Oklahoma's play on the field was Ashlee Simpson's pathetic attempt to play live music. Honey, stick to recordings, you'll get booed less in the end.&lt;br /&gt;&lt;br /&gt;It's good to see a Pac-10 team finally win the big one. Although given the BCS' proclivities for idiocy it wouldn't surprise me if they concocted some shared championship with Auburn also. While it's good to see the old Pac-10 get some respect, as a University of Oregon Ducks fan the Triumph of the Trojans can only mean more dark recruiting years ahead for the other nine teams in the conference (except maybe Cal).&lt;br /&gt;&lt;br /&gt;In other news, the Hall Of Fame elected Wade Boggs and Ryne Sandberg as this years inductees. Looking at the list of players, these are probably the two guys I would have picked also, although I think Andre Dawson makes a good case. It is interesting though to consider stars of the 80's for the HOF. The 80's seem to be a somewhat forgotten era in baseball, sandwiched between the sunny days of the 70's and the monster-athlete days of the 90's. You never hear anyone wax poetically about the 80's, but maybe that's because we still can't get over the number of teams that incorporated robin's egg blue into their uniforms.&lt;br /&gt;&lt;br /&gt;Now the college football season is over, and this weekend we turn our attention to the NFL playoffs. Every matchup this weekend should be a good one. Last night I turned on the USC-Oklahoma game and my wife asked incredulously, "is there &lt;span style="font-style:italic;"&gt;another&lt;/span&gt; game on?". To which I replied, "Yes honey, but this is the last one...for college". Hopefully she got the hint and won't throttle me when I turn the TV on Saturday afternoon to watch the Seahawks and Rams.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110494393733552801?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110494393733552801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110494393733552801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110494393733552801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110494393733552801'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/theres-another-game-on.html' title='There&apos;s Another Game On?'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6952638.post-110459657265865313</id><published>2005-01-01T08:19:00.000-08:00</published><updated>2005-01-01T08:22:52.656-08:00</updated><title type='text'>Happy New Year!</title><content type='html'>Normally I would be spending New Year's Day filling up on tortilla chips and beer and watching college football until my eyes liquefy and run from my skull. This year however, I have seriously curtailed the amount of college ball on my TV. I was ready to watch Cal pound Texas Tech and hold it up as another example of inequities of the BCS Alliance, but Cal decided to mail it in and ended up only lending credence to Mack Brown's Longhorns getting a trip to Pasadena. Now I'm just too tired to be mad about it or care.&lt;br /&gt;&lt;br /&gt;This year I watched college football because it was a nice pre-cursor for the NFL games on the next day. But I'm very tired of the BCS and the idiocy, hypocrisy and hype that surrounds it. Don't get me wrong: I'll be watching USC and Oklahoma got at it on Monday, but I don't have to enjoy it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6952638-110459657265865313?l=alexvollmer.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexvollmer.blogspot.com/feeds/110459657265865313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=6952638&amp;postID=110459657265865313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110459657265865313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6952638/posts/default/110459657265865313'/><link rel='alternate' type='text/html' href='http://alexvollmer.blogspot.com/2005/01/happy-new-year.html' title='Happy New Year!'/><author><name>Alex Vollmer</name><uri>http://www.blogger.com/profile/12353381134428076193</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05218979235459829294'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>