<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3359759573484408865</id><updated>2012-01-04T23:09:44.464-05:00</updated><category term='finance'/><category term='funny'/><category term='news'/><category term='web'/><category term='books'/><category term='apple'/><category term='development'/><category term='etl'/><category term='environment'/><category term='c#'/><category term='firefox'/><category term='values'/><category term='ms'/><category term='tips'/><category term='thoughts'/><category term='family'/><category term='windows'/><category term='.net'/><category term='dvr'/><category term='code'/><category term='review'/><category term='work'/><category term='vb.net'/><category term='humor'/><category term='linux'/><category term='pop quiz'/><category term='linq'/><category term='tech'/><category term='snippet'/><category term='diy'/><category term='vacation'/><category term='politics'/><category term='programming'/><category term='Christmas'/><category term='random'/><category term='games'/><category term='music'/><category term='work bunk'/><category term='geek'/><category term='faith'/><category term='ideas'/><category term='life'/><category term='meta'/><category term='movie'/><category term='jquery'/><category term='unanswerable questions'/><category term='sql'/><category term='food'/><category term='design'/><category term='wrongness'/><category term='why'/><category term='data'/><title type='text'>Public Shared Life As Me</title><subtitle type='html'>software development, faith, life, and family</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mattmc3.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default?start-index=101&amp;max-results=100'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>164</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2054587630723707234</id><published>2012-01-04T23:09:00.000-05:00</published><updated>2012-01-04T23:09:44.472-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dvr'/><title type='text'>Hacking the DVR again</title><content type='html'>Man, nothing makes you feel more like a hacker than downloading utilities from Taiwan, creating a new driver .inf file, and then changing hex code in the registry. &amp;nbsp;But, after hooking up the LCD TV to the DVR via a DVI --&amp;gt; HDMI conversion cable, that's exactly what I had to do. &amp;nbsp;Apparently, nVidia drivers transmit that audio will come out of the DVI cable, which it doesn't. &amp;nbsp;So, the TV expects both audio and video from the HDMI input, and thus - issues. &amp;nbsp;I needed video only from the HDMI, and then audio from an analog 3.5mm headphone jack. &amp;nbsp;So, Google eventually brought me to &lt;a href="http://currysauce.org/2010/03/20/how-to-disable-sound-output-over-hdmi-for-nvidia-graphics-cards/"&gt;this&lt;/a&gt;. &amp;nbsp;Bizarre solution, but it worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2054587630723707234?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2054587630723707234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2054587630723707234'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2012/01/hacking-dvr-again.html' title='Hacking the DVR again'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1908414859892495032</id><published>2011-07-10T18:29:00.001-04:00</published><updated>2011-07-10T19:37:50.619-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>The Golden Rule of Finance</title><content type='html'>There is one Golden Rule to successful personal finance. &amp;nbsp;&lt;strong&gt;Spend less than you earn.&lt;/strong&gt; &amp;nbsp;When struggling financially, there are two sides to that equation you can work with. &amp;nbsp;Either you attempt to modify your earnings (aka: sell things, get another job, get a new job, or just plain get a job). &amp;nbsp;Or you can modify your expenses (consolidate debt for lower interest, cut unnecessary bills, reduce discretionary spending, move someplace cheaper, cut coupons, etc). &amp;nbsp;You can earn less than you spend and survive, but not for very long. &amp;nbsp;Debt will bury you.&lt;br /&gt;&lt;br /&gt;Of course we violate this rule all the time, and sometimes it works out okay. &amp;nbsp;But never for long. &amp;nbsp;Maybe you take out student loans to go to school. &amp;nbsp;Assuming you get a job that increases the &lt;strong&gt;earning&lt;/strong&gt; side of the equation, you can pay that back and eventually come out ahead. &amp;nbsp;Maybe what you earn in the month of December is less than what you spend for Christmas. &amp;nbsp;Assuming you saved a little during the other 11 months, you can usually afford to do this. &amp;nbsp;Maybe you buy a house that you could afford at the time, but then lose your job or change jobs and suddenly earn less. &amp;nbsp;Assuming you have enough savings cushion, you might still be able to make your payments. &amp;nbsp;But maybe you'll have to move someplace cheaper.&lt;br /&gt;&lt;br /&gt;There's one other piece of this puzzle I've not touched on fully. &amp;nbsp;It bears mentioning that the Golden Rule of Finance has a Silver Sidekick. &amp;nbsp;&lt;strong&gt;As much as you can, plan for the future. &amp;nbsp;&lt;/strong&gt;This means you need your earnings to exceed your spending enough that you can save the excess. &amp;nbsp;Incurring debt by borrowing makes certain assumptions about the future. &amp;nbsp;Namely that what you want to have now is important enough that you'll commit to future repayment. &amp;nbsp;But the future is often unpredictable, and debt repayment has a way of highlighting that like nothing else.&lt;br /&gt;&lt;br /&gt;Now, you can occasionally find yourself out of balance with the Golden Rule of Finance and still be okay. &amp;nbsp;The road of life is full of bumps and twists and unexpected turns. &amp;nbsp;But when trouble comes, it's how we react to it that matters. &amp;nbsp;Do we recognize the road we're on? &amp;nbsp;Do we see the imbalance when it's there or predict a future imbalance? &amp;nbsp;Are we willing to make sacrifices to modify the equation? &amp;nbsp;That last question is key, because if you find that you spend more than you earn, you cannot modify the equation without &lt;em&gt;sacrifice&lt;/em&gt;. &amp;nbsp;Sometimes difficult. &amp;nbsp;Usually painful. &amp;nbsp;Often realized late.&lt;br /&gt;&lt;br /&gt;That's where our nation finds itself with this debate on the debt&amp;nbsp;ceiling. &amp;nbsp;The same simple equation for personal finance applies here, just on a much grander scale. &amp;nbsp;The trouble is, &lt;em&gt;the federal government's &lt;strong&gt;earning&lt;/strong&gt; side of the equation is not normal&lt;/em&gt;. &amp;nbsp;They don't &lt;strong&gt;earn&lt;/strong&gt; money as much as &lt;strong&gt;take&lt;/strong&gt; it or &lt;strong&gt;make&lt;/strong&gt; it. &amp;nbsp;They take it via taxes. &amp;nbsp;They make it either literally via a printing press, or artificially via methods like &lt;a href="http://en.wikipedia.org/wiki/Quantitative_easing"&gt;quantitative easing&lt;/a&gt;. &amp;nbsp;Taking money via taxes stymies growth in the private sector by reducing consumer spending, or by affecting unemployment. &amp;nbsp;Which is a bigger problem as many taxes are tied intimately to employment. &amp;nbsp;As unemployment rises the earning side of the equation suffers further. &amp;nbsp;Making money contributes heavily to inflation. &amp;nbsp;Interestingly, inflation is somewhat good for debt because the money we borrowed in the past was more valuable than the future money we use to pay the debt back. &amp;nbsp;Of course, in every other way inflation comes at a heavy price quite literally, as future buying power is reduced.&lt;br /&gt;&lt;br /&gt;The US has committed to spending more than it earns on all the things the government spends money on. &amp;nbsp;And borrowing to do it. &amp;nbsp;And that course is not sustainable, and that's what the current debate in congress is about. &amp;nbsp;It's not politically viable to make the &lt;em&gt;sacrifices&lt;/em&gt; necessary to balance the equation. &amp;nbsp;Raising taxes is not popular and is potentially job killing during a time when 'economic recovery' is tenuous at best. &amp;nbsp;Cutting spending is not politically viable either as there is always some advocate on the receiving end of those benefits that will make a fuss. &amp;nbsp;Of course, the worst thing we could do is just borrow again and not change either side of the equation. &amp;nbsp;Raising the debt ceiling means that we'll just continue the borrowing cycle, which only ends one of two ways - eventual repayment (sacrifice) or eventual default (greater sacrifice).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://swampland.time.com/2011/07/08/has-nancy-pelosi-been-marginalized-in-the-debt-debate/"&gt;Nancy Pelosi recently asked&lt;/a&gt; why the vote on raising the debt ceiling couldn't be decoupled from the vote on spending. &amp;nbsp;The question is so alarming because it shows how ignorant those at the helm are to the situation we're facing. &amp;nbsp;I recently read somewhere where someone posted that this is like a fat man gearing up to eat a trillion more donuts before promising to finally diet. &amp;nbsp;Politics are going to have to be put aside, and possibly political careers as well, and both sides of the equation are going to have to be modified if calamity is to be avoided.&lt;br /&gt;&lt;br /&gt;Ultimately though, the sacrifice will happen. &amp;nbsp;If not in this generation, then I fear the next will be forced to pay it. &amp;nbsp;And by then the sacrifice will have accrued interest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1908414859892495032?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1908414859892495032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1908414859892495032'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/07/golden-rule-of-finance.html' title='The Golden Rule of Finance'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-5766397254521763674</id><published>2011-07-06T15:29:00.000-04:00</published><updated>2011-07-06T15:29:47.746-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>.ToString() antipattern</title><content type='html'>Nothing worse than finding .ToLower().ToString() littered throughout your codebase. &amp;nbsp;Calling .ToString() on an object that is already a String is annoying. &amp;nbsp;Don't do it. Ever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-5766397254521763674?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5766397254521763674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5766397254521763674'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/07/tostring-antipattern.html' title='.ToString() antipattern'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4147748037824072039</id><published>2011-06-22T19:16:00.001-04:00</published><updated>2011-06-25T22:50:18.629-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Tweeting is for the birds - it's time to hop in the Tumblr</title><content type='html'>&lt;a href="http://ricksancheztv.tumblr.com/post/6721269622/move-over-twitter-make-room-for-tumblr"&gt;This guy has got it right.&lt;/a&gt; &amp;nbsp;Tumblr looks to fix everything I don't like about Twitter. &amp;nbsp;While I've hemmed and hawed about Twitter and eventually decided I dislike it with the fire of a thousands suns, I took one look at Tumblr and think it's worth a shot. &amp;nbsp;&lt;a href="http://mattmc3.tumblr.com/"&gt;So here I am&lt;/a&gt;. &amp;nbsp;This blog doesn't go away... I suspect that this will help me better draw the distinction between life and tech discussions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4147748037824072039?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4147748037824072039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4147748037824072039'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/06/tweeting-is-for-birds-its-time-to-hop.html' title='Tweeting is for the birds - it&apos;s time to hop in the Tumblr'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2746440404259126162</id><published>2011-06-07T11:59:00.000-04:00</published><updated>2011-06-07T11:59:19.550-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Surely you got the IM/email/tweet?</title><content type='html'>&lt;i&gt;&lt;u&gt;&lt;b&gt;Paper is dead&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;. &amp;nbsp;Surely you got the IM/email/tweet?&lt;br /&gt;&lt;br /&gt;It's amazing how often people need reminded of that. &amp;nbsp;I just got wrapped up in a discussion about how hard it might possibly be for some not-so-savvy people to print from their browser and that we should create a PDF version of some web pages so that our customers can easily print. &amp;nbsp;Seriously?! &amp;nbsp;I'm all for serving my customers, but that's borderline insanity.&lt;br /&gt;&lt;br /&gt;How about a simple icon and a Javascript window.print() call?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2746440404259126162?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2746440404259126162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2746440404259126162'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/06/surely-you-got-imemailtweet.html' title='Surely you got the IM/email/tweet?'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7572279466233087082</id><published>2011-05-27T23:27:00.002-04:00</published><updated>2011-05-27T23:29:46.887-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>With You</title><content type='html'>&lt;blockquote&gt;&lt;a href="http://www.amazon.com/With-You/dp/B000T3572Y/ref=sr_1_1?ie=UTF8&amp;amp;s=dmusic&amp;amp;qid=1306553338&amp;amp;sr=8-1"&gt;&lt;b&gt;With you&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The way you say my name&lt;br /&gt;The sound that your voice makes&lt;br /&gt;The funny way you turn a phrase&lt;br /&gt;Sounds like love to me&lt;br /&gt;&lt;br /&gt;And when I feel alone&lt;br /&gt;Your tender words they calm the storm&lt;br /&gt;They are simple and yet so strong&lt;br /&gt;And they sound like love to me&lt;br /&gt;&lt;br /&gt;When you speak&lt;br /&gt;It's like you know just what my heart needs&lt;br /&gt;Your words they bring healing to me&lt;br /&gt;And help me to remember what is true&lt;br /&gt;And I hear love when I am listening to you&lt;br /&gt;&lt;br /&gt;I look into your eyes&lt;br /&gt;Full of wonder and surprise&lt;br /&gt;The care your gaze implies&lt;br /&gt;Looks like love to me&lt;br /&gt;&lt;br /&gt;You have seen me at my best&lt;br /&gt;And wrapped up in my arrogance&lt;br /&gt;You remain unimpressed&lt;br /&gt;And it looks like love to me&lt;br /&gt;&lt;br /&gt;And you see&lt;br /&gt;Not what I am but what I can be&lt;br /&gt;The way you look at life it is inspiring&lt;br /&gt;And it helps me to remember what is true&lt;br /&gt;And I see love, when I am looking at you&lt;br /&gt;&lt;br /&gt;Every day I am amazed&lt;br /&gt;That God would show His love for me this way&lt;br /&gt;When you speak&lt;br /&gt;It's like you know just what my heart needs&lt;br /&gt;The way you look at life it is inspiring&lt;br /&gt;And it helps me to remember what is true&lt;br /&gt;That I hear love, when I am listening&lt;br /&gt;And I see love, when I am looking&lt;br /&gt;And I find love&lt;br /&gt;With You&lt;br /&gt;&lt;br /&gt;- Geoff Moore and The Distance&lt;/blockquote&gt;&lt;br /&gt;Happy Anniversary Beth&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7572279466233087082?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7572279466233087082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7572279466233087082'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/05/with-you.html' title='With You'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8276610000760277409</id><published>2011-05-09T09:40:00.000-04:00</published><updated>2011-05-09T09:40:07.439-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>ByVal goes bye, bye</title><content type='html'>One of the nice enhancements to VB.NET in Visual Studio 2010 sp1 &lt;a href="http://social.msdn.microsoft.com/Forums/en/vblanguage/thread/c331b22f-8d64-4308-8dec-edcb792389e8"&gt;is the removal of the auto-insert-ByVal keyword&lt;/a&gt;. &amp;nbsp;If you don't type ByVal, then Visual Studio now respects that and doesn't try to insert it for you. &amp;nbsp;As ByVal is the default anyway, it's much nicer to omit it so that when you use ByRef, it really stands out. &amp;nbsp;A simple find and replace of your ByVal's, and your code instantly looks and feels cleaner. &amp;nbsp;Thanks Microsoft!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8276610000760277409?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8276610000760277409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8276610000760277409'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/05/byval-goes-bye-bye.html' title='ByVal goes bye, bye'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8666227562750849517</id><published>2011-04-28T22:27:00.002-04:00</published><updated>2011-04-29T08:17:10.054-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Lost usernames</title><content type='html'>mattmc3 was the handle I chose back in 1997 to use AOL's instant messenger.&amp;nbsp; Since then, I've tried to sign up as mattmc3 for nearly everything I could, but unfortunately I've not been very successful.&amp;nbsp; While I happily have the e-mail addresses I want, other services like twitter, slashdot, banks, and various other places mattmc3 was already taken.&amp;nbsp; It's funny how your online handle can force you to sign up early for things that you have absolutely no interest in just to turf your username.&amp;nbsp; Interestingly, I think this is part of the reason I don't do twitter.&amp;nbsp; Not only is the content there mostly useless, the guy who got my mattmc3 username is peddling horoscopes, which I have to wonder if someone looking me up by username wouldn't mistake for me or I for him.&amp;nbsp; When some rival service (called, say, Sylvester - the hunter of Tweety birds), I'll be ready to sign up... not to use the service, but just to defend my good (user)name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8666227562750849517?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8666227562750849517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8666227562750849517'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/04/online-losernames.html' title='Lost usernames'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-840308377052329278</id><published>2011-04-27T22:55:00.000-04:00</published><updated>2011-04-27T22:55:23.860-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='dvr'/><title type='text'>Digital Cable and the DVR</title><content type='html'>Our TV is an old hand-me-down Zenith from 20-some years ago.&amp;nbsp; I couldn't care less about digital cable.&amp;nbsp; But, when the cable company sent us a letter and numerous e-mails telling us that we needed a converter and that our channels were destined for digital cable, I started to worry.&amp;nbsp; I ordered the (free) converter, and waited.&lt;br /&gt;&lt;br /&gt;It didn't take long to figure out that the converter wouldn't work along with the DVR unless I wanted to change the channel on the converter prior to every show being recorded.&amp;nbsp; Not gonna happen.&amp;nbsp; I needed an alternative.&amp;nbsp; Of course, not knowing how the digital cable thing works I had to now figure out what to do.&amp;nbsp; Are they encrypting the signal to force me to use a cablecard or their DVR?&amp;nbsp; What is ATSC? QAM? These things make no sense to me.&amp;nbsp; Thankfully, &lt;a href="http://www.hauppauge.com/site/products/data_hvr1600.html"&gt;I discovered that the tv tuner card I bought has a separate port for digital cable&lt;/a&gt;.&amp;nbsp; Cool.&amp;nbsp; Split the cable, plug the analog one back in and use the other one on the digital line already in the card I bought and haven't touched in 2 years.&amp;nbsp; Scan for new channels and all is good.&amp;nbsp; Scary how easy this was, so crossing my fingers and waiting for the other shoe to drop.&amp;nbsp; I think I just need to re-setup my recordings.&amp;nbsp; Not bad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-840308377052329278?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/840308377052329278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/840308377052329278'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/04/digital-cable-and-dvr.html' title='Digital Cable and the DVR'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3847923140828160580</id><published>2011-04-25T16:12:00.002-04:00</published><updated>2011-04-25T16:45:21.975-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>String or binary data would be truncated</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SEn4wz0Wzjk/TbXV3ChmnrI/AAAAAAAAAKY/XGxW6tZ56-0/s1600/StringOrBinary.PNG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="127" src="http://3.bp.blogspot.com/-SEn4wz0Wzjk/TbXV3ChmnrI/AAAAAAAAAKY/XGxW6tZ56-0/s320/StringOrBinary.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;This, in my opinion, is the most frustrating error you can get in SQL Server. &amp;nbsp;It's the error you get when you're trying to do an &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;"INSERT INTO (...) SELECT (...)"&lt;/span&gt; to push a bunch of records from a query result into a table. &amp;nbsp;If one of your &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;(n)varchar&lt;/span&gt; fields is too small to hold one of the values, you get this lovely error. &amp;nbsp;It's nice that SQL Server won't truncate your fields for you, but frustrating that you get this sad little error with no details. &amp;nbsp;You don't know which field is causing the problem, and if you're inserting into a large number of fields, it's completely frustrating to figure out what caused the issue. &amp;nbsp;Especially when SQL Server could easily have done that heavy lifting for you and told you in the error details.&lt;br /&gt;&lt;br /&gt;I've hit this error enough that I have developed a simple technique for troubleshooting this. &amp;nbsp;It's not fancy, and you could probably think of something better, but this works and gets me to my resolution in a few seconds so I thought it would be worth sharing. &amp;nbsp;The trick is to turn your &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;"INSERT INTO (...) SELECT (...)"&lt;/span&gt; into a &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;"SELECT (...) INTO _BadDataTable_ (...)"&lt;/span&gt; statement. &amp;nbsp;The &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SELECT INTO&lt;/span&gt; will create a new table for you on the fly, assuming that you use the &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;AS &lt;/span&gt;clause in your &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;SELECT &lt;/span&gt;to name your fields the same as the destination table you're looking to &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;INSERT INTO&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;From there, you can then run this simple SQL script changing the values of &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;@prodTable&lt;/span&gt; and &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;@invalidTable&lt;/span&gt; into the real names of the destination table and the one you made on the fly containing the bad data. &amp;nbsp;Kinda hackish, but it works and that's all I'm looking for. &amp;nbsp;Note that you have to make a real table with the fields named the same for this to work. &amp;nbsp;Feel free to take and modify to suit your needs, and here's to hoping the next release of SQL Server will fix this completely arcane error:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: sql"&gt;-- setup&lt;br /&gt;declare&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@prodTable varchar(100) = 'MyDestTable', -- CHANGE THIS!!!&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@invalidTable varchar(100) = '_BadDataTable_', -- AND THIS!!!&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@c cursor,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@column_name varchar(255),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@max_len int&lt;br /&gt;&lt;br /&gt;if object_id('tempdb..#max_len') is not null drop table #max_len&lt;br /&gt;create table #max_len (max_len int)&lt;br /&gt;&lt;br /&gt;-- get schema for prod table&lt;br /&gt;if object_id('tempdb..#prod_table_schema') is not null drop table #prod_table_schema&lt;br /&gt;select&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ordinal_position,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;column_name,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data_type,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;character_maximum_length&lt;br /&gt;into&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#prod_table_schema&lt;br /&gt;from&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;INFORMATION_SCHEMA.COLUMNS a&lt;br /&gt;where&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;a.table_name = @prodTable&lt;br /&gt;order by 1&lt;br /&gt;&lt;br /&gt;-- get schema for table made from invalid data with the trucate error&lt;br /&gt;if object_id('tempdb..#invalid_table_schema') is not null drop table #invalid_table_schema&lt;br /&gt;select&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ordinal_position,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;column_name,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;data_type,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cast(null as int) as character_maximum_length,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case when character_maximum_length is null then 0 else 1 end as is_char_field&lt;br /&gt;into&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#invalid_table_schema&lt;br /&gt;from&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;INFORMATION_SCHEMA.COLUMNS a&lt;br /&gt;where&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;a.table_name = @invalidTable&lt;br /&gt;order by 1&lt;br /&gt;&lt;br /&gt;-- we need to chase after the max(len(COL)) info with a dynamic query&lt;br /&gt;set @c = cursor local fast_forward for&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select a.column_name&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;from #invalid_table_schema a&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;where a.is_char_field = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;order by a.ordinal_position&lt;br /&gt;open @c&lt;br /&gt;&lt;br /&gt;fetch next from @c into @column_name&lt;br /&gt;while @@fetch_status = 0 begin&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;-- get the maximum data length of the field from the table&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;delete #max_len&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;insert into #max_len&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exec('select max(len(' + @column_name + ')) as max_len from ' + @invalidTable)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;select @max_len = max_len from #max_len&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;update #invalid_table_schema&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;set character_maximum_length = @max_len&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;where column_name = @column_name&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fetch next from @c into @column_name&lt;br /&gt;end&lt;br /&gt;close @c&lt;br /&gt;deallocate @c&lt;br /&gt;&lt;br /&gt;-- Tell me which fields have the problem&lt;br /&gt;select&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;a.column_name,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;a.character_maximum_length,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;b.character_maximum_length as actual_length_of_data&lt;br /&gt;from&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#prod_table_schema a join&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#invalid_table_schema b on&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;a.column_name = b.column_name&lt;br /&gt;where&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;a.character_maximum_length &amp;lt; b.character_maximum_length&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3847923140828160580?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3847923140828160580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3847923140828160580'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/04/string-or-binary-data-would-be.html' title='String or binary data would be truncated'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-SEn4wz0Wzjk/TbXV3ChmnrI/AAAAAAAAAKY/XGxW6tZ56-0/s72-c/StringOrBinary.PNG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4370593529387575217</id><published>2011-04-24T23:21:00.005-04:00</published><updated>2011-04-24T23:37:59.080-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>VB.NET finally gets the Yield statement</title><content type='html'>I've found myself multiple times in the last four years having to defend Visual Basic against the disgusted reactions of some of my C# developer friends.&amp;nbsp; I think most people who have to pinch their noses at the term "VB" aren't really doing it towards the &lt;i&gt;language&lt;/i&gt;, but more towards the stereotypical perception of a what they believe to be the quality of VB developers in general.&amp;nbsp; It's easier to argue technical merits than stereotypical opinion, other than to say that good developers are versatile and objective when evaluating technologies and each other.&lt;br /&gt;&lt;br /&gt;I admit that it took me about a week or two when I first started to swallow my pride and accept that we have a pretty extensive codebase written in VB, and there's very little compelling reason to change it.&amp;nbsp; And now, I actually really enjoy it almost as much as C#... except for lambdas... ug, so verbose.&amp;nbsp; Anyway, over time C# and VB have converged and the similarities far outweigh the differences.&amp;nbsp; If you can do it in C#, you can almost certainly do it in VB with a few notable exceptions.&amp;nbsp; In fact, since getting auto-properties and option infer, lately I've been describing VB thusly:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;VB really is no different than C#.&amp;nbsp; You have all the same libraries.&amp;nbsp; It's a little bit more verbose in places, but a lot more readable in others.&amp;nbsp; Once you get used to case-insensitive languages, you'll wonder why there aren't more of them out there.&amp;nbsp; The only features you might miss are the dynamic and yield keywords, and unsafe if you ever use it (which you shouldn't be).&amp;nbsp; Actually, dynamic features have been available in VB since the beginning, but they are file scoped instead of variable scoped.&amp;nbsp; So Yield is really the only thing you'll wish you could do, but can't.&lt;/blockquote&gt;&lt;br /&gt;And now, at long last - with the new &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4738205d-5682-47bf-b62e-641f6441735b&amp;amp;displaylang=en"&gt;Microsoft Visual Studio Async CTP (SP1 Refresh)&lt;/a&gt;, we've &lt;a href="http://msdn.microsoft.com/en-us/vstudio/gg497937"&gt;finally gotten a Yield keyword in VB&lt;/a&gt;.&amp;nbsp; This changes my whole elevator pitch.&lt;br /&gt;&lt;br /&gt;I've installed it, and toyed with it, and it works exactly as you'd expect.&amp;nbsp; Here's the arbitrary infinite Fibonacci sequence hacked together in 30 seconds in VB:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: vb;"&gt;Module Module1&lt;br /&gt;&lt;br /&gt; Sub Main()&lt;br /&gt;  For Each i In GetFib()&lt;br /&gt;   If i &amp;gt; 500 Then Exit For&lt;br /&gt;   Console.WriteLine(i)&lt;br /&gt;  Next&lt;br /&gt;  Console.WriteLine("Done...")&lt;br /&gt;  Console.ReadKey(True)&lt;br /&gt; End Sub&lt;br /&gt;&lt;br /&gt; Public Iterator Function GetFib() As IEnumerable(Of Long)&lt;br /&gt;  ' Forget math overflow... this is only a test&lt;br /&gt;  Yield 0&lt;br /&gt;  Yield 1&lt;br /&gt;  Dim previous = 0, current = 1&lt;br /&gt;  While True&lt;br /&gt;   Dim nextVal = previous + current&lt;br /&gt;   previous = current&lt;br /&gt;   current = nextVal&lt;br /&gt;   Yield current&lt;br /&gt;  End While&lt;br /&gt;&lt;br /&gt; End Function&lt;br /&gt;&lt;br /&gt;End Module&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;It's only 6 years overdue, but still such a welcome addition to the VB family.  I can now finally get rid of my bloated iterator classes for my OrderedDictionary and my TreeNode classes.  I can start porting projects like &lt;a href="http://code.google.com/p/dapper-dot-net/"&gt;Dapper&lt;/a&gt; to VB without bloating the code.  Thank you Microsoft.  You've made my work life so much less painful.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4370593529387575217?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4370593529387575217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4370593529387575217'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/04/vbnet-finally-gets-yield-statement.html' title='VB.NET finally gets the Yield statement'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-110175300240280152</id><published>2011-04-01T17:34:00.001-04:00</published><updated>2011-04-01T17:34:58.370-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Google Reader Bankruptcy</title><content type='html'>It's April 1st. &amp;nbsp;Nothing to see &lt;a href="https://www.google.com/reader"&gt;here&lt;/a&gt;&amp;nbsp;today that's worth anything... &lt;a href="http://www.markevanstech.com/2008/04/11/declaring-rss-bankruptcy/"&gt;move along&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-110175300240280152?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/110175300240280152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/110175300240280152'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/04/google-reader-bankruptcy.html' title='Google Reader Bankruptcy'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3989362116544780936</id><published>2011-03-28T19:49:00.000-04:00</published><updated>2011-03-28T19:49:20.557-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>IT Celebrity Deathmatch?</title><content type='html'>Apparently &lt;a href="http://en.wikipedia.org/wiki/James_Gosling"&gt;James Gosling&lt;/a&gt; joined Google today, and with&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Anders_Hejlsberg"&gt;Anders Hejlsberg&lt;/a&gt;&amp;nbsp;at Microsoft, I was reminded of this old claymation show for some reason. &amp;nbsp;Hmmm...&lt;br /&gt;&lt;div class="separator" style="float: left; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Tkm3NBZDnt0/TZEeC0sFizI/AAAAAAAAAKQ/XEYnKTPIsNk/s1600/220px-Anders_Hejlsberg.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/-Tkm3NBZDnt0/TZEeC0sFizI/AAAAAAAAAKQ/XEYnKTPIsNk/s200/220px-Anders_Hejlsberg.jpg" width="145" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="float: left; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YfWUoMsmdCQ/TZEeFvyTqSI/AAAAAAAAAKU/qzYAhoDod-c/s1600/220px-James_Gosling_2008.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-YfWUoMsmdCQ/TZEeFvyTqSI/AAAAAAAAAKU/qzYAhoDod-c/s200/220px-James_Gosling_2008.jpg" width="198" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3989362116544780936?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3989362116544780936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3989362116544780936'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/03/it-celebrity-deathmatch.html' title='IT Celebrity Deathmatch?'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Tkm3NBZDnt0/TZEeC0sFizI/AAAAAAAAAKQ/XEYnKTPIsNk/s72-c/220px-Anders_Hejlsberg.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-489764645393653630</id><published>2011-03-26T21:26:00.002-04:00</published><updated>2011-03-26T21:45:05.315-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Firefox 4... a major disappointment</title><content type='html'>&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-vZr1j0et7kQ/TY6TDdKdVGI/AAAAAAAAAKM/pD1TPPuR4Kg/s1600/Screen+shot+2011-03-26+at+9.28.24+PM.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="191" src="https://lh5.googleusercontent.com/-vZr1j0et7kQ/TY6TDdKdVGI/AAAAAAAAAKM/pD1TPPuR4Kg/s320/Screen+shot+2011-03-26+at+9.28.24+PM.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Battleship grey, and a bit uninspiring&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I've been a user of Mozilla's Firefox since it was first called Phoenix, then Firebird.&amp;nbsp; It's been an amazing web browser, but something has happened with this latest release of Firefox and I fear the magic has gone.&amp;nbsp; Google's release of its browser Chrome appears to have shaken things up at Mozilla, and the result is that Firefox 4 has become a cheap knock-off playing catch-up instead of the innovative leader.&amp;nbsp; Much like all the wanna-be iPads, Firefox has decided it wants to be Chrome and fails to distinguish itself.&lt;br /&gt;&lt;br /&gt;I was part of the beta test group that used Firefox 4, and I used it on both my PC and my Mac.&amp;nbsp; The deeper into the beta testing, the worse it got.&amp;nbsp; Consider the initial look - it's really, really ugly.&amp;nbsp; The tabs are uninspiring compared to Chrome, and the battleship grey on the Mac makes me throw up a little in my mouth.&amp;nbsp; Googling for "&lt;a href="http://www.google.com/#hl=en&amp;amp;sugexp=ldymls&amp;amp;xhr=t&amp;amp;q=firefox+4+fonts+look+bad&amp;amp;cp=13&amp;amp;qe=ZmlyZWZveCA0IGJhZA&amp;amp;qesig=ydv0d1c3JhbUcHIECDIXHQ&amp;amp;pkc=AFgZ2tk1r0wHXygd6rGgFdzHV_etRzHFfwadn98nsZJ2HruD34Ah0O_IMdpNKZq6cCpeF20GxfhilRHkZcDcxpNgMkBraajYtQ&amp;amp;pf=p&amp;amp;sclient=psy&amp;amp;aq=0b&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=firefox+4+bad&amp;amp;pbx=1&amp;amp;bav=on.2,or.r_gc.r_pw.&amp;amp;fp=6dcad21d8bd7a66e"&gt;Firefox fonts look bad&lt;/a&gt;" turns up a whole host of people who noticed too.&amp;nbsp; It looks pretty bad, and the solution appears to be messing around with settings in the about:config.&lt;br /&gt;&lt;br /&gt;Another oddity is that the download size has also more than tripled.&amp;nbsp; The last version of the 3.x series was just over 8MB.&amp;nbsp; The 4.x series comes in at a whopping 28MB.&amp;nbsp; Not huge by today's standards, but certainly noteworthy in it's stark contrast from the previous trim-and-slim size.&amp;nbsp; Firefox 4 has put on some sizable love handles, without much to show for it.&lt;br /&gt;&lt;br /&gt;The one new feature that appears to be somewhat innovative is the "tab groups".&amp;nbsp; This is sort of a task manager for your browser windows.&amp;nbsp; It seems neat at first, but it winds up being a solution in search of a problem. &amp;nbsp; Other than an initial time playing around, I've never felt the need to use this feature.&amp;nbsp; I find that when I get too many tabs, I just open a new browser window.&amp;nbsp; Then, you can actually drag tabs from one browser session to another.&amp;nbsp; Problem solved without this "tab groups" thing.&amp;nbsp; It seems like a lot of wasted development, which may have been part of why the download is so big and the final release was delayed so long.&amp;nbsp; Tab groups would have been better suited to a plug-in than a bloated browser feature.&lt;br /&gt;&lt;br /&gt;What's most notable to me about Firefox 4 isn't so much what's in it, but what's missing.&amp;nbsp; The orange RSS feed button that showed in your URL bar when a site you visited had a feed is sadly gone.&amp;nbsp; It's replaced with a hidden toolbar button, much like the bookmarks button that you have to find in the toolbar customization dialog.&amp;nbsp; However, it's really difficult to tell when the button is lit up indicating an available feed, so it's just not nearly as nice as the original.&amp;nbsp; Mozilla got this feature right a long time ago before any of the other browsers did, and then they threw it all away.&lt;br /&gt;&lt;br /&gt;The other head-scratcher is that they ditched the status bar, which is the bar that sits at the bottom of your screen and tells you what site you're about to go to when you hover over a link.&amp;nbsp; This move was presumably to mimic Chrome and regain some screen real estate for page content.&amp;nbsp; The trouble is, Mozilla also had this one right too and blew it.&amp;nbsp; Chrome lets its plugins take up precious space in the primary menu bar, whereas many Firefox plugins like Grease Monkey and Add Block Plus sit out of the way on the status bar.&amp;nbsp; So great is the love of the status bar, that there is a plugin called &lt;a href="https://addons.mozilla.org/en-us/firefox/addon/status-4-evar/"&gt;Status-4-Evar&lt;/a&gt; that brings it back which has over 100,000 downloads already.&lt;br /&gt;&lt;br /&gt;As far as quick, stable and functional, Firefox 4 does well here.&amp;nbsp; But frankly, that's to be expected from a browser that isn't Internet Explorer.&amp;nbsp; But much the same way the only thing John Kerry had going for him was that he wasn't George W. Bush, I'm not sure that just being better than Internet Explorer is going to work out for Firefox in the long run.&amp;nbsp; And I'm not convinced they're that much better than IE anymore... with IE9 now clearly the best browser ever to come from Microsoft, as well as Chrome being the best browser available today, Firefox is going to have to step up its game.&amp;nbsp; They need to quit pulling features that work and people love, quit trying to be Chrome and doing it badly, and quit coming up with complicated solutions to simple problems in an effort to look innovative.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-489764645393653630?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/489764645393653630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/489764645393653630'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/03/firefox-4-major-disappointment.html' title='Firefox 4... a major disappointment'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-vZr1j0et7kQ/TY6TDdKdVGI/AAAAAAAAAKM/pD1TPPuR4Kg/s72-c/Screen+shot+2011-03-26+at+9.28.24+PM.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3393514462597503021</id><published>2011-03-20T16:59:00.004-04:00</published><updated>2011-03-20T18:10:47.568-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Amazon Prime and our giant Sasquatch-sized carbon footprint</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-7yGzASO8adk/TYZh5R9p6dI/AAAAAAAAAKE/hoyeyLgiNYk/s1600/footprint.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="150" src="http://3.bp.blogspot.com/-7yGzASO8adk/TYZh5R9p6dI/AAAAAAAAAKE/hoyeyLgiNYk/s200/footprint.jpeg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;We recently tried &lt;a href="http://www.amazon.com/gp/prime/"&gt;Amazon Prime&lt;/a&gt;&amp;nbsp;free for a month on the recommendation of a friend. Amazon Prime is a service Amazon.com offers where you get free two-day shipping on most everything you order directly from Amazon. The service runs $79 a year, but the idea is that with free shipping and frequent orders, enhanced customer service and saved trips out, it'll pay for itself quickly.&lt;br /&gt;&lt;br /&gt;Let's say you keep a list of items you need from the store on your next trip. &amp;nbsp;With Amazon Prime, in theory, instead of keeping that list you could order the item from Amazon and it would probably arrive at your house before you made that next trip to the store(s). &amp;nbsp;If you used it that way, it would change the way you shopped. &amp;nbsp;And that was the way we tried to use it - as a way to order anything we thought we would have picked up on our next trip out. &amp;nbsp;The kids wanted to spend allowance on Nerf guns, so we did the research online and ordered in our PJs. &amp;nbsp;I wanted to get Beth a nice necklace for her birthday. &amp;nbsp;We knew we needed a baby gate and some odds-and-ends for Alison. &amp;nbsp;Whenever we thought of something we 'needed', we ordered it.&lt;br /&gt;&lt;br /&gt;Of course, there were things that didn't qualify for the free 2-day shipping because Amazon wasn't the supplier, but just a storefront for someone else. &amp;nbsp;And there were things that weren't cheaper on Amazon, even with the free shipping. &amp;nbsp;And there was the knowledge that Amazon doesn't do sales tax, so I'd have to keep track of it for filing my state&amp;nbsp;taxes next April. &amp;nbsp;And things like baby food had to be bought in bulk because you can't get that stuff in small packages online. &amp;nbsp;And every review was begging to be read for every purchase because there were there, and somehow random people on the internet started to have some say in what I bought. &amp;nbsp;The UPS guy started having conversations with me like we were old friends. &amp;nbsp;I was making two trips a week to the recycling drop-off to account for all the extra boxes. &amp;nbsp;And it wasn't just the boxes and deliveries started to add up - so did the&amp;nbsp;credit card bill. &amp;nbsp;Not too bad, but certainly not typical.&lt;br /&gt;&lt;br /&gt;And after a month of watching this occur, it became obvious to us what we were sacrificing so that we didn't have to plan for or think about our purchases. &amp;nbsp;What was the real cost of this&amp;nbsp;&lt;i&gt;convenience&lt;/i&gt;&amp;nbsp;- in manpower, in shipping and handling, packaging, fuel, and ultimately to our expectations? &amp;nbsp;How had our attitude toward planning and budgeting and smart shopping changed? &amp;nbsp;How had our strong beliefs in living simply, spending wisely, budgeting effectively, and being good stewards of our world held up? &amp;nbsp;I wasn't sure I liked those answers, and so we happily let our month-long trial expire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3393514462597503021?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3393514462597503021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3393514462597503021'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/03/amazon-prime-and-our-giant-sasquatch.html' title='Amazon Prime and our giant Sasquatch-sized carbon footprint'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-7yGzASO8adk/TYZh5R9p6dI/AAAAAAAAAKE/hoyeyLgiNYk/s72-c/footprint.jpeg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7003865342427772429</id><published>2011-03-19T15:52:00.001-04:00</published><updated>2011-03-19T15:53:24.755-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Fun with DynamicObject and making .NET reflection less painful</title><content type='html'>If you're a Microsoft techie, you probably noticed that RC1 of Entity Framework 4.1 was released this week. &amp;nbsp;One of the things I've been waiting for with EF is the&amp;nbsp;ability to run cross database queries on the same server - for example, being able to join &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MyDB.dbo.MyTable&lt;/span&gt; to &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;YourDB.dbo.YourTable&lt;/span&gt; when MyDB and YourDB are SQL Server databases on the same server. &amp;nbsp;It's crazy that MS hasn't added this feature yet, since they seem to want to speed up EF adoption and since Linq-to-SQL does this perfectly. &amp;nbsp;But, I don't want to actually talk about this... this isn't what this post is about. &amp;nbsp;This issue is what started me on a different track.&lt;br /&gt;&lt;br /&gt;You see, I wondered if there was a way to hack this functionality in by examining the EF code using Red Gate's Reflector tool. &amp;nbsp;As I examined the guts of EF, the parts that mattered were buried deep in the code - internal objects and private properties and methods. &amp;nbsp;Figuring out the code seemed like it would be way easier if I could examine the guts and change parts at run-time (I haven't figured this out by the way, so if you're here hoping I cracked this nut, you need to go back to Microsoft and the EF team and complain to them). &amp;nbsp;In order to really examine the code though, I'd need to use reflection and call methods and properties of private areas of the code, which is always a painful experience. &amp;nbsp;And that's when I turned to the new dynamic features of C#, and is the topic of this post.&lt;br /&gt;&lt;br /&gt;If you don't know about the dynamic keyword in C#, it's purpose is to remove the compile time type safety on a variable. &amp;nbsp;If a variable is declared dynamic, you can call properties and methods on the variable and those calls aren't handled until run-time. &amp;nbsp;Those properties and methods may not exist, but you can intercept those calls and do some magic with them, like dynamically adding those properties or methods to the object. &amp;nbsp;See this &lt;a href="http://stackoverflow.com/questions/3098300/why-isnt-xmldocument-dynamic-in-net-4/3200107#3200107"&gt;stackoverflow question here&lt;/a&gt; and my answer to get some idea of how this works. &amp;nbsp;This sort of thing is nothing new for users of dynamic languages like Ruby, but for compile time checked languages, this is a really nice advancement.&lt;br /&gt;&lt;br /&gt;So, all that to say, I decided to&amp;nbsp;experiment&amp;nbsp;with the dynamic features to provide a much simpler way of accessing private and protected aspects of a class at run-time. &amp;nbsp;I've code named this project "LookingGlass" as a play on reflection. &amp;nbsp;Here's a sample:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Dynamic;&lt;br /&gt;using System.Reflection;&lt;br /&gt;&lt;br /&gt;public class LookingGlass : DynamicObject {&lt;br /&gt; public dynamic TheObject { get; private set; }&lt;br /&gt; public Type TheObjectType;&lt;br /&gt;&lt;br /&gt; public LookingGlass(dynamic theObject) {&lt;br /&gt;  this.TheObject = theObject;&lt;br /&gt;  this.TheObjectType = this.TheObject.GetType();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) {&lt;br /&gt;  result = null;&lt;br /&gt;  int index = (int)indexes[0];&lt;br /&gt;  var value = this.TheObject[index];&lt;br /&gt;  result = new LookingGlass(value);&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public override bool TryGetMember(GetMemberBinder binder, out object result) {&lt;br /&gt;  result = null;&lt;br /&gt;&lt;br /&gt;  var field = GetField(binder.Name);&lt;br /&gt;  if (field != null) {&lt;br /&gt;   var value = field.GetValue(this.TheObject);&lt;br /&gt;   result = new LookingGlass(value);&lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  var prop = GetProperty(binder.Name);&lt;br /&gt;  if (prop != null) {&lt;br /&gt;   var value = prop.GetValue(this.TheObject, null);&lt;br /&gt;   result = new LookingGlass(value);&lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;   &lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result) {&lt;br /&gt;  result = null;&lt;br /&gt;  var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod;&lt;br /&gt;  var value = this.TheObjectType.InvokeMember(binder.Name, flags, Type.DefaultBinder, this.TheObject, args);&lt;br /&gt;  if (value != null) {&lt;br /&gt;   result = new LookingGlass(value);&lt;br /&gt;  }&lt;br /&gt;  return true;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private FieldInfo GetField(string fieldName) {&lt;br /&gt;  var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;&lt;br /&gt;  var field = this.TheObjectType.GetField(fieldName, flags);&lt;br /&gt;  return field;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private PropertyInfo GetProperty(string propertyName) {&lt;br /&gt;  var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;&lt;br /&gt;  var prop = this.TheObjectType.GetProperty(propertyName, flags);&lt;br /&gt;  return prop;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public override string ToString() {&lt;br /&gt;  return this.TheObject.ToString();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Obviously, this is quite a lot to take in, but the&amp;nbsp;gist&amp;nbsp;of this is that this lets you open up any object as if it's private fields, methods, and properties were all public. &amp;nbsp;It's not exactly fast, nor was it designed to be robust if the thing you're calling isn't part of that object, but this solved my immediate need of inspecting some of the Entity Framework guts at run time. &amp;nbsp;To use this, make yourself a class called Test() and put some private fields, methods, or properties on it and then call it like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: csharp"&gt;var tst = new Test();&lt;br /&gt;dynamic totallyOpenObj = new LookingGlass(tst);&lt;br /&gt;Console.WriteLine(totallyOpenObj._privateField);&lt;br /&gt;Console.WriteLine(totallyOpenObj.InternalMethod("asdf"));&lt;br /&gt;Console.WriteLine(totallyOpenObj.PrivateProp.PrvProp2[10]);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can also chain calls as each object returned is a new dynamic LookingGlass object that lets you explore it as well. &amp;nbsp;It handles overloaded methods and indexers too. &amp;nbsp;If you'd like to change the objects you're interrogating, DynamicObject lets you override TrySetMember and TrySetIndex and their ilk. &amp;nbsp;Hope this gives you some ideas on where you can go with the new dynamic features in C#. &amp;nbsp;This opens up a whole new world of possibilities for C# devs. &amp;nbsp;Happy coding!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7003865342427772429?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7003865342427772429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7003865342427772429'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/03/fun-with-dynamicobject-and-making-net.html' title='Fun with DynamicObject and making .NET reflection less painful'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8101629797223286807</id><published>2011-03-03T01:00:00.007-05:00</published><updated>2011-03-03T07:43:27.360-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Poetry</title><content type='html'>The fun things you find when digging through old hard drives... here are some poems I've run across from a very long time ago when I actually had time to write poetry...&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: #660000;"&gt;&lt;i&gt;Leaving...&lt;/i&gt;&lt;br /&gt;“better to leave when you don’t want to”&lt;br /&gt;She Says&lt;br /&gt;but that kind of absence appeals only to the tortured&lt;br /&gt;or to hermits&lt;br /&gt;of which I am neither&lt;br /&gt;&lt;br /&gt;but the idea seems so intriguing&lt;br /&gt;That I Am&lt;br /&gt;forced to consider&lt;br /&gt;that maybe friends ought to try harder&lt;br /&gt;to leave before they want to&lt;br /&gt;&lt;br /&gt;if it means that&lt;br /&gt;Her Very&lt;br /&gt;last thoughts&lt;br /&gt;were not wanting to leave&lt;br /&gt;‘cause those thoughts were mine too&lt;br /&gt;&lt;br /&gt;Best Friend&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Mind you, I'm not saying these are necessarily any good...&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;b&gt;Spork…&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Why?  What is the point&lt;br /&gt;in the sharing of joints&lt;br /&gt;between two things that we eat with.&lt;br /&gt;Why did they do it?&lt;br /&gt;Who could construe it?&lt;br /&gt;Did they think that it was a gift?&lt;br /&gt;&lt;br /&gt;I wonder the maker.&lt;br /&gt;a Monk or a Quaker&lt;br /&gt;in some lab somewhere out there.&lt;br /&gt;He’s crazy and old,&lt;br /&gt;or bitter and cold&lt;br /&gt;with some wild, freaky white hair.&lt;br /&gt;&lt;br /&gt;I can picture the place&lt;br /&gt;and the look on his face&lt;br /&gt;when he came up with this “plan.”&lt;br /&gt;I can see the light&lt;br /&gt;as his face got bright&lt;br /&gt;and he asked his friend for a hand.&lt;br /&gt;&lt;br /&gt;They glued those utensils&lt;br /&gt;like erasers and pencils&lt;br /&gt;And stared again and again.&lt;br /&gt;This monster’s to lewd&lt;br /&gt;to use on your food&lt;br /&gt;Stabbing with Siamese twins.&lt;br /&gt;&lt;br /&gt;But they proceeded to patent&lt;br /&gt;I wish that they hadn’t&lt;br /&gt;subjected the world to this tool.&lt;br /&gt;It’s called a spork,&lt;br /&gt;it’s neither a spoon nor a fork&lt;br /&gt;and to eat with it you look like a fool.&lt;/blockquote&gt;&lt;br /&gt;And now that I've weeded out the riff-raff with the last two, I'll share two more I really like with those who made it this far... This one reminds me of holding Alison...&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="color: #073763;"&gt;&lt;i&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;A thousand kisses just aren't enough &lt;/i&gt;&lt;br /&gt;&lt;i&gt;to hold the memory of her touch &lt;/i&gt;&lt;br /&gt;&lt;i&gt;and millions more would not begin &lt;/i&gt;&lt;br /&gt;&lt;i&gt;to grasp the softness of her skin &lt;/i&gt;&lt;br /&gt;&lt;i&gt;Those big blue eyes and thoughtful gaze &lt;/i&gt;&lt;br /&gt;&lt;i&gt;float off, into her sleepy daze &lt;/i&gt;&lt;br /&gt;&lt;i&gt;And there upon my arm she sleeps &lt;/i&gt;&lt;br /&gt;&lt;i&gt;Moments fleeting I yearn to keep&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;And this one, which always makes me want to write again, and shows my appreciation for a really fine pen... &lt;br /&gt;&lt;blockquote style="color: #274e13;"&gt;&lt;b&gt;&lt;i&gt;mightier than…&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;a green pen’s liquid&lt;/i&gt;&lt;br /&gt;&lt;i&gt;random, scribbled ink&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Bleeding chlorophyll&lt;/i&gt;&lt;br /&gt;&lt;i&gt;breeding as it flows&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Planted by the silky hands of an angel&lt;/i&gt;&lt;br /&gt;&lt;i&gt;an angel loved by mere primates&lt;/i&gt;&lt;br /&gt;&lt;i&gt;primates who’s hands could never hope&lt;/i&gt;&lt;br /&gt;&lt;i&gt;to leak such beauty&lt;/i&gt;&lt;br /&gt;&lt;i&gt;As the soundless words.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;like the blood of The Savior&lt;/i&gt;&lt;br /&gt;&lt;i&gt;An angel with actions so fluid&lt;/i&gt;&lt;br /&gt;&lt;i&gt;that the seeds on the paper never thirst &lt;/i&gt;&lt;br /&gt;&lt;i&gt;Motion so liquid that one cannot help&lt;/i&gt;&lt;br /&gt;&lt;i&gt;but to thirst, to drink, to sip&lt;/i&gt;&lt;br /&gt;&lt;i&gt;to tenderly, gingerly, lift to the mouth&lt;/i&gt;&lt;br /&gt;&lt;i&gt;But by lifting the pen&lt;/i&gt;&lt;br /&gt;&lt;i&gt;the life flowing must cease&lt;/i&gt;&lt;br /&gt;&lt;i&gt;and leave the plants thirsty&lt;/i&gt;&lt;br /&gt;&lt;i&gt;begging for more&lt;/i&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8101629797223286807?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8101629797223286807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8101629797223286807'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/03/poetry.html' title='Poetry'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-9085795705059763210</id><published>2011-02-17T14:15:00.001-05:00</published><updated>2011-02-17T14:15:36.488-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Linq with XML literals</title><content type='html'>Every once in awhile I write something in VB that feels like the days-long-gone when I did crazy-kung-fu Perl/Ruby.&amp;nbsp; It's a strange mix of being proud, shocked, and slightly embarassed, but thrilled that the problem is fully solved.&amp;nbsp; Is it ugly - like a pitbull with lipstick, youbetcha!&amp;nbsp; But still, for those who really dig Linq and think that XML literals in VB are pretty slick, check this out - it converts a System.Data.DataTable to an XHTML table that I could then use in a quick-and-dirty e-mail alert I needed to send out based on the results of some ad-hoc queries.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Public Shared Function ToHtml(ByVal dt As DataTable) As System.Xml.Linq.XDocument&lt;br /&gt; Dim resultHtml = _&lt;br /&gt;  &amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;  &amp;lt;table name=&amp;lt;%= dt.TableName %&amp;gt;&amp;gt;&lt;br /&gt;   &amp;lt;tr class="row0"&amp;gt;&amp;lt;%= dt.Columns.Cast(Of DataColumn)().Select(Function(cl, idx) &amp;lt;th class=&amp;lt;%= "col" + (idx + 1).ToString() %&amp;gt;&amp;gt;&amp;lt;%= cl.ColumnName %&amp;gt;&amp;lt;/th&amp;gt;) %&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;   &amp;lt;%= dt.AsEnumerable().Select(Function(rw, rowidx) &amp;lt;tr class=&amp;lt;%= "row" + (rowidx + 1).ToString() %&amp;gt;&amp;gt;&lt;br /&gt;   &amp;lt;%= dt.Columns.Cast(Of DataColumn)().Select(Function(cl, idx) &amp;lt;td class=&amp;lt;%= "col" + (idx + 1).ToString() %&amp;gt;&amp;gt;&amp;lt;%= rw(cl.ColumnName) %&amp;gt;&amp;lt;/td&amp;gt;) %&amp;gt;&lt;br /&gt;   &amp;lt;/tr&amp;gt;) %&amp;gt;&lt;br /&gt;  &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;br /&gt; Return resultHtml&lt;br /&gt;End Function&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-9085795705059763210?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/9085795705059763210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/9085795705059763210'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/02/linq-with-xml-literals.html' title='Linq with XML literals'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8514502161147368482</id><published>2011-02-14T20:57:00.000-05:00</published><updated>2011-02-14T20:57:33.524-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Birthday kitty</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;Happy birthday Caméra.&amp;nbsp; You have undeniably made me into a cat person.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-uAgst6VdqQw/TViO9rIMqgI/AAAAAAAAAKA/YGldjKBJ9jg/s1600/Cammy2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-uAgst6VdqQw/TViO9rIMqgI/AAAAAAAAAKA/YGldjKBJ9jg/s640/Cammy2.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8514502161147368482?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8514502161147368482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8514502161147368482'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/02/birthday-kitty.html' title='Birthday kitty'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-uAgst6VdqQw/TViO9rIMqgI/AAAAAAAAAKA/YGldjKBJ9jg/s72-c/Cammy2.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-6187977090710714477</id><published>2011-02-13T09:00:00.002-05:00</published><updated>2011-02-13T12:41:07.848-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>My battle with iTunes continues</title><content type='html'>My battle with iTunes as the official &lt;i&gt;worst-music-management-software-I've-ever-used&lt;/i&gt; continues.&amp;nbsp; I'm moving music from my old computer to my new computer and I'm trying to figure out how to keep my metadata.&amp;nbsp; Since I don't let iTunes manage my music as much as possible, I've just copied .mp3 files over.&amp;nbsp; Well, of course that means that I lose my album art work, which means I have to ask iTunes to get it for me again - and of course it never gets it right.&amp;nbsp; I wound up using Dropbox to save the correct artwork from my old machine for each one that iTunes got wrong and then album by album tediously corrected it on the new machine.&amp;nbsp; and Point to Me, but I still wind up the one who loses :(&lt;br /&gt;&lt;br /&gt;However, now comes time to figure out my star ratings.&amp;nbsp; This one was a real head scratcher, until my Bing searches brought me to an answer - here's the process:&lt;br /&gt;&lt;br /&gt;On the old computer, make 5 playlists, one for each star rating and add your music to those lists.&amp;nbsp; Then, export the playlist from the old computer and import into the new one.&amp;nbsp; It doesn't matter where the files reside, just that iTunes knows about them.&amp;nbsp; Then, select all the songs in each of those playlists and assign the star rating for all the songs in each playlist.&amp;nbsp; Genius!&amp;nbsp; The whole process took less than 10 minutes and made me much less frustrated than I thought I would be, and way easier than the album artwork issue.&amp;nbsp; Point to iTunes.&amp;nbsp; The stalemate continues...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-6187977090710714477?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6187977090710714477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6187977090710714477'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/02/my-battle-with-itunes-continues.html' title='My battle with iTunes continues'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1535939931168109174</id><published>2011-02-12T08:42:00.000-05:00</published><updated>2011-02-12T08:42:40.868-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Dropbox and Junctions</title><content type='html'>If you haven't tried Dropbox, it's quite the nice little utility.  It's 2GB of free online storage for whatever.  Just sign up, download the app, and drop files in your Dropbox folder and they get synced so that you can access them from anywhere.  There's even mobile apps so you can get at your files on your iPhone or Andriod device.  Nice.&lt;br /&gt;&lt;br /&gt;The main trouble people seem to have with it is that they don't want to store their files in their &lt;b&gt;dropbox&lt;/b&gt; folder, so they have to &lt;b&gt;copy&lt;/b&gt; their files from the original place and try to keep them synced.&amp;nbsp; Here's a little trick I've been using and it works great.&amp;nbsp; Windows Vista and above has a built-in feature called junctions.&amp;nbsp; Junctions, for those initiated in the Unix world, are essentially hard links.&amp;nbsp; Basically the concept is you have a folder for a few photos here: "C:\Users\MattMc3\My Photos\Vacation Pix 2011".&amp;nbsp; You'd like those to by synced via dropbox, which is located here: "C:\Users\MattMc3\Dropbox".&amp;nbsp; You can create a junction from your Dropbox folder into your Vacation Pix folder and when you delete from one, you'll delete from both.&amp;nbsp; When you change one, you'll change both.&amp;nbsp; When you add to one, you'll add to both.&amp;nbsp; The folders are the same... you don't have a copy, you have a mirror.&lt;br /&gt;&lt;br /&gt;The magic is in a little DOS command called &lt;b&gt;mklink&lt;/b&gt;.&amp;nbsp; On your Windows 7 or Vista computer with dropbox already installed, do the following:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Start Menu -&amp;gt; type "&lt;span style="color: blue;"&gt;cmd&lt;/span&gt;" to get to a command line&lt;/li&gt;&lt;li&gt;Change your directory to your dropbox folder by typing &lt;span style="color: blue;"&gt;cd "C:\Users\MattMc3\Dropbox"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Type: &lt;span style="color: blue;"&gt;mklink /J Vacation Pix "C:\Users\MattMc3\My Photos\Vacation Pix 2011"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;Watch in awe as Dropbox picks up your files and syncs them.&amp;nbsp; It doesn't matter which folder you drop a file, it'll sync both ways because this isn't a copy - it's a mirror.&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;Now, 2GB really isn't enough to store a lot of photos, but I have been running VisualSVN as my source code repository for awhile and I wanted to get it synced to Dropbox.&amp;nbsp; This is source code all the way back to Pascal code from High School, C++ from college, and personal projects from 10+ years of .NET.&amp;nbsp; I don't really need a 2-way mirror backup, I just wanted to keep C:\SVN as my repository location and still get backups.&amp;nbsp; Thanks to junctions, I can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1535939931168109174?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1535939931168109174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1535939931168109174'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/02/dropbox-and-junctions.html' title='Dropbox and Junctions'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-5935354476754647407</id><published>2011-01-31T11:21:00.000-05:00</published><updated>2011-01-31T11:21:03.020-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snippet'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><title type='text'>More fun with Linq - DateTime Quarters</title><content type='html'>Here's a fun little query to get the quarters for a calendar year...  Put this straight into LinqPad and check it out.  Of course, LinqPad still requires EOL underscores for line continuations hence the syntactic clutter.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;Dim quarters = _&lt;br /&gt;   From q In Enumerable.Range(1, 4).Select(Function(x) New DateTime(DateTime.Now.Year, ((x-1) * 3) + 1, 1)) _&lt;br /&gt;   Select New With { _&lt;br /&gt;      .QtrStart = q, _&lt;br /&gt;      .QtrEnd = q.AddMonths(3).AddMilliseconds(-1) _&lt;br /&gt;   }&lt;br /&gt;quarters.Dump()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-5935354476754647407?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5935354476754647407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5935354476754647407'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/01/more-fun-with-linq-datetime-quarters.html' title='More fun with Linq - DateTime Quarters'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2235661313858118881</id><published>2011-01-27T09:58:00.004-05:00</published><updated>2011-01-27T13:21:47.306-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Pratical Linq</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/TUGul7Awl4I/AAAAAAAAAJ4/yk5ZE74DepQ/s1600/FileSize.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;br /&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/TUGul7Awl4I/AAAAAAAAAJ4/yk5ZE74DepQ/s320/FileSize.png" width="261" /&gt;&lt;/a&gt;&lt;/div&gt;So my last post on Linq is a bit short on details.&amp;nbsp; Here's a problem I was recently trying to solve.&amp;nbsp; Our company's 4-digit postal code extension changed, and our corporate Outlook signature files all needed updated.&amp;nbsp; There doesn't appear to be any easy way to do this via any of the tools we have.&amp;nbsp; However, we are using roaming profiles in Windows so all of our corporate profiles are in one common network location.&amp;nbsp; The trouble is, how do we query for all the signature files and how do we do it FAST?&lt;br /&gt;&lt;br /&gt;There are 250,000+ files in 100,000+ folders in the roaming profiles area. &amp;nbsp;Imagine how long this would take with a simplistic System.IO.Directory.GetFiles() call that then dug through 250,000+ files trying to find what I wanted. &amp;nbsp;No way!&lt;br /&gt;&lt;br /&gt;Linq to the rescue!&lt;br /&gt;&lt;br /&gt;First off, Outlook signatures are located off the Application Data folder where there are a ton of other files.&amp;nbsp; On our network, all users' Windows application profile folders are here: &lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;"\\serverXYZ\RoamingData\Applications\"&lt;/span&gt;.&amp;nbsp; From this root directory, you get into the users' directories and then each user has their own signature folder.&amp;nbsp; So, John Doe's signatures are here: &lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;"\\serverXYZ\RoamingData\Applications\&lt;b style="color: red;"&gt;John.Doe&lt;/b&gt;&lt;span style="color: purple;"&gt;\Application Data\Microsoft\Signatures\&lt;/span&gt;"&lt;/span&gt; and Jane Doe's are here: &lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;"\\serverXYZ\RoamingData\Applications\&lt;/span&gt;&lt;b style="color: red; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Jane.Doe&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;span style="color: purple;"&gt;\Application Data\Microsoft\Signatures\&lt;/span&gt;"&lt;/span&gt;.&amp;nbsp; I don't want to search every single directory for sigs since I should be able to get into only the directories I need.&amp;nbsp; So here's the Linq query I used to get there - by the way, this is all in VB.NET using Option Infer:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;Dim baseDir = "\\serverXYZ\RoamingData\Applications"&lt;br /&gt;Dim sigDirs =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;From a In Directory.GetDirectories(baseDir)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let sigPath = New DirectoryInfo(Path.Combine(a, "Application Data\Microsoft\Signatures"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Where sigPath.Exists&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Select sigPath&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By habit and convention, I tend to name my selection variables in my Linq queries a, b, c, etc...&amp;nbsp; I used the magic "Let" keyword to assign a variable in the middle of my query.&amp;nbsp; This query is pretty simple - it starts off in the base directory I mentioned earlier to get the users' directories, and then it assembles their signature directory and returns an &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;IEnumerable(Of System.IO.DirectoryInfo)&lt;/span&gt; of all the paths that exist.&lt;br /&gt;&lt;br /&gt;Now, I need to get the signature files themselves.&amp;nbsp; Outlook makes 3 signature files, one in text format, one in rich text format, and an HTML one.&amp;nbsp; I decided to hinge everything off of finding the .txt file first.&amp;nbsp; I used the little understood and slightly dreaded SelectMany() extension.&amp;nbsp; If you are unfamiliar, &lt;a href="http://www.codethinked.com/post/2010/03/12/A-Visual-Look-At-The-LINQ-SelectMany-Operator.aspx"&gt;here's a better explaination that I could hope to give&lt;/a&gt;.&amp;nbsp; So, here is the query to get the sig files:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;Dim sigFiles =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;From a In sigDirs.SelectMany(Function(d) Directory.GetFiles(d.FullName, "*.txt"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let txt = New FileInfo(a)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let rtf = New FileInfo(Path.ChangeExtension(a, "rtf"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let htm = New FileInfo(Path.ChangeExtension(a, "htm"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Where rtf.Exists _&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;AndAlso htm.Exists&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Order By txt.FullName&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Select New With {.Txt = txt, .Rtf = rtf, .Htm = htm}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This query looks in all the users' signature directories and gets all the .txt files from that directory where there's also an RTF and an HTM version of the same file.&amp;nbsp; It returns an &lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;IEnumerable(Of &lt;anonymous type=""&gt;)&lt;/anonymous&gt;&lt;/span&gt; with .Txt, .Rtf, and .Htm System.IO.FileInfo properties.&lt;br /&gt;&lt;br /&gt;Now, I have all the signature files.&amp;nbsp; And I know that they are stored in the Latin-1 format, so I'm going to iterate through them and do the replacement.&amp;nbsp; I'm making some assumptions here, like that the zip codes in the RTF and HTM files aren't bisected by style elements, but based on analysis of the files, I know that to be a reasonable tactic.&lt;br /&gt;&lt;br /&gt;So here's the final VB.NET method in its 30 lines of splendor:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: vb"&gt;Public Shared Sub DoSignatureFileUpdate(ByVal oldZip As String, ByVal newZip As String)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim baseDir = "\\serverXYZ\RoamingData\Applications"&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim result As New List(Of String)()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim sigDirs =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;From a In Directory.GetDirectories(baseDir)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let sigPath = New DirectoryInfo(Path.Combine(a, "Application Data\Microsoft\Signatures"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Where sigPath.Exists&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Select sigPath&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim sigFiles =&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;From a In sigDirs.SelectMany(Function(d) Directory.GetFiles(d.FullName, "*.txt"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let txt = New FileInfo(a)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let rtf = New FileInfo(Path.ChangeExtension(a, "rtf"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Let htm = New FileInfo(Path.ChangeExtension(a, "htm"))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Where rtf.Exists _&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AndAlso htm.Exists&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Order By txt.FullName&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Select New With {.Txt = txt, .Rtf = rtf, .Htm = htm}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;For Each fnfo In sigFiles.SelectMany(Function(x) {x.Txt, x.Rtf, x.Htm})&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim latin1 = System.Text.Encoding.GetEncoding(1252)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim contents = File.ReadAllText(fnfo.FullName, latin1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Dim newContents = contents.Replace(oldZip, newZip)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;If newContents &amp;lt;&amp;gt; contents Then&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;File.WriteAllText(fnfo.FullName, newContents, latin1)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Console.WriteLine(fnfo)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;End If&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Next&lt;br /&gt;End Sub&lt;/pre&gt;&lt;br /&gt;Really powerful stuff. &amp;nbsp;This whole process took less than 2 seconds to run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2235661313858118881?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2235661313858118881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2235661313858118881'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/01/pratical-linq.html' title='Pratical Linq'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/TUGul7Awl4I/AAAAAAAAAJ4/yk5ZE74DepQ/s72-c/FileSize.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7247093938188911354</id><published>2011-01-19T16:34:00.001-05:00</published><updated>2011-01-19T16:34:42.848-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Linq is awesome</title><content type='html'>I have said this at work at least once a day for the past 3 years.&amp;nbsp; It makes my job so much easier.&amp;nbsp; How did I ever manage without it?&amp;nbsp; Linq is AWESOME.&amp;nbsp; That is all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7247093938188911354?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7247093938188911354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7247093938188911354'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/01/linq-is-awesome.html' title='Linq is awesome'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2509360086141117037</id><published>2011-01-05T00:19:00.000-05:00</published><updated>2011-01-05T00:19:04.414-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Bringin' Down the Hammer</title><content type='html'>Mallett lost the Sugar Bowl today (barely), and Pelosi loses the gavel tomorrow (handily).&amp;nbsp; The tree is down, but the gifts keep coming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2509360086141117037?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2509360086141117037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2509360086141117037'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/01/bringin-down-hammer.html' title='Bringin&apos; Down the Hammer'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1965779997954556514</id><published>2011-01-02T19:24:00.004-05:00</published><updated>2011-01-02T21:44:28.843-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='faith'/><title type='text'>Am I my sister's keeper?</title><content type='html'>I have four quick stories about some events on my mind today:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;First&lt;/i&gt;, last night Beth and I attended a beautiful wedding, and the occasion was overflowing with joy.&amp;nbsp; The parents of the bride especially.&amp;nbsp; The father of the bride (Dale, whom we know) was asked to issue a challenge to the bride and groom.&amp;nbsp; I'll not share the whole thing, but to his new son-in-law he shared this paraphrased wisdom: "I know you think you know that men and women are different, but buddy you ain't seen nothin' yet.&amp;nbsp; She will act differently than you, think differently than you, and communicate differently than you.&amp;nbsp; Treat her gently, as if she were fragile, and love her as Christ loved loved His church and gave Himself sacrificially for her."&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Second&lt;/i&gt;, during this wedding reception Ms. Alison (6mo) was quite tired and needed to sleep.&amp;nbsp; I performed my daddy magic and took her to a quiet place and got her to sleep on my arm.&amp;nbsp; When I arrived back at the table, Alison had ooched her dress up against my arm while trying to get comfortable.&amp;nbsp; I hadn't noticed, but Beth mentioned that her honor was impugned, and a friend of ours sitting at our table commented to much laughter that he didn't know anything about her honor, but her belly was showing.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Third&lt;/i&gt;, speaking of weddings, before Beth and I were married we spent a summer weekend hanging out with a sizable group of people at a friend's home.&amp;nbsp; Years later, after we were married and had our first child, we attended a wedding for another college friend.&amp;nbsp; The mom of the friend whose house we stayed at came over to our table.&amp;nbsp; She exchanged pleasantries and then proceeded to inform the table about how she walked in on Beth and I while we were "making out" at her house.&amp;nbsp; This was a shock to Beth and I!&amp;nbsp; Not only at the lack of social grace, but also at the fact that the story &lt;b&gt;&lt;i&gt;wasn't true!&lt;/i&gt;&lt;/b&gt;&amp;nbsp; We were so caught off guard that our attempts to deny sounded oddly defensive, and she refused to drop it.&amp;nbsp; We still to this day cannot determine who she mistook us for, or how she came to this conclusion.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;And fourthly&lt;/i&gt;, there is a young married couple that goes to our church.&amp;nbsp; The young lady often chooses church clothing that, well, garners quite a bit of inappropriate attention - today from a whole row of drooling teenage boys who could not control themselves enough to face forward.&amp;nbsp; We wonder if she knows?&amp;nbsp; We wonder if her new husband knows?&amp;nbsp; Or, do they both know perfectly well and think other people are fully responsible for their own actions and responses and need to just get over it?&lt;br /&gt;&lt;br /&gt;The issue these stories bring to my mind is whether, as men, we are our sister's keeper.&amp;nbsp; This phrase is a variation of a verse that comes from the book of Genesis, after Cain killed his brother Abel.&amp;nbsp; God knew this had happened, and he confronted Cain about it:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Then the LORD said to Cain, "Where is your brother Abel?" "I don't know," he replied. "Am I my brother's keeper?" - Genesis 4:9&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;How much responsibility do we have to one another?&amp;nbsp; Should everyone be  free to make their own decisions, and are those who disagree  and say so merely judgmental?&amp;nbsp; Specifically, as men, what is our responsibility towards the women in our lives?&lt;br /&gt;&lt;br /&gt;As men, we need to take a really close look at the relationships with have with women - wife, mother, daughters, friends.&amp;nbsp; How do we treat them?&amp;nbsp; Do we value their honor?&amp;nbsp; Do we defend it?&amp;nbsp; Do we treat them as fragile - not because they are not strong, but because we as men are called to put aside our brutish ways and love them delicately?&amp;nbsp; Do we call out other Christian men for not defending the honor of the women in their lives?&lt;br /&gt;&lt;br /&gt;Concerning my second story, I want to be a father who defends my daughter's honor and purity until she finds that man who God set aside for her to spend her life with.&amp;nbsp; She may make choices that I don't agree with, but with temperance and wisdom, I want to gently guide her into adulthood and become like the dad from my first story.&amp;nbsp; Proverbs 22:6 tells me I should "&lt;i&gt;train a child in the way she should go, and when she is old she will not turn from it&lt;/i&gt;".&lt;br /&gt;&lt;br /&gt;Concerning my third story, I wish I would have had a stronger response to this situation.&amp;nbsp; My social desire to attempt politeness in response to a rude situation trumped my instinct to defend my wife's honor, but I've struggled with it since.&amp;nbsp; I was created to protect my wife and family, and I'm not convinced I did the right thing by seeking peace at the expense of truth.&lt;br /&gt;&lt;br /&gt;Concerning my forth story, Paul clearly states in 1 Timothy 2:9-10 about appropriate dress.&amp;nbsp; But he also states in Romans 14 that we should not judge one another.&amp;nbsp; But then he goes on to say, and this is key - that even if something is permissible, it is not always beneficial, and that if by doing something permissible we cause another brother or sister to stumble, then we are at fault.&amp;nbsp; We &lt;i&gt;are&lt;/i&gt; our brother's keeper.&amp;nbsp; We &lt;i&gt;are&lt;/i&gt; our sister's keeper.&amp;nbsp; Not for our own edification, but for His.&amp;nbsp; We are to hold one another accountable, not to judge, but to sharpen one another.&amp;nbsp; However that accountability, when not mutual, is not winsome.&amp;nbsp; So I believe that as men, we need to foster close relationships with other men and encourage each other to be leaders our homes if we want to see lasting change.&lt;br /&gt;&lt;br /&gt;And, best for last - as for the first story, that challenge is exactly how I want to treat my wife each day.&amp;nbsp; And, just as Dale raised his daughter to be grounded in faith, but also to soar high on the winds like eagles, I too want to be that joyous father giving his daughter to a loving and gentle man of faith.&amp;nbsp; Someday... not any time soon, mind you.&amp;nbsp; But someday.&amp;nbsp; Until then, I will raise her with honor, and be her keeper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1965779997954556514?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1965779997954556514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1965779997954556514'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2011/01/am-i-my-sisters-keeper.html' title='Am I my sister&apos;s keeper?'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-6203463713903587475</id><published>2010-12-12T19:29:00.000-05:00</published><updated>2010-12-12T19:29:48.079-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>You know there's been too much screen-time when...</title><content type='html'>...the most excited thing Caleb, our middle child, can say about the snow is that the rear wiper on the van looks like it's the slingshot from Angry Birds; catapulting wet snow globs toward far distant green piggies.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/TQVo3kTLgVI/AAAAAAAAAJw/Imnae2j8qdU/s1600/Angry+Birds.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/TQVo3kTLgVI/AAAAAAAAAJw/Imnae2j8qdU/s1600/Angry+Birds.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-6203463713903587475?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6203463713903587475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6203463713903587475'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/12/you-know-theres-been-too-much-screen.html' title='You know there&apos;s been too much screen-time when...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/TQVo3kTLgVI/AAAAAAAAAJw/Imnae2j8qdU/s72-c/Angry+Birds.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3626981987259178645</id><published>2010-11-29T22:38:00.001-05:00</published><updated>2010-11-30T07:13:13.214-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>The True Star Wars Empire</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 13px;"&gt;RIP&amp;nbsp;Irvin Kershner. &amp;nbsp;Lucas may have made Star Wars what it was, but you showed us what it could have been. &amp;nbsp;Thank you.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3626981987259178645?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3626981987259178645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3626981987259178645'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/11/true-empire.html' title='The True Star Wars Empire'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-978467590144435768</id><published>2010-11-20T13:25:00.001-05:00</published><updated>2010-11-20T21:10:31.127-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Depravity</title><content type='html'>It's come to this - a couple in Minnesota set up a blog [no link!] where anyone&amp;nbsp;&lt;a href="http://www.cnn.com/2010/US/11/19/minnesota.abortion/index.html"&gt;can vote on whether or not they should abort their child&lt;/a&gt;&amp;nbsp;[cnn.com, still no direct link!].&lt;br /&gt;&lt;br /&gt;If ever there were a time to be reminded to be on our knees daily, it is now.&lt;br /&gt;&lt;blockquote&gt;"The words of the wicked lie in wait for blood, but the speech of the upright rescues them." - Proverbs 12:6&lt;/blockquote&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt; - there's a good possibility that &lt;a href="http://personalmoneystore.com/moneyblog/2010/11/19/birth-or-not-hoax/"&gt;this site is a hoax&lt;/a&gt; , and my gut tells me it probably is, but whether it is or isn't real&amp;nbsp;doesn't change much about what I've said. &amp;nbsp;The commenters and "voters" building into this concept is humanity at its worst. &amp;nbsp;Likely that was the point, but the Jonathan Swift-ness of this modern day Modest Proposal doesn't make it any less grotesque.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-978467590144435768?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/978467590144435768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/978467590144435768'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/11/depravity.html' title='Depravity'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2785607243670027377</id><published>2010-11-02T00:25:00.000-04:00</published><updated>2010-11-02T00:25:46.502-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Not so minty fresh</title><content type='html'>I just discovered &lt;a href="http://www.linuxmint.com/"&gt;Linux Mint&lt;/a&gt; tonight.&amp;nbsp; It's a neat little Ubuntu based distro that adds all the goodies like, oh say, real wireless drivers and media codecs.&amp;nbsp; Booted from a live CD, played around, and am blogging from it now.&amp;nbsp; Snappy and polished.&amp;nbsp; Then I discovered &lt;a href="http://abriefhistory.org/?p=774"&gt;this&lt;/a&gt;.&amp;nbsp; Oh well... easy come, easy go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2785607243670027377?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2785607243670027377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2785607243670027377'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/11/not-so-minty-fresh.html' title='Not so minty fresh'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7551549910540748807</id><published>2010-10-28T23:01:00.004-04:00</published><updated>2010-10-28T23:09:47.740-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work bunk'/><title type='text'>Crystal balls, tea leaves, astrology, and personality profiles</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/TMo19dxylBI/AAAAAAAAAJs/Hyud40Lcl2c/s1600/Individuality.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="229" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/TMo19dxylBI/AAAAAAAAAJs/Hyud40Lcl2c/s320/Individuality.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;There is no end to the resources out there designed to condense the complexities of human motivations and &amp;nbsp;interactions into a few simple personality buckets, and then shoe horn people into those arbitrary categories. &amp;nbsp;I've been through &lt;a href="http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator"&gt;Myers-Briggs&lt;/a&gt;, &lt;a href="http://www.amazon.com/Spirit-Controlled-Temperament-Tim-LaHaye/dp/0842362207/ref=sr_1_1?ie=UTF8&amp;amp;qid=1288317162&amp;amp;sr=8-1"&gt;The Spirit Controlled Temperament&lt;/a&gt;, and now most recently the &lt;a href="http://www.piworldwide.com/Products/Predictive-Index-System/Science-of-the-Predictive-Index.aspx"&gt;Predictive Index&lt;/a&gt;. &amp;nbsp;I may even have been exposed to the test for the &lt;a href="http://en.wikipedia.org/wiki/Five_Factor_Model"&gt;Five Factor Model&lt;/a&gt; at a past job, but since I wasn't told what the test was for or my results I can't be sure. &amp;nbsp;But all these different bucketing mechanisms are cut from the same cloth - a fun little party game taken way too far to the point where management gets all giddy about it and hiring decisions are made off of it and there's a multi-million dollar a year consulting industry built up around pigeon holing people into these buckets and pretending like this one simple test with 86 subjective questions is real science. &amp;nbsp;And people buy it in droves.&lt;br /&gt;&lt;br /&gt;I don't doubt the rationality of some aspects of these categorizations. &amp;nbsp;Certainly it's obvious that there are some people who like organization, and others chaos. &amp;nbsp;Some people get energized by being around people, and some by being alone. &amp;nbsp;Some people like to be the boss of everything, and others would prefer to make things work behind the scenes. &amp;nbsp;Everyone is different in their motivations and expectations, and those things have an effect on people's interactions with each other. &amp;nbsp;But that information is only so useful, and not everything is so black-and-white. &amp;nbsp;Humans are complicated, and these "tests" over-simplify who we really are by elevating the results to be predictors of what makes us &lt;u&gt;&lt;i&gt;us&lt;/i&gt;&lt;/u&gt;&amp;nbsp;- what we'll enjoy, what will make us happy, how we'll perform a particular job. &amp;nbsp;It limits people's potential for change and growth, instills a monoculture of personality in workgroups, and frankly &lt;a href="http://www.inc.com/magazine/19980701/963.html"&gt;makes some people become really neurotic&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In a noble attempt to better understand each other, what these tests actually wind up doing instead is lumping people into categories that may or may not be accurate in any or all circumstances. &amp;nbsp;In trying to help us understand each other, I think it actually makes us understand each other less. &amp;nbsp;You start seeing people as High A, or Low B, or middle C, or High D. &amp;nbsp;Blue, Red, Green, or Yellow. &amp;nbsp;&lt;a href="http://www.myersbriggs.org/my-mbti-personality-type/mbti-basics/"&gt;ISFP or ENTJ&lt;/a&gt;. &amp;nbsp;Left-brained or right-brained. &amp;nbsp;It limits our ability to see who others really are, and their potential to change and grow beyond our limited view of which bucket they fit into today.&lt;br /&gt;&lt;br /&gt;Sometimes this sort of stereotyping has value, but often it's taken too far. &amp;nbsp;Some people like to label themselves. &amp;nbsp;Most people&amp;nbsp;like to label others. &amp;nbsp;Marketers and pollsters love to convince you that people are merely categories and are totally predictable. &amp;nbsp;Sometimes true. &amp;nbsp;But not always. &amp;nbsp;These tests are merely a weak attempt to bring pseudo-science into the high-art of human relationships. &amp;nbsp;Oh, and to line the pockets of many a consultant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7551549910540748807?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7551549910540748807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7551549910540748807'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/crystal-balls-tea-leaves-astrology-and.html' title='Crystal balls, tea leaves, astrology, and personality profiles'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/TMo19dxylBI/AAAAAAAAAJs/Hyud40Lcl2c/s72-c/Individuality.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7526403317843776313</id><published>2010-10-25T20:31:00.000-04:00</published><updated>2010-10-25T20:31:48.723-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>12 years...</title><content type='html'>Twelve years ago today, I kissed my future wife for the first time and we confessed our love for one another. &amp;nbsp;Two years later we were married. &amp;nbsp;Two years after that, we held our first baby in our arms. &amp;nbsp;Happy "dating anniversary" love of my life. &amp;nbsp;Never has another man been more blessed than I.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0b5394;"&gt;A wife of noble character who can find? &amp;nbsp;She is worth far more than rubies.&lt;br /&gt;Her husband has full confidence in her and lacks nothing of value.&lt;br /&gt;...&lt;br /&gt;"Many women do noble things, but you surpass them all."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt; Proverbs 31:10-11,29&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7526403317843776313?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7526403317843776313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7526403317843776313'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/12-years.html' title='12 years...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2778967975725388857</id><published>2010-10-22T09:30:00.002-04:00</published><updated>2010-10-22T09:30:00.772-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Youth and Invincibility</title><content type='html'>I'm writing this a few months before it'll be posted on the blog, but as I was driving home tonight from a late evening grocery run, I thought of a guy I kinda sort-of knew in high school.  I say "sort-of" because I don't really remember if he knew my name or if we ever said more than a few phrases to each other.  But regardless, even if I don't think of him often, I won't ever forget him.&lt;br /&gt;&lt;br /&gt;He was a year behind me in school.  On the school newspaper with me.  And one October weekend on the way to our school paper's pre-publishing marathon, Justin died in a fatal car crash.  That was now 15 years ago.&lt;br /&gt;&lt;br /&gt;Youth is so often forgiving of mistakes.  But not always.  The trouble is, as a teenager I remember believing that those sorts of things happened to other people, but not to me.  Only now do I fully realize the precipices that I was so close to - blind to their depth and treachery.  Only by the grace of God did I make it though to this amazing future I couldn't hardly have pictured at the time.  When you're finally reading this post in the fall, I will be 32 years old with 3 beautiful children and the most wonderful amazing and beautiful wife on the planet.  And Justin - he would have just turned 31 had he not lost his life at barely 16.&lt;br /&gt;&lt;br /&gt;I pray daily that my kids' choices will lead them on solid paths, and that their inevitable mistakes will merely be minor setbacks with only temporary consequences.  And I thank God for each new day I get to walk in His creation.  Rest in peace Justin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2778967975725388857?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2778967975725388857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2778967975725388857'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/youth-and-invincibility.html' title='Youth and Invincibility'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-9050386000091693636</id><published>2010-10-13T19:48:00.001-04:00</published><updated>2010-10-13T20:55:39.282-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Evidence Based IT</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Evidence-based_medicine"&gt;Evidence-based medicine&lt;/a&gt; is likely a term you've heard of. &amp;nbsp;It's a method doctors have developed to help properly diagnose and treat patients, as well as study the relative effectiveness of drugs and treatments with double-blind placebo controlled trials. &amp;nbsp;The advantage, of course, is that it's a method that is supposed to remove personal bias and drive decisions based on facts alone. &amp;nbsp;This sounds like a good scientific approach to lots of fields, not just medicine. &amp;nbsp;Including troubleshooting problems in IT. &amp;nbsp;Unfortunately, my experience has shown that that's a rarity in my field.&lt;br /&gt;&lt;br /&gt;Instead, I've often found that people in my field prefer to come up with a conclusion first and then seek out the facts to support it.&amp;nbsp;&amp;nbsp;Here's a typical example:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Manager&lt;/b&gt;: "There's a slowdown on the website, and the database is the most likely cause."&lt;br /&gt;&lt;b&gt;DBA&lt;/b&gt;: "I'll look, but what makes you think it's the database?"&lt;br /&gt;&lt;b&gt;Manager&lt;/b&gt;: "Past experience. &amp;nbsp;The database is always the cause."&lt;br /&gt;&lt;b&gt;DBA&lt;/b&gt;: "Everything seems fast. &amp;nbsp;No blocking, no errors logged, memory and processor looks good, and I/O is fine. &amp;nbsp;Who reported it and what were they doing?"&lt;br /&gt;&lt;b&gt;Manager&lt;/b&gt;: "Susie was browsing and she said things seemed slow.&amp;nbsp;Something's up. &amp;nbsp;Keep an eye on it today."&lt;br /&gt;&lt;br /&gt;&lt;i&gt;...sometime later...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;User&lt;/b&gt;: "There's a problem with my report"&lt;br /&gt;&lt;b&gt;Manager&lt;/b&gt;: "That's probably related to the database issues we've been having today"&lt;/blockquote&gt;&lt;br /&gt;Or, perhaps you're more familiar with this common phrase - "&lt;i&gt;have you tried rebooting?&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;Now, don't get me wrong. &amp;nbsp;There's no reason not to draw upon past experience for a &lt;i&gt;hypothesis&lt;/i&gt;. &amp;nbsp;The trouble comes when we come up with firm&amp;nbsp;&lt;i&gt;conclusions &lt;/i&gt;based on little or no actual tests or evidence. &amp;nbsp;We do this because it's quicker and easier, or because we want to snow some ignorant user, or perhaps because we can't see past our view of the world. &amp;nbsp;Some people can get away with this if their intuition is really good, but I prefer to see the proof.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-9050386000091693636?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/9050386000091693636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/9050386000091693636'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/evidence-based-it.html' title='Evidence Based IT'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8565039935398359714</id><published>2010-10-12T06:00:00.000-04:00</published><updated>2010-10-12T06:00:04.097-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><title type='text'>The USS Cole</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/TI2UOTsc6bI/AAAAAAAAAJA/p7GPlWKHXBA/s1600/cole.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_vk9s6T9uHh0/TI2UOTsc6bI/AAAAAAAAAJA/p7GPlWKHXBA/s320/cole.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;10 years ago today, during president Clinton's last few months in office, the USS Cole was attacked by Al-Qaeda suicide bombers in a port in Yemen.&amp;nbsp; 17 sailors were killed and 39 injured.&amp;nbsp; It's hard not to look back and wonder "what if?".&amp;nbsp; What if our response had been bigger then?&amp;nbsp; What if government agencies had communicated better?&amp;nbsp; &lt;a href="http://www.pbs.org/wgbh/pages/frontline/shows/knew/could/"&gt;What if the events of the following year could have been prevented&lt;/a&gt;?&amp;nbsp; Today we honor the memory of those who bravely put their lives on the line to defend liberty.&amp;nbsp; And we regret that we didn't take seriously the threat until too late.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8565039935398359714?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8565039935398359714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8565039935398359714'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/uss-cole.html' title='The USS Cole'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vk9s6T9uHh0/TI2UOTsc6bI/AAAAAAAAAJA/p7GPlWKHXBA/s72-c/cole.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2643832368577193058</id><published>2010-10-10T14:11:00.002-04:00</published><updated>2010-10-10T14:11:35.858-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>42!</title><content type='html'>Happy 10-10-10!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2643832368577193058?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2643832368577193058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2643832368577193058'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/42.html' title='42!'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8172438297803879182</id><published>2010-10-05T23:47:00.003-04:00</published><updated>2010-10-05T23:50:17.700-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Blogging from my phone</title><content type='html'>&lt;div class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/TKvxURPH-CI/AAAAAAAAAJk/6kfFhJUNfxo/s1600/photo-749696.PNG"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5524774698426562594" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/TKvxURPH-CI/AAAAAAAAAJk/6kfFhJUNfxo/s400/photo-749696.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;Unfortunately, I've not found an iPhone app that I like for blogging from my phone, but &lt;a href="http://blogger.com/"&gt;blogger.com&lt;/a&gt; has a feature where I can e-mail a post which is what I'm doing now.  I guess this works in a pinch, and I can always use Safari if I need to get fancy.&lt;br /&gt;Not a bad way to go for now at least.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update &lt;/b&gt;- and look, here's the post with the picture attachment - it showed up instantly. &amp;nbsp;Neat. &amp;nbsp;But I've gotta remember to come back and fix formatting and add tags and such.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8172438297803879182?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8172438297803879182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8172438297803879182'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/blogging-from-my-phone.html' title='Blogging from my phone'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/TKvxURPH-CI/AAAAAAAAAJk/6kfFhJUNfxo/s72-c/photo-749696.PNG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7074967953494599004</id><published>2010-10-04T21:51:00.003-04:00</published><updated>2010-10-04T22:17:55.044-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Site redesign, part 3</title><content type='html'>Finally, I've gotten back around to the next iteration of my blogger site redesign I &lt;a href="http://mattmc3.blogspot.com/2010/01/new-look.html"&gt;started in January&lt;/a&gt;.&amp;nbsp; I like it quite a bit.&amp;nbsp; It continues with my ice theme, and is distinctively mine.&amp;nbsp; It looks good in Firefox and Chrome as well as the iPhone. &amp;nbsp;It is tolerable in IE after rendering finishes, and resizes well.&amp;nbsp; I also had &lt;a href="http://www.bloggertricks.com/2009/07/how-to-host-your-template-images-in.html"&gt;a little help&lt;/a&gt; from some Googling.&amp;nbsp; It took me way too long to get around to it, and then it took me the past couple of days of tweaking to get it where I want.&amp;nbsp; Hopefully at this point I can go back to using the blog instead of tweaking it - this is after all supposed to be about the content.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/TKqKyqOx-NI/AAAAAAAAAJg/_LAprGQVyuM/s1600/pslam+-+2.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/TKqKyqOx-NI/AAAAAAAAAJg/_LAprGQVyuM/s1600/pslam+-+2.0.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/TKqEafNHyVI/AAAAAAAAAJU/pkD5e1rubOU/s1600/pslam+-+2.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7074967953494599004?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7074967953494599004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7074967953494599004'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/site-redesign-part-3.html' title='Site redesign, part 3'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/TKqKyqOx-NI/AAAAAAAAAJg/_LAprGQVyuM/s72-c/pslam+-+2.0.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2532063310232015475</id><published>2010-10-02T10:23:00.010-04:00</published><updated>2010-10-05T23:57:27.610-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Planning and Todo</title><content type='html'>Prepare... this post may make not make sense to everyone.&lt;br /&gt;&lt;br /&gt;Every October I get ready to buy my planner pages.&amp;nbsp; I went from the full boar page-a-day Franklin planner, to 2-day-per-page, to 2-page-per-week.&amp;nbsp; I think I've settled on the two page per week, but I don't like the way FP does it.&amp;nbsp; I'd really like to have one page with my calendar, and the other page to be todo/notes only.&amp;nbsp; I'm mostly organized that way and prefer a weekly view of my tasks.&amp;nbsp; But I've noticed I'm not doing well at getting things done and making incremental progress on long-term goals.&amp;nbsp; Distinguishing day-to-day tasks, long term tasks, un-actionable stuff, things I'm waiting on others for, and everything in between is hard.&amp;nbsp; Covey's system of FTF (first-things-first) and 4 quadrants is great for weekly task management and long term goals, but not so hot at managing all the in-betweens.&amp;nbsp; I really subscribe to Covey's method of examining goals and personal mission, but I've not had much success using his method for everything.&lt;br /&gt;&lt;br /&gt;The problem I'm having is with tracking things that aren't of immediate concern and things that aren't well-defined.  Like Christmas lists in October and future home improvement projects. If it isn't part of my daily concern or is a big nebulous project instead of a list of action items, I don't want to lose track of those but I can't do anything with them at the moment.  So those things stay a jumbled mess in my brain instead of making it to a common place.&amp;nbsp; That's where David Allen's GTD (getting-things-done) comes in.&amp;nbsp; I'm going to give his method a shot with a little help from &lt;a href="http://www.toodledo.com/"&gt;ToodleDo.com&lt;/a&gt; and its iPhone equivalent.&amp;nbsp; Anyone had any experience with this?&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/TKdCbDqXNxI/AAAAAAAAAJQ/dDhalBWoFOg/s320/Capture.JPG" style="margin-left: auto; margin-right: auto;" width="209" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;The weekly pages I settled for&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="float: left; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/TKdCLWafxWI/AAAAAAAAAJM/N1LUakGz7vs/s320/IMG_0171.PNG" style="margin-left: auto; margin-right: auto;" width="213" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;My preferred weekly view&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://beta.toodledo.com/forums/5/4565/0/toodledo-gtd-setup-template.html"&gt;&lt;img border="0" height="640" src="http://img12.imageshack.us/img12/8940/gtdmethodwiphoned.png" style="margin-left: auto; margin-right: auto;" width="459" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://beta.toodledo.com/forums/5/4565/0/toodledo-gtd-setup-template.html"&gt;&lt;i&gt;ToodleDo at the center of GTD&lt;/i&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://beta.toodledo.com/forums/5/4565/0/toodledo-gtd-setup-template.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Update&lt;/b&gt;: I settled on using ToodleDo.com and syncing with &lt;a href="http://www.appigo.com/todo"&gt;Appigo's Todo&lt;/a&gt;&amp;nbsp;app&amp;nbsp;&lt;a href="http://itunes.apple.com/us/app/todo/id282778557?mt=8"&gt;for the iPhone&lt;/a&gt; so that I can do subtasks. &amp;nbsp;I've been using this system this week and so far so good!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2532063310232015475?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2532063310232015475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2532063310232015475'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/10/planning-and-todo.html' title='Planning and Todo'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/TKdCbDqXNxI/AAAAAAAAAJQ/dDhalBWoFOg/s72-c/Capture.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7977023328210360792</id><published>2010-09-26T22:40:00.003-04:00</published><updated>2010-09-26T22:55:44.540-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>My iPhone 3G jailbreaking experience Part 2</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/TKAA5759N7I/AAAAAAAAAJI/9WeNYrWdcZQ/s1600/t-mobile.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="133" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/TKAA5759N7I/AAAAAAAAAJI/9WeNYrWdcZQ/s200/t-mobile.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;It's been a few weeks since &lt;a href="http://mattmc3.blogspot.com/2010/09/my-iphone-3g-jailbreaking-experience.html"&gt;my previous post&lt;/a&gt; about jailbreaking the iPhone. &amp;nbsp;Since then, a few things have happened.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The Samsung Facinate came out for Verizon to &lt;a href="http://www.slashgear.com/samsung-fascinate-review-07100970/"&gt;mixed&lt;/a&gt; &lt;a href="http://www.engadget.com/2010/09/07/samsung-fascinate-review/"&gt;reviews&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;I learned that some of the slowdowns I experienced with the iPhone may have been due to iOS 4 on the 3G. &amp;nbsp;Apparently this is a known problem that was addressed with the iOS 4.1 update. &amp;nbsp;Unfortunately, jailbreakers &lt;a href="http://blog.iphone-dev.org/post/1086032828/its-a-trap"&gt;cannot yet update to 4.1&lt;/a&gt;. &amp;nbsp;Even with a jailbreak, a working carrier unlock is still key for me.&lt;/li&gt;&lt;li&gt;Rock Your Phone &lt;a href="http://www.iphonehacks.com/2010/09/cydia-acquires-rock-your-phone-to-create-an-even-larger-jailbreak-app-store.html"&gt;was bought by Cydia&lt;/a&gt;, giving the slow crufty Cydia a lock on jailbroken app stores. &amp;nbsp;Blech.&lt;/li&gt;&lt;li&gt;Verizon still can't seem to get its act together and &lt;a href="http://www.appleinsider.com/articles/10/09/24/verizon_apple_iphone_agreement_may_not_ever_get_resolved.html"&gt;appears to be no closer to getting the iPhone&lt;/a&gt; when Apple's exclusivity contract with AT&amp;amp;T ends.&lt;/li&gt;&lt;li&gt;I discovered &lt;a href="http://www.t-mobile.com/shop/plans/cell-phone-plans-detail.aspx?tp=tb1&amp;amp;rateplan=Even-More-Plus-500-Talk"&gt;a really inexpensive cell plan&lt;/a&gt;&amp;nbsp;that is perfect for my needs. &amp;nbsp;I have no need for a data plan as I have wifi at home and work. &amp;nbsp;And at $0.20 a text message, I save money if I keep the text messages under 50 per month - an easy feat for me. &amp;nbsp;And, it's month-to-month, so I can go until February when my Verizon contract expires and then re-evaluate.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;In order to deal with this transition time where my cell number is still owned by Verizon, I've done a few things. &amp;nbsp;First, I've forwarded my old cell number to my Google Voice number. &amp;nbsp;Then, I went to m.google.com/voice and &lt;a href="http://www.google.com/mobile/voice/"&gt;added a shortcut to it on the iPhone&lt;/a&gt;&amp;nbsp;as an alternative, since &lt;a href="http://www.engadget.com/2009/07/28/google-voice-iphone-app-rejected-current-gv-apps-lose-connectio/"&gt;Apple rejected the Google's Voice app&lt;/a&gt;. &amp;nbsp;This lets me make calls as if it's from my Google Voice number (whenever I've got wifi of course since I didn't buy a data plan), which means that I don't have to expose my T-Mobile number to the world. &amp;nbsp;That's nice since that number is temporary until I can move my primary cell number from Verizon.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also, I've discovered the world of free and low cost apps in the App Store. &amp;nbsp;My top picks?&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/kindle/id302584613?mt=8"&gt;Kindle App&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/biblereader/id287455446?mt=8"&gt;Olive Tree Bible Reader&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/facebook/id284882215?mt=8"&gt;Facebook&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/calorie-counter-diet-tracker/id341232718?mt=8"&gt;My Fitness Pal Calorie Counter&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/app/evernote/id281796108?mt=8"&gt;Evernote&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/dragon-dictation/id341446764?mt=8"&gt;Dragon Dictation&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/card-shark-solitaire-free/id293405659?mt=8"&gt;Card Shark Free&lt;/a&gt; - FREE (but the paid version is only $0.99, and is worth it)&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/planets/id305793334?mt=8"&gt;Planets&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;zToggle - FREE (Cydia)&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/google-mobile-app/id284815942?mt=8"&gt;Google Mobile App&lt;/a&gt; - FREE&lt;/li&gt;&lt;li&gt;&lt;a href="http://itunes.apple.com/us/app/close-call/id289132931?mt=8"&gt;Close Call&lt;/a&gt; - FREE&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I still have not found a calendar app I like. &amp;nbsp;I don't want to give out my Google Calendar login to some random app. &amp;nbsp;I'd much rather see a calendar app use the built-in calendar to feed its data and just display it better. &amp;nbsp;Calvetica seems nice, but again lacks a Week View which is essential. &amp;nbsp;But the app that I can't seem to find a free version of, but can't do without is CarbonFin Outliner. &amp;nbsp;It's just about exactly what you'd want in a list app - quick entry, nested checklists - it has everything but masterlists. &amp;nbsp;But, there's a pseudo-way around that until the developer gets around to it. &amp;nbsp;I've seen the SpeedList app too which may be better, but unless it's free I'm not sure I'm willing to try another one.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When deciding what I was going to do with all this, my friend who went through this whole process with the original 1st gen iPhone on T-Mobile gave me some good advice - there's some neat stuff on Android, but I wouldn't be unhappy if I went with the iPhone. &amp;nbsp;And the guy who sold me his old 3G reminded me that all other phones on the market that I might evaluate would be compared to the iPhone. &amp;nbsp;It is "the bar" by which all alternatives are measured. &amp;nbsp;I have to admit, they both were right.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7977023328210360792?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7977023328210360792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7977023328210360792'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/09/my-iphone-3g-jailbreaking-experience_26.html' title='My iPhone 3G jailbreaking experience Part 2'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/TKAA5759N7I/AAAAAAAAAJI/9WeNYrWdcZQ/s72-c/t-mobile.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2740035371000752054</id><published>2010-09-26T17:44:00.001-04:00</published><updated>2010-09-26T18:01:20.863-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Interesting instances of programming logic</title><content type='html'>Everything these days has a computer in it, and my new electric scale is no exception.  Most of the time for small devices like this you don't even notice.  Which is why it is really interesting when a mundane device does something that exposes itself as having a real codebase and thus, a brain.  My new scale just did that to me.&lt;br /&gt;&lt;br /&gt;No one steps on a scale just once.  For whatever reason, we just don't ever trust the accuracy of that first reading.  The makers of my scale must've known this, which is why they decided to put some logic into their product to ensure that you see the exact same weight to the tenth of a decimal when you step on that scale a second time.  If the scale decided your reading was 87.2 lbs, by golly you'll not see any variation during that second weighing.  Presumably, this was done to ensure a sense of accuracy from their product, but actually I think it accomplished the opposite.  "You may pretend to measure to the 1/10 of a pound Mr. Scale, but I picked up a box of q-tips between weighings and you didn't even notice."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2740035371000752054?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2740035371000752054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2740035371000752054'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/09/interesting-instances-of-programming.html' title='Interesting instances of programming logic'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-6401039354025363149</id><published>2010-09-11T08:09:00.000-04:00</published><updated>2010-09-11T08:09:48.767-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Remembering</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/TItv6Q0dqoI/AAAAAAAAAIw/pqCuvDH6_qg/s1600/ViewFromHeaven.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/TItv6Q0dqoI/AAAAAAAAAIw/pqCuvDH6_qg/s400/ViewFromHeaven.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;the view heaven...&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/TItxK9tDbqI/AAAAAAAAAI4/nEeYrbLVpZo/s1600/Hell.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/TItxK9tDbqI/AAAAAAAAAI4/nEeYrbLVpZo/s400/Hell.jpg" width="260" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;...and the one from hell&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-6401039354025363149?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6401039354025363149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6401039354025363149'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/09/remembering.html' title='Remembering'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/TItv6Q0dqoI/AAAAAAAAAIw/pqCuvDH6_qg/s72-c/ViewFromHeaven.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7799099412879838416</id><published>2010-09-03T12:16:00.001-04:00</published><updated>2010-09-03T12:18:29.058-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>My iPhone 3G jailbreaking experience</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/TIEfyCETdqI/AAAAAAAAAIo/7iCSFf6t9KE/s1600/apple-iphone-3g.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/TIEfyCETdqI/AAAAAAAAAIo/7iCSFf6t9KE/s320/apple-iphone-3g.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;A friend of mine upgraded to an iPhone 4, and so his old 3G (not the 3GS, so this is an iPhone 2nd gen) was just gathering dust.&amp;nbsp; He graciously let me borrow it to experiment with.&lt;br /&gt;&lt;br /&gt;A little background - I'm cheap when it comes to my phones.&amp;nbsp; I want a lot of functionality at very little price.&amp;nbsp; I have an old Windows Mobile brick of a phone, and no data plan.&amp;nbsp; I paid $50.00 for it 2 years ago when it was discontinued and it had been around for 2 years before that.&amp;nbsp; I pay $15.00 a month for it as an additional line to my wife's cell plan with Verizon.&amp;nbsp; But, it has wi-fi which I can use at home and at work and often at lunch depending on the restaurant, so I'm mostly connected when I need to be.&amp;nbsp; Having had a bad experience with Cingular, we switched to Verizon, and I've been really happy except that Verizon has never had good phones.&amp;nbsp; Great network - I never lose coverage or a call.&amp;nbsp; But their phones are notoriously backwater unless you like Black Berries.&amp;nbsp; But all that's changing with the Motoroloa Droid line, the HTC Incredible, and now the upcoming Samsung Facinate.&lt;br /&gt;&lt;br /&gt;So, I've finally come around to the point where I think I should look into modernizing my phone.&amp;nbsp; The trouble is, my current phone is dying and Verizon is no help getting me a replacement prior to my contract ending.&amp;nbsp; So, I decided to have a look at the iPhone.&amp;nbsp; Because I'm not going back to AT&amp;amp;T, I first need to jailbreak this puppy and see if I can get on T-Mobile.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prep:&lt;/b&gt;&lt;br /&gt;The iPhone took some initial prep work as it wouldn't let me in without activating.&amp;nbsp; I plugged into iTunes, restored the phone to the iOS 4.0.2 image, and was in.&amp;nbsp; Albeit, with no cellular plan.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Jailbreaking:&lt;/b&gt;&lt;br /&gt;Jailbreaking an iPhone is the process of opening a hole in the walled garden Apple jails you in.&amp;nbsp; This lets you unlock features of the iPhone and run apps that aren't officially sanctioned by Apple.&amp;nbsp; For example, Apple won't let through an app to use your phone as a full brightness flashlight.&amp;nbsp; They also don't let you make your own ringtones - you have to buy them.&amp;nbsp; And you can't hide the default apps, even though you're bound not to like them compared to others you might find in the App store.&amp;nbsp; If you're really concerned about your warranty, or you aren't confident that you can do the jailbreak without messing up your phone, or feel you need to have the latest and greatest iOS upgrades the minute they come out, then jailbreaking isn't for you.&amp;nbsp; Otherwise, it's worth it in my estimation.&lt;br /&gt;&lt;br /&gt;There are too many websites to count with jailbreaking instructions.&amp;nbsp; Many of them want you to pay.&amp;nbsp; Don't do it.&amp;nbsp; Jailbreaking is free.&amp;nbsp; It's really confusing and difficult to navigate, but I found &lt;a href="http://www.redmondpie.com/jailbreak-ios-4.0.2-with-redsn0w-how-to-guide/"&gt;instructions&lt;/a&gt; that worked.&amp;nbsp; Basically, you download a program called RedSn0w 0.9.5b5-5 as well as an IPSW file for iOS4.&amp;nbsp; Run RedSn0w and follow the onscreen instructions.&amp;nbsp; In RedSn0w, you should choose to install Cydia, which is the App Store for jail breakers.&amp;nbsp; You should NOT enable multi-taking on the 3G unless you're really, really sure.&amp;nbsp; I saw huge slowdowns when I enabled multi-tasking.&amp;nbsp; The 3G just wasn't up to the task.&amp;nbsp; If you want to try it, go ahead - you can always restore and repeat the jailbreaking process again later.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Unlocking:&lt;/b&gt;&lt;br /&gt;Unlocking is the process of allowing your phone to be used on another carrier other than AT&amp;amp;T.&amp;nbsp; You have to jailbreak your phone in order to unlock it.&amp;nbsp; To unlock the 3G, all I had to do was install a program called UltraSn0w via the Cydia app store.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Using T-Mobile:&lt;/b&gt;&lt;br /&gt;In order to use T-Mobile, jailbreak, unlock, and then just pop in an already activated (preferably borrowed just to test) T-Mobile sim card.&amp;nbsp; You don't get visual voice mail, and you don't get to use the 3G data network - you have to settle for the EDGE network for your data which is pretty slow.&amp;nbsp; Other than that, everything works great.&amp;nbsp; No problems what-so-ever.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Impressions:&lt;/b&gt;&lt;br /&gt;As far as the iPhone goes, I like it as a phone.&amp;nbsp; It feels great in your hand and is really stable.&amp;nbsp; Safari is fast and really well done.&amp;nbsp; It renders pages perfectly.&amp;nbsp; The touch screen is mostly good, though not intuitive at times and not always responsive.&amp;nbsp; You wonder if you touched it correctly and the phone is just 'thinking' about responding.&amp;nbsp; The screen often rotates when you don't mean for it to.&amp;nbsp; The iBooks app is nice, and displays PDFs really well.&lt;br /&gt;&lt;br /&gt;Some of the default apps aren't so good, and you can't get rid them either unless you jailbreak.&amp;nbsp; So if you're like me and don't need to stock market app, think that Evernote is better than Notes, and the The Weather Channel app is better than Weather, you can add your favorites and hide the default apps.&lt;br /&gt;&lt;br /&gt;The mail application is okay, but not great.&amp;nbsp; I'd like to see an "unread" folder that puts all your unread messages in one place.&amp;nbsp; If you have your Exchange e-mail set up to organize your messages into folders, you will miss messages when trying to read on the iPhone.&amp;nbsp; The contacts syncing with GMail is sad - it doesn't get company names right because it tries to split them into first/last names, and it doesn't pull birthdays or anniversaries which is just terrible because there's a place for them.&amp;nbsp; The Calendar app lacks a "this week" view, which is how I see my scheduling world and it's frustrating not to have that.&lt;br /&gt;&lt;br /&gt;Cydia, the jailbreakers app store, is so slow it's barely usable.&amp;nbsp; You should use Cydia to install Rock, and forget Cydia from then on.&amp;nbsp; Many of the free apps in the regular App Store have ads built in, so it's hard to find things there that are both free and good.&amp;nbsp; However, "TowerMadness" is so good it almost makes up for the fact that there's not much else.&lt;br /&gt;&lt;br /&gt;Battery life is okay, but not spectacular.&amp;nbsp; With light usage, you could possibly make it through 2 days without charging, but mostly you should expect to charge it every day.&amp;nbsp; I don't think that's unusual for smartphones, but still disappointing.&lt;br /&gt;&lt;br /&gt;Finally - let's talk about the iPod functionality.&amp;nbsp; I have a 5th gen Nano, and take it to work with me daily.&amp;nbsp; I love it.&amp;nbsp; The device is just perfect with the click wheel and the OS and the whole package.&amp;nbsp; The iPhone's iPod software is okay, but it's hard to manage some things.&amp;nbsp; For example, when listening to a podcast, you typically need to skip forward past intros and commercials.&amp;nbsp; The nano makes this easy, but with the iPhone you have to make an awkward L shape on the screen, pulling down to adjust your fine tuning and to the right to skip forward.&amp;nbsp; Not bad, but just not as nice and intuitive as what I'm used to.&amp;nbsp; I also notice that the iPod features drain the battery really fast.&amp;nbsp; And the single biggest frustration - the headphone jack is at the top of the phone which is really awkward for all usage unless you're putting your phone in your pocket.&lt;br /&gt;&lt;br /&gt;All in all, this isn't a bad phone.&amp;nbsp; T-Mobile lets you do a month-to-month plan with no contract, so with everyone abandoning their old iPhones for the new 4.0, you could get a really cheap iPhone.&amp;nbsp; While I think I'd be happy with it, I'm also tempted by the Samsung Galaxy, and think I'll wait for Verizon's version of it called the "Facinate" to come out later this month before I make my final decision.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7799099412879838416?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7799099412879838416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7799099412879838416'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/09/my-iphone-3g-jailbreaking-experience.html' title='My iPhone 3G jailbreaking experience'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/TIEfyCETdqI/AAAAAAAAAIo/7iCSFf6t9KE/s72-c/apple-iphone-3g.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4728711748619727152</id><published>2010-08-31T08:56:00.000-04:00</published><updated>2010-08-31T08:56:24.383-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>CSS page margins</title><content type='html'>I'm not sure how this practice ever became en vogue, but I'm here to lay down the gauntlet - if you &lt;a href="http://pe.usps.com/text/pub28/pub28c2.html"&gt;have a webpage that has text&lt;/a&gt;, and that text goes to the far left, &lt;a href="http://pe.usps.com/text/pub28/standard.css"&gt;and you decide to style your body tag&lt;/a&gt; with "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;margin: 0&lt;/span&gt;", your web development license should be revoked.&amp;nbsp; The usability of your website just went through the floor without any real stylistic purpose.&amp;nbsp; This particular styling option should be reserved only for pages that need to snug up images or other non-text elements on the left, with the text firmly readable in the center.&amp;nbsp; When asked whether programming is an art or a science, this is why I answer "both".&amp;nbsp; There's a whole lot of logic and methodology to it, but some aspects really are just artistic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4728711748619727152?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4728711748619727152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4728711748619727152'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/08/css-page-margins.html' title='CSS page margins'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4665715449544330478</id><published>2010-08-17T21:39:00.001-04:00</published><updated>2010-08-17T21:40:44.750-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Bumblebee Waltz</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/TGs4Pu6hroI/AAAAAAAAAIc/RYxijYjVUGA/s1600/3587517608_c3cdd6459f.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/TGs4Pu6hroI/AAAAAAAAAIc/RYxijYjVUGA/s320/3587517608_c3cdd6459f.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;As sung to Ian, Caleb, and now Alison... since I can't seem to find the lyrics anywhere else...&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="color: #444444; font-style: italic;"&gt;Bumblebee, bumblebee waltz&lt;br /&gt;Bumblebee, bumblebee dance&lt;br /&gt;Blossoms and bumblebees shy romance&lt;br /&gt;Come and take a chance&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #444444; font-style: italic;"&gt;Apple blossoms swaying in the breeze&lt;br /&gt;They bob and nod and tease the bees&lt;br /&gt;Dance with me please&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4665715449544330478?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4665715449544330478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4665715449544330478'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/08/bumblebee-waltz.html' title='Bumblebee Waltz'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/TGs4Pu6hroI/AAAAAAAAAIc/RYxijYjVUGA/s72-c/3587517608_c3cdd6459f.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-579110505597793948</id><published>2010-08-10T21:12:00.004-04:00</published><updated>2010-08-11T09:19:28.041-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Sandcastle development</title><content type='html'>&lt;div style="float: right;"&gt;&lt;script src="http://everystockphoto.com:8080/widget.php?imageId=2348577&amp;amp;size=medium" type="text/javascript"&gt;&lt;/script&gt;&lt;/div&gt;Today, while on the beach at Cape Hatteras, we built a sandcastle.&amp;nbsp; And not just any sandcastle, a drip castle.&amp;nbsp; The tide had reached its lowest and was coming in.&amp;nbsp; We had a trench dug from the sea all the way up to our castle.&amp;nbsp; Then a moat from the trench encircled the castle, and finally a mound in the middle housed our drip spires.&amp;nbsp; It was quite the undertaking.&amp;nbsp; It began without a complete plan, it suffered some setbacks, multiple people contributed and the contributions were often mis-matched, and a certain someone destroyed as much as he contributed.&amp;nbsp; It was never really finished, but it was beautiful when we finally stopped working on it.&amp;nbsp; And it was all built with the knowledge that it was in the path of high tide.&amp;nbsp; And it struck me - this is like nearly every&amp;nbsp; software project out there.&amp;nbsp; I have a friend who's been in consulting for a long time and worked on many different projects and he often laments that none of them are around anymore... they've all been re-worked to newer tech or the company has gone out of business or the project is otherwise dead.&amp;nbsp; Decades of work, but no tangible product to show for it remains.&lt;br /&gt;&lt;br /&gt;So, here are some thoughts on software and sandcastles...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Even when you have a plan, you won't really be able to follow it&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;It's hard to predict every bump in the road or turn of events.&amp;nbsp; The users of the software won't really know what they want until they actually &lt;i&gt;use &lt;/i&gt;it, even when they think they do know.&amp;nbsp; The management will want results quickly, and won't see maintainability and good design as being more important than the project schedule, though they'll never admit that.&amp;nbsp; They want it all - &lt;u&gt;good&lt;/u&gt;, &lt;u&gt;fast&lt;/u&gt; and &lt;u&gt;cheap&lt;/u&gt;; none of this picking two business.&amp;nbsp; Also, process is everything!&amp;nbsp; Users will often jump to UI opinions or lists of what they want to track, but they will often avoid telling you what their business process is because they frankly don't know.&amp;nbsp; Often, they're looking for software to drive the process - EEP!&amp;nbsp; Process should drive the software.&amp;nbsp; Building software is like building a sandcastle - even with a '&lt;i&gt;plan&lt;/i&gt;', it evolves as it gets built.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Not all developers are created equal&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Some developers will break everything they touch.&amp;nbsp; Because accuracy and attention to detail isn't important to them, they'll often be faster to market because they can cut out the hard stuff.&amp;nbsp; They'll write twice as much code and produce an order of magnitude more bugs.&amp;nbsp; They'll shy away from newer techniques because the old ways work for them and are comfortable.&amp;nbsp; Building software is like building a sandcastle - not everyone who touches it makes it better.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;It's okay not to be finished&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Software that isn't finished is software that's being used.&amp;nbsp; That's a good thing.&amp;nbsp; Building software is like building a sandcastle - if it's good, there's no such thing as 'done'.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Remember it's made of sand...&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Yes, you may have the most beautiful design in the world, but it's written in COBOL.&amp;nbsp; No really... it's all COBOL given enough time.&amp;nbsp; Your medium is sand.&amp;nbsp; Java is 15 years old.&amp;nbsp; C# is only 10.&amp;nbsp; ASP.NET MVC, only 1.&amp;nbsp; And within these technologies, there is constant rehashing.&amp;nbsp; Take the classic example of Microsoft's data access strategies.&amp;nbsp; ODBC, DAO, RDO, ADO, ADO.NET, Linq-to-SQL, and now Entity Framework.&amp;nbsp; And that's just within Microsoft tech.&amp;nbsp; Building software is like building a sandcastle - as beautiful as your creation is, it's still made of sand and the next tide is coming.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;The right way is to do it for love...&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;We know it's not going to last like a beautiful building.&amp;nbsp; And it's probably not going to be used by millions of people like a particular model of car.&amp;nbsp; And it's not going to be touched only by the most skilled craftsmen like some kind of wood furniture.&amp;nbsp; But building software is still beautiful and complicated and fun, even if it's just made from sand.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-579110505597793948?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/579110505597793948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/579110505597793948'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/08/sandcastle-development.html' title='Sandcastle development'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1666914582465382352</id><published>2010-06-23T18:15:00.000-04:00</published><updated>2010-06-23T18:15:20.667-04:00</updated><title type='text'>Dad to the third power</title><content type='html'>&lt;div style="TEXT-ALIGN: center; MARGIN: 0px auto 10px"&gt;Welcome to the world Miss Alison. We couldn't possibly love you more.&lt;br /&gt;You are an answer to our deepest prayers, and a blessing to our family.&lt;br /&gt;We cannot wait to bring you home.&lt;br /&gt;&lt;br /&gt;Love, Dad&lt;sup style="FONT-SIZE: 80%"&gt;3&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/TCKHd5UaplI/AAAAAAAAAIQ/kmWbeThm0t0/s1600/IMG_9363.JPG"&gt;&lt;img border="0" alt="" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/TCKHd5UaplI/AAAAAAAAAIQ/kmWbeThm0t0/s400/IMG_9363.JPG" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="TEXT-ALIGN: center; FONT-SIZE: 80%"&gt;&lt;em&gt;Alison Rose, 6/22/10. 7lbs, 11oz.  All girl!&lt;/em&gt;&lt;/div&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1666914582465382352?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1666914582465382352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1666914582465382352'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/06/dad-to-third-power.html' title='Dad to the third power'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/TCKHd5UaplI/AAAAAAAAAIQ/kmWbeThm0t0/s72-c/IMG_9363.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7720582279953657695</id><published>2010-06-21T08:00:00.001-04:00</published><updated>2010-06-21T08:00:05.346-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>"A" is for...</title><content type='html'>She's &lt;span style="color: #e06666; font-size: large;"&gt;&lt;i&gt;&lt;b&gt;A&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;lmost here...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7720582279953657695?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7720582279953657695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7720582279953657695'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/06/is-for.html' title='&quot;A&quot; is for...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-5488230682174528026</id><published>2010-06-18T17:37:00.004-04:00</published><updated>2010-06-18T18:19:58.125-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>SQL Server Job performance</title><content type='html'>I've been fighting a mis-perception at work that ETL (data transformation and loads) is one of our company's threats to database scalability.&amp;nbsp; It certainly was when I started here a few years ago, but I've worked hard to change all that.&amp;nbsp; At the risk of sounding like I'm tooting my own horn, my ETL processes are really well optimized.&amp;nbsp; I'm cranking through 50+ different large file loads a night in well under an hour.&amp;nbsp; As far as I'm concerned, I've got each individual ETL process smokin' fast, while occasionally making conscious trade-offs between performance and maintainability.&lt;br /&gt;&lt;br /&gt;But the perception is still there in part because I've not made my SQL job stats transparent enough.&amp;nbsp; Stuff &lt;i&gt;just works,&lt;/i&gt; and so outdated opinions never got challenged.&amp;nbsp; The reality today is that the jobs that are causing us the most trouble aren't the ones where we're loading external vendor files, but the ones where some developer is doing internal data processing and they're doing it &lt;i&gt;BADLY&lt;/i&gt;.&amp;nbsp; It's the linked servers and the cursors and the UDFs and the over-architected single-object-inflate-then-commit patterns that threaten our scalability as our business grows.&amp;nbsp; So I set out to prove it.&lt;br /&gt;&lt;br /&gt;Job reports are available for everyone to see in SSMS, but you have to consciously go after it and interpret the results.&amp;nbsp; That wasn't working for me, because as the DBA I'm the only one who was doing that regularly.&amp;nbsp; It's only in my face, and my jobs run fine.&amp;nbsp; So I developed the "SQL Server Job Report", which is a daily e-mail report to my whole dev team highlighting the following info:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Job name&lt;/li&gt;&lt;li&gt;Number of job runs in the past month&lt;/li&gt;&lt;li&gt;Average duration during past month&lt;/li&gt;&lt;li&gt;Success rate during past month&lt;/li&gt;&lt;li&gt;Most recent run date&lt;/li&gt;&lt;li&gt;Most recent run duration&lt;/li&gt;&lt;li&gt;Most recent run status&lt;/li&gt;&lt;/ul&gt;While everyone has been concerned with what happened during last night's runs, I wanted to put the spotlight on two other key metrics:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;What's the average job duration?&amp;nbsp; Is a job taking over an hour consistently?&amp;nbsp; That's a threat when it fails and we have to re-run it during business hours.&lt;/li&gt;&lt;li&gt;What's the success rate for a job?&amp;nbsp; Jobs that aren't robust or well tested sap developer time.&amp;nbsp; Do we have jobs that fail more than 25% of the time?&amp;nbsp; Why?&lt;/li&gt;&lt;/ol&gt;This did the trick!&amp;nbsp; I got the responses I needed which were, "&lt;i&gt;I didn't know that job was failing that often&lt;/i&gt;!" and the "&lt;i&gt;I didn't know that job always took that long!&lt;/i&gt;".&amp;nbsp; Progress...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/TBvm6q4L5gI/AAAAAAAAAII/jy2tNFRusFQ/s1600/SQL+Job+Report.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="337" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/TBvm6q4L5gI/AAAAAAAAAII/jy2tNFRusFQ/s400/SQL+Job+Report.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Using this as empirical evidence, I was able to devote some time today to the job that was biggest offender.&amp;nbsp; It happened to be a series of stored procs with linked servers, UDFs, and cursors that went against our largest tables and consistently took 3+ hours a night.&amp;nbsp; With less than 1/2 a day's work, I was able to help the developer get the job down to 20 minutes!&amp;nbsp; That's pretty satisfying.&amp;nbsp; We'll see how much traction I can maintain on the other problem children...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-5488230682174528026?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5488230682174528026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5488230682174528026'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/06/sql-server-job-performance.html' title='SQL Server Job performance'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/TBvm6q4L5gI/AAAAAAAAAII/jy2tNFRusFQ/s72-c/SQL+Job+Report.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7633935016119326140</id><published>2010-06-11T19:36:00.001-04:00</published><updated>2010-06-11T19:37:08.034-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Goodbye Gallbladder, Hello Home</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;i&gt;Goodbye gallbladder,&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;goodbye pain&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;and those midnight wake-ups&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;that made me insane&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;A sneak attack&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;no time to react&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;and now staples from my toes to my brain&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Hello home&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;hello future&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;with my two little boys&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;and a new baby girl to nurture&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;least not my wife&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;faithful through the strife&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;and my constant comfort through all the torture&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;By His grace&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;alone&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;I've gone from gallbladder&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;to home&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7633935016119326140?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7633935016119326140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7633935016119326140'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/06/goodbye-gallbladder-hello-home.html' title='Goodbye Gallbladder, Hello Home'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2148858886380360732</id><published>2010-05-20T22:50:00.001-04:00</published><updated>2010-05-20T22:50:49.691-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='funny'/><title type='text'>Funny pic</title><content type='html'>With our 3rd little one on the way, I couldn't resist sharing &lt;a href="http://www.yoyomama.ca/2010/03/head_snuggler/"&gt;this great pic&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2148858886380360732?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2148858886380360732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2148858886380360732'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/05/funny-pic.html' title='Funny pic'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8354722492597276340</id><published>2010-05-20T16:52:00.002-04:00</published><updated>2010-05-20T16:57:17.679-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>UN-recommended</title><content type='html'>Back in January, &lt;a href="http://mattmc3.blogspot.com/2010/01/movie-recommendation.html"&gt;I recommended the Hurt Locker&lt;/a&gt; as a good movie to see (if you like war flicks).&amp;nbsp; The &lt;a href="http://arstechnica.com/tech-policy/news/2010/05/hurt-locker-torrenters-prepare-to-be-sued.ars?utm_source=rss&amp;amp;utm_medium=rss&amp;amp;utm_campaign=rss"&gt;big news&lt;/a&gt; recently is that &lt;a href="http://techdirt.com/articles/20100518/2341519482.shtml"&gt;the director&lt;/a&gt; believes that people "stole" from him by downloading the movie, and plans to actually sue these people for their illicit downloads.&lt;br /&gt;&lt;br /&gt;I'm no fan of piracy.&amp;nbsp; My personal philosophy is that I pay for something, or I find legitimately free alternatives (like OpenOffice or Google Docs).&amp;nbsp; Especially as a software developer, I believe that you should not get something for nothing.&amp;nbsp; But I'm also not likely to pay for the same thing twice - why should I have to re-buy the DVD when I have the VHS?&amp;nbsp; Why re-buy the e-book when I have the hardcover?&amp;nbsp; Big Content has this view that we should have to pay over and over for the same stuff due to their planned obsolescence.&amp;nbsp; You are not 'entitled' to  get money for your product, just like we  aren't 'entitled' to get your  product for free.&lt;br /&gt;&lt;br /&gt;But I digress.&amp;nbsp; Back on topic - I can't see how this action will help Voltage Pictures in the long run.&amp;nbsp; Suing their customer base - people we can reasonably assume are interested in their product - can only hurt them.&amp;nbsp; There's no guarentee that the people who watched this online would have been paying customers.&amp;nbsp; There's no guarantee that the people they're suing are the ones that actually downloaded the movie.&lt;br /&gt;&lt;br /&gt;Now, the Hurt Locker is only a single-viewing flick for sure.&amp;nbsp; Once you've watched it once, you probably won't care to see it in a theater or buy the DVD even though it's a really good flick.&amp;nbsp; So I do have to concede the point that they probably lost some money from piracy.&amp;nbsp; However, go after the sites and products that allow piracy to happen, not after your own customers.&amp;nbsp; It's just bad business.&lt;br /&gt;&lt;br /&gt;I've not downloaded the movie, nor do I intend to - in fact, I watched the Hurt Locker for the full price of umpteen-bazillian-dollars at a local theater on an evening out with a buddy.&amp;nbsp; The problem for Voltage Pictures is that this lawsuit alienates their customer base - even the ones who did nothing wrong.&amp;nbsp; I'm much less likely to watch another of their flicks now when I know that they're employing these tactics against regular folks.&lt;br /&gt;&lt;br /&gt;The way to stop piracy is at the source, not by extorting people.&amp;nbsp; The irony of the situation is that the producers of the movie &lt;a href="http://www.techdirt.com/articles/20100304/0431178413.shtml"&gt;are being sued themselves for having 'stole' the story from the life of a soldier&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8354722492597276340?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8354722492597276340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8354722492597276340'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/05/un-recommended.html' title='UN-recommended'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3008366372168842966</id><published>2010-05-18T12:52:00.001-04:00</published><updated>2010-05-18T12:53:42.934-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='environment'/><title type='text'>Just one more reason...</title><content type='html'>I don't know why these drive me so crazy, but they do!  One lousy moment in your cup, followed by thousands of years in a landfill. It completely ruins my morning when I can't tell them to skip it in time.&amp;nbsp; I cringe when I think of the thousands of customers who get these useless things stuck in their cups daily.&amp;nbsp; I literally drive 10 feet from the pickup window and chuck the blasted thing out my window towards the trash.&amp;nbsp; Bah*.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/S_LFH1IaIBI/AAAAAAAAAIA/p9VY43-IzSA/s1600/sbuxsplash.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/S_LFH1IaIBI/AAAAAAAAAIA/p9VY43-IzSA/s320/sbuxsplash.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;The infamous Starbucks Swizzle Stick&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span style="color: #20124d; font-size: x-small;"&gt;*My wife has warned me about my blog posts that end in "Bah".&amp;nbsp; It's a definite symptom of blog snarkiness. &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3008366372168842966?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3008366372168842966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3008366372168842966'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/05/just-one-more-reason.html' title='Just one more reason...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/S_LFH1IaIBI/AAAAAAAAAIA/p9VY43-IzSA/s72-c/sbuxsplash.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1899537884106523049</id><published>2010-05-05T20:05:00.000-04:00</published><updated>2010-05-05T20:05:38.674-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Rube Goldberg meets Google</title><content type='html'>&lt;a href="http://chrome.blogspot.com/2010/05/potato-gun-lightning-and-sonic-magic.html?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+blogspot/Egta+%28Google+Chrome+Blog%29"&gt;Wow&lt;/a&gt;! Kudos to Google.&lt;br/&gt;&lt;br/&gt;&lt;br /&gt;&lt;object width="660" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nCgQDjiotG0&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/nCgQDjiotG0&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1899537884106523049?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1899537884106523049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1899537884106523049'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/05/rube-goldberg-meets-google.html' title='Rube Goldberg meets Google'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1085539014402018594</id><published>2010-05-05T15:02:00.001-04:00</published><updated>2010-05-05T15:03:41.738-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Spiderman!</title><content type='html'>The other night I had the bright idea to talk to Caleb about what super-powers he &lt;i&gt;really&lt;/i&gt; has (meaning none-at-all).&amp;nbsp; I was hoping we could have a conversation slightly grounded in the real world.&amp;nbsp; In other words - I wanted to make it clear that little boys do not really posses any of the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;elite Jedi skills&lt;/li&gt;&lt;li&gt;the ability to fly&lt;/li&gt;&lt;li&gt;the speed to run faster than bullets&lt;/li&gt;&lt;li&gt;the ability to stop bad guys&lt;/li&gt;&lt;li&gt;stealth like a ninja &lt;/li&gt;&lt;/ul&gt;But Caleb would have none of it.&amp;nbsp; He insists that he can do all this and more.&amp;nbsp; And, having realized the error of my ways, I had to relent and hug and kiss my little super hero goodnight.&amp;nbsp; Now in the news today, &lt;a href="http://news.bbc.co.uk/2/hi/asia-pacific/8659278.stm"&gt;a real life Spiderman foils a crime&lt;/a&gt; and I am left with the distinct feeling of having become &lt;a href="http://www.imdb.com/character/ch0005360/"&gt;Peter Banning&lt;/a&gt; from the movie Hook - as if I have somehow forgotten Neverland in my quest to help Caleb get about the business of growing up.&amp;nbsp; Youth and its innocence may well be the greatest superpower of all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1085539014402018594?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1085539014402018594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1085539014402018594'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/05/spiderman.html' title='Spiderman!'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2201774775811728857</id><published>2010-05-04T07:00:00.021-04:00</published><updated>2010-05-04T07:00:07.757-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>40 years ago today</title><content type='html'>40 years ago today, &lt;a href="http://en.wikipedia.org/wiki/Allison_Krause"&gt;Allison Krause&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Jeffrey_Miller"&gt;Jeffrey Miller&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Sandra_Scheuer"&gt;Sandra Scheuer&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/William_Knox_Schroeder"&gt;William Schroeder&lt;/a&gt; lost their lives at Kent State.&amp;nbsp; 9 others were wounded.&amp;nbsp; There's a really informative podcast on the shooting &lt;a href="http://podcasts.howstuffworks.com/hsw/podcasts/symhc/2009-05-25-symhc-kent-state.mp3"&gt;here&lt;/a&gt;.&amp;nbsp; Only 2 of the 4 victims were protesters - the other two were just bystanders walking to class.&amp;nbsp; The closest victim to the shooters (Miller) was 265 feet away, which if you think of a football field, that's just over 88 yards.&amp;nbsp; None were armed.&amp;nbsp; The day before the massacre Governor Rhodes proclaimed that the protesters were "the worst type of people that we harbor in America".  He now has a building named after him in downtown Columbus.&amp;nbsp; I'm not often ashamed to be from the Buckeye state, but today is one day when I really and truly am.&amp;nbsp; God rest their souls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2201774775811728857?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2201774775811728857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2201774775811728857'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/05/40-years-ago-today.html' title='40 years ago today'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3860959030762068260</id><published>2010-04-23T23:10:00.003-04:00</published><updated>2010-04-23T23:16:16.401-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Lifehacker and truncated RSS feeds in Google Reader</title><content type='html'>If you use Google Reader extensively, you've probably noticed a feed or two that won't display the full contents of the articles.&amp;nbsp; Instead, some sites give you just enough of the text of an article to try to hook you and lure you to their site.&amp;nbsp; Presumably for the purpose of driving up the hit count and generating ad revenue.&amp;nbsp; Not necessarily a bad cause - sites you frequent deserve your support.&amp;nbsp; But it is really disruptive to the Google Reader experience to hop out to other sites in the middle of reading your feeds.&amp;nbsp; It's awkward and inefficient, and frankly I think it generates some ill will towards those feeds.&lt;br /&gt;&lt;br /&gt;Interestingly, LifeHacker.com is one of those sites that has that problem, but in an interesting twist, &lt;a href="http://lifehacker.com/5523024/google-reader-full-feed-expands-truncated-feeds-with-a-keystroke"&gt;today a post from LifeHacker shows some ways to fix it&lt;/a&gt;.&amp;nbsp; I picked the "Google Reader Full Feed Changer" option, which involved the following steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Install the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/748"&gt;Grease Monkey&lt;/a&gt; Firefox plug-in&lt;/li&gt;&lt;li&gt;Install the &lt;a href="http://userscripts.org/scripts/show/19949"&gt;Grease Monkey script&lt;/a&gt; for the Reader hack&lt;/li&gt;&lt;li&gt;Click "Manage User Scripts..." in Grease Monkey and edit the .JS script&lt;/li&gt;&lt;li&gt;This step is different depending on which sites you're going to fix.&amp;nbsp; You need to know XPath and how to 'view source' on the desired sites, but it's not too tough.&amp;nbsp; I fixed LifeHacker.com and ArsTechnica.com with the following edit to the script:&lt;/li&gt;&lt;/ol&gt;&lt;pre class="code-snippet"&gt;var SITE_INFO = [&lt;br /&gt;  {&lt;br /&gt;    url:    'http://arstechnica.com',&lt;br /&gt;    xpath:  '//div[@class="body"]'&lt;br /&gt;  },&lt;br /&gt;  {&lt;br /&gt;    url:    'http://lifehacker.com',&lt;br /&gt;    xpath:  '//div[@id="wrapper"]'&lt;br /&gt;  }&lt;br /&gt;  // etc, etc...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Once you hop back into Google Reader, the whole article will appear.&amp;nbsp; Very handy.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/S9JcEaAvlcI/AAAAAAAAAHw/guVsym2ClfE/s1600/ArsTechnicaGoogleReader.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://1.bp.blogspot.com/_vk9s6T9uHh0/S9JcEaAvlcI/AAAAAAAAAHw/guVsym2ClfE/s400/ArsTechnicaGoogleReader.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Thanks to &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/748"&gt;Grease Monkey&lt;/a&gt;, the orange button can be replaced with the full article itself...&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/S9Jg93l7BzI/AAAAAAAAAH4/E_Dj_6xkdcY/s1600/ArsTechnicaGoogleReader2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/S9Jg93l7BzI/AAAAAAAAAH4/E_Dj_6xkdcY/s400/ArsTechnicaGoogleReader2.JPG" width="380" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3860959030762068260?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3860959030762068260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3860959030762068260'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/lifehacker-and-truncated-rss-feeds-in.html' title='Lifehacker and truncated RSS feeds in Google Reader'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vk9s6T9uHh0/S9JcEaAvlcI/AAAAAAAAAHw/guVsym2ClfE/s72-c/ArsTechnicaGoogleReader.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3984656853153067335</id><published>2010-04-19T00:17:00.000-04:00</published><updated>2010-04-19T00:17:02.766-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Unconstitutional</title><content type='html'>&lt;a href="http://optoons.blogspot.com/2010/04/supreme-court-strikes-down-constitution.html"&gt;This&lt;/a&gt; would be really funny, if it weren't so true.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3984656853153067335?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3984656853153067335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3984656853153067335'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/unconstitutional.html' title='Unconstitutional'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8100272725501423450</id><published>2010-04-17T08:15:00.000-04:00</published><updated>2010-04-17T08:15:00.390-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='dvr'/><title type='text'>Skip, skip, skip to my Lou</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/S8fXKjTQkFI/AAAAAAAAAGw/GvI-nJsJj8s/s1600/jumprope.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/S8fXKjTQkFI/AAAAAAAAAGw/GvI-nJsJj8s/s320/jumprope.gif" /&gt;&lt;/a&gt;&lt;/div&gt;One of my least favorite things to do is to put on a DVD for the kids.&amp;nbsp; We don't typically let the kids watch very much TV as it is, but sometimes in a pinch the TV makes a nice babysitter.&amp;nbsp; Unfortunately, putting on a DVD for the kids is a major time waster as you have to skip, and wait, and fast forward, and wait, and skip, and wait some more... Until finally you lose your mind and punch every blasted button on the remote to just get to the point when the movie will actually play.&amp;nbsp; Bah!&amp;nbsp; &lt;a href="http://boingboing.net/2010/02/18/infographic-buying-d.html"&gt;BoingBoing had a nice little graphic&lt;/a&gt; a couple of months ago highlighting this, and &lt;a href="http://lifehacker.com/5518076/hit-stop-+-stop-+-play-and-other-tricks-to-skip-dvd-trailers-and-warnings"&gt;Life Hacker posted some tricks to help bypass the headache recently&lt;/a&gt;.&amp;nbsp; Maybe it's worth it to rip all our movies to my DVR's harddrive just to avoid the hassle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8100272725501423450?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8100272725501423450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8100272725501423450'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/skip-skip-skip-to-my-lou.html' title='Skip, skip, skip to my Lou'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/S8fXKjTQkFI/AAAAAAAAAGw/GvI-nJsJj8s/s72-c/jumprope.gif' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-962930576167497602</id><published>2010-04-16T17:03:00.001-04:00</published><updated>2010-04-16T17:04:49.657-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Bye, bye underscores!</title><content type='html'>Though I code in VB.NET everyday, and have even named this blog after some VB-ish syntax, I code in C# for my personal projects and I maintain a mental "&lt;b&gt;Top 10 things I hate about VB&lt;/b&gt;" list.&amp;nbsp; Near the top of that list is that VB code cannot span multiple lines unless you use an underscore as a line-continuation character.&amp;nbsp; It's syntax dating back to the earliest days of VB, and it's evil.&amp;nbsp; It makes the programmer jump through hoops to tell the compiler something that it should be smart enough to figure out anyway.&amp;nbsp; It was mostly annoying when using class/property &amp;lt;attribute&amp;gt; syntax, but with the addition of Linq syntax in .NET 3.5, the problem grew out of control.&lt;br /&gt;&lt;br /&gt;Well, no more!&amp;nbsp; Today my company has upgraded to Visual Studio 2010, which is somewhat amazing since it was only just released this week.&amp;nbsp; And &lt;a href="http://msdn.microsoft.com/en-us/vbasic/ee336123.aspx"&gt;one of the great new features is the removal of the need for the underscore in many cases&lt;/a&gt;.&amp;nbsp; The compiler will now do what it should have done all along.&lt;br /&gt;&lt;br /&gt;One of the first things I did today after completing the upgrade was to run a find and replace in my project, and I removed 918 underscores from the attributes decorators on classes, most of them for Linq-to-SQL markup.&amp;nbsp; Here's the regex find-and-replace dialog so that you can do the same!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/S8jPiJaKEKI/AAAAAAAAAG4/6Traj18jNYo/s1600/VB.NET+line+continuations.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="619" src="http://1.bp.blogspot.com/_vk9s6T9uHh0/S8jPiJaKEKI/AAAAAAAAAG4/6Traj18jNYo/s640/VB.NET+line+continuations.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Just one more goodie in the long awaited VS 2010!&amp;nbsp; I love being a .NET developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-962930576167497602?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/962930576167497602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/962930576167497602'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/bye-bye-underscores.html' title='Bye, bye underscores!'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vk9s6T9uHh0/S8jPiJaKEKI/AAAAAAAAAG4/6Traj18jNYo/s72-c/VB.NET+line+continuations.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7789135394918092778</id><published>2010-04-16T08:15:00.000-04:00</published><updated>2010-04-16T08:15:00.283-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Tobasco</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8X4eBIeacI/AAAAAAAAAGg/zXbExS7lrxE/s1600/tobasco.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8X4eBIeacI/AAAAAAAAAGg/zXbExS7lrxE/s200/tobasco.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Is it wrong that I prefer &lt;a href="http://www.franksredhot.com/"&gt;Frank's RedHot&lt;/a&gt; to my own namesake sauce when it comes to tobasco?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7789135394918092778?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7789135394918092778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7789135394918092778'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/tobasco.html' title='Tobasco'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/S8X4eBIeacI/AAAAAAAAAGg/zXbExS7lrxE/s72-c/tobasco.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1457577288752914427</id><published>2010-04-15T08:37:00.000-04:00</published><updated>2010-04-15T08:37:43.984-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Tweets are for the birds</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8X70l0kjVI/AAAAAAAAAGo/vehHYu-WN7w/s1600/robin.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8X70l0kjVI/AAAAAAAAAGo/vehHYu-WN7w/s320/robin.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;I'm not on &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;. It appears I may be the only one - especially in the tech world. It is really very freeing to type more than 140 charact ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1457577288752914427?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1457577288752914427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1457577288752914427'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/tweets-are-for-birds.html' title='Tweets are for the birds'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/S8X70l0kjVI/AAAAAAAAAGo/vehHYu-WN7w/s72-c/robin.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1591961984201378574</id><published>2010-04-14T07:25:00.003-04:00</published><updated>2010-04-14T07:39:51.022-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Tax Day</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8WmoSGBtyI/AAAAAAAAAGY/MImFZQ-8USY/s1600/1040.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8WmoSGBtyI/AAAAAAAAAGY/MImFZQ-8USY/s200/1040.jpg" width="172" /&gt;&lt;/a&gt;&lt;/div&gt;I do my own taxes, and I do not cheat.&amp;nbsp; I do everything I can to be sure that my filing is as accurate as possible, including reporting the $3.80 in interest made off my savings account last year.&amp;nbsp; It's really difficult though with our overly complicated tax system.&lt;br /&gt;&lt;br /&gt;When I finished our taxes this year, I was shocked.&amp;nbsp; We, as a family, paid more in mortgage interest last year than we did in federal taxes.&amp;nbsp; Now, I'm not complaining - given sales tax plus property tax plus federal/state/local income tax, we still pay more in total taxes than any other expense as a family.&amp;nbsp; I had to go back and double and triple check the numbers, but our software was accurate.&amp;nbsp; As I watch our national debt spiral out of control and the creation of more and more entitlement programs and the unemployment rate sticking steadily at more than 10%, I can't help but wonder how the federal government can really pay for all this.&lt;br /&gt;&lt;br /&gt;If I'm honest with myself, I think we paid less than was fair.&amp;nbsp; Or rather more accurately, I think that other families in our income bracket and life situation paid less federal tax than was fair, and by extension so did we.&amp;nbsp; Our country's economic policies are unsustainable, and I cannot see how&lt;a href="http://finance.yahoo.com/news/Nearly-half-of-US-households-apf-1105567323.html?x=0&amp;amp;.v=1"&gt; nearly half of all households benefit from government programs with zero tax liability&lt;/a&gt;.&amp;nbsp; But what do I know?&amp;nbsp; I'm only in the 1% demographic of &lt;a href="http://www.cbsnews.com/stories/2010/04/10/opinion/polls/main6382999.shtml"&gt;this opinion poll&lt;/a&gt;.&amp;nbsp; But apparently &lt;a href="http://www.npr.org/templates/story/story.php?storyId=125918497&amp;amp;ft=1&amp;amp;f=1001"&gt;I have some unlikely allies&lt;/a&gt; who share my belief.&lt;br /&gt;&lt;br /&gt;Then again, it's not like receiving more in tax revenue would actually cause the government to pay down its debt - it seems creating more entitlement programs and bigger government is the name of the game.&amp;nbsp; With more money, they'd increase spending - there's no doubt in my mind.&amp;nbsp; &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/04/12/AR2010041204364.html?hpid=topnews"&gt;The news just came out yesterday&lt;/a&gt; that our deficit spending was only $1.3 trillion instead of the expected $1.6 trillion, and we're supposed to celebrate this like the Titanic is taking on slightly less water than expected.&amp;nbsp; If I ran my household like this, we'd be living on the streets for sure.&amp;nbsp; Or perhaps, off the backs of some other taxpayers somewhere who simply must be footing the bill.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1591961984201378574?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1591961984201378574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1591961984201378574'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/tax-day.html' title='Tax Day'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/S8WmoSGBtyI/AAAAAAAAAGY/MImFZQ-8USY/s72-c/1040.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-5745213519845056554</id><published>2010-04-13T12:07:00.001-04:00</published><updated>2010-04-13T12:08:12.372-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>When money trumps safety</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8SVANdXFRI/AAAAAAAAAGQ/YYEm6kdfr08/s1600/yellow_traffic_light.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="147" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/S8SVANdXFRI/AAAAAAAAAGQ/YYEm6kdfr08/s320/yellow_traffic_light.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;It looks like there's a good possibility that if you get a ticket from a red light camera, &lt;a href="http://www.nbc-2.com/Global/story.asp?S=12265823"&gt;it may be because the timing of the yellow light has been shortened&lt;/a&gt;.&amp;nbsp; The goal of this of course is to increase ticket revenue at the expense of public safety.&amp;nbsp; I know I've been in a situation where I've been doing the speed limit, but that light turns yellow at just the wrong moment and you have a split second to decide whether it's safer to hit the breaks hard, or go on through when the light is, what I like to affectionately refer to as, "rorange".&amp;nbsp; With all the factors that our imperfect mental math needs to consider - the car we're in, the speed we're going, the distance to the safe stopping point (not the light itself), the weather, our tire traction, how close someone behind us is following - it's pretty despicable that the light could be set up to increase the probability of an accident for the purpose of increasing ticket revenue.&amp;nbsp; Aren't traffic laws supposed to &lt;i&gt;promote&lt;/i&gt; safety?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-5745213519845056554?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5745213519845056554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5745213519845056554'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/when-money-trumps-safety.html' title='When money trumps safety'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/S8SVANdXFRI/AAAAAAAAAGQ/YYEm6kdfr08/s72-c/yellow_traffic_light.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1036963950895401730</id><published>2010-04-12T16:50:00.000-04:00</published><updated>2010-04-12T16:50:36.590-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Random thought of the day</title><content type='html'>Why is it that my keys are always in the wrong pocket?&amp;nbsp; It always seems that whenever I'm carrying something to the car in one arm, my keys are in the unreachable pocket.&amp;nbsp; Or perhaps they're in the pocket with my phone or iPod threatening to scratch the screen.&amp;nbsp; I've had this problem enough that you'd think I'd have solved it by now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1036963950895401730?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1036963950895401730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1036963950895401730'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/random-thought-of-day.html' title='Random thought of the day'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4667700465727981843</id><published>2010-04-01T09:26:00.004-04:00</published><updated>2010-04-01T09:30:22.897-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>It's RSS feed reader bankruptcy day...</title><content type='html'>I read someone's blog recently where they called marking-everything-as-read in your RSS feeder "declaring feed bankruptcy".&amp;nbsp; The concept is that if you haven't looked at your feed reader in awhile, there's just too much there so you need to nuke the whole thing and go back to zero.&amp;nbsp; Today, April 1, is my annual "mark everything as read" day.&amp;nbsp; Not because there's too much to read, but because everything on the internet today is a ridiculous waste of time.&amp;nbsp; From the &lt;a href="http://en.wikipedia.org/wiki/Spaghetti_tree_hoax"&gt;spaghetti tree&lt;/a&gt; to &lt;a href="http://slashdot.org/"&gt;OMG! Ponies&lt;/a&gt;, join me in marking everything posted on the net as read, and then read a real book.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/S7Se42L-5jI/AAAAAAAAAGI/hziliEXRYx4/s1600/Ponies.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/S7Se42L-5jI/AAAAAAAAAGI/hziliEXRYx4/s320/Ponies.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4667700465727981843?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4667700465727981843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4667700465727981843'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/04/its-rss-feed-reader-bankruptcy-day.html' title='It&apos;s RSS feed reader bankruptcy day...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/S7Se42L-5jI/AAAAAAAAAGI/hziliEXRYx4/s72-c/Ponies.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4403741559252871045</id><published>2010-03-30T14:38:00.001-04:00</published><updated>2010-03-30T14:39:47.307-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>100th post...</title><content type='html'>It's my 100th post.&amp;nbsp; So, here's some &lt;a href="http://arstechnica.com/apple/news/2010/03/wsj-verizon-iphone-set-for-summer-launch.ars?utm_source=rss&amp;amp;utm_medium=rss&amp;amp;utm_campaign=rss"&gt;good news&lt;/a&gt; from the techie world &lt;a href="http://online.wsj.com/article/SB10001424052702304370304575152242601774892.html"&gt;to share&lt;/a&gt;! &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/S7JE8Nev60I/AAAAAAAAAGA/q_5NIwO343g/s1600/iphone.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/S7JE8Nev60I/AAAAAAAAAGA/q_5NIwO343g/s320/iphone.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4403741559252871045?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4403741559252871045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4403741559252871045'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/100th-post.html' title='100th post...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/S7JE8Nev60I/AAAAAAAAAGA/q_5NIwO343g/s72-c/iphone.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2508021817051926186</id><published>2010-03-29T13:38:00.000-04:00</published><updated>2010-03-29T13:38:06.623-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Bingle Tiger</title><content type='html'>When I need to find something on the web, I now do a &lt;b&gt;&lt;i&gt;Bingle &lt;/i&gt;&lt;/b&gt;search.&amp;nbsp; First &lt;a href="http://www.bing.com/"&gt;Bing&lt;/a&gt;, then (if I need to) &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; - in that order.&amp;nbsp; It used to be the other way around - &lt;i&gt;Goobing&lt;/i&gt;.&amp;nbsp; Not that I'm representative of the general internet user population mind you.&amp;nbsp; But this is a trend that does &lt;a href="http://www.ubergizmo.com/15/archives/2010/03/bing_market_share_increases.html"&gt;seem to be gaining some momentum&lt;/a&gt;.&amp;nbsp; Of course, there &lt;a href="http://www.eweek.com/c/a/Search-Engines/Microsoft-Ignored-the-Long-Tail-in-Search-Bing-Boss-Says-396023/"&gt;are conflicting reports&lt;/a&gt;.&amp;nbsp; But I think &lt;i&gt;Bingle&lt;/i&gt; may be catching on...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://252285322544598699-a-1802744773732722657-s-sites.googlegroups.com/site/mattmc3/Bingle.png?attachauth=ANoY7cp6U_99PTcJINdM2trZLx1yTr7Q_IQ33VB3NpkJiCnRKiXergA3kipyz6p9AtxhFzkay_nbEt-UmjwHBcuTc_B5Ovis2hZOofGp06F-hHxO4_oQVYTrStpHTev47Nolrg9Um2RH3BGycjy4RlPjQbA0oTfQfYPFQ10GR-JhTQn5jvtApSAieDTttpDPCApTexwDy21b&amp;amp;attredirects=0" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="387" src="http://252285322544598699-a-1802744773732722657-s-sites.googlegroups.com/site/mattmc3/Bingle.png?attachauth=ANoY7cp6U_99PTcJINdM2trZLx1yTr7Q_IQ33VB3NpkJiCnRKiXergA3kipyz6p9AtxhFzkay_nbEt-UmjwHBcuTc_B5Ovis2hZOofGp06F-hHxO4_oQVYTrStpHTev47Nolrg9Um2RH3BGycjy4RlPjQbA0oTfQfYPFQ10GR-JhTQn5jvtApSAieDTttpDPCApTexwDy21b&amp;amp;attredirects=0" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2508021817051926186?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2508021817051926186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2508021817051926186'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/bingle-tiger.html' title='Bingle Tiger'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8471563091446044789</id><published>2010-03-28T22:58:00.005-04:00</published><updated>2010-03-28T23:11:26.570-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='review'/><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>Dates and Dragons</title><content type='html'>Ah, date night.&amp;nbsp; My beautiful wife and I got to get out  of the house for a few hours while a friend put the kids to bed  and house-sat.&amp;nbsp; So very wonderful.&amp;nbsp; With the new baby growing a lot  lately, Beth didn't feel like doing anything that involved much walking,  so we wound up seeing Dreamwork's new pic, &lt;a href="http://www.rottentomatoes.com/m/1194522-how_to_train_your_dragon/"&gt;How to Train Your Dragon&lt;/a&gt; in  3D.&amp;nbsp; Wow.&amp;nbsp; No really - WOW!&amp;nbsp; Great and mostly original plot.&amp;nbsp;  Visually stunning.&amp;nbsp; Fast-paced, and action packed.&amp;nbsp; And the 3D enhanced  the story rather than distracted from it.&amp;nbsp; A little light on the humor, and female characters are noticeably under-represented, but it's by far the best non-Pixar movie we've seen in the theater in a  long time.&amp;nbsp; Actually come to think of it, Pixar's last one &lt;a href="http://www.rottentomatoes.com/m/up/"&gt;Up&lt;/a&gt; was mostly &lt;i&gt;meh.&lt;/i&gt;&amp;nbsp; And with &lt;a href="http://www.rottentomatoes.com/m/toy_story_3/"&gt;their next one&lt;/a&gt; being a tired old sequel from last decade, Pixar may be past their prime. Anyway, what are you waiting for!?&amp;nbsp; Go see this one!&amp;nbsp; (Not suitable for  kids under 10, despite the marketing).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/S7AXTckDMYI/AAAAAAAAAFo/H5EnPZDMzwE/s1600/traindragonmovie.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/S7AXTckDMYI/AAAAAAAAAFo/H5EnPZDMzwE/s400/traindragonmovie.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8471563091446044789?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8471563091446044789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8471563091446044789'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/dates-and-dragons.html' title='Dates and Dragons'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/S7AXTckDMYI/AAAAAAAAAFo/H5EnPZDMzwE/s72-c/traindragonmovie.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1713593698396699604</id><published>2010-03-28T22:36:00.000-04:00</published><updated>2010-03-28T22:36:01.820-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>There's no place like home</title><content type='html'>The Columbus Dispatch &lt;a href="http://www.dispatch.com/live/content/local_news/stories/2010/03/28/whats-your-house-worth.html?type=rss&amp;amp;cat=&amp;amp;sid=101"&gt;posted an article&lt;/a&gt; and &lt;a href="http://www.dispatch.com/live/content/local_news/stories/2010/03/28/28mapte.html?sid=101"&gt;a map&lt;/a&gt; of how home values have been affected in Columbus from 2005-2009.  Very interesting...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/S7ARSQvvcAI/AAAAAAAAAFg/rj7Mgzvl5-8/s1600/Home+values.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/S7ARSQvvcAI/AAAAAAAAAFg/rj7Mgzvl5-8/s640/Home+values.jpg" width="563" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1713593698396699604?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1713593698396699604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1713593698396699604'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/theres-no-place-like-home.html' title='There&apos;s no place like home'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/S7ARSQvvcAI/AAAAAAAAAFg/rj7Mgzvl5-8/s72-c/Home+values.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4895357479373991891</id><published>2010-03-26T10:03:00.003-04:00</published><updated>2010-03-26T10:07:20.016-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>The crazy part lost its grip momentarily, and the light shone true and bright... then 'twas quelled forevermore</title><content type='html'>His conscience &lt;a href="http://www.cnn.com/2010/POLITICS/03/26/reid.vote.gaffe/index.html?eref=rss_topstories&amp;amp;utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+rss%2Fcnn_topstories+%28RSS%3A+Top+Stories%29"&gt;managed to squeak a word out&lt;/a&gt; before the crazy part of his brain knew what was happening.&amp;nbsp; That part was promptly shouted back down, and it shrank back to the dark  recesses of his rotted soul, and &lt;i&gt;The Crazy&lt;/i&gt;&lt;i&gt; &lt;/i&gt;reigned supreme once more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4895357479373991891?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4895357479373991891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4895357479373991891'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/crazy-part-lost-its-grip-momentarily.html' title='The crazy part lost its grip momentarily, and the light shone true and bright... then &apos;twas quelled forevermore'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2792756185133166884</id><published>2010-03-25T22:25:00.001-04:00</published><updated>2010-03-26T08:49:35.204-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>You think it's easy being the Tooth Fairy?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/S6wYHUjoOnI/AAAAAAAAAFY/1gU1UZyTN_k/s1600/tooth-fairy.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/S6wYHUjoOnI/AAAAAAAAAFY/1gU1UZyTN_k/s200/tooth-fairy.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;I had one of those - &lt;i&gt;"I'm the worst parent in the world"&lt;/i&gt; moments this morning.&amp;nbsp; Ian lost his fourth tooth yesterday after days of working on it.&amp;nbsp; He bravely let me pop it out with some floss.&amp;nbsp; He was so excited.&amp;nbsp; He phoned everyone.&amp;nbsp; Then, I let him download one mp3 (he chose the Spiderman theme song) as a reward for his bravery.&amp;nbsp; After all the hoopla and celebrating, he went to bed with a ziplock bag under his pillow.&amp;nbsp; And he woke up this morning... with a ziplock bag under his pillow.&amp;nbsp; Oh God help me!&amp;nbsp; I raced into his room hoping he was still asleep, but alas... with quivering chin he surmised that the tooth fairy had forgotten him.&amp;nbsp; I showed him a $1 bill, and told him that I actually found it under my pillow.&amp;nbsp; &lt;i&gt;"You see Ian, the tooth fairy thought that I had loaned you the money to buy your mp3 yesterday, so she gave me the dollar thinking you were going to pay me back.&amp;nbsp; She's so silly - she didn't know that the mp3 was a gift."&lt;/i&gt;&amp;nbsp; He smiled, and then we both laughed.&amp;nbsp; Laughed at the worst... tooth fairy... ever....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2792756185133166884?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2792756185133166884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2792756185133166884'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/you-think-its-easy-being-tooth-fairy.html' title='You think it&apos;s easy being the Tooth Fairy?'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/S6wYHUjoOnI/AAAAAAAAAFY/1gU1UZyTN_k/s72-c/tooth-fairy.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2231601548820219407</id><published>2010-03-25T21:44:00.002-04:00</published><updated>2010-03-25T21:46:29.896-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Interesting eBay dynamics</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/S6wENBGvDWI/AAAAAAAAAFQ/3F35kzUS9kg/s1600/Kindle2.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/S6wENBGvDWI/AAAAAAAAAFQ/3F35kzUS9kg/s320/Kindle2.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;I recently made a little purchase from eBay.&lt;br /&gt;&lt;br /&gt;Before I did it, I watched some of these sell on eBay.&amp;nbsp; It's interesting... these things retail for $259 from Amazon today.&amp;nbsp; The shipping is free too.&amp;nbsp; But they used to be $359, then they were $299.&amp;nbsp; Some people obviously bought theirs at the previous prices, because they're listing them on eBay for &lt;a href="http://cgi.ebay.com/NEW-Amazon-Kindle-2-II-Wireless-eBook-Reading-Device_W0QQitemZ280382677223QQcmdZViewItemQQptZLH_DefaultDomain_0?hash=item41481c20e7"&gt;&lt;i&gt;way more &lt;/i&gt;&lt;/a&gt;than $259.&amp;nbsp; Why anyone would pay MORE to get a product from eBay than they would to get the new one from Amazon is beyond me.&lt;br /&gt;&lt;br /&gt;Then, as I watched a couple of auctions for the reasonably priced ones, I noticed that the auctions that closed earlier in the evening would have a lot of competitive bidding at the end that drove the price up by sometimes more than $15.00 in the last 5 minutes of the auction.&amp;nbsp; The ones that closed later (Pacific time) had fewer late bids so the final prices were lower.&lt;br /&gt;&lt;br /&gt;I also noticed that some people charged shipping, while others didn't.&amp;nbsp; But, the final bids seemed not to account for shipping at all.&amp;nbsp; People would bid up to $240ish, which might have been an okay deal if the shipping was free.&amp;nbsp; But with shipping at $13, it's no deal at all.&amp;nbsp; For a few more dollars, they could have gotten a new one from Amazon.&amp;nbsp; Either people can't do math, or they get caught up in the emotion of trying to beat everyone else and lose all sense of reason.&lt;br /&gt;&lt;br /&gt;Granted I picked one product and only watched it sell for only a few days.&amp;nbsp; My research is nowhere near conclusive.&amp;nbsp; But it seems like if you're going to sell something on eBay your best strategy would be to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Be aware of what time your auction will end.&amp;nbsp; Specifically, you probably want folks in the Eastern time zone to be at home and still awake when it ends in order to maximize your bidders nationwide.&lt;/li&gt;&lt;li&gt;Separate your shipping fee.&amp;nbsp; Don't offer free shipping.&amp;nbsp; People apparently can't do math - they just bid on the product and think of shipping costs as an afterthought.&lt;/li&gt;&lt;li&gt;Include a real blurb about the specific item the buyer will receive.&amp;nbsp; So many people just use stock photos and copy-and-paste product descriptions.&amp;nbsp; People know they're buying used, so they want to know about the minor scuff mark on the back, or that the product comes in the original packaging.&amp;nbsp; The stuff that seemed like it was being sold by a real person received the most bids.&amp;nbsp; 30-50 in some cases.&amp;nbsp; The auctions that were not unique with rubber stamp photos and descriptions would get 9-15 bids.&lt;/li&gt;&lt;/ol&gt;&amp;nbsp;Once my Kindle 2 arrives, I'll have to post a review.&amp;nbsp; It was a tight race between it and the smaller, sleeker, but less featureful &lt;a href="http://www.amazon.com/gp/product/B002MWWMH8/ref=s9_simh_gw_p23_i2?pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_s=center-3&amp;amp;pf_rd_r=18Y0G2939Q5Y6ZTXBJFJ&amp;amp;pf_rd_t=101&amp;amp;pf_rd_p=470938811&amp;amp;pf_rd_i=507846"&gt;Sony PRS-300&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2231601548820219407?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2231601548820219407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2231601548820219407'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/interesting-ebay-dynamics.html' title='Interesting eBay dynamics'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/S6wENBGvDWI/AAAAAAAAAFQ/3F35kzUS9kg/s72-c/Kindle2.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1749238282603184521</id><published>2010-03-25T09:08:00.003-04:00</published><updated>2010-03-25T10:54:07.607-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>How do we go about getting copyrights on our DNA?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/S6teTAp5VFI/AAAAAAAAAFI/fngkNF8VuRo/s1600/dna.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/S6teTAp5VFI/AAAAAAAAAFI/fngkNF8VuRo/s200/dna.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;In Ohio this week, Governor Strickland &lt;a href="http://www.dispatchpolitics.com/live/content/local_news/stories/2010/03/25/copy/lawmakers-ok-ohio-dna-bill.html?adsec=politics&amp;amp;sid=101"&gt;was just sent a bill that would allow for the collection of a suspect's DNA&lt;/a&gt; if they are arrested in connection with a felony crime.&amp;nbsp; Not &lt;i&gt;convicted&lt;/i&gt; mind you... just anyone who is picked up off the street will now be compelled to give up their DNA.&amp;nbsp; And, of course, it's not just for a one-time use to exonerate someone - once you give up your DNA it's in a government database &lt;i&gt;forever&lt;/i&gt;.&amp;nbsp; And once it's gone, &lt;i&gt;you don't get to control how it's used&lt;/i&gt;.&amp;nbsp; Think about that...&amp;nbsp; when you're proven innocent, you don't get to force them to delete your DNA data from their databases.&amp;nbsp; Or restrict who it's shared with.&amp;nbsp; And even though it's only for felonies now, this seems to be a slippery slope.&amp;nbsp; It doesn't seem so far fetched anymore to wonder if a routine traffic stop will someday result in a swabbing.&amp;nbsp; Or, maybe we should get all &lt;a href="http://www.imdb.com/title/tt0181689/"&gt;Minority Report&lt;/a&gt; and swab all newborns.&amp;nbsp; Pre-crime is the future!&lt;br /&gt;&lt;br /&gt;Of course, the sound byte on this is that this will help law enforcement identify criminals and get them off the street.&amp;nbsp; &lt;i&gt;You aren't soft on crime, are you!?&amp;nbsp; You're a law abiding citizen, so you have nothing to worry about.&amp;nbsp; This will make you safer.&lt;/i&gt;&amp;nbsp; That's always the tradeoff, isn't it?&amp;nbsp; Liberty, or security.&amp;nbsp; Security or liberty.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1749238282603184521?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1749238282603184521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1749238282603184521'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/how-do-we-go-about-getting-copyrights.html' title='How do we go about getting copyrights on our DNA?'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/S6teTAp5VFI/AAAAAAAAAFI/fngkNF8VuRo/s72-c/dna.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3635549374601390564</id><published>2010-03-24T11:44:00.002-04:00</published><updated>2010-03-25T20:34:09.859-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>iRobot wasn't just a good movie...</title><content type='html'>...they also make really neat toys...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/S6ow0-It8dI/AAAAAAAAAFA/Q_o7y_G0BMg/s1600/Roomba.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_vk9s6T9uHh0/S6ow0-It8dI/AAAAAAAAAFA/Q_o7y_G0BMg/s400/Roomba.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;How on earth does &lt;a href="http://w00t.com/"&gt;W00t!&lt;/a&gt; wind up getting these prices on &lt;i&gt;new&lt;/i&gt; condition items?&amp;nbsp; These things sell for around $400 &lt;a href="http://store.irobot.com/home/index.jsp"&gt;here&lt;/a&gt;.&amp;nbsp; Granted, what W00t! gets must be previous generation overstock Roombas, but I for one can't see paying full price when these regularly show up on W00t! for less than 1/2 MSRP.&lt;br /&gt;&lt;br /&gt;Now, if only I could get a Kindle or a Nook in the sub $200 range...&amp;nbsp; eBay perhaps.&amp;nbsp; Ah, the internet... where the free market thrives and where the real price point of a product for each demographic can be found.&amp;nbsp; If only you didn't get gouged on shipping.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3635549374601390564?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3635549374601390564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3635549374601390564'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/irobot-wasnt-just-good-movie.html' title='iRobot wasn&apos;t just a good movie...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vk9s6T9uHh0/S6ow0-It8dI/AAAAAAAAAFA/Q_o7y_G0BMg/s72-c/Roomba.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7934671237226260898</id><published>2010-03-23T21:34:00.004-04:00</published><updated>2010-03-23T22:15:21.832-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pop quiz'/><title type='text'>Pop quiz, hotshot! - 3.23.10 edition answer</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/S6l1nW9veSI/AAAAAAAAAE4/p3l6y3CHHFY/s1600-h/JimmyDean_01.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/S6l1nW9veSI/AAAAAAAAAE4/p3l6y3CHHFY/s320/JimmyDean_01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;The question was: What are &lt;i&gt;Ceres&lt;/i&gt; and &lt;i&gt;Eris&lt;/i&gt;? &lt;br /&gt;And the answer is...&lt;br /&gt;&lt;br /&gt;...Ceres and Eris, (along with Pluto, Haumea and Makemake), make up the five dwarf planets within our solar system.&amp;nbsp; Why is that significant?&amp;nbsp; Well, Ceres is actually the smallest known dwarf planet, and it resides in the asteroid belt between&amp;nbsp; Mars and Jupiter.&amp;nbsp; Eris is the largest known dwarf planet in our solar system, and has an orbit more distant than Pluto's.&amp;nbsp; There's a great image of the three of them &lt;a href="http://www.arcadiastreet.com/cgvistas/pluto_006a.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I have a poster from National Geographic in my cube at work that has some facts and relative size depictions of the 8 planets in our solar system along with 3 of the 5 dwarf planets - Ceres, Pluto, and Eris.&amp;nbsp; This poster was put out shortly after the IAU decision in 2006 to define what is and isn't a planet.&amp;nbsp; That was nice of them since every other space poster since the 70's depicting 9 planets just became outdated.&lt;br /&gt;&lt;br /&gt;That decision wound up with Pluto being demoted, and caused some public outcry.&amp;nbsp; People, it seemed, were very attached to Pluto as a 9th planet.&amp;nbsp; Well, that's really an understatement.&amp;nbsp; Some people (&lt;a href="http://www.telegraph.co.uk/science/science-news/3349184/Pluto-should-get-back-planet-status-say-astronomers.html"&gt;including astronomers&lt;/a&gt;) were actually outraged at the reclassification.&amp;nbsp; There's even &lt;a href="http://plutopetition.com/"&gt;a petition website&lt;/a&gt;.&amp;nbsp; In Illinois last year the state senate &lt;a href="http://news.nationalgeographic.com/news/2009/03/090311-pluto-planet-illinois.html"&gt;voted that Pluto was to be a planet again for a day&lt;/a&gt;.&amp;nbsp; Pluto is the underdog, and people like to root for an underdog.&amp;nbsp; &lt;i&gt;Pluto has 3 moons for goodness sakes!&amp;nbsp; It's not a planet?&amp;nbsp; Who says?&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Well, actually some really smart and very well reasoned people said, "look, we weren't right originally".&amp;nbsp; We need to alter our thinking to go further.&amp;nbsp; We need to shift our paradigm a bit.&amp;nbsp; There are other bodies in orbit around the sun - some larger, and some smaller than Pluto.&amp;nbsp; It makes more sense to group Pluto into this other classification with these four other celestial bodies.&lt;br /&gt;&lt;br /&gt;I like having that poster in my cube because it is a daily reminder that often people get caught up in their way of thinking and can't break free.&amp;nbsp; And then one little piece of extra information can alter their view of a topic, or push someone to a different way of looking at the world.&amp;nbsp; Those are &lt;a href="http://www.rainskit.com/blog/596/the-nature-of-a-fetus"&gt;the kinds of stories&lt;/a&gt; that energize me.&amp;nbsp; Being open to learning something new or different.&amp;nbsp; Being willing to admit a mistake.&amp;nbsp; Knowing when to hold on and when to let go.&amp;nbsp; We didn't lose a planet with Pluto - we gained Ceres and Eris and a bit more understanding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7934671237226260898?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7934671237226260898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7934671237226260898'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/pop-quiz-hotshot-32310-edition-answer.html' title='Pop quiz, hotshot! - 3.23.10 edition answer'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/S6l1nW9veSI/AAAAAAAAAE4/p3l6y3CHHFY/s72-c/JimmyDean_01.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-6786291853601296385</id><published>2010-03-23T12:03:00.000-04:00</published><updated>2010-03-23T12:03:05.027-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pop quiz'/><title type='text'>Pop quiz, hotshot! - 3.23.10 edition</title><content type='html'>What are &lt;i&gt;Ceres&lt;/i&gt; and &lt;i&gt;Eris&lt;/i&gt;?&amp;nbsp; No internet searches allowed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-6786291853601296385?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6786291853601296385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6786291853601296385'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/pop-quiz-hotshot-32310-edition.html' title='Pop quiz, hotshot! - 3.23.10 edition'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4485769545073590426</id><published>2010-03-19T15:07:00.008-04:00</published><updated>2010-03-19T19:15:02.925-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='faith'/><title type='text'>Snapple does math</title><content type='html'>I gave up pop for lent.&amp;nbsp; Since&amp;nbsp; February 17th, I've not had a single carbonated beverage.&amp;nbsp; My work has fridges stocked to the brim with free pop, so this has been quite a challenge for me these past 30 days.&amp;nbsp; 16 days to go.&amp;nbsp; Not that I'm complaining... I went from 3-4 cans of pop a day (plus who knows how much from the fountain at Chipotle) to &lt;i&gt;nothing&lt;/i&gt;.&amp;nbsp; A co-worker today told me he's taken on the same endeavor.&lt;br /&gt;&lt;br /&gt;I had dinner with my family last night since my sister is in town.&amp;nbsp; My mom knew immediately - she's probably never in the past 26 years seen me at a restaurant where I didn't order a pop.&amp;nbsp; Since age 5, I've been hooked.&amp;nbsp; Five was when I tasted a can of Tab for the first time.&amp;nbsp; The &lt;i&gt;crack-fizz&lt;/i&gt; of a can opening is perhaps the most effective advertising in the known universe.&lt;br /&gt;&lt;br /&gt;One of the strange side effects has been that I started drinking tea.&amp;nbsp; I've never liked iced tea. When I've given up pop in the past, it's been replaced by mass quantities of lemonade.&amp;nbsp; Really, I know it's H2O that I should be drinking - and I have been - but surprisingly tea has been my #1 choice this go-around.&amp;nbsp; I attribute it to the fact that I switched to diet pop a couple of years ago, and my sweet tooth has diminished because of it.&amp;nbsp; Tea has gone from tolerable, to somewhat enjoyable to me now.&lt;br /&gt;&lt;br /&gt;Anyway, my work offers free Snapple too, and on the inside of one of the Snapple caps today was this:&lt;br /&gt;111,111,111 * 111,111,111 = 12345678987654321.&amp;nbsp; I thought that was pretty spiffy.&amp;nbsp; I haven't decided if I'm going back to drinking pop after Easter.&amp;nbsp; I might miss out on some useless trivia on the inside of those caps.&amp;nbsp; Ahhh... Addiction.&amp;nbsp; Habits.&amp;nbsp; Routine.&amp;nbsp; Even when I break free of one, I succumb to another.&lt;br /&gt;&lt;br /&gt;There's a scene from The Devil Wears Prada.&amp;nbsp; Yes, I'm admitting to having seen it - shut up.&amp;nbsp; The protagonist, Andy, has no interest at all in fashion or the fashion world.&amp;nbsp; But, through a series of only-in-a-movie circumstances, she has somehow landed in the middle of the fashion universe with a dream (well, nightmare actually) job.&amp;nbsp;&lt;a href="http://www.imdb.com/title/tt0458352/quotes"&gt; She has the following interaction with her boss, Miranda, who is the 'Devil' from the title&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;[Miranda and some assistants are deciding between two similar belts  for an outfit. Andy sniggers because she thinks they look exactly the  same]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Miranda Priestly:&lt;/b&gt;&lt;i&gt; &lt;/i&gt;Something funny?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Andy Sachs:&lt;/b&gt; No, no, nothing. Y'know, it's just that both those belts look exactly the same to me. Y'know, I'm still learning about all this stuff.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Miranda Priestly:&lt;/b&gt; This... 'stuff'? Oh... ok. I see, you think this has nothing to do with you. You go to your closet and you select out, oh I don't know, that lumpy blue sweater, for instance, because you're trying to tell the world that you take yourself too seriously to care about what you put on your back. But what you don't know is that that sweater is not just blue, it's not turquoise, it's not lapis, it's actually cerulean. You're also blithely unaware of the fact that in 2002, Oscar De La Renta did a collection of cerulean gowns. And then I think it was Yves St Laurent, wasn't it, who showed cerulean military jackets? I think we need a jacket here. And then cerulean quickly showed up in the collections of 8 different designers. Then it filtered down through the department stores and then trickled on down into some tragic casual corner where you, no doubt, fished it out of some clearance bin. However, that blue represents millions of dollars and countless jobs and so it's sort of comical how you think that you've made a choice that exempts you from the fashion industry when, in fact, you're wearing the sweater that was selected for you by the people in this room. From a pile of stuff.&lt;/blockquote&gt;&lt;br /&gt;I try to be really conscious of consumerism.&amp;nbsp; When the kids see an ad on TV, they are transfixed, and Beth and I try to pry them back to reality by asking, "What are they trying to get you to buy?" or "What are they trying to get you to do?" or my favorite - "&lt;i&gt;What are they trying to make you believe?&lt;/i&gt;".&amp;nbsp; Their answers aren't very sophisticated yet, but my own answers are when I ask myself these questions.&amp;nbsp; I sound so immune from consumerism in the conversations in my own head.&amp;nbsp; But there's this other part of me that wonders about that jingle I keep humming, or the way that the &lt;i&gt;crack-fizz&lt;/i&gt; makes me salivate like a Pavlovian K-9, or the way I ritually turn over my Snapple caps.&amp;nbsp; Am I really free?&amp;nbsp; The math just doesn't &lt;i&gt;quite &lt;/i&gt;add up...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/S6PFFvLBOwI/AAAAAAAAAEw/dWW1GAHfkzw/s1600-h/Calc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="318" src="http://1.bp.blogspot.com/_vk9s6T9uHh0/S6PFFvLBOwI/AAAAAAAAAEw/dWW1GAHfkzw/s320/Calc.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4485769545073590426?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4485769545073590426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4485769545073590426'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/snapple-does-math.html' title='Snapple does math'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vk9s6T9uHh0/S6PFFvLBOwI/AAAAAAAAAEw/dWW1GAHfkzw/s72-c/Calc.png' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2620507342498662946</id><published>2010-03-16T22:13:00.018-04:00</published><updated>2010-03-17T09:10:41.846-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Ruminations on the now infamous Health Care Bill of 2010</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_vk9s6T9uHh0/S6A13nblCMI/AAAAAAAAAEo/qhooEgtYUOQ/s1600-h/stethoscope.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="172" src="http://2.bp.blogspot.com/_vk9s6T9uHh0/S6A13nblCMI/AAAAAAAAAEo/qhooEgtYUOQ/s200/stethoscope.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;I keep hearing variations of these phrases over and over in the discussion on health care:&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;"We cannot do nothing"&lt;/li&gt;&lt;li&gt;"Doing nothing is not an option"&lt;/li&gt;&lt;li&gt;"Even if this bill isn't really what we wanted, it's still better than doing nothing"&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;There's been a lot of articles about &lt;a href="http://www.nytimes.com/2010/02/28/weekinreview/28abelson.html"&gt;the cost of doing nothing&lt;/a&gt;.&amp;nbsp; And I mostly agree - things can't go on in the direction they're going.&amp;nbsp; We probably shouldn't &lt;i&gt;do nothing&lt;/i&gt; as far as health care goes.&amp;nbsp; Of course, it seems odd that &lt;a href="http://www.rasmussenreports.com/public_content/politics/mood_of_america/importance_of_issues"&gt;the number one priority of the American voter &lt;b&gt;is the economy&lt;/b&gt;&lt;/a&gt;, and &lt;i&gt;doing nothing&lt;/i&gt; is the very strategy being implemented to address those problems... but I digress.&lt;br /&gt;&lt;br /&gt;As I was saying, I don't have any trouble with the statement that we cannot just do nothing - the problem I have is with the continuation of that statement - that what is being proposed now&lt;i&gt; &lt;/i&gt;is somehow &lt;b&gt;&lt;i&gt;better than doing nothing&lt;/i&gt;&lt;/b&gt;.&amp;nbsp; I don't believe that's true.&amp;nbsp; Not for a second.&amp;nbsp; I believe that with our country facing record deficits, two wars, a disappearing job market, an out-of-control housing market, an insufficiently-regulated and poorly understood banking system, baby-boomers about to retire, and Iran making nuclear threats that are eventually going to force us to act - we are in for a world of hurt if we do the wrong thing here.&amp;nbsp; Doing nothing is actually a &lt;b&gt;better &lt;/b&gt;option than doing the &lt;b&gt;wrong &lt;/b&gt;thing.&amp;nbsp; And that's what I think this bill is in it's current state - the wrong thing.&lt;br /&gt;&lt;br /&gt;Now, should we do something - yes.&amp;nbsp; There's no dispute.&amp;nbsp; Should it be the most pressing thing congress is doing now?  Should Obama be the proverbial emperor Nero? Fiddling-with-Health-Care-as-Home-Burns? Well, lets forget all that.  Lets just pretend for a minute that our country isn't in the greatest economic crisis since the Great Depression and that unemployment isn't in double-digits; lets pretend we live in some alternate era where most rational people could agree with Health Care as the #1 priority on the docket.&amp;nbsp; Lets look at just a few of the problems with our Health Care system in this country in no particular order in a list that is far from exhaustive:&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;h4&gt;Some problems I see with our current health care system:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Health care costs are increasing at a rate vastly greater than inflation.&amp;nbsp; The rate is not sustainable.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The young and healthy are less likely to contribute to the system since they don't need to utilize the system.&amp;nbsp; And they have no way to invest in it in any reasonable way for the future when they will inevitably need more health care - you pay your premiums for a year and that's all there is to it.&amp;nbsp; No future thinking - this isn't a 401k.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Health care is often tied to your employment and subsidized as a benefit.&amp;nbsp; This means:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Free-market principles don't work - consumers cannot shop around for comparable insurance - they either take what their employer subsidizes, or pay extravagant premiums for their own, or they go without and pay out-of-pocket.&lt;/li&gt;&lt;li&gt;If you leave your job, you're all of a sudden without insurance.&amp;nbsp; You can do COBRA, but without the subsidy from your employer it's not worth the cost.&amp;nbsp; The only reason to do COBRA is if you have major medical expenses, or have a pre-existing condition where you fear having a gap in coverage.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Free-market principles don't work in the doctors office - the consumer is not knowledgeable about the cost of tests, labs, and procedures - nor do they know about their necessity, effectiveness, or alternatives.&amp;nbsp; Often, there's just a race to meet the deductible, and then all the real costs of health care get buried in insurance EOBs.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;The quality of care and the knowledge of your doctors varies.&amp;nbsp; One doctor may order a bunch of unnecessary tests (hey, insurance pays, right!?) or recommend costly surgeries.&amp;nbsp; Another doc may treat with medications or non-surgical options.&amp;nbsp; Practicing medicine is sometimes an art, not just a science.&amp;nbsp; Some people are better at it than others.&amp;nbsp; Some are good docs, but are out of date.&amp;nbsp; Some run up a tab like it's an episode of House.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Big Pharma spends big dollars educating docs on the newest meds they sell - less costly generics may be just as good, but the docs don't always hear about those alternatives.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;People don't understand their health care - it's often very confusing.&amp;nbsp; The Dr. is in a hurry, or the patient doesn't know what questions to ask.&amp;nbsp; This leads to misuse or non-use of medication, re-admission to the hospital, and all sorts of other costly health care incidents.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;People self-refer to specialists (often the wrong one, so big $$$ wasted), or they use the ER or Urgent Care as their primary Dr. office.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Americans are (statistically speaking) fat and lazy which contributes to all sorts of health problems and costs.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Doctors don't (and often can't) easily share information.&amp;nbsp; Is that procedure duplicative?&amp;nbsp; Did that patient just have an MRI that is usable from last month?&amp;nbsp; ERMs (electronic medical records) are not ubiquitous by any stretch, and are still too costly for many small practices.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Many, many people are uninsured, or unisurable.&amp;nbsp; They're often poor, or very sick, or both.&amp;nbsp; The number being bandied about is &lt;a href="http://www.washingtonexaminer.com/opinion/blogs/beltway-confidential/Obama-I-used-to-say-47-million-uninsured--Now-its-30-million-58237842.html"&gt;30 million&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;...and I'm sure that you can think of 100 other problems with our health care system off the top of your head.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;How many of these problems is the president even talking about, &lt;b&gt;and how many of these will have solutions in this bill&lt;/b&gt;?&amp;nbsp; The one and only one appeal I've heard lately from the president is the last bullet point I mentioned above - we keep receiving the emotional appeal about the 30 million uninsured.&amp;nbsp; They're hell-bent on fixing that one, at a cost of who knows how much.&lt;br /&gt;&lt;br /&gt;I'll be the first to admit that it's easier to be a critic than it is to create something of real value.&amp;nbsp; I don't envy those we've sent to Washington.&amp;nbsp; They're tackling an issue that, quite frankly, career politicians probably aren't qualified to understand.&amp;nbsp; The trouble is, they're unwilling to admit that they don't really understand the implications of what they're doing.&amp;nbsp; They keep saying "trust us", while we keep begging them to "please just listen to us".&amp;nbsp; Doing the wrong thing here will have more severe consequences than doing nothing.&amp;nbsp; At least with doing nothing, you're not under the delusion that you've made progress.&amp;nbsp; Of course, I'd much prefer that they do the right thing than nothing, but it's doubtful anyone can agree on what that even is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2620507342498662946?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2620507342498662946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2620507342498662946'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/ruminations-on-now-infamous-health-care.html' title='Ruminations on the now infamous Health Care Bill of 2010'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_vk9s6T9uHh0/S6A13nblCMI/AAAAAAAAAEo/qhooEgtYUOQ/s72-c/stethoscope.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1711984059763390837</id><published>2010-03-12T11:58:00.002-05:00</published><updated>2010-03-12T16:58:27.332-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>.NET DST Calculator</title><content type='html'>I have a common .NET library written in C# that I use everywhere.&amp;nbsp; I call it &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mattmc3.Util&lt;/span&gt;, and it contains helper methods (static classes or extension methods) that correspond to Microsoft's BCL.&amp;nbsp; So, for example, I have a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DateTimeHelper&lt;/span&gt; with static methods that corresponds to the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;System.DateTime&lt;/span&gt; class.&amp;nbsp; The &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DateTime&lt;/span&gt; class is one of the most anemic in the .NET library, mainly because MS has to deal with international customers, so methods like &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DateTime GetMemorialDay(int year)&lt;/span&gt; are too regional and clutter the BCL, but are essential in the American business world.&lt;br /&gt;&lt;br /&gt;In honor of Daylight Savings Time beginning this weekend, I decided to post some code from my &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DateTimeHelper&lt;/span&gt; class.&lt;br /&gt;&lt;br /&gt;First off, a little bit of helper code.&lt;br /&gt;&lt;pre class="code-snippet"&gt;public enum Month {&lt;br /&gt;   January = 1,&lt;br /&gt;   February = 2,&lt;br /&gt;   March = 3,&lt;br /&gt;   April = 4,&lt;br /&gt;   May = 5,&lt;br /&gt;   June = 6,&lt;br /&gt;   July = 7,&lt;br /&gt;   August = 8,&lt;br /&gt;   September = 9,&lt;br /&gt;   October = 10,&lt;br /&gt;   November = 11,&lt;br /&gt;   December = 12&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public enum WeekPlacement {&lt;br /&gt;   First = 1,&lt;br /&gt;   Second = 2,&lt;br /&gt;   Third = 3,&lt;br /&gt;   Fourth = 4,&lt;br /&gt;   Last = 5&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetLastDayOfMonth(DateTime theDate) {&lt;br /&gt;   int daysInMonth = DateTime.DaysInMonth(theDate.Year, theDate.Month);&lt;br /&gt;   return new DateTime(theDate.Year, theDate.Month, daysInMonth);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then, the workhorse method that does the calculations. &lt;br /&gt;&lt;pre class="code-snippet"&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// This method calculates a date for you.  For example, Thanksgiving falls on the 4th Thursday&lt;br /&gt;/// of November, so you would call GetCalculatedDate(WeekPlacement.Fourth, DayOfWeek.Thursday, Month.November, DateTime.Now.Year)&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;public static DateTime GetCalculatedDate(WeekPlacement weekPlacement, DayOfWeek dayOfWeek, Month month, int year) {&lt;br /&gt;   var result = DateTime.MinValue;&lt;br /&gt;   var intMonth = (int)month;&lt;br /&gt;&lt;br /&gt;   if (weekPlacement == WeekPlacement.Last) {&lt;br /&gt;      result = GetLastDayOfMonth(new DateTime(year, intMonth, 1));&lt;br /&gt;      while (result.DayOfWeek != dayOfWeek) {&lt;br /&gt;         result = result.AddDays(-1);&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;   else {&lt;br /&gt;      result = new DateTime(year, intMonth, 1);&lt;br /&gt;      while (result.DayOfWeek != dayOfWeek) {&lt;br /&gt;         result = result.AddDays(1);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      var weeksToAdd = (int)weekPlacement - 1;&lt;br /&gt;      result = result.AddDays(7 * weeksToAdd);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   // Post condition&lt;br /&gt;   if (result.DayOfWeek != dayOfWeek || result.Month != intMonth || result.Year != year) {&lt;br /&gt;      result = DateTime.MinValue;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return result;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And finally, some of the methods that allow me to calculate holidays and other calendar events that are important for our business applications.&lt;br /&gt;&lt;pre class="code-snippet"&gt;public static DateTime GetNewYearsDay(int year) {&lt;br /&gt;   return new DateTime(year, 1, 1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetMemorialDay(int year) {&lt;br /&gt;   return GetCalculatedDate(WeekPlacement.Last, DayOfWeek.Monday, Month.May, year);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetIndependanceDay(int year) {&lt;br /&gt;   return new DateTime(year, 7, 4);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetLaborDay(int year) {&lt;br /&gt;   return GetCalculatedDate(WeekPlacement.First, DayOfWeek.Monday, Month.September, year);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetThanksgivingDay(int year) {&lt;br /&gt;   return GetCalculatedDate(WeekPlacement.Fourth, DayOfWeek.Thursday, Month.November, year);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetChristmasDay(int year) {&lt;br /&gt;   return new DateTime(year, 12, 25);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetDaylightSavingsTimeStart(int year) {&lt;br /&gt;   if (year &amp;gt;= 2007) {&lt;br /&gt;      // Second Sunday in March&lt;br /&gt;      return GetCalculatedDate(WeekPlacement.Second, DayOfWeek.Sunday, Month.March, year);&lt;br /&gt;   }&lt;br /&gt;   else if (year &amp;gt;= 1987) {&lt;br /&gt;      // First Sunday in April&lt;br /&gt;      return GetCalculatedDate(WeekPlacement.First, DayOfWeek.Sunday, Month.April, year);&lt;br /&gt;   }&lt;br /&gt;   else {&lt;br /&gt;      return DateTime.MinValue;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static DateTime GetDaylightSavingsTimeEnd(int year) {&lt;br /&gt;   if (year &amp;gt;= 2007) {&lt;br /&gt;      // First Sunday in November&lt;br /&gt;      return GetCalculatedDate(WeekPlacement.First, DayOfWeek.Sunday, Month.November, year);&lt;br /&gt;   }&lt;br /&gt;   else if (year &amp;gt;= 1987) {&lt;br /&gt;      // Last Sunday in October&lt;br /&gt;      return GetCalculatedDate(WeekPlacement.Last, DayOfWeek.Sunday, Month.October, year);&lt;br /&gt;   }&lt;br /&gt;   else {&lt;br /&gt;      return DateTime.MinValue;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Enjoy!  Spring is nearly here!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1711984059763390837?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1711984059763390837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1711984059763390837'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/net-dst-calculator.html' title='.NET DST Calculator'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-798976371197651196</id><published>2010-03-09T10:57:00.003-05:00</published><updated>2010-03-09T14:26:02.199-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Sharepoint WSS 3 search problem</title><content type='html'>I just spent 1/2 my morning troubleshooting a SharePoint issue that Google was absolutely no help in resolving.&amp;nbsp; Mainly because the user facing SharePoint error wasn't very good, and because I didn't recognize that my Google results weren't getting me to a valid solution.&amp;nbsp; Here's the scoop:&lt;br /&gt;&lt;br /&gt;I finally convinced my team to evaluate SharePoint as a replacement for our Linux PM Wiki site. I have SharePoint WSS v3 up and running on our DEV box, with a DNS entry to it so that we can get to it via http://sharepoint.&amp;nbsp; Most everything about it worked correctly out of the box, except for the search feature.&amp;nbsp; When I tried to search the Wiki, I got a lovely error about my URL not being enabled for search that said something like "&lt;i&gt;the system administrator may need to add a new request URL mapping to the intended application&lt;/i&gt;".&amp;nbsp; Let me just tell you I hate messages that send me to the sysadmin when I am the sysadmin and I have no idea what they're talking about.&amp;nbsp; Foolishly, I turned to Google instead of looking for a more detailed entry in the event log.&amp;nbsp; After a series of breaking and then figuring out how to fix a bunch of things that turned not to be at all related to the problem, I finally made it to the event log and found this:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;The description for Event ID ( 8214 ) in Source ( Windows SharePoint Services 3 ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: A request was made for a URL, http://sharepoint, which has not been configured in Alternate Access Mappings.&amp;nbsp; Some links may point to the Alternate Access URL for the default zone, http://dev01.&amp;nbsp; &lt;span style="background-color: #fff2cc;"&gt;Review the Alternate Access mappings for this Web application at http://dev01:6204/_admin/AlternateUrlCollections.aspx and consider adding http://sharepoint as a Public Alternate Access URL if it will be used frequently.&lt;/span&gt;&amp;nbsp; Help on this error: http://go.microsoft.com/fwlink/?LinkId=114854.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Finally!&amp;nbsp; I followed the directions and searching now works on our WSS wiki... but lesson learned - I take it for granted that Google is my first line of defense.&amp;nbsp; While that's not a bad default, I would have saved myself a bunch of time, effort, frustration, and pain by recognizing sooner that thousands of Google hits on my various searches do not necessarily mean I can find the solution there - unless I had a better error message, Google just wasn't going to be the right tool for this job.&lt;br /&gt;&lt;br /&gt;Mainly I'm bogging this in the hopes that someone else out there who makes my mistake will find this in their Google search results and then it won't be a mistake anymore.&amp;nbsp; Adding one more result for the search engine that will someday become &lt;a href="http://en.wikipedia.org/wiki/Skynet_%28Terminator%29"&gt;Skynet&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-798976371197651196?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/798976371197651196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/798976371197651196'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/sharepoint-wss-3-search-problem.html' title='Sharepoint WSS 3 search problem'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-46232420431008062</id><published>2010-03-03T13:25:00.007-05:00</published><updated>2010-03-05T09:39:46.373-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='faith'/><title type='text'>Where moth and rust destroy</title><content type='html'>Confession time.&amp;nbsp; Something I never really knew about myself until I became a parent is that I lose my cool over the destruction of property.&amp;nbsp; There is no faster way to make me mad than when my kids mistreat furniture, or break something, or make a mess for someone else to clean up.&amp;nbsp; &lt;span style="font-size: small;"&gt;In my house, the saying &lt;/span&gt;&lt;span style="color: #073763; font-size: small;"&gt;&lt;i&gt;there's no use crying over spilled milk&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; ought to be&lt;/span&gt;&lt;span style="color: #073763; font-size: small;"&gt; &lt;/span&gt;&lt;span style="color: #073763; font-size: small;"&gt;&lt;i&gt;there's no use &lt;u&gt;making someone else cry&lt;/u&gt; over spilling their milk&lt;/i&gt;&lt;/span&gt;&lt;span style="color: #073763; font-size: small;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There were small signs that I had trouble with this - immediately after we purchased our house, we re-carpeted the place.&amp;nbsp; I yelled at my own father for declining to take off his shoes when he came over to visit.&amp;nbsp; Recently, Ian threw a high-bounce ball in the kitchen after being told not to, and it exploded into a full cup of juice on the counter.&amp;nbsp; It was everywhere... floor to ceiling.&amp;nbsp; We were finding missed droplets for hours afterward.&amp;nbsp; I stayed upstairs while my pregnant wife dealt with it initially because my blood would just have boiled.&amp;nbsp; I'm not really a hot-headed person in general, but this issue gets to me.&lt;br /&gt;&lt;br /&gt;Take today - this morning, I came into work and discovered that some raucous behavior had taken place in the office last night - everyone in the office found little piles of mulch on their desks and the floor of the bathrooms, there was soap foaming in the atrium fountain, and confetti on the floors.&amp;nbsp; I was irritated and disappointed in my co-workers, but not nearly so much as the guys out cleaning the fountain were.&amp;nbsp; Then, I come to find out that my wife has to talk to Ian's teacher today because he disobeyed direct instructions from his teacher and ruined some classroom materials, all to get some laughs from his peers.&amp;nbsp; &lt;b&gt;Wait until I get home tonight, buddy!&amp;nbsp; You're writing your teacher a full apology letter.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I look at these incidents and like to feel justified in my righteous anger over the blatant disrespect for other people and their property.&amp;nbsp; But as I look deeper into myself, I think there's a little more to it than that for me.&amp;nbsp; I think I am in love with &lt;i&gt;stuff&lt;/i&gt;.&amp;nbsp; Property.&amp;nbsp; Ownership.&amp;nbsp; Newness.&amp;nbsp; Not like the keep-up-with-the-Jones' kind of behavior.&amp;nbsp; That's much more easily identifiable as a problem. My issue is I often act like I value material objects and their condition over the condition of people.&amp;nbsp; A more subtle (and serious) variant.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/S46pbMIoZVI/AAAAAAAAAEg/bO_-Vd3u20o/s1600-h/nickle.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_vk9s6T9uHh0/S46pbMIoZVI/AAAAAAAAAEg/bO_-Vd3u20o/s320/nickle.jpg" /&gt;&lt;/a&gt;During one of his talks in &lt;a href="http://www.peacemaker.net/"&gt;the Peacemaker series&lt;/a&gt;, Ken Sande uses Bill Gates as an example.&amp;nbsp; He tells a fictional story of Bill going into a meeting one morning and acting surly and treating his co-workers poorly.&amp;nbsp; When asked what was wrong - Mr. Gates, one of the richest men in the world, replied that he had lost a nickle on the way to work.&amp;nbsp; How absurd!&amp;nbsp; Ken's point is that through the redemptive power of Christ, we have all the riches in the universe, and that all these material things we care so much about are just nickles in comparison.&amp;nbsp; My wise and wonderful wife has adopted this into her daily vocabulary - reminding us both constantly of the &lt;i&gt;worthless&lt;/i&gt; nickels&lt;i&gt; &lt;/i&gt;we keep focusing so intently on.&lt;br /&gt;&lt;br /&gt;The bible reminds us that things of this earth are temporal, and that it's other people that we need to value the most.&amp;nbsp; &lt;a href="http://www.biblegateway.com/passage/?search=matthew%206:19-24&amp;amp;version=NIV"&gt;Matthew 6:19-21&lt;/a&gt; says:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Do not store up for yourselves treasures on earth, where moth and rust destroy, and where thieves break in and steal. But store up for yourselves treasures in heaven, where moth and rust do not destroy, and where thieves do not break in and steal. For where your treasure is, there your heart will be also.&lt;/blockquote&gt;&lt;br /&gt;&lt;i&gt;Lord, grant me the wisdom to recognize the nickles I place so much value on so that I can turn from them and see what's really valuable.&amp;nbsp; Give me a heart to love other people.&amp;nbsp; Move my anger and frustration aside when my children act as all children do, and help me to teach them the value of hard work and respect for others.&amp;nbsp; Thank you for your everlasting patience with me, renewed daily.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-46232420431008062?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/46232420431008062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/46232420431008062'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/where-moth-and-rust-destroy.html' title='Where moth and rust destroy'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vk9s6T9uHh0/S46pbMIoZVI/AAAAAAAAAEg/bO_-Vd3u20o/s72-c/nickle.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-5556445846225057668</id><published>2010-03-03T09:28:00.001-05:00</published><updated>2010-03-03T11:25:55.394-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='environment'/><title type='text'>H2O</title><content type='html'>&lt;a href="http://www.latimes.com/news/local/la-me-bad-lawn2-2010mar02,0,3613612.story"&gt;How short sighted of this family's local government&lt;/a&gt;. This family is doing the right thing in a responsible way, and the laws in their city have restricted their personal liberty.&amp;nbsp; This &lt;a href="http://news.slashdot.org/comments.pl?sid=1569044&amp;amp;cid=31343544"&gt;comment&lt;/a&gt; on the story seemed pretty insightful to me too.&amp;nbsp; I don't understand why we've moved towards this "zero tolerance" society with little regard for common sense or common decency.&amp;nbsp; What ever happened to a government by the people, for the people?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-5556445846225057668?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5556445846225057668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/5556445846225057668'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/h2o.html' title='H2O'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-6918139976810184452</id><published>2010-03-01T16:04:00.003-05:00</published><updated>2010-03-01T16:10:48.317-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Awkward</title><content type='html'>My workplace is really big on doing up every life event for its  employees.&amp;nbsp; Baby showers, funeral flowers, birthdays, going away parties  - the works.&amp;nbsp; I'm the sort of person that likes to maintain solid  work/life boundaries.&amp;nbsp; I care about my co-workers, and it's touching  that they care about me too - but I struggle with knowing how to ask  that we maintain healthy boundaries.&amp;nbsp; I somehow managed to escape any  hoopla for my 30th birthday - perhaps because I was only there for less  than a year when that event occurred.&amp;nbsp; However, today I had to address  the issue of a baby shower head on.&amp;nbsp; Awkward.&lt;br /&gt;&lt;br /&gt;Beth and I  couldn't possibly be more thrilled to be having our first daughter.&amp;nbsp;  What a joy God has granted us!&amp;nbsp; He answered our most fervent prayers and  the deepest desires of our heart.&amp;nbsp; Our lives will be forever changed.&amp;nbsp;  But, as far as material things go, we have everything we could possibly  need.&amp;nbsp; And as far as parties go, the lower key the better.&amp;nbsp; Beth's  closest friends are going to do something really nice for her, and  that's really exciting for us.&amp;nbsp; But, for my workplace to do something  for Beth and have people who don't really know her feel obligated to  come and bring gifts just seems wrong to me.&amp;nbsp; Even if they think they  want to, it makes me very uncomfortable.&amp;nbsp; Am I just overly sensitive?&amp;nbsp;  Is this the sort of thing I should just shut-up and bear, knowing that  the intentions are good?&amp;nbsp; Or is it better for me to have been honest  like I was and spoil their fun by putting the kabosh on it early?&amp;nbsp; How  do you kindly let people know that the way they like to express caring  towards you isn't really all that caring in your eyes?&amp;nbsp; Is it better to  just fake it - to pretend they're accomplishing their goal all the while having the opposite impact?&amp;nbsp; That somehow doesn't seem right to me - if their  intention is to show caring, isn't it less selfish to express how you really feel knowing you're disappointing them versus hiding the fact and just going along with it with the intent to show them caring back?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-6918139976810184452?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6918139976810184452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6918139976810184452'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/awkward.html' title='Awkward'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3693423962534680541</id><published>2010-03-01T12:16:00.005-05:00</published><updated>2010-03-01T12:37:53.479-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pop quiz'/><title type='text'>Pop quiz, hotshot! - the answer</title><content type='html'>&lt;a href="http://mattmc3.blogspot.com/2010/02/pop-quiz-hotshot.html"&gt;In yesterday's pop quiz&lt;/a&gt;, I gave you four card combos that have special significance.&amp;nbsp; They were:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J♣ &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;♦ &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5♠  5&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; +  5♣&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J&lt;span style="color: red;"&gt;♦&lt;/span&gt; 5♣ 5♠ 5&lt;span style="color: red;"&gt;♥&lt;/span&gt; + 5&lt;span style="color: red;"&gt;♦&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J♠ &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5♣&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;&lt;/span&gt; 5&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;♦&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;  &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; + 5♠&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J&lt;span style="color: red;"&gt;♥&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5♣ &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5&lt;span style="color: red;"&gt;♦&lt;/span&gt; 5♠ + 5&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The answer is that these combos are the four perfect hands in the game of cribbage, each worth the maximum of 29 points.&amp;nbsp; Using the first hand, we would count it like so:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;J♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♦&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;- 15/2&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;J♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;♠&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;- 15/4&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;J♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;- 15/6&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;J♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;♣&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;-  15/8&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;5♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♦ &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;5♠&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;-  15/10&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;5♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♦ &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;-  15/12&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;5♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;♠&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;-  15/14&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♦ &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;5♠&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♥ &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;-  15/16&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;5♣ &lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♦ &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;5♠&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;5&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;♥&lt;/span&gt;- Four of a kind for 12 making 28 (which is really just means 6 pairs at 2 points each)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;J♣ + &lt;/span&gt;&lt;span style="font-size: small;"&gt;5♣ - and nobs (or &lt;i&gt;nubs&lt;/i&gt; as we say in our family) for 29&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_vk9s6T9uHh0/S4v2X632KaI/AAAAAAAAAEY/gCBzisgZRjk/s1600-h/cribbage_board.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_vk9s6T9uHh0/S4v2X632KaI/AAAAAAAAAEY/gCBzisgZRjk/s200/cribbage_board.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://en.wikipedia.org/wiki/Cribbage_%28statistics%29"&gt;There are 12,994,800 possible hands in cribbage&lt;/a&gt;.  The chances of getting one of these four hands in a two person game is 1 in 216,580.&amp;nbsp; My grandfather once told me he had seen the hand, but I don't recall how many times he said he had seen it or if he had gotten it himself.&amp;nbsp; Still, all I can think of is that that would require playing a lot of cribbage.&amp;nbsp; At 10 hands per game with two people playing, that's 20 hands seen per game.&amp;nbsp; It takes about 20 minutes to play, so statistically speaking, you'd have to play 10,829 games to see one perfect hand, for a total of 3610 hours of game play.&amp;nbsp; That's a lot of cribbage.&amp;nbsp; I ordered the same board grandpa and I used to play on, and played my first 'open' hand with Ian (6) this weekend.&amp;nbsp; Maybe by the time I'm 84 I'll have seen the hand too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3693423962534680541?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3693423962534680541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3693423962534680541'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/03/pop-quiz-hotshot-answer.html' title='Pop quiz, hotshot! - the answer'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_vk9s6T9uHh0/S4v2X632KaI/AAAAAAAAAEY/gCBzisgZRjk/s72-c/cribbage_board.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-2581304725732951562</id><published>2010-02-28T11:33:00.001-05:00</published><updated>2010-02-28T11:42:19.382-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pop quiz'/><title type='text'>Pop quiz, hotshot!</title><content type='html'>These four combos are something really special.  Anyone know what?&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J♣ &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;♦ &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5♠ 5&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; +  5♣&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J&lt;span style="color: red;"&gt;♦&lt;/span&gt; 5♣ 5♠ 5&lt;span style="color: red;"&gt;♥&lt;/span&gt; + 5&lt;span style="color: red;"&gt;♦&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J♠ &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5♣&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;&lt;/span&gt; 5&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: red;"&gt;♦&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; + 5♠&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J&lt;span style="color: red;"&gt;♥&lt;/span&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5♣ &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;5&lt;span style="color: red;"&gt;♦&lt;/span&gt; 5♠ + 5&lt;span style="color: red;"&gt;♥&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-2581304725732951562?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2581304725732951562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/2581304725732951562'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/pop-quiz-hotshot.html' title='Pop quiz, hotshot!'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3146988893059201374</id><published>2010-02-26T09:09:00.002-05:00</published><updated>2010-02-26T15:46:54.965-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Until we meet again...</title><content type='html'>This has been quite a turbulent week emotionally for my family.  Yesterday was so amazing watching my new daughter through the ultrasound monitor.  Her 20 week old body so full of life and vitality; learning of her gender - which will define so much of her identity.  It feels so surreal having that joyous day sandwiched between the day of &lt;a href="http://www.legacy.com/obituaries/dispatch/obituary.aspx?n=james-thomas-starkey&amp;amp;pid=140009497"&gt;my grandpa Jim's passing&lt;/a&gt;, and today - the day of his funeral.&lt;br /&gt;&lt;br /&gt;There are so many wonderful memories I have of my grandpa.  Christmas parties at he and grandma's house every year.  Many, many trips to spend an overnight with my brother and sister at their house in Grandview as kids.  Me getting bludgeoned and battered at cribbage again, and again, and again and coming back for more.  Being on the 'mens' team with him at a game of canasta when I wasn't old enough to ever have been considered a man.  Some vacations together, lots of meals together, Christmas morning visits at our house, and one very panicked drive with him back to our house when my brother Nick gashed his head open.&amp;nbsp; Lots of memories - I can still hear his gravelly voice and his laugh if I close my eyes tight enough.&lt;br /&gt;&lt;br /&gt;One of my most treasured memories is from our wedding when we did the longevity dance and Jim and Betty were the last ones on the floor - having been married a zillion years to my mere milliseconds - always in love.&lt;br /&gt;&lt;br /&gt;I'm pretty sure he never really knew he had another great-grandchild on the way - his mind was never quite the same after the heart surgery.  But his heart was there - always a kind word and a gentle, loving spirit toward everyone he met.  His legacy will live forever.  And though we will morn as a family together today, we will not mourn as those who have no hope, for we know our goodbye is not the end.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Well done good and faithful servant.&amp;nbsp; Welcome home.&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_vk9s6T9uHh0/S4fVrRVdlVI/AAAAAAAAAEQ/D29RCKYJN0E/s1600-h/Great+Grandma+and+pa+Starkey.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_vk9s6T9uHh0/S4fVrRVdlVI/AAAAAAAAAEQ/D29RCKYJN0E/s400/Great+Grandma+and+pa+Starkey.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3146988893059201374?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3146988893059201374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3146988893059201374'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/until-we-meet-again.html' title='Until we meet again...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vk9s6T9uHh0/S4fVrRVdlVI/AAAAAAAAAEQ/D29RCKYJN0E/s72-c/Great+Grandma+and+pa+Starkey.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1771354423548381915</id><published>2010-02-25T09:58:00.005-05:00</published><updated>2010-02-26T15:48:43.002-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>It's a....</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&lt;span style="color: #ea9999; font-family: Arial,Helvetica,sans-serif; font-size: 45pt;"&gt;GIRL!!!!&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1771354423548381915?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1771354423548381915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1771354423548381915'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/its.html' title='It&apos;s a....'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1789495192677184336</id><published>2010-02-13T08:00:00.003-05:00</published><updated>2010-02-13T11:09:51.372-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Uniformly random</title><content type='html'>&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;&lt;span style="font-size: large;"&gt;8A358779-D9B6-4C03-A4B4-8727DB3695BC&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Every software developer should recognize the above string as a GUID - pronounced &lt;i&gt;goo&lt;/i&gt;-&lt;i&gt;id&lt;/i&gt;, or &lt;i&gt;gwid&lt;/i&gt;, it's a globally unique identifier.&amp;nbsp; It is a pseduo-random sequence that has 2&lt;sup&gt;128&lt;/sup&gt; or 3.4 x 10&lt;sup&gt;38&lt;/sup&gt; possible values.&amp;nbsp; If every computer in the world generated one GUID a second from the dawn of time until now, that GUID you see above theoretically would still never occur again.&amp;nbsp; A GUID consists of 32 characters with values from 0-F, or 0-15 for those who prefer to count in base 10.&lt;br /&gt;&lt;br /&gt;One of the best properties of a GUID is that it's uniformly random, which means that each and every one of the 32 characters in the sequence has an equal chance of being any of the 16 possible values.&amp;nbsp; This is really handy, and has some nice applications when it comes to data analysis.&amp;nbsp; If you assign each data element a GUID and sort based on that GUID, you'll get a random sampling of data.&lt;br /&gt;&lt;br /&gt;Specifically, lets say you have a SQL Server database table and you'd like to get a random sample of 1000 records, this query will get you there:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code-snippet"&gt;select top 1000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; newid(),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;br /&gt;from&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyTable&lt;br /&gt;order by&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;Really neat.&amp;nbsp; Well, if you're a data geek it is at least...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1789495192677184336?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1789495192677184336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1789495192677184336'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/uniformly-random.html' title='Uniformly random'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4537318194060220386</id><published>2010-02-12T22:27:00.004-05:00</published><updated>2010-02-12T22:35:06.684-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Randomness</title><content type='html'>I had a 'podcast day' - a day where I'm sick of listening to music while I work and just want to listen to some interesting talk radio.  Unfortunately, my cube is in a dead zone and I only get the radio stations with a really powerful signal, so I've gotten into some really good podcasts - one of which is &lt;a href="http://feeds.wnyc.org/radiolab?utm_source=rss&amp;amp;utm_medium=hp&amp;amp;utm_campaign=radiolab"&gt;Radio Lab&lt;/a&gt;.  Today I listened to an episode from October 2009 called &lt;a href="http://www.wnyc.org/shows/radiolab/episodes/2009/10/09/segments/137643"&gt;Numbers&lt;/a&gt;,  followed by one called &lt;a href="http://blogs.wnyc.org/radiolab/2009/06/15/stochasticity/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+radiolab+%28WNYC%27s+Radio+Lab%29"&gt;Stochasticity&lt;/a&gt;.  I was completely fascinated by both.&lt;br /&gt;&lt;br /&gt;It's worth a listen, but the Numbers episode talked about&amp;nbsp; how childhood development as it pertains to an understanding of numbers, some interesting mathematicians, and &lt;a href="http://en.wikipedia.org/wiki/Benford%27s_law"&gt;Benford's law&lt;/a&gt;.&amp;nbsp; I'd never heard of &lt;a href="http://mathworld.wolfram.com/BenfordsLaw.html"&gt;Benford's law&lt;/a&gt; before, but since it's tax time, &lt;a href="http://www.rexswain.com/benford.html"&gt;it seems especially relevant&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Rozklad_benforda.svg/200px-Rozklad_benforda.svg.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Rozklad_benforda.svg/200px-Rozklad_benforda.svg.png" /&gt;&lt;/a&gt;The story explained on the Radio Lab episode, &lt;a href="http://www.rexswain.com/benford.html"&gt;which seems to have been sourced directly from this link&lt;/a&gt;, is that in 1938 Dr. Benford noticed that a book of logarithm tables was much more heavily worn in the pages with numbers stating with the digit "1" than the other pages.&amp;nbsp; From this, he began to do some research and discovered that the first digits of a large series of random numbers is naturally weighted in a logritmic scale, with the number 1 occurring more frequently than any other number.&amp;nbsp; This has amazing applications, including being able to detect fraud on tax returns - if the numbers on your tax return don't follow Benford's law, it's a trigger the IRS could use to investigate more or even perform an audit.&lt;br /&gt;&lt;br /&gt;The main take-away from the Stochasticity episode is that people are not very good at understanding randomness - we are people of order.&amp;nbsp; One of the examples they used was a test where they had two groups of people - one who flipped coins 100 times and recorded the results, and the other who just &lt;i&gt;pretended &lt;/i&gt;to flip a coin 100 times and recorded the faked heads/tails sequence.&amp;nbsp; The fakers were obvious because when the were trying to fake randomness, they wouldn't record 7+ heads or tails in a row.&amp;nbsp; It just doesn't &lt;i&gt;seem &lt;/i&gt;random enough, but the team that really flipped the coin would invariably have those long sequences.&lt;br /&gt;&lt;br /&gt;Another example they used is the concept of an athlete being on-fire - a basketball player who gets on a roll and hits 3 in a row starts to get the ball passed to them more often and starts to take riskier shots and invariably winds up hitting a &lt;i&gt;lower &lt;/i&gt;percentage of shots than their normal average.&amp;nbsp; The concept of someone getting on-fire has the exact &lt;i&gt;opposite &lt;/i&gt;effect than we intuitively think it would.&amp;nbsp; We universally misunderstand randomness because we were created as ordered beings in a universe of both order and chaos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4537318194060220386?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4537318194060220386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4537318194060220386'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/randomness.html' title='Randomness'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-8362501495368703064</id><published>2010-02-04T22:26:00.002-05:00</published><updated>2010-03-03T11:29:25.224-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>It's all been done before...</title><content type='html'>One of the reasons I built our family's DVR is to keep from seeing all the terrible commercials.  Specifically, a lot of the commercials for suspense and horror films are just awful.  But, it's pretty difficult not to see the first and final commercials in the break.  The first commercial is when you begin skipping if you can locate the remote, and the last one is the one you have to rewind back to when you skip ahead too far.&lt;br /&gt;&lt;br /&gt;One of the commercials I keep accidentally seeing is for a movie called Shutter Island.  I've not seen anything but the trailer, and I have no interest in seeing it at all, but it amuses me to no end what they're trying to pull.  WARNING - SPOILER AHEAD...&lt;br /&gt;&lt;br /&gt;This movie is based on a book I haven't read, or even heard of, but it's so obvious what the plot is.  I'm 99.999% positive it's the same plot twist as A Beautiful Mind and Fight Club.  You're supposed to identify with the main character and be so engrossed in his plight that you don't realize that's he's completely insane.  He's not some outside investigator researching the asylum, but an inmate in the asylum himself.  There - I saved you from wasting 2 hours of your life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-8362501495368703064?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8362501495368703064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/8362501495368703064'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/its-all-been-done-before.html' title='It&apos;s all been done before...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4402526899115929001</id><published>2010-02-03T23:03:00.010-05:00</published><updated>2010-02-04T09:23:19.203-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='family'/><title type='text'>Wotch Awt!</title><content type='html'>As my oldest learns to read and write, I am daily reminded of the complexity of the English language.&amp;nbsp; Ian has a remarkable ability to understand letters and sounds, and teases out words from the context of a sentence as much as the interplay of letters.&amp;nbsp; We've been told by his teacher that he's one of the best readers in his Kindergarten class.&amp;nbsp; He's reading some complicated stuff, but it's his writing that is most interesting to me now.&amp;nbsp; I'm daily reminded that there are just some things in English that you can't tease out - you have to memorize.&amp;nbsp; "Pizza" has no T's in it.&amp;nbsp; "Of" looks like it should be pronounced "Off", but is instead a very bizarre "Uv".&amp;nbsp; Enuf and fone and luv and thru are phonetic and even readable, but inaccurate.&lt;br /&gt;&lt;br /&gt;When I took Spanish in high school and college, it was strange to me that words were assigned a gender, and that word suffixes would denote who you were talking to, and even the level of familiarity or respect you had for the person with whom you're conversing.&amp;nbsp; But supposedly (so I've heard), English is still harder to learn.&lt;br /&gt;&lt;br /&gt;Case in point - Ian has a reversible sign on his bedroom door, which he made one day when he was in a particularly foul mood.&amp;nbsp; On one side it says - "Grumpy Mood Do&lt;strike&gt;o&lt;/strike&gt; Not Dystrakd" &lt;a href="#" title="Grumpy mood. Do not distract"&gt;(hover for translation)&lt;/a&gt;, and on the other side it says "Happy Mood Fry To Cum En" &lt;a href="#" title="Happy mood. Free to come in"&gt;(hover for translation)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Today, he spilled a whole cup of juice on the floor unbeknownst to his mother.  He took care of the mess, and then fessed up to Beth.  He had made a sign that said "Wotch Awt Slipry" &lt;a href="#" title="Watch out!  Slippery"&gt;(hover for translation)&lt;/a&gt;.  The picture is of a bald, frowny-faced little orange man, falling - with a large down arrow indicating the action sequence.  What a remarkable kid he is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4402526899115929001?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4402526899115929001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4402526899115929001'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/wotch-awt.html' title='Wotch Awt!'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1135778735707756780</id><published>2010-02-03T11:13:00.005-05:00</published><updated>2010-02-03T13:02:08.965-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>VB.NET Corner - fun with Linq, lambdas, and anonymous types</title><content type='html'>In my post, &lt;a href="http://mattmc3.blogspot.com/2010/01/c-corner-fun-with-yield-and-extension.html"&gt;C# Corner - fun with 'yield' and extension methods&lt;/a&gt;, I discussed the common scenario of iterating over an IEnumerable&amp;lt;T&amp;gt; collection while maintaining an index.&amp;nbsp; Due to playing around with the 'yield' keyword, VB.NET was excluded from the fun.&amp;nbsp; Well, using Linq, lambda expressions, and anonymous types, we can accomplish the same results I was describing in my previous post, but now VB can participate too.&amp;nbsp; Here's the code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code-snippet"&gt;Dim names = New String() {"You", "Me", "Dupree"} ' Or GetLazyLoadedNames() if you want&lt;br /&gt;For Each n In names.Select(Function(x, i) New With {.Index = i, .Item = x})&lt;br /&gt;   Console.WriteLine("{0}-{1}", n.Index, n.Item)&lt;br /&gt;Next&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This code is chock full of goodies, which doesn't make it the most readable thing in the world, but lets break it down:&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.Select()&lt;/span&gt; function is a simple extension method inserted into any IEnumerable via the inclusion of the System.Linq namespace.&amp;nbsp; It can take a lambda expression of the item you're interating over, as well as the index of that item.&amp;nbsp; That's the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Function(x, i)&lt;/span&gt; part.&amp;nbsp; And finally, we have the anonymous type mimicing the data structure we discussed in the previous post consisting of the two properties - &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Index&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Item&lt;/span&gt;.&amp;nbsp; VB.NET uses the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;New With {}&lt;/span&gt; syntax to define an anonymous type.&amp;nbsp; The x and i variables only have scope within the context of the Select function's lambda expression, so you can't accidentally use those variables somewhere unintended, and the anonymous type means that you don't have to have any of the supporting infrastructure classes required from our previous discussion.&amp;nbsp; All in all, not a bad way to do things (at the expense of a little readability at first).&amp;nbsp; And, just for fun, here's the C# version too:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code-snippet"&gt;var names = GetLazyLoadedNames();&lt;br /&gt;foreach (var n in names.Select((x, i) =&amp;gt; new {Index = i, Item = x})) {&lt;br /&gt;   Console.WriteLine("{0}-{1}", n.Index, n.Item);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So, in these two posts, I've barely mentioned most of the feature awesomeness of the 3.5 framework just in time for the 4.0 stuff to hit the shelves.&amp;nbsp; The things I'm now able to do with the addition of Linq have made the past year of development a total joy, and I'm really interested to see what the 4.0 framework brings to the table.&amp;nbsp; Is the Entity Framework 4.0 release finally usable?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1135778735707756780?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1135778735707756780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1135778735707756780'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/02/vbnet-corner-fun-with-linq-lambdas-and.html' title='VB.NET Corner - fun with Linq, lambdas, and anonymous types'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-3514659871391694574</id><published>2010-01-28T16:46:00.000-05:00</published><updated>2010-01-28T16:46:56.214-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>Paint.NET updater</title><content type='html'>Wow - I just opened up Paint.NET, and there was an update to the software available.&amp;nbsp; Now I didn't open up Paint.NET to apply an update - I opened it to use the software.&amp;nbsp; Instead of nagging me the way FileZilla, Adobe, Firefox, and the Java updaters do, Paint.NET gave me a dialog with the option of applying the update once I close the application.&amp;nbsp; What that means is that I can go ahead an do what I was going to do with only a minor interruption to my train of thought, and then when I'm done Paint.NET applies the update behind the scenes.&amp;nbsp; Cool - I really like it when developers pay attention to the little details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-3514659871391694574?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3514659871391694574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/3514659871391694574'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/01/paintnet-updater.html' title='Paint.NET updater'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-6414837976831480746</id><published>2010-01-27T12:43:00.001-05:00</published><updated>2010-01-27T12:54:06.334-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>High speed rail system</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_vk9s6T9uHh0/S2B6wmSI9cI/AAAAAAAAAEI/WAbeTIqEjig/s1600-h/bullet_train.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="144" src="http://1.bp.blogspot.com/_vk9s6T9uHh0/S2B6wmSI9cI/AAAAAAAAAEI/WAbeTIqEjig/s200/bullet_train.jpg" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;According to &lt;a href="http://www.tampabay.com/news/politics/national/obama-will-announce-funding-for-high-speed-rail-in-tampa/1068518"&gt;this article&lt;/a&gt; and &lt;a href="http://www.bizjournals.com/orlando/stories/2010/01/25/daily19.html"&gt;this article&lt;/a&gt; and &lt;a href="http://business.theatlantic.com/2010/01/obama_high-speed_rail_is_fast_track_to_jobs.php"&gt;this one&lt;/a&gt;, president Obama will be announcing another major spending initiative - a high &lt;strike&gt;cost&lt;/strike&gt; speed rail system.&amp;nbsp; It will be touted as a job creation mechanism and a push towards more green transit options.&amp;nbsp; I have a lot of questions, including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is their $8 billion budget really enough to make this work? &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Will they use existing track, or build new?&amp;nbsp; How much new?&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Whose land will they take to build it?&lt;/li&gt;&lt;li&gt;Is this really a cost-effective means of travel?&amp;nbsp; There's a lot of infrastructure and up-front cost required.&lt;/li&gt;&lt;li&gt;Is this really the right time to do this, with record deficits and out of control spending in Washington?&lt;/li&gt;&lt;li&gt;Are the jobs that are supposed to be created good for us only in the short term, or is this really a long term strategy?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Can they change our car-culture enough that people will actually want to use it?&lt;/li&gt;&lt;li&gt;Will it go enough places that people will be able to use it? &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Does this really lessen the environmental impact of our travel habits? &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Is the problem with Amtrak really that it doesn't go fast enough?&amp;nbsp; (I'll give you a hint - no!).&amp;nbsp; If not, then how will this help solve the other &lt;a href="http://archive.azrail.org/amtrak90/s90_2.htm"&gt;problems&lt;/a&gt; that have plagued Amtrak.&lt;/li&gt;&lt;li&gt;And most importantly, if they get people to actually use it, how will they secure thousands of miles of track just ripe for a terrorism plot?&amp;nbsp; Roads, bridges, subways, ferries and airplanes are all susceptible too, but not to the extent that an interstate railway would be.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.cato.org/pub_display.php?pub_id=10170"&gt;I'm not the only one asking questions either&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-6414837976831480746?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6414837976831480746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/6414837976831480746'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/01/high-speed-rail-system.html' title='High speed rail system'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vk9s6T9uHh0/S2B6wmSI9cI/AAAAAAAAAEI/WAbeTIqEjig/s72-c/bullet_train.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-973334675313129966</id><published>2010-01-22T20:29:00.001-05:00</published><updated>2010-01-22T20:37:41.896-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='family'/><category scheme='http://www.blogger.com/atom/ns#' term='faith'/><title type='text'>Personhood - 1-22-10</title><content type='html'>Beth, Caleb, Ian and I got to hear Baby's heartbeat today.  Beth and I heard it loud and clear at Beth's first appointment on 12/14 at 10(ish) weeks.  But it was pretty special to take the boys and have them hear it too.  140 beats per minute.  Ian thinks he'll have a sister. Caleb, another brother.  Me - I'm just amazed at the beauty of God's creation, and excited for the joys and wonders of fatherhood to the 3rd power.&lt;br /&gt;&lt;br /&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.google.com/reader/ui/3247397568-audio-player.swf?audioUrl=http://sites.google.com/site/mattmc3/Baby3_20100122.mp3" width="400" height="27" allowscriptaccess="never" quality="best" bgcolor="#ffffff" wmode="window" flashvars="playerMode=embedded"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-973334675313129966?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/973334675313129966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/973334675313129966'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/01/personhood-1-22-10.html' title='Personhood - 1-22-10'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-988020457828327039</id><published>2010-01-22T10:11:00.004-05:00</published><updated>2010-01-25T23:27:52.487-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>C# Corner - fun with 'yield' and extension methods</title><content type='html'>All .NET developers learn about &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IEnumerable&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IEnumerator &lt;/span&gt;in their first day of development, whether they realize it or not.&amp;nbsp; Every &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;foreach &lt;/span&gt;statement written utilizes the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.GetEnumerator()&lt;/span&gt; call to iterate over a collection of objects.&amp;nbsp; The For Each concept is a really nice piece of syntactic sugar.&amp;nbsp; However, one of its limitations is that it doesn't give you a counter to track which loop iteration you're on.&amp;nbsp; If you want to do that, you have to keep track of it yourself in your own variable.&amp;nbsp; Not a big deal really, just a fact of programming life.&amp;nbsp; This manifests itself in two ways - you can write a &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;for;;&lt;/span&gt; loop which has the counter built in and then you get the object you want by indexing the collection as shown here:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code-snippet"&gt;var names = new List&lt;string&gt; { "You", "Me", "Dupree" };&lt;br /&gt;&lt;br /&gt;// for;; loop&lt;br /&gt;Console.WriteLine("Method 1:");&lt;br /&gt;for (var i = 0; i &amp;lt; names.Count; i++) {&lt;br /&gt;   var name = names[i];&lt;br /&gt;   Console.WriteLine("{0}-{1}", i, name);&lt;br /&gt;}&lt;/string&gt;&lt;/pre&gt;&lt;br /&gt;This method isn't bad, but it has a fatal flaw - it only works on collections that are fully populated.&amp;nbsp; In other words, the collection has to be indexable and cannot be lazy loaded.&amp;nbsp; If you have a collection that dynamically loads or calculates its next value, you have to do something much more kludgy.&amp;nbsp; You must maintain a variable external to your loop that keeps track of your current item index as shown here:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code-snippet"&gt;var names = GetLazyLoadedNames();&lt;br /&gt;&lt;br /&gt;// outside variable&lt;br /&gt;Console.WriteLine("Method 2:");&lt;br /&gt;var j = 0;&lt;br /&gt;foreach (var name in names) {&lt;br /&gt;   Console.WriteLine("{0}-{1}", j, name);&lt;br /&gt;   j++;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This method works on every &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IEnumerable&lt;/span&gt; collection, and is a good general purpose tactic that every .NET dev will need in their toolkit.&amp;nbsp; But, it has the frustrating consequence that it requires a variable outside the scope of the loop, and takes a couple extra lines of code to accomplish.&amp;nbsp; Both of which adversely affect the signal-to-noise ratio of your code.&lt;br /&gt;&lt;br /&gt;As a thought experiment, I wondered if I could get the clarity of a simple and tight &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;foreach&lt;/span&gt; loop while still maintaining the index.&amp;nbsp; It turns out it's really simple (in C# at least) to accomplish with a small immutable helper class and an extension method.&amp;nbsp; Here's the code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code-snippet"&gt;public static class IEnumerableExtensions {&lt;br /&gt;   public static IEnumerable&amp;lt;IndexedItem&amp;lt;T&amp;gt;&amp;gt; GetIndexedEnumerator&amp;lt;T&amp;gt;(this IEnumerable&amp;lt;T&amp;gt; me) {&lt;br /&gt;      var index = 0;&lt;br /&gt;      foreach (T item in me) {&lt;br /&gt;         yield return new IndexedItem&amp;lt;T&amp;gt;(item, index);&lt;br /&gt;         index++;&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class IndexedItem&amp;lt;T&amp;gt; {&lt;br /&gt;   private T _item;&lt;br /&gt;   private int _index;&lt;br /&gt;&lt;br /&gt;   public T Item { get { return _item; } }&lt;br /&gt;   public int Index { get { return _index; } }&lt;br /&gt;&lt;br /&gt;   public IndexedItem(T item, int index) {&lt;br /&gt;      _item = item;&lt;br /&gt;      _index = index;&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Now, if you import the namespace containing this extension method, every &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IEnumerable&lt;t&gt;&lt;/t&gt;&lt;/span&gt; collection you have gets a method called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.GetIndexedEnumerator()&lt;/span&gt; which means that instead of iterating over the objects in the collection, you iterate over a new container object called &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IndexedItem&lt;/span&gt; that has the current item in the collection as well as the index of that item.&amp;nbsp; This means that now your &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;foreach&lt;/span&gt; code can look like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="code-snippet"&gt;var names = GetLazyLoadedNames();&lt;br /&gt;&lt;br /&gt;// extension method&lt;br /&gt;Console.WriteLine("Method 3:");&lt;br /&gt;foreach (var name in names.GetIndexedEnumerator()) {&lt;br /&gt;   Console.WriteLine("{0}-{1}", name.Index, name.Item);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This definitely isn't a revolutionary improvement by any means.&amp;nbsp; In fact, in exchange for clarity, you likely will see an ever-so-slightly reduced performance for very large collections since you have the added overhead of the IndexedItem class.&amp;nbsp; Also, unfortunately due to the lack of a 'yield' statement, VB devs (like myself) have a whole lot more work to do to implement this solution.&amp;nbsp; But overall, this is just one more example of why I love .NET.&amp;nbsp; The framework and languages are continually evolving, and while some purists may scoff at the syntactic sugar, I say it's all syntactic sugar over top of zeros and ones, and I have a serious sweet tooth.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-988020457828327039?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/988020457828327039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/988020457828327039'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/01/c-corner-fun-with-yield-and-extension.html' title='C# Corner - fun with &apos;yield&apos; and extension methods'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-7052582828817370111</id><published>2010-01-21T22:24:00.000-05:00</published><updated>2010-01-21T22:24:55.114-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Bad Supremes! Bad, bad, bad!</title><content type='html'>Today &lt;a href="http://www.npr.org/templates/story/story.php?storyId=122805666"&gt;the Supreme Court overturned a decades-old established precedent on campaign finance&lt;/a&gt; without any identifiable or compelling reason.&amp;nbsp; I'm no lawyer, nor am I a student of constitutional law, but as a plain old common citizen I just cannot fathom how today's decision is a step in the right direction for our country.&amp;nbsp; This, in my opinion, is a perfect example of the highest court in the land acting in the personal and political self-interest of its members and not in the interest of this country or in the spirit of the law with respect to established precedent.&amp;nbsp; Activist judges - shame on them all.&lt;br /&gt;&lt;br /&gt;While I do believe that there are some specific issues where established precedent is very much wrong and that past decisions should be overturned (tomorrow being the anniversary of one of the worst in the history of this country), I expect those situations to be few and far between.&amp;nbsp; When they come up, there should be a real and compelling reason to overturn the established interpretation of the law.&amp;nbsp; Without that standard, 5 lifetime justices can systematically undermine the fabric of our country.&amp;nbsp; We expect the ever swinging pendulum of right-vs-left policies in Congress, but the justices are meant to remain consistent and steadfast, but also be free of political pressure in order to right grievous wrongs - not commit them themselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-7052582828817370111?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7052582828817370111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/7052582828817370111'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/01/bad-supremes-bad-bad-bad.html' title='Bad Supremes! Bad, bad, bad!'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-1924207408356399844</id><published>2010-01-20T09:12:00.000-05:00</published><updated>2010-01-20T09:12:08.082-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>That's gotta hurt...</title><content type='html'>Just before the president's one year anniversary of having taken the oath of office, Massachusetts, the 3rd bluest state in the union, elects its first freshman Republican senator since Edward Brooke won in 1967.&amp;nbsp; That sound you hear is the late Ted Kennedy and his 'healthcare legacy' spinning at 3600 RPM.&lt;br /&gt;&lt;br /&gt;You think the president got the message to quit piddling around with healthcare and climate and all those other pet projects and focus some real attention to the deficit and jobs and the economy?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-1924207408356399844?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1924207408356399844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/1924207408356399844'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/01/thats-gotta-hurt.html' title='That&apos;s gotta hurt...'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3359759573484408865.post-4091194214162502903</id><published>2010-01-17T17:28:00.000-05:00</published><updated>2010-01-17T17:28:50.366-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Life, according to Beth</title><content type='html'>My wife wisely asked herself aloud today -&lt;br /&gt;&lt;blockquote&gt;Why is there manly and womanly and girly, but not 'boyly'?&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp;Indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3359759573484408865-4091194214162502903?l=mattmc3.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4091194214162502903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3359759573484408865/posts/default/4091194214162502903'/><link rel='alternate' type='text/html' href='http://mattmc3.blogspot.com/2010/01/life-according-to-beth.html' title='Life, according to Beth'/><author><name>mattmc3</name><uri>http://www.blogger.com/profile/15123679572230659046</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
