<?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-8339867949129086615</id><updated>2012-01-30T18:47:47.401-05:00</updated><category term='WOW'/><category term='Lean'/><category term='tech fun'/><category term='beer'/><category term='BCS'/><category term='development'/><category term='Earthquake Park'/><category term='ASP.Net AJAX'/><category term='Indy Code Camp'/><category term='Windows'/><category term='development conference'/><category term='Indy Tech Fest'/><category term='Mike Hart is a douche'/><category term='snack'/><category term='home'/><category term='CodeMash'/><category term='Pillar Technology'/><category term='travel'/><category term='RSpec'/><category term='TDD'/><category term='Ohio State v. Michigan'/><category term='code coverage'/><category term='Fox Sports is teh suck'/><category term='Mac'/><category term='video'/><category term='Anchorage'/><category term='CodeStock'/><category term='CBS'/><category term='Red White and Boom'/><category term='Kalahari'/><category term='ajax-ish'/><category term='development practices'/><category term='soccer'/><category term='Cincinnati .Net User Group'/><category term='winter ales'/><category term='Rails'/><category term='stouts'/><category term='porters'/><category term='Goals'/><category term='Columbus Ruby Brigade'/><category term='nerds in speedos'/><category term='4th of July'/><category term='TechNight'/><category term='Matanuska glacier'/><category term='presenting'/><category term='Agile'/><category term='Mix'/><category term='coaching'/><category term='college football'/><category term='Memphis .Net User Group'/><category term='travel nightmare'/><category term='baseball sucks'/><category term='Quick Solutions'/><category term='Mix08'/><category term='ASP.Net'/><category term='testing'/><category term='Kalamazoo X'/><category term='DirecTV'/><category term='Alaska'/><category term='BCS Title Game'/><category term='Code and Coffee'/><category term='Dayton .Net Developers Group'/><category term='Windows Mobile'/><category term='MVC'/><category term='Michigan'/><category term='nUnit'/><category term='Alex'/><category term='web development'/><category term='continuous improvement'/><category term='Grok Talk'/><category term='Cincinnati Reds'/><category term='COALMG'/><category term='Columbus'/><category term='Reflex Design and Technology'/><category term='Ohio State'/><category term='Findlay Area .Net Users Group'/><category term='Cucumber'/><category term='BDD'/><category term='Retrospectives'/><category term='CODODN'/><category term='kanban'/><category term='Presentation'/><category term='Pragmatic Programmer'/><category term='ASP.Net MVC'/><category term='Susitna'/><category term='Seward'/><category term='vacation'/><category term='Executable Requirements'/><category term='Ann Arbor'/><category term='pptPlex'/><category term='eRubyCon'/><category term='mongodb'/><category term='IndyNDA'/><category term='LSU'/><category term='Disney World'/><category term='Alaska Railroad'/><category term='Ruby'/><category term='food'/><category term='SEC v. Big 10'/><category term='Day of .Net'/><category term='IronRuby'/><category term='Star Wars'/><category term='hockey'/><category term='career'/><category term='kanaban'/><category term='Blackjack II'/><category term='Albacore'/><category term='Speaking'/><title type='text'>Winging It</title><subtitle type='html'>Here's what I got...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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>98</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7975914759086888799</id><published>2011-06-01T20:20:00.002-04:00</published><updated>2011-06-01T20:24:19.938-04:00</updated><title type='text'>Blog has moved</title><content type='html'>If this post is showing up in your blog reader, you need to update your feed. Subscribe through feedburner at: http://feeds.feedburner.com/timwingfield/JaFt&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This particular version of the blog will live on at http://family-truckster.blogspot.com, however won't be updated after this post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The domain hasn't change, my blog still lives at http://blog.timwingfield.com but in the move from blogger to jekyll, the feed moved.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tim&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7975914759086888799?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7975914759086888799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7975914759086888799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7975914759086888799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7975914759086888799'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2011/06/blog-has-moved.html' title='Blog has moved'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-459887565482458575</id><published>2011-05-11T22:50:00.000-04:00</published><updated>2011-05-13T16:26:02.074-04:00</updated><title type='text'>Estimation Rant</title><content type='html'>&lt;p&gt;&lt;img style="float: right;" title="estimation_rant.png" src="http://lh5.ggpht.com/_5SnOEGqkJYw/TctLBIwFGiI/AAAAAAAACJI/SlEga7_CQ5M/estimation_rant.png?imgmax=800" border="0" alt="Estimation rant" width="280" height="83" /&gt;&lt;/p&gt;&lt;p&gt;Estimation is a bad word on dev teams. We have learned from many painful estimation debacles to the point we cringe when we hear the word, "Estimate." In many software endeavors estimating is a necessary practice, at least on some levels, to get the thumbs up to start writing software in the first place. But just because we have done estimating activities often, does not mean we are good at it.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Disclaimer: I am discussing estimation in the context of delivery, not sales. Clients everywhere want to know when something will be done before they commit money to it, which is why many talented sales people drive fancy cars&lt;/em&gt;.&lt;/p&gt;&lt;h3&gt;Failing Into the Hours Trap&lt;/h3&gt;&lt;p&gt;The very first failure of many estimating exercises is estimating your tasks, stories, and features in hours - or days or weeks or years. Any unit of time measurement is likely going to get you in trouble, but we will stick with hours for our example. Yes, hours fit neatly into a column in Microsoft project, but for estimating a development effort your setting yourself up for failure as soon as you choose hours as your unit of measure.&lt;/p&gt;&lt;p&gt;&lt;img style="float: left;" title="dages_estimation.jpg" src="http://lh4.ggpht.com/_5SnOEGqkJYw/TctLB4J1CgI/AAAAAAAACJM/sjtfVoWMJiA/dages_estimation.jpg?imgmax=800" border="0" alt="Dages estimation" width="320" height="255" /&gt;&lt;/p&gt;&lt;p&gt;The first trap in using hours is we are all going to base that guesstimate on the 8 hour work day. If you commit to 8 hours, you are essentially saying that you will have that feature done in a day. Your manager is definitely hearing "one day" when you say 8 hours. If you could sit and code for 8 hours straight, maybe that estimate would be worthwhile. But how often do you get to code 8 straight hours? All kinds of things happen that derail that 8 hour day of uninterrupted coding. The stand up, other meetings, lunch, nature will inevitably call, and there's a better than average chance a Nerf war will break out in many team rooms.&lt;/p&gt;&lt;p&gt;The second trap of hours is they really only get used as a measurement when you go over your estimate. For example...&lt;/p&gt;&lt;p&gt;Let's take a developer on our team, we'll call him Jeff. In our estimation meeting, the team has determined that feature #1337 will take 16 hours to complete. Based on our previous trap we all just heard, "Two days." Jeff pulls feature #1337 off the board Monday morning and gets to work. Wednesday afternoon, he moves it to dev complete. Whoa, that feature just took 24 hours to complete! Come on, Jeff, you're 8 hours over the estimate? How will we ever make that time up?? We're on a deadline here!!&lt;/p&gt;&lt;p&gt;Sorry...all accusations are purely hypothetical.&lt;/p&gt;&lt;p&gt;The next Monday morning we're back at work, and our trusty developer Jeff looks on the board and sees feature #1355 on the board estimated at 16 hours. He pulls the card into the development queue and gets to work on it. At the end of the day he's done. 8 hours into his 16 hour feature he moves it to dev complete. Way to go Jeff!! You rock! Best developer ever!!&lt;/p&gt;&lt;p&gt;But hold on a second. Our rock star dev has missed his estimate by 50% in both cases. In one he's the villain and the other the hero? He goofed by 50% but thanks to "beating the hours" on the second feature that gets lost. In reality we should be asking Jeff why he missed each estimate. That will help us learn where we as a team missed and how we can apply that to future guesstimation exercises.&lt;/p&gt;&lt;h3&gt;The Cost of Estimation&lt;/h3&gt;&lt;p&gt;During a lunch conversation at a past conference I listened to a gentleman tell us how he was contracted to do a 6 month estimation on what it would cost to build a certain piece of software. Two weeks into the contract, one that was paying him quite well, he went to his stakeholders and said, "The amount of money you are sinking into the estimation contract will never be returned to you. You will never get $1 back from it, how about I just start building the software and we'll see where we are in 5 and a half months?" They went for it, and he won the development contract 5 and a half months later.&lt;/p&gt;&lt;p&gt;The estimate means nothing to the actual delivery of the software. One of my former managers used to say, "The effort is the effort is the effort." The iron triangle of software is scope, timeline, and quality. We're allowed to fix any two of them, but the third has to be flexible. (It's scary how many times quality is the one that gets forced to flex.) Our estimate won't change any of the three points on the iron triangle.&lt;/p&gt;&lt;h3&gt;All Is Not Lost&lt;/h3&gt;&lt;p&gt;Fear not, there are ways to get your software written without falling into estimation traps, and giving those outside the team a reasonable idea of when something will be delivered.&lt;/p&gt;&lt;p&gt;First up is story points. Story points are a representation of the &lt;a href="http://blog.mountaingoatsoftware.com/its-effort-not-complexity"&gt;level of effort&lt;/a&gt; the team thinks it will take to complete a story. Story points can be anything. I have seen teams use numbers such as 1, 3, 5, and 8 as their points, and other teams will use t-shirt sizes such as S, M, L as points. One team I saw &lt;strong&gt;REALLY&lt;/strong&gt; wanted to drive home the fact that story points are relative, so they went with duck, unicorn, and elephant as their sizes. Using any of those units of measurement illustrates that story points are used relative to each other rather than to a fixed value such as hours. Humans are very good at doing comparisons, so we don't know exactly how big a unicorn story is, but we know an elephant story is bigger.&lt;/p&gt;&lt;p&gt;Another way to step away from estimations is to move to a continuous flow system. Get yourself a Kanban board, get rid of iterations and iteration commitments, and start tracking the cycle time on the completed side of things. There are a few challenges with going this way, the first being that you will not have a reasonable idea of your cycle time until you have pulled a few stories through the system. Additionally sizing may still come into play because stories have this habit of never being exactly the same size. But, get through a few cycles, get some actual times on features from concept to completion, and you'll be handing your managers actual times from which they can plan future work. It may take a little time to get the data, but there isn't a manager in an IT department anywhere that wouldn't love to hear, "This story is sized as a small for our team and small features take us about 2 days to complete. Come back Wednesday, we should have it for you."&lt;/p&gt;&lt;p&gt;The last way to get rid of estimation is just to get rid of estimation. Like the story where the gentleman stopped researching on the estimation contract and just started writing code, just write the freakin' code! That could make for some difficult conversations at some point, but if your 4 person dev team is in a 2 hour estimation meeting every iteration, that's 8 hours you could have spent writing code towards a deliverable.&lt;/p&gt;&lt;p&gt;&amp;lt;/rant&amp;gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-459887565482458575?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/459887565482458575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=459887565482458575' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/459887565482458575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/459887565482458575'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2011/05/estimation-rant.html' title='Estimation Rant'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh5.ggpht.com/_5SnOEGqkJYw/TctLBIwFGiI/AAAAAAAACJI/SlEga7_CQ5M/s72-c/estimation_rant.png?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3110665699935150118</id><published>2011-04-21T08:30:00.000-04:00</published><updated>2011-04-21T08:58:52.200-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='continuous improvement'/><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Retrospectives'/><title type='text'>How We Do a Retrospective</title><content type='html'>&lt;p&gt;&lt;img style="float: left;" title="hard_hats_required.jpg" src="http://lh6.ggpht.com/_5SnOEGqkJYw/Ta5DwpM9cMI/AAAAAAAACIs/3KUqwzmBZE8/hard_hats_required.jpg?imgmax=800" border="0" alt="Hard hats required" width="180" height="120" /&gt;&lt;/p&gt;&lt;p&gt;There is no one right way to do a retrospective, there are many good techniques...and a few bad ones. Utilizing more than one technique is a good way to get different conversations going with your team, and expose different areas that could use a little fixin'. That said, I do have a "tried and true" technique that we've used on a number of teams over the years. It's usually pretty good at getting the conversation going, and can be done in 30 minutes or less to keep you from being stuck in "yet another meeting."&lt;/p&gt;&lt;p&gt;First things first, at the start of any retrospective you should review the action items or results from the previous iteration's retrospective. Have the people assigned to each item report how it went and what got accomplished. Nothing gets a retro off to a good start like saying, "Remember that problem we had last week? It's fixed!"&lt;/p&gt;&lt;h2&gt;A Few Supplies and a Little Preparation&lt;/h2&gt;&lt;p&gt;We're going to need:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Three colors of sticky notes. Regular square ones will work fine. For this example we're going to use purple, yellow, and green.&lt;/li&gt;&lt;li&gt;A box of pens, preferably all the same kind. I like to use sharpies because big pens on small paper ensures we get short items on each card rather than essays. Using the same pen also keeps things a little more anonymous.&lt;/li&gt;&lt;li&gt;A whiteboard. In the absence of a whiteboard the big easel sheets would do the trick. &lt;/li&gt;&lt;li&gt;A timer of some kind. I picked &lt;a href="http://www.apple.com/iphone/iphone-3gs/"&gt;a timer&lt;/a&gt; up for about $200...it also makes phone calls, surfs the web, plays Angry Birds and sends text messages and email. It's high end for a timer, but it does the trick.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;For the prep work, take our three colors of sticky notes and split them up so each member of the team has a few of each color. The number really doesn't matter, but we usually end up with 6 to 8 of each color for each person. Give each member of the team their own little pile of sticky notes and a sharpie.&lt;/p&gt;&lt;h2&gt;Gather The Data&lt;/h2&gt;&lt;p&gt;The colors signify good, bad, and confusing items from the previous iteration. Since we went with purple, yellow, and green we'll say that purple = pain, yellow = confusing, and green = good. Set the timer for 5 minutes and have the team write as many items as they can think of for each color from the previous iteration. They should do this on their own, writing their own thoughts down, we'll collaborate and discuss later. If your team is smaller and iterations are pretty short, put less than 5 minutes on the clock.&lt;/p&gt;&lt;p&gt;When the time is up, have each team member walk to the white board and stick their notes on the board. No order to them, just get them on the wall. Once all the stickies are on the wall, take a couple of volunteers to group them by subject, not by color. We're not looking for all the bad things that happened in one cluster, we're after what was good and bad about a given subject to the team. Aim for 4 to 8 categories, and try not to get them too broad. Once you have your categories, circle them and put a one or two word title above the cluster. It should look something like this...&lt;/p&gt;&lt;p&gt;&lt;img title="retro_board.jpg" src="http://lh6.ggpht.com/_5SnOEGqkJYw/TbAqBgd33DI/AAAAAAAACI8/oqa8xlW-4Cg/retro_board.jpg?imgmax=800" border="0" alt="Retro board" width="460" height="345" /&gt;&lt;/p&gt;&lt;h2&gt;Discuss&lt;/h2&gt;&lt;p&gt;We've got things broken down, next up we have to decide what we're going to tackle. Best way to do this is to Dot Vote. Dot voting is an old stand by in agile. Each team member gets 2 or 3 votes and they place a dot next to the category they want to discuss. If they think a category is very important they could put all three of their dots next to that category. We do want each team member to use their votes though, abstaining isn't allowed.&lt;/p&gt;&lt;p&gt;When everybody has voted we'll discuss the top two vote getters and try to pull an action item or two out of each category. Do a quick run through of each sticky, set the timer at 10 to 15 minutes, and get to discussing. Try to involve everybody in the discussion as well. Since everybody contributed to the stickies on the wall it should be easy to get the quieter folks to speak up as they likely added a note to the category.&lt;/p&gt;&lt;h2&gt;What Are the Goals Here?&lt;/h2&gt;&lt;p&gt;Goal numero uno in this set up is to get everybody to put stickies on the wall with what they thought went good or bad or confused them during the last iteration. By doing this we have everybody involved in the retrospective right away, and increases the likelihood of them speaking up during the discussion.&lt;/p&gt;&lt;p&gt;The second thing we're after is discussing categories of issues rather than smaller issues raised by one person. The goal of any retrospective is to look back and see what we can do to make the whole team better, not just what the loudest, type A personality, Alpha-Dev wants fixed to make his life better. By categorizing everybody's issues we can compare what everybody thinks, discuss the broader issue, and derive a good &lt;a href="http://blog.timwingfield.com/2011/04/action-items-results-of-retrospective.html"&gt;actionable, assignable action item&lt;/a&gt; from that.&lt;/p&gt;&lt;h2&gt;Some Issues: Learn From My Mistakes&lt;/h2&gt;&lt;p&gt;Doing this, or any, retrospective style 6 or 8 or 10 retrospectives in a row will stop yielding good results. That happened with one of my teams and we kind of got in a rut. Once in that rut the retrospective became an "Airing of Grievances" (minus the festivus pole) and we weren't getting good action items. In reality, we were getting bad attitudes towards the retrospective and incremental change was not coming our way.&lt;/p&gt;&lt;p&gt;One particular retrospective we had done the categorizing and completed our voting and a sticky note from one member of the team had not made it into a category we were going to discuss. In order to get it discussed, the owner of the sticky moved it into a category we were going to talk about. It was posed to the team if we should leave it, and the consensus was it wasn't there for the voting, it shouldn't go in now. The offender wasn't too happy with this decision and slapped it back in to be discussed...at which time one of us removed it, tore it up, and threw it away. Team over individual in the retro. Always.&lt;/p&gt;&lt;p&gt;As noted earlier, and solidified with my first issue above, this isn't the only way to do a retrospective and it shouldn't be used iteration after iteration. However, it does get the conversation going and it will usually yield an item or two that your team wants out of its way. Give it a shot the next time you have a retrospective.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3110665699935150118?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3110665699935150118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3110665699935150118' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3110665699935150118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3110665699935150118'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2011/04/how-we-do-retrospective.html' title='How We Do a Retrospective'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh6.ggpht.com/_5SnOEGqkJYw/Ta5DwpM9cMI/AAAAAAAACIs/3KUqwzmBZE8/s72-c/hard_hats_required.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3848862452283971373</id><published>2011-04-19T08:30:00.000-04:00</published><updated>2011-04-19T08:38:42.191-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Retrospectives'/><title type='text'>Action Items Round Two</title><content type='html'>&lt;p&gt;In &lt;a href="http://blog.timwingfield.com/2011/04/action-items-results-of-retrospective.html"&gt;my last post&lt;/a&gt; I discussed keeping your action items assignable and actionable. In the days since that post went out, I've seen a few more things to add to the subject of action items. We're agile, we're all about continuous improvement.&lt;/p&gt;&lt;h2&gt;Action Items Are To Improve Team Workflow&lt;/h2&gt;&lt;p&gt;&lt;img style="float: right;" title="film_chalkboard.jpg" src="http://lh6.ggpht.com/_5SnOEGqkJYw/Ta2CTkLiLxI/AAAAAAAACIk/UiHKKarO38Y/film_chalkboard.jpg?imgmax=800" border="0" alt="Film chalkboard" width="300" height="199" /&gt;&lt;/p&gt;&lt;p&gt;Action items are things the team agrees to try in their next iteration to improve a process which is giving them trouble. In otherwords the team has identified a problem in how they're getting their work done and the action item they've decided on should help fix that problem. Some examples of action items I've seen on team boards in the past...&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Add Work In Progress limits to our scrum board.&lt;/li&gt;&lt;li&gt;Make our Product Owner the single point of contact for our field engineers to limit the context switching of developers.&lt;/li&gt;&lt;li&gt;Add a large, red light outside our team area to let the rest of the office know that the team is in heads down "quiet time" and shan't be interrupted.&lt;/li&gt;&lt;li&gt;Try planning poker at our next planning meeting.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If the item would go straight to the value stream of your project, meaning it's something you are going to work on that will apply directly to your deliverable, then I usually don't classify it as an action item. Things that gostraight to your deliverable are typically specific features, setting up hardware, and technical spikes. (More on those in a sec.)&lt;/p&gt;&lt;p&gt;Not every retrospective will yield action items and that's OK. If you're doing short iterations and are humming right along, you may have a very short retrospective and be pretty happy with how everything went. There's nothing wrong with NOT having a problem on your team.&lt;/p&gt;&lt;h2&gt;Technical Spikes&lt;/h2&gt;&lt;p&gt;Spikes are meant to answer a question and should be time boxed. This stems from a couple things we as developers are very good at: Taking too long to come up with an answer and going off in the weeds, down a number of tangents and returning with what we think is the absolute perfect solution. Enter the technical spike. Limit our off in the weeds time, give us a definite end time, and force us to come up with &lt;strong&gt;A&lt;/strong&gt; solution prior to coding it into the &lt;strong&gt;PERFECT&lt;/strong&gt; solution.&lt;/p&gt;&lt;p&gt;Why don't I think spikes are action items? Because in the long run they should be answering a question about something that will likely go straight to the value stream of the project. Usually we're answering a question about some portion of code that's new to us, a framework we haven't used before, or something along those lines. These questions need to be answered for us to deliver our product, not necessarily to improve the team, its process and its flow. (Though not delivering our product will most decidedly have a negative impact on the team.)&lt;/p&gt;&lt;p&gt;An an example of what I mean, I have a spike assigned to me right now to look into a GUI testing framework for our project. This is clearly a question for us, and not something that I need to do to improve the next iteration and beyond. It's something that will provide direct value to our client.&lt;/p&gt;&lt;p&gt;So, let's say I finish my spike and settle on Selenium as our GUI testing framework of choice. After three or four iterations we see that our selenium tests are getting quite large and out of hand, at that point the team would probably identify an action item to clean those tests up. (And we would of course assign a steward to oversee that clean up.)&lt;/p&gt;&lt;h2&gt;The Working Agreement&lt;/h2&gt;&lt;p&gt;In my last post I got a very good comment from Fanlan:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;At my company, we distinguish between tasks (Action items) and working agreements. "We will do a peer (code) review when we think we have finished a user story" is an example of a working agreement.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Many of the teams I've been on we haven't been too explicit with our working agreements, though I think that's a mistake on our part as I do like being more explicit about team workings. Leaving things open for interpretation rarely goes the way you wanted it interpreted, so I do like Fanlan's suggestion here.&lt;/p&gt;&lt;p&gt;In my example our team was going to try out code reviews and added them as an action item for the next iteration. In that context we don't know if code reviews will work for us or not, so we're going to run with incremental change and see how it goes. In another example we may want to add WIP limits to our team board, but after a couple of iterations they may not change our flow. If all goes well with our action items then I'd add the new practices explicitly to that working agreement for the team, but we should go through the "try before we buy" period before full adoption by the team.&lt;/p&gt;&lt;p&gt;Incremental change is a big deal in making your teams and your deliverables go better. Work at those retrospectives and their resulting action items, you'll see those improvements start to take hold.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3848862452283971373?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3848862452283971373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3848862452283971373' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3848862452283971373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3848862452283971373'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2011/04/action-items-round-two.html' title='Action Items Round Two'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh6.ggpht.com/_5SnOEGqkJYw/Ta2CTkLiLxI/AAAAAAAACIk/UiHKKarO38Y/s72-c/film_chalkboard.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5848217419408529960</id><published>2011-04-14T08:30:00.000-04:00</published><updated>2011-04-14T08:30:00.326-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Retrospectives'/><title type='text'>Action Items: The Results of the Retrospective</title><content type='html'>&lt;p&gt;One of the principles of agile is incremental change. Looking inward on what your team is doing that could be better is one way to get that incremental change, and team retrospectives are a great way to do that looking inward. If you're not familiar with team retrospectives, essentially they're a fairly informal gathering where teams bring up issues and kudos over recent work and decide on a few things that they want to improve. The things they decide to improve are usually called Action Items.&lt;/p&gt;&lt;p&gt;Having been on a few agile teams and taken place in many a retrospective there are a couple of things that come to mind in regards to action items.&lt;/p&gt;&lt;h2&gt;Make Your Action Items Actionable&lt;/h2&gt;&lt;p&gt;Ok, that sounds a little on the obvious side, and it can be. But it's a very real problem with many action items.&lt;/p&gt;&lt;p&gt;A team gathers and they find an issue with their code. For example our team is working on a large, old code base. There are many pieces of it that are just scary to change. So the team brings this up at the retrospective. Many people have issues on the board such as, "code is scary to change." Or something like "our code is difficult to work with." And since it's a dev team somebody has probably taken a little initiative and just put, "Code SUCKS!" up on the board. After some discussion the team has decided on an action item of: Improve the Code.&lt;/p&gt;&lt;p&gt;The whole team is there, managers, product owners, QA folks, everybody, and they settle on "Improve the Code" with some gusto. This is an item we KNOW we need to do and the whole team is behind it. If we're going to succeed, we need to IMPROVE THE CODE!&lt;/p&gt;&lt;p&gt;But our (somewhat) hypothetical team has missed the important part of this action item: HOW do we improve the code? Just saying "improve the code" is the dev team equivalent of saying, "Well, duh." We're always striving to improve the code, but what's that first step? Make sure your action items are indeed items and not overall team goals.&lt;/p&gt;&lt;p&gt;Drag the discussion a bit further. Start asking questions when you settle on a broad action item such as this. If you start digging, you'll arrive at that first step to your bigger goal. For example, our team notices that they have a small seam in their code where they could get their data layer wrapped in an adapter and add some more testability to both sides of that data layer. Now they have an actionable action item: Wrap Data Layer in an Adapter.&lt;/p&gt;&lt;h2&gt;Make Your Action Items Assignable&lt;/h2&gt;&lt;p&gt;The next retrospective comes around, and we working hard at getting actionable action items. After some discussion, we realize that we could use a quick code review before we move our features to "development complete." Performing a code review is pretty actionable, and everybody on the team can participate. Our team is happy with this action item and they decide to tackle it the next iteration. They've also decided to assign it to "Everybody."&lt;/p&gt;&lt;p&gt;So they just assigned it to nobody.&lt;/p&gt;&lt;p&gt;It's human nature, if everybody is assigned to a team task to complete of their own free will, nobody will take care of it. Code reviews will likely not happen, and we'll arrive at the next retrospective with everybody looking at each other thinking, "I thought somebody else would take the lead on that."&lt;/p&gt;&lt;p&gt;Even if your action item probably does need to be done by everybody on the team, as would be the case with our code review example here, assign it to one person to oversee that it actually happens in the iteration. Make that person a steward of the action item. This person likely needs to do nothing more than bring up at the first stand up to remember our code reviews, then later volunteer to do the first one and the ball will be rolling. Additionally, at the next retrospective the team has a person that is accountable to report back on the results of that action item from the previous iteration.&lt;/p&gt;&lt;p&gt;Retrospectives are great tools, possibly the greatest tool for incremental change. Keep an eye on those action items and keep them actionable and assignable.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5848217419408529960?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5848217419408529960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5848217419408529960' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5848217419408529960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5848217419408529960'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2011/04/action-items-results-of-retrospective.html' title='Action Items: The Results of the Retrospective'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8652093667760459739</id><published>2011-04-12T08:30:00.000-04:00</published><updated>2011-04-12T08:30:01.217-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>pik, IronRuby, MRI, and a .Net Project</title><content type='html'>&lt;p&gt;On a recent ASP.Net MVC project I was leveraging IronRuby and Cucumber to get some BDD specs in place to drive development. Though this post isn't about the benefits of BDD, it was very easy to get the specs worked out with my Product Owner, and the demos went really quickly. For the most part, I was using IronRuby to run functional tests at the controller level.&lt;/p&gt;&lt;p&gt;Then we decided to add on some GUI tests. With Ruby and Cucumber already in place, we decided to give watir a try. Except once we went on to using watir, IronRuby was no longer needed to test the website. We could instead use MRI 1.9.2 as our interpreter and get a little more speed out of our watir tests, and leverage the latest version Cucumber.&lt;/p&gt;&lt;p&gt;Since we're doing our development in Windows we don't have the luxury of RVM, but pik is a great solution to switching Ruby interpreters on Windows. During development, a few pik switch statements keeps all our cucumber tests in sync with either our IronRuby testing or our watir testing. However, if we wanted to run them all at once I had to write a little batch file to handle it. (I'm a dev, I'm lazy, I just want to type one line in the command prompt and have it all kick off...)&lt;/p&gt;&lt;p&gt;After knocking the rust off my batch file fu, here is the contents of that batch file...&lt;/p&gt;&lt;pre&gt;@echo off&lt;/pre&gt;&lt;pre&gt;@call pik sw 100&lt;/pre&gt;&lt;pre&gt;@call rake&lt;/pre&gt;&lt;pre&gt;@call pik sw 192&lt;/pre&gt;&lt;pre&gt;@call rake watir&lt;/pre&gt;&lt;p&gt;Here's what's happening in our little five line helper file. First line just doesn't echo your commands back out to the command prompt. After that we call pik sw 100, which is pik switch to IronRuby 1.0.0. Then our default rake task is called, which builds the project, runs the unit test suite (in nUnit in this case), then run the IronRuby cucumber tests. pik sw 192 is switching to Ruby 1.9.2, then calling rake watir just runs our watir tests against the already built website. Pretty straightforward.&lt;/p&gt;&lt;p&gt;Now that was only for our dev machines in order to do one line build test, test, test during development. Our CI server was much easier to configure.&lt;/p&gt;&lt;p&gt;We were using TeamCity as our CI environment when we added watir to the mix, but the batch file wasn't needed as TC allows for different build tasks to use rake and specify which interpreter to use. So it was as easy as add an IronRuby build task call the default rake task, then create another rake build task and call the watir task in the rake file. We have since switched from TeamCity to Jenkins, but the set up with a build task per interpreter is identical.&lt;/p&gt;&lt;p&gt;(Don't have pik installed and you're a Windows using, Ruby loving programmer? &lt;a href="http://bit.ly/gHB7d0"&gt;Ben Hall's post&lt;/a&gt; on getting pik installed and running is the best reference I've found.)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8652093667760459739?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8652093667760459739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8652093667760459739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8652093667760459739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8652093667760459739'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2011/04/pik-ironruby-mri-and-net-project.html' title='pik, IronRuby, MRI, and a .Net Project'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5867355015891495673</id><published>2011-04-11T20:27:00.001-04:00</published><updated>2011-04-11T20:27:42.479-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Columbus Ruby Brigade'/><category scheme='http://www.blogger.com/atom/ns#' term='BDD'/><category scheme='http://www.blogger.com/atom/ns#' term='Executable Requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><title type='text'>Upcoming Speaking Events</title><content type='html'>&lt;p&gt;Trying to slow down the speaking and associated travel schedule this year, but not giving up on it entirely. So, here's what I've got coming around the corner...&lt;/p&gt;&lt;h3&gt;Stir Trek&lt;/h3&gt;&lt;p&gt;On May 6th, &lt;a href="http://stirtrek.com/"&gt;Stir Trek&lt;/a&gt; happens again. This has quickly grown into one of the region's more popular conferences, and it's only a one day thing. I'll be presenting "&lt;a href="http://stirtrek.com/Sessions#Executable-Requirements-Testing-in-the-Language-of-the-Business"&gt;Executable Requirements: Testing in the Language of the Business&lt;/a&gt;" in the Testing Track there this year. There's something cool about seeing your slides on a movie screen. There's also something daunting about following &lt;a href="http://twitter.com/#!/jimweirich"&gt;Jim Weirich&lt;/a&gt; on the schedule...&lt;/p&gt;&lt;h3&gt;Columbus Ruby Brigade&lt;/h3&gt;&lt;p&gt;On May 16th I'll be presenting at the &lt;a href="http://columbusrb.com/"&gt;Columbus Ruby Brigade&lt;/a&gt;. It's not directly a Ruby topic, but the good folks at CRB have been kind enough to give me an hour to present "The What's, Why's, and How's of Kanban." So, it's not specifically for the Rubyists, but Kanban is good for everybody! If you're thinking, "Really? The Kanban talk AGAIN??" Yes, again, because I need the practice for...&lt;/p&gt;&lt;h3&gt;Agile Dev Practices&lt;/h3&gt;&lt;p&gt;June 9th I have the honor to be on stage at &lt;a href="http://www.sqe.com/AgileDevPracticesWest/"&gt;Agile Dev Practices West&lt;/a&gt;, again presenting "&lt;a href="http://www.sqe.com/AgileDevPracticesWest/Concurrent/Default.aspx?Day=Thursday#AT12"&gt;The What's, Why's, and How's of Kanban&lt;/a&gt;." Yes, more of Tim yammering on and on (and on and on) about Kanban and how it will cure all that ails you, but this time I get to do that yammering in Vegas! I am really looking forward to this conference and the crowd that will be different from the normal developer type crowd at most of the conferences I attend.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5867355015891495673?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5867355015891495673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5867355015891495673' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5867355015891495673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5867355015891495673'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2011/04/upcoming-speaking-events.html' title='Upcoming Speaking Events'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2503482721101903597</id><published>2010-08-25T11:16:00.001-04:00</published><updated>2010-08-25T11:16:15.984-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><title type='text'>LSSC Video of My Kanban Experience Report</title><content type='html'>&lt;p&gt;Back in April I was selected to give a Kanban experience report at Lean Software Systems Consortium in Atlanta, and as luck would have it InfoQ had set up a camera in the room I was presenting in. Yesterday, they posted it online: ﻿&lt;a href="http://www.infoq.com/presentations/Moving-to-Kanban"&gt;http://www.infoq.com/presentations/Moving-to-Kanban&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This was the first time I was recorded giving a presentation, so it's the first time I've seen myself give a presentation. And I must say, I am one of the presenters I've ever seen! OK, maybe not, but it wasn't as embarrassing to watch myself as I thought it would be. Seeing myself at least let me see some things I can improve on. (Dear Lord, Tim...STAND STILL for a second.)&lt;/p&gt;&lt;p&gt;And while I'm throwing some video out, Dave Giard recorded a video interview with me back at Codemash this past January. I finally got around to watching that one, too. For Dave's beer being off screen on one side and my bourbon off screen on the other side, it went pretty well.&lt;/p&gt;&lt;p&gt;Dave's Technology and Friends, Episode 71: ﻿&lt;a href="http://technologyandfriends.com/archive/2010/02/15/tf0071.aspx"&gt;http://technologyandfriends.com/archive/2010/02/15/tf0071.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2503482721101903597?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2503482721101903597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2503482721101903597' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2503482721101903597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2503482721101903597'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/08/lssc-video-of-my-kanban-experience.html' title='LSSC Video of My Kanban Experience Report'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4737138287791040049</id><published>2010-08-20T08:30:00.001-04:00</published><updated>2010-08-20T08:47:54.107-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='continuous improvement'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Code and Coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>Large Latte, No Foam, Extra Code Please</title><content type='html'>&lt;p&gt;A little over a year ago, &lt;a href="http://www.codeandcoffee.info/"&gt;Code and Coffee&lt;/a&gt; was born. After a weekend in Kalamazoo and a good talk with &lt;a href="http://mvwood.com/"&gt;Mike&lt;/a&gt; about his little group of Bitslingers in Cincy, &lt;a href="http://www.jeffblankenburg.com/default.aspx"&gt;Jeffery&lt;/a&gt; and I &lt;strike&gt;stole&lt;/strike&gt; &lt;strike&gt;borrowed&lt;/strike&gt; hatched the idea to get our butts out of bed early, hit a coffee shop somewhere, and write some code. Any code would do, but preferably something outside our comfort zone. Code and coffee numero uno saw us working on the Ruby Koans.&lt;/p&gt;  &lt;p&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://waittilacommercial.com/wp-content/uploads/2009/11/jordan_jersey.jpg" width="158" height="185" /&gt;It’s moved around Columbus to different places. Started out at Polaris, held in Dublin a couple times, and we’ve had a pretty regular group at Stauf’s in Grandview since last November. I’ve lost track of the number of new faces that have showed up at our little gathering, but there are a few – like &lt;a href="http://twitter.com/gregmalcolm"&gt;Greg&lt;/a&gt; and &lt;a href="http://twitter.com/andrewvida"&gt;Andrew&lt;/a&gt; – who have been to almost all of them.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Yeah, so what, Wingfield…we know you do this Code and Coffee crap, it’s in your twitter stream more than ice hockey and Hair Band Friday combined.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;OK, ok…my point: Last Thursday, Aug 12th, we had a 23 geeked up, caffeinated coders in 3 locations in two different cities writing code for the fun of it before they went to work. 23 guys and gals in Grandview, Columbus, and Indianapolis. (Props to &lt;a href="http://twitter.com/sbeardsley"&gt;Scott&lt;/a&gt; for getting it rolling in Indy!) 23 people would be one helluva dev team; especially if it’s &lt;strong&gt;THESE&lt;/strong&gt; 23 who care enough to get up and do an hour of coding for fun before work.&lt;/p&gt;  &lt;p&gt;What do these 23 people compare to?&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;That’s a whole football team plus a kicker &lt;/li&gt;    &lt;li&gt;That’s 10 more people than have ever coached the Chicago Bears &lt;/li&gt;    &lt;li&gt;That’s an entire active NHL roster &lt;/li&gt;    &lt;li&gt;That’s one less than all the sousaphone players in the OSU Marching Band…in other words, it’s all the sousaphone players NOT dotting the I. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That’s a lot of sports references for a bunch of geeks so…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;23 is the atomic number of vanadium &lt;/li&gt;    &lt;li&gt;23 is the port used for telnet &lt;/li&gt;    &lt;li&gt;Julius Caesar was stabbed 23 times…that might be a bad example &lt;/li&gt;    &lt;li&gt;23 is the lowest prime number to consist of consecutive digits. (Back to geekdom!!) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I’ve had a lot of fun at Code and Coffee and can’t deny having 23 people at three locations on some random Thursday brings a smile to my face. &lt;/p&gt;  &lt;p&gt;But why stop at 23?&lt;/p&gt;  &lt;p&gt;Want to geek it up with fellow geeks? Start a Code and Coffee. Pick a place to meet and a time and hit up twitter. (We use the hashtag #codeandcoffee, it’s worked great for setting up gatherings.) Let’s go beyond 23 folks.&lt;/p&gt;  &lt;p&gt;At least to 34 so I can make some Walter Payton references.&lt;/p&gt;  &lt;p&gt;45 for a little Archie Griffin.&lt;/p&gt;  &lt;p&gt;Then to 61 so I can add Rick Nash to the fray.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4737138287791040049?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4737138287791040049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4737138287791040049' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4737138287791040049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4737138287791040049'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/08/large-latte-no-foam-extra-code-please.html' title='Large Latte, No Foam, Extra Code Please'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-399566316395300965</id><published>2010-08-05T08:30:00.001-04:00</published><updated>2010-08-05T09:21:48.770-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><title type='text'>Why Not Add Some Ruby?</title><content type='html'>&lt;p&gt;If twitter is good for one thing it’s starting debates amongst your friends. Today didn’t disappoint as &lt;a href="http://twitter.com/mikelikesbikes" target="_blank"&gt;Mike&lt;/a&gt; &lt;a href="http://twitter.com/mikelikesbikes/status/20327495866" target="_blank"&gt;started us off with&lt;/a&gt;: “things i miss from rails while i'm doing java: rails.”&lt;/p&gt;  &lt;p&gt;It started in the productivity trap, which is going to be subjective to&lt;a href="http://twitter.com/mikelikesbikes/status/20327757275"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Screen shot 2010-08-04 at 10.53.23 PM" border="0" alt="Screen shot 2010-08-04 at 10.53.23 PM" align="right" src="http://lh5.ggpht.com/_5SnOEGqkJYw/TFpDgm-A_UI/AAAAAAAACHQ/71dytlYojeM/Screen%20shot%202010-08-04%20at%2010.53.23%20PM%5B4%5D.png?imgmax=800" width="244" height="111" /&gt;&lt;/a&gt; the developer doing the work, so it’s a tough one to measure. Can I do some things faster in Ruby than I can C#? Yes, but the inverse is still true.&lt;/p&gt;  &lt;p&gt;One point I need to make is I’ve seen a few of these discussions and often they become Rails v. C#/.Net, which isn’t really a fair comparison because Rails is a web framework. To go apples to&amp;#160; apples, you need &lt;a href="http://twitter.com/JonKruger/status/20327844404"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Screen shot 2010-08-04 at 11.01.34 PM" border="0" alt="Screen shot 2010-08-04 at 11.01.34 PM" align="left" src="http://lh4.ggpht.com/_5SnOEGqkJYw/TFpDg3jW9CI/AAAAAAAACHU/NzLi_wBlVWY/Screen%20shot%202010-08-04%20at%2011.01.34%20PM%5B4%5D.png?imgmax=800" width="244" height="106" /&gt;&lt;/a&gt;to compare Rails to ASP.Net MVC, not .Net in general. You wouldn’t compare WebForms or WPF to Ruby or Python, would you? (You shouldn’t compare WebForms to much of anything…but I digress.)&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;So, Jon asked a pretty valid question: Why don’t more people switch? Since I come from a .Net background, I’ve really only seen this debated as it pertains to .Net.&lt;/p&gt;  &lt;p&gt;For a number of the arguments around the IDE, Intellisense, Static v. Dynamic typing, there are plenty of other blogs that have covered this, here’s a recent one I really liked: &lt;a href="http://devlicio.us/blogs/casey/archive/2010/07/31/ruby-is-scary.aspx"&gt;Ruby is Scary&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;For my quick entry here, I’ll say this…I can have VIM or TextMate open and have a couple tests written before the VisualStudio splash screen has closed. Also, those two tools have yet to throw an “Out of Memory” exception on me, can’t say the same for Studio.&lt;/p&gt;  &lt;p&gt;And I don’t really miss intellisense.&lt;/p&gt;  &lt;p&gt;On with the show…&lt;/p&gt;  &lt;p&gt;On the heels of Jon’s question &lt;a href="http://twitter.com/sempf"&gt;Bill Sempf&lt;/a&gt; jumped in. As a bystander, Bill was very much representing the average .Net dude, and the arguments I’ve heard from the average .Net dude. (Bill has looked into Ruby, we’ve paired writing Ruby. That’s not really the point here, though.)&lt;/p&gt;  &lt;h3&gt;Ruby, the Average Dev, and the Complex System&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;@JonKruger: That's not my problem. I just don't think that 80% of the dev teams out there can handle coding in Ruby. (&lt;a href="http://twitter.com/sempf/status/20329674218"&gt;link&lt;/a&gt;)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That was Bill’s entry to the discussion, and I’m not sure I can disagree with him. However, I’m going to be snobbish and self centered and say I want to work with the 20%. If you’re in the 80% and can’t code Ruby…or Python, or F#, or any other language you have to learn…I don’t want to work with you. You can stay in “The Enterprise.” &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;@JonKruger: My point is those stories are told by top-tier devs, and not everyone is one of those. (&lt;a href="http://twitter.com/sempf/status/20335437396"&gt;link&lt;/a&gt;)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Again, tough to disagree with Bill’s assertion here. Not everybody is a rock star, and that’s cool. If you’re a budding rock star, you’ll be able to write some effective Ruby code. &lt;/p&gt;  &lt;p&gt;In between those tweets were a few others, mainly around supporting complex systems using Ruby. Personally, I haven’t written a large scale application in Ruby, so I can’t lean on any experience here in writing the typical central Ohio “claims app” in Ruby.&lt;/p&gt;  &lt;p&gt;What I have done with it has worked well. So my first counter to Bill’s argument on the complex systems: Use it where it fits. Ruby brings a great set of DSLs to the table for testing, web frameworks, and testing. Yeah, said it twice. Year one of &lt;a href="http://codemash.org/"&gt;Codemash&lt;/a&gt; (Jan of ‘07) I listened to Neal Ford talk about DSLs to help write your applications and Polyglot programming. Using Ruby to support your app – to write build scripts, tests, POC web sites – falls right in on the polyglot thing.&lt;/p&gt;  &lt;p&gt;On the testing side, I’d much rather read a batch of RSpec tests than a batch of nUnit tests. Cucumber is already helping my current team get through some testing issues. Let me repeat that: I’m using Cucumber in a .Net environment &lt;strong&gt;RIGHT NOW&lt;/strong&gt; to help the team get better test coverage on their application.&lt;/p&gt;  &lt;h3&gt;Learning a New Language&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;@JonKruger: There is a difference between learning the language, and being productive in it. (&lt;a href="http://twitter.com/sempf/status/20335549836"&gt;link&lt;/a&gt;)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’m in total agreement with Bill here. Which is why I’m such a big fan of the incremental approach to using Ruby on your projects. &lt;/p&gt;  &lt;p&gt;Great place to start: use Rake as your build script. I’ve done this for a couple years now, it’s a great way to dip your toe into Ruby, get comfortable with the language and a few of its concepts without really getting in on your production code. On the .Net side, use Albacore with Rake and you’ll have a build script in no time.&lt;/p&gt;  &lt;p&gt;Next up you can start writing some tests in it. That’s a pretty good way to pick up a new language, anyway. And with the nice testing tools with Ruby, you can learn a new language and ease some testing pain.&lt;/p&gt;  &lt;p&gt;But, the main point here, don’t be afraid of picking up a new language. How many do you know already? If you’re a web developer, you probably already know Javascript, CSS, HTML, C# (or some back end language), a little SQL, and a healthy dash of XML. Picking up another one isn’t going to be too difficult.&lt;/p&gt;  &lt;h3&gt;Essence v. Ceremony&lt;/h3&gt;  &lt;p&gt;I first heard this from Neal Ford, possibly at eRubyCon a couple years back. But, Stuart Holloway &lt;a href="http://thinkrelevance.com/blog/2008/04/01/ending-legacy-code-in-our-lifetime.html"&gt;had a great blog post about it&lt;/a&gt; prior to when I heard Neal speak. &lt;/p&gt;  &lt;p&gt;To me (and many others), Ruby gets to the essence of what you’re after quickly. I find myself working within it’s idioms easily, not fighting them constantly with adapter patterns, dependency injection, and ORMs. I find that my tests flow naturally from the various testing tools I use in Ruby, and the code that makes those tests pass benefits from that.&lt;/p&gt;  &lt;p&gt;So, to Bill’s point, maybe Ruby isn’t ready to have average devs write big, complex, “enterprise” systems in it. But, it is ready to support what you’re writing today. Right now. Why not give it a try?&lt;/p&gt;  &lt;p&gt;Unless you’re afraid of learning…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-399566316395300965?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/399566316395300965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=399566316395300965' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/399566316395300965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/399566316395300965'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/08/need-title.html' title='Why Not Add Some Ruby?'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh5.ggpht.com/_5SnOEGqkJYw/TFpDgm-A_UI/AAAAAAAACHQ/71dytlYojeM/s72-c/Screen%20shot%202010-08-04%20at%2010.53.23%20PM%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7161772895335155646</id><published>2010-08-03T08:30:00.000-04:00</published><updated>2010-08-03T08:30:01.463-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='presenting'/><title type='text'>3 Things to Help That Presentation Go Better</title><content type='html'>&lt;p&gt;I recently gave two presentations at &lt;a href="http://codestock.org/" target="_blank"&gt;Codestock&lt;/a&gt;. One on Kanban that I’ve given a number of times and is well rehearsed, and another on IronRuby that I’d never presented before. I had given a similar talk, but a good bit of this one was new. Since I hadn’t practiced the IronRuby talk too many times, it didn’t go as well as I’d had hoped.&lt;/p&gt;  &lt;p&gt;There’s the first sign I was going to have trouble, I &lt;strong&gt;&lt;em&gt;hoped&lt;/em&gt;&lt;/strong&gt; it would go well. The Kanban talk I &lt;strong&gt;&lt;em&gt;knew&lt;/em&gt;&lt;/strong&gt; would go well, not so much with the IronRuby talk. I had some time issues in preparing, had a number of other events I was was participating in, but none of that mattered to those people in the room with me in Knoxville while I did an under prepared presentation.&lt;/p&gt;  &lt;p&gt;Here are three things you can do to save yourself the same fate I had in Knoxville.&lt;/p&gt;  &lt;h3&gt;1. Un-busy those slides!&lt;/h3&gt;  &lt;p&gt;Yeah, drop the bullet points, the animations, the cool stuff that PowerPoint or Keynote will let you do and just keep it simple. I mean, who’s telling this story? You or some software program that just needs you there to hit the “Next” button? &lt;/p&gt;  &lt;p&gt;I was recently at a national/international level conference and a fairly well known speaker was giving a talk, but this person’s slides had all kinds of images and animations and bullet points. They had crammed so much info on each slide that a number of their headings were lost in the curtaining surrounding the screen. As an audience member I had a poor user experience, and I can’t recall the topic of the talk because I was so distracted by the horror that was on display in their slide deck.&lt;/p&gt;  &lt;p&gt;Simplify. One image per slide is a technique I use often. Use that image to support what you’re talking about rather than &lt;strong&gt;BE&lt;/strong&gt; what you’re talking about. Keep the animations low, one or two per slide is plenty. You don’t want to distract your audience, you want them listening to you.&lt;/p&gt;  &lt;p&gt;The last point on un-busying your slides, I’m sure a few of you are thinking, “But when I upload my slide deck, nobody will know what the main points of the talk were.” That’s fine, put the supporting points to the slide in the speaker notes, then a downloader will have a good idea what you were talking about…in the presentation they should have attended. (Because you were that awesome!)&lt;/p&gt;  &lt;h3&gt;2. Practice, practice, practice!!&lt;/h3&gt;  &lt;p&gt;Give your presentation to the wall of your office a few times. Set up a few of your kid’s (or your own) stuffed animals and regale them with the wonders of TSQL. Give it to some colleagues in an informal lunch and learn. But, practice it a number of times. You want to be comfortable with the flow of the presentation and the points you want to make on each slide.&lt;/p&gt;  &lt;p&gt;You can add speaker notes to help you through, and jog your brain on some points you’d like to make, but you want to practice enough that you’re comfortable to give a good talk without those notes. Because…&lt;/p&gt;  &lt;p&gt;Let’s say – &lt;strong&gt;hypothetically&lt;/strong&gt; – you own a MacBook Pro and an iPhone and you’re going to use the wonders of the Apple Corporation to help you give a presentation. You’re going to use the phone as your presentation remote and it’ll show you those bullet point, memory joggers mentioned above. And because it’s all Apple, all the time…IT’LL JUST WORK! But – again, &lt;strong&gt;hypothetically&lt;/strong&gt; – something is wrong with the wireless network and for some reason the phone doesn’t want to connect to an ad hoc network on your laptop. What then? What of those memory joggers? The notes? Well, you will have practiced enough that this will barely even slow you down.&lt;/p&gt;  &lt;h3&gt;3. Practice those code samples&lt;/h3&gt;  &lt;p&gt;Yes, more practice. But with good reason.&lt;/p&gt;  &lt;p&gt;Live coding can make or break you…it usually breaks me. I’ve bored enough people to tears with my live coding, that I rarely do it. I have some colleagues that are awesome at live coding demos. Somehow they’ve mastered the art of saying one thing and typing another. I don’t have that gift…just like I don’t have the gift of being able to hit a fastball, the gift 4.3 speed, or the gift a 103 MPH slap shot. But, I digress.&lt;/p&gt;  &lt;p&gt;Practice those coding samples. I mean, as developers were in this to code anyway, just do the same code over and over so you can give the presentation without a hitch. I read a great line the other day, and though it applied to development in general, it definitely fits here: Novices will practice until they get it right, experts will practice until they never get it wrong. When it comes time to do a code sample in front of 40 developers, you’re going to want to be an expert.&lt;/p&gt;  &lt;h3&gt;That’s all there is to it&lt;/h3&gt;  &lt;p&gt;So, in review…&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Keep it simple &lt;/li&gt;    &lt;li&gt;Practice the presentation &lt;/li&gt;    &lt;li&gt;Practice the code samples &lt;/li&gt;    &lt;li&gt;And, um, have fun! &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Yes, it’s a bit of work to put on a presentation. But when it comes time to deliver that presentation, the people watching you are giving up part of their day to spend with you. Respect those people and that hour of time of theirs that they’re giving to you.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7161772895335155646?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7161772895335155646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7161772895335155646' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7161772895335155646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7161772895335155646'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/08/3-things-to-help-that-presentation-go.html' title='3 Things to Help That Presentation Go Better'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-6945830031145204877</id><published>2010-07-31T15:32:00.001-04:00</published><updated>2010-07-31T15:32:34.786-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='Albacore'/><category scheme='http://www.blogger.com/atom/ns#' term='nUnit'/><category scheme='http://www.blogger.com/atom/ns#' term='RSpec'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><title type='text'>IronRuby: Rake, Albacore, and you</title><content type='html'>&lt;p&gt;In my post about setting up to run &lt;a href="http://blog.timwingfield.com/2010/07/ironruby-0-to-cucumber-in-15-minutes.html" target="_blank"&gt;Cucumber with IronRuby&lt;/a&gt;, I included steps to install &lt;a href="http://rake.rubyforge.org/"&gt;Rake&lt;/a&gt; and &lt;a href="http://albacorebuild.net/"&gt;Albacore&lt;/a&gt;, but didn’t use them. In this post, we’ll put them to use. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_5SnOEGqkJYw/TFR6TlJL52I/AAAAAAAACHI/1ZHgaFmj9qI/s1600-h/Rake%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Rake" border="0" alt="Rake" align="right" src="http://lh6.ggpht.com/_5SnOEGqkJYw/TFR6URmcRYI/AAAAAAAACHM/DaTUOZdQnAM/Rake_thumb%5B1%5D.jpg?imgmax=800" width="244" height="152" /&gt;&lt;/a&gt;Using Rake in .Net isn’t really a new idea, and a &lt;a href="http://codebetter.com/blogs/david_laribee/archive/2008/08/25/omg-rake.aspx"&gt;number&lt;/a&gt; of &lt;a href="http://stevenharman.net/blog/archive/2009/05/29/being-lazy-with-rake.aspx"&gt;people&lt;/a&gt; have been &lt;a href="http://www.codethinked.com/post/2010/04/26/Say-Goodbye-to-NAnt-and-MSBuild-With-IronRuby.aspx"&gt;using&lt;/a&gt; it for a while. I’ve used rake to compile and run the tests on all my .Net projects for at least the last year. Before Albacore came along to make my Rake tasks easier, I was copying the set-up from the folks at &lt;a href="http://github.com/jagregory/fluent-nhibernate/blob/master/RakeFile"&gt;Fluent nHibernate&lt;/a&gt;. (FNH has used rake to build as far back as I can remember it existing and is now utilizing Albacore as well.) Now with IronRuby in the mix, rake is going to take on even more fun in your .Net projects.&lt;/p&gt;  &lt;p&gt;For my example I’m again going to use my &lt;a href="http://github.com/timwingfield/TestingSeaPound"&gt;TestingSeaPound&lt;/a&gt; project, and specifically the rake file I’m using in that project. &lt;a href="http://github.com/timwingfield/TestingSeaPound/blob/master/rakefile" target="_blank"&gt;Pop it open&lt;/a&gt; real quick, and we’ll look through it.&lt;/p&gt;  &lt;p&gt;At the top, you’ll see the standard Ruby &lt;font face="Consolas"&gt;require&lt;/font&gt; statements. In this file we’re including rake, the task library for RSpec, Cucumber, the task library for Cucumber, and Albacore. &lt;/p&gt;  &lt;p&gt;Following the required libraries are a number of tasks that are combining the tasks that are defined later in the file. This is a way keep your rake file nice and dry. Define each task as needed, combine them in a call such as &lt;font face="Consolas"&gt;task :spec =&amp;gt; [:msbuild, :rspec]&lt;/font&gt; to reuse them in different situations. From the command line in the directory where this rake file lives, if I enter “rake spec” it’s going to build the code then run RSpec&lt;/p&gt;  &lt;p&gt;The only task in this list to take note of is the :default task. That’s the task that will run if you’re at the command prompt and just enter the command “rake”. &lt;/p&gt;  &lt;h3&gt;MSBuild&lt;/h3&gt;  &lt;p&gt;Skip down to the line that includes &lt;font face="Consolas"&gt;msbuild do |msb|&lt;/font&gt;. That’s our first task definition, and in this case we’re using the Albacore library. The top line of that task that includes the path_to_command is needed to build a .Net 4.0 project. I believe a fix is in the works, and may already be in place, but when I set up this file this was the way to call the .Net 4.0 compiler.&lt;/p&gt;  &lt;p&gt;The next two lines, properties and targets, should look pretty familiar to anybody who has set up a .Net build in the past using MSBuild or Nant. Here we’re just saying what configuration we want to compile in, and what our target build is. Following that I’m setting the verbosity to quiet to keep the command line output fairly small.&lt;/p&gt;  &lt;p&gt;The last line should be fairly obvious, it’s the path the solution file. Since MSBuild is very good at picking up a solution file and building it, why fight it? Pass the solution to MSBUild and let it do its thing.&lt;/p&gt;  &lt;h3&gt;nUnit&lt;/h3&gt;  &lt;p&gt;The next task down is our nUnit test runner. This is again an Albacore task, and it’s just pointing the test assemblies at the nUnit console app.&lt;/p&gt;  &lt;p&gt;These two tasks are the only Albacore tasks in the file, so here’s as good a place as any to let you know the magic going on under the covers with Albacore. It is in essence building the correct command line arguments for MSBuild and nUnit and then shelling out to run them. Now, there’s more work going on than just that, but that’s the bulk of if. Albacore is giving us a nice DSL to write .Net build tasks. I’m only using two, there are a lot more available.&lt;/p&gt;  &lt;p&gt;One important note: to this point our rake file hasn’t &lt;em&gt;required&lt;/em&gt; IronRuby. You can use Albacore to build your project and run .Net based testing suites with MRI, IronRuby isn’t a requirement. I know as a .Netter that may seem odd, but we’re really not leveraging the Iron part of IronRuby.&lt;/p&gt;  &lt;p&gt;Yet…&lt;/p&gt;  &lt;h3&gt;RSpec&lt;/h3&gt;  &lt;p&gt;The next two tasks are both RSpec tasks, and they’re running rspec against our .Net app. The first task is the default runner where it outputs a period for each passing test, the second will output the describe blocks and spec names.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;NOW&lt;/em&gt;&lt;/strong&gt; we need IronRuby. Not so much for the rake task, but because RSpec isn’t going to be able to test our dlls without the Iron added to our Ruby.&lt;/p&gt;  &lt;h3&gt;Cucumber&lt;/h3&gt;  &lt;p&gt;The final two tasks are Cucumber tasks. The first outputs the standard cucumber output, with each feature and specification output in their full glory – minus line numbers because I turned those off with the –-no-source option. The second task outputs the cucumber specs very much like nUnit and RSpec do, with a period for each passing test.&lt;/p&gt;  &lt;p&gt;Once again we need IronRuby. Since I’m using the Ruby version of Cucumber in this case, we need to add the Iron to get it to reach into our dlls and do its magic.&lt;/p&gt;  &lt;p&gt;That’s all for the tasks required to build and run the tests for this sample application. If you pull down the code and go to the root of the project and enter “rake all” at a command prompt, you’ll build it and run each suite of tests in order. Give it a try.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-6945830031145204877?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/6945830031145204877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=6945830031145204877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6945830031145204877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6945830031145204877'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/07/ironruby-rake-albacore-and-you.html' title='IronRuby: Rake, Albacore, and you'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh6.ggpht.com/_5SnOEGqkJYw/TFR6URmcRYI/AAAAAAAACHM/DaTUOZdQnAM/s72-c/Rake_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7124957053989325867</id><published>2010-07-22T23:42:00.001-04:00</published><updated>2010-07-22T23:42:00.835-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><title type='text'>IronRuby at CONDG</title><content type='html'>&lt;p&gt;Off the top, apologies for the rather dark color scheme. The slides I think I can change the contrast on a little and they’ll be fine, but I know better than to use a dark color scheme for my ide and/or text editor. I guess the editing of the config file in Rails was just all black, sorry about that. (On the config side, you didn’t miss much, though.)&lt;/p&gt;  &lt;p&gt;HOWEVER! :)   &lt;br /&gt;    &lt;br /&gt;I just uploaded a PDF of the slides and you can look at them in whatever color scheme really makes them pop! You can get it all here: &lt;a title="http://github.com/timwingfield/TestingSeaPound/tree/CONDG" href="http://github.com/timwingfield/TestingSeaPound/tree/CONDG"&gt;http://github.com/timwingfield/TestingSeaPound/tree/CONDG&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Not a total cop out, please take a look at the code sample if you want to see the complete test classes from the examples - both the nUnit and RSpec ones. The rails app uploaded is the same one I created in the presentation, complete with the poorly named controller.&lt;/p&gt;  &lt;p&gt;Again, sorry for the dark background in places, but thanks for coming out to watch.&lt;/p&gt;  &lt;p&gt;(And big thanks to &lt;a href="http://jonkruger.com/blog/2010/07/22/slides-from-my-productivity-boosters-talk-at-condg/"&gt;Kruger&lt;/a&gt; for making me remember how much I miss AutoHotKey after moving to the Mac. Windows devs, download AutoHotKey as soon as you read this.)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7124957053989325867?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7124957053989325867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7124957053989325867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7124957053989325867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7124957053989325867'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/07/ironruby-at-condg.html' title='IronRuby at CONDG'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-9182844424888888606</id><published>2010-07-16T08:30:00.000-04:00</published><updated>2010-07-16T08:30:02.592-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><title type='text'>IronRuby: 0 to Cucumber in 15 minutes</title><content type='html'>&lt;p&gt;&lt;a href="http://twitter.com/timwingfield/status/18517846272"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Screen shot 2010-07-14 at 8.50.18 PM" border="0" alt="Screen shot 2010-07-14 at 8.50.18 PM" align="right" src="http://lh4.ggpht.com/_5SnOEGqkJYw/TD--mvfen0I/AAAAAAAACHA/gwaZXLN9upQ/Screen%20shot%202010-07-14%20at%208.50.18%20PM.png?imgmax=800" width="288" height="133" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once again, a 140 character (or less) “outburst” gets me in trouble with a follower and I end up with a blog post. This one is one I probably should&amp;#160; have written a while back. I’ve enjoyed working with IronRuby the last few months, so this little intro is long overdue.&lt;/p&gt;  &lt;p&gt;First things first, you’ll need to install &lt;a href="http://ironruby.net/"&gt;IronRuby&lt;/a&gt;. Head off to the &lt;a href="http://ironruby.codeplex.com/releases/view/25901"&gt;download page&lt;/a&gt;, and click on your msi of choice and let the installer do its thing. &lt;/p&gt;  &lt;p&gt;Since my goal here was to get cucumber ready to roll against some .Net assemblies, you’ll need to install a few gems. IronRuby comes with Ruby Gems already installed, so thankfully to install the ones you need you just need to type ‘&lt;font face="Consolas"&gt;igem install&lt;/font&gt;’ a few times.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jaredrichardson/status/18517907299"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Screen shot 2010-07-14 at 8.49.47 PM" border="0" alt="Screen shot 2010-07-14 at 8.49.47 PM" align="left" src="http://lh4.ggpht.com/_5SnOEGqkJYw/TD--noRioII/AAAAAAAACHE/shbX77ofrVU/Screen%20shot%202010-07-14%20at%208.49.47%20PM%5B12%5D.png?imgmax=800" width="291" height="122" /&gt;&lt;/a&gt;“Wait, what? igem? WTF?” Yeah, that’s one of the IronRuby-isms, putting an i on the front of a couple of commands. If you’ve done a bit of Ruby, you’ll have a little muscle memory to retrain, but it’s a small hurdle. (You’ll also type ‘&lt;font face="Consolas"&gt;ir&lt;/font&gt;’ instead of ‘&lt;font face="Consolas"&gt;ruby&lt;/font&gt;’ to run a script and ‘&lt;font face="Consolas"&gt;iirb&lt;/font&gt;’ instead of ‘&lt;font face="Consolas"&gt;irb&lt;/font&gt;’ to get to irb.)&lt;/p&gt;  &lt;p&gt;So, on with our gem installing…&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;igem install rake&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;First install is rake. I’m not going to use it right away on the cucumber running, but I’ll use it at some point, I always do.&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;igem install albacore&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Like rake, I’m not going to use this one right away, but I’ve found it to be the one must have gem if you’re using rake with your .Net builds and test runners. It just makes you life that much easier.&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;igem install rspec&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I’m not starting out writing rspec in this example, but cucumber is going to use its matchers.&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;igem install cucumber –-version “=0.6.4”&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This is the one we’re after for this example. Be sure to add that version command on there because IronRuby isn’t quite ready for the latest version of Cucumber. But, 0.6.4 is going to get the job done for us.&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;igem install iron-term-ansicolor&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The first time you run cucumber, it’s going to advise you to install this gem to get color coding in the terminal window. Go ahead and do it now, and you skip that warning. (Or don’t, and check the message for yourself. ;) )&lt;/p&gt;  &lt;p&gt;Now all you need is some features, some step definitions, and a dll to write it all against. As luck would have it, I have just that written up in a code sample that I just used at Codestock a couple weeks ago. (And also coming soon to an Ohio user group meeting near you…) Here’s the root of that project: &lt;a title="http://github.com/timwingfield/TestingSeaPound" href="http://github.com/timwingfield/TestingSeaPound"&gt;http://github.com/timwingfield/TestingSeaPound&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The features directory there is where you’ll find my cucumber samples and the dll they are running against. Download it and give it a shot. Once you get it downloaded, open the command prompt in whatever directory contains the features directory (not the actual features directory) and type:&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;cucumber features&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Happy IronRubying!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-9182844424888888606?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/9182844424888888606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=9182844424888888606' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/9182844424888888606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/9182844424888888606'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/07/ironruby-0-to-cucumber-in-15-minutes.html' title='IronRuby: 0 to Cucumber in 15 minutes'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh4.ggpht.com/_5SnOEGqkJYw/TD--mvfen0I/AAAAAAAACHA/gwaZXLN9upQ/s72-c/Screen%20shot%202010-07-14%20at%208.50.18%20PM.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1494175073819021689</id><published>2010-05-14T12:00:00.000-04:00</published><updated>2010-05-14T12:00:05.429-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Day of .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Dayton .Net Developers Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><category scheme='http://www.blogger.com/atom/ns#' term='Cincinnati .Net User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeStock'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='IronRuby'/><category scheme='http://www.blogger.com/atom/ns#' term='CODODN'/><category scheme='http://www.blogger.com/atom/ns#' term='Indy Tech Fest'/><title type='text'>Upcoming Speaking Events</title><content type='html'>&lt;p&gt;As is normal for me this time of year, I’ve got a number of events that I’m attending to do a little speaking and a little learning. This round will take me to three states, but only one time zone (thank goodness).&lt;/p&gt;  &lt;h3&gt;Indy Tech Fest, May 22&lt;/h3&gt;  &lt;p&gt;I’ll be presenting on Lean Software Practices. We’ll go through the seven principles of Lean Software Development, and I’ll present some experiences with each as I’ve practiced Lean over the last few years. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://indytechfest.org/" target="_blank"&gt;Indy Tech Fest&lt;/a&gt; might not be too familiar to us here in central Ohio, because it’s outside our MS region. (gasp) But, the folks in Indy do a bang up job with their events, and they have a large, active .Net community. This is my second year venturing west to join the folks at Indy, and it was a great time last year.&lt;/p&gt;  &lt;h3&gt;The Path to Agility, May 27&lt;/h3&gt;  &lt;p&gt;This is the first &lt;a href="http://thepathtoagility.org/" target="_blank"&gt;Path to Agility&lt;/a&gt; conference, and it’s being put on by the Central Ohio Agile Alliance at the Arena Grand theater in the Arena District of downtown Columbus. They’re bringing in Ken Schwaber to keynote the event, so I am most decidedly on the undercard. &lt;/p&gt;  &lt;p&gt;I’ll be presenting my Kanban experiences over the last few years. It’ll introduce Kanban and how to use it to deliver software. I’ll relay the good experiences and the bad experiences.&lt;/p&gt;  &lt;p&gt;There is quite a line up for this conference, and there’s still space available. If you can get a Thursday off work, it’ll well worth the $100 to attend. There are some top notch local agile people presenting. (The Clippers are at home that night, stick around for some baseball.)&lt;/p&gt;  &lt;h3&gt;Central Ohio Day of .Net, June 5&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_5SnOEGqkJYw/S-1rp064W5I/AAAAAAAACGs/KJODn43L1Ak/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://lh5.ggpht.com/_5SnOEGqkJYw/S-1rqF3LYFI/AAAAAAAACGw/ufIx6hq4NEs/image_thumb%5B1%5D.png?imgmax=800" width="148" height="159" /&gt;&lt;/a&gt;The &lt;a href="http://cinnug.org/cododn/default.aspx" target="_blank"&gt;“home” event&lt;/a&gt;. Can’t miss this one, it’s a great time every year.&amp;#160; Getting the Cincy, Dayton, and Columbus folks under the same roof has made for a great event the last two years. &lt;/p&gt;  &lt;p&gt;I’ve been selected to give two talks this year. Upside, I’m giving two talks. Downside, it’ll cut into my hallway sessions. &lt;/p&gt;  &lt;p&gt;The schedule isn’t out yet, so I don’t know which session fits where. I’m presenting a beginning IronRuby talk, where we’ll get it installed, bang out some ruby code, hit a few CLR objects, and possibly take a few whacks at a piñata to bring the fun level down a little. The second talk will be the same Lean presentation I’m giving in Indy. &lt;/p&gt;  &lt;h3&gt;Codestock, June 25-26&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_5SnOEGqkJYw/S-1rqrTfdfI/AAAAAAAACG0/i9ToD2YAbRE/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://lh4.ggpht.com/_5SnOEGqkJYw/S-1rrvocxPI/AAAAAAAACG4/VvZiJwj7jC8/image_thumb%5B4%5D.png?imgmax=800" width="153" height="153" /&gt;&lt;/a&gt; My second trip to Knoxville to get in on &lt;a href="http://codestock.org/" target="_blank"&gt;Codestock&lt;/a&gt;. This is a great event. It’s got .Net roots, but offers quite a bit outside the normal .Net conference sessions. There are a lot of choices to make on what to attend over the two days. They did move to downtown Knoxville this year, so I’m looking forward to the new venue.&lt;/p&gt;  &lt;p&gt;I’m speaking twice here, as well. I’ll deliver a Kanban talk, and an IronRuby talk. The IronRuby talk is going to go a bit deeper on testing than the one I’m giving at CODODN.&lt;/p&gt;  &lt;p&gt;An added benefit to Codestock is Wendy and the boys go along, and we turn it into a mini-vacation. So, I’ll get a little pool time in, which usually doesn’t happen at conferences not named “Codemash.”&lt;/p&gt;  &lt;h3&gt;Ohio User Group Tour, July 22, 27, 28&lt;/h3&gt;  &lt;p&gt;We’re going to IronRuby it up at the &lt;a href="http://www.condg.org/" target="_blank"&gt;Columbus&lt;/a&gt;, &lt;a href="http://cinnug.org/" target="_blank"&gt;Cincinnati&lt;/a&gt;, and &lt;a href="http://daytondevgroup.net/" target="_blank"&gt;Dayton&lt;/a&gt; user groups in July. This talk is going to go into testing our C# code with IronRuby, and what advantages there are to this. The reason the CODODN talk is the beginning talk is because I was scheduled talk for these user groups back in December. Since it’s roughly the same crowd, we’ll do the intro at Day of .Net and dive into the testing at the local user groups. &lt;/p&gt;  &lt;p&gt;Expect to see some RSpec running against C#, Rails running on IronRuby, Sinatra running on IronRuby, and mabye we’ll get crazy and put a Rails front end on an nHibernate repository or something. All hell’s gonna break loose during this one!&lt;/p&gt;  &lt;p&gt;If I survive all this, I’ll have like 3 weeks of summer to kick back and relax…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1494175073819021689?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1494175073819021689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1494175073819021689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1494175073819021689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1494175073819021689'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/05/upcoming-speaking-events.html' title='Upcoming Speaking Events'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh5.ggpht.com/_5SnOEGqkJYw/S-1rqF3LYFI/AAAAAAAACGw/ufIx6hq4NEs/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5956973598768263545</id><published>2010-05-06T10:00:00.001-04:00</published><updated>2010-05-06T10:00:52.988-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><title type='text'>Mongo Mapper: Spelling Matters</title><content type='html'>&lt;p&gt;Added &lt;a href="http://github.com/jnunemaker/mongomapper/" target="_blank"&gt;Mongo Mapper&lt;/a&gt; to my test Sinatra app today, and kept getting a gem not found error. All the examples that came up in my various Google searches had:&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;require ‘mongomapper’&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;After a reinstall of the gem and a few curse words, I tried a little experiement:&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;require ‘mongo_mapper’&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;That did the trick.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5956973598768263545?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5956973598768263545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5956973598768263545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5956973598768263545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5956973598768263545'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/05/mongo-mapper-spelling-matters.html' title='Mongo Mapper: Spelling Matters'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1316330421888518107</id><published>2010-04-27T20:44:00.001-04:00</published><updated>2010-04-27T20:44:11.146-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Lean'/><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><title type='text'>Lean Conference Recap</title><content type='html'>&lt;p&gt;Last week I was an attendee and a speaker at the &lt;a href="http://atlanta2010.leanssc.org/" target="_blank"&gt;Lean Software and Systems Conference&lt;/a&gt;. It was three days of lean, kanban, and flow; and it really got the wheels turning on a few things.&lt;/p&gt;  &lt;p&gt;Off the top, a quick warning: If you are a restaurant owner and you don’t usually set up a buffet line in your restaurant, pray that &lt;a href="http://www.poppendieck.com/" target="_blank"&gt;Mary Poppendieck&lt;/a&gt; is not among the first few patrons to your new set up. This situation happened at the speaker lunch, and as 50+ lean thought leaders (and me) lined up, Mary came out with, “You would think a restaurant with a buffet line would understand queuing theory!”&lt;/p&gt;  &lt;p&gt;Overall, the conference was very interesting. It wasn’t the normal dev conference I’m used to attending. The audience was comprised of project managers and team leads much more so than it was of developers and engineers. It made for a much different dynamic…and dress code. A lot more khakis and golf shirts than cargo shorts and Star Wars t-shirts.&lt;/p&gt;  &lt;p&gt;The sessions were pretty good, but this was year two for this conference. That combined with the relative newness of the whole lean software movement led to some overlap in session content. Not saying that’s a bad thing overall, just the nature of the situation.&lt;/p&gt;  &lt;p&gt;As with any conference, the hallway sessions add to the whole situation. I saw a few familiar faces and met quite a few new folks, including three guys who had flown over from Sweden for the conference. (And got past the volcano that wreaked havoc on the speaker schedule all three days.) &lt;/p&gt;  &lt;p&gt;The only real downer for me was I didn’t get to visit open spaces. I was opposite the open spaces on Friday, so I was preparing to speak or speaking during the first part of the morning. After that, we were tearing down the booth and getting to the airport for our flight home. Would have liked to have seen what came out of those open spaces.&lt;/p&gt;  &lt;p&gt;I thought my own session went pretty well. I did 45 minutes of a kanban experience report, and got a few questions near the end. The room was pretty big, so it didn’t lend itself too well to creating the discussion this topic has for me in the past. But, I was video taped for the first time in my short speaking career, so when that link comes out I’ll be sure to pass it around. (After reviewing it to make sure my hair looks ok.)&lt;/p&gt;  &lt;p&gt;It looks like next year is slated to be in LA. I’ll submit a topic again, but even if I’m not selected to speak I may have to attend. This isn’t a CodeMash I must-attend-as-long-as-I-have-a-pulse type situation, but more to see how this conference matures and drives lean and kanban forward.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1316330421888518107?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1316330421888518107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1316330421888518107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1316330421888518107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1316330421888518107'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/04/lean-conference-recap.html' title='Lean Conference Recap'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8507387027797911464</id><published>2010-04-10T15:16:00.001-04:00</published><updated>2010-04-10T15:16:32.710-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Kalamazoo X'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>The Tool List from Kalamazoo X</title><content type='html'>&lt;p&gt;Here is the list of tools that I mentioned (and some I forgot to mention) during my talk at Kalamazoo X. &lt;/p&gt;  &lt;h3&gt;Communication and Collaboration&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://basecamphq.com/" target="_blank"&gt;Basecamp&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.agilezen.com/" target="_blank"&gt;AgileZen&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://docs.google.com/" target="_blank"&gt;Google docs&lt;/a&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sites.google.com/" target="_blank"&gt;Google sites&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://trac.edgewall.org/" target="_blank"&gt;Trac&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.bugzilla.org/" target="_blank"&gt;Bugzilla&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.tiddlywiki.com/" target="_blank"&gt;Tiddlywiki&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.pivotaltracker.com/" target="_blank"&gt;Pivotal Tracker&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Source Control&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://git-scm.com/" target="_blank"&gt;git&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://github.com" target="_blank"&gt;github&lt;/a&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://mercurial.selenic.com/" target="_blank"&gt;mercurial&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bitbucket.org/" target="_blank"&gt;bitbucket&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://subversion.tigris.org/" target="_blank"&gt;Subversion&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tortoisesvn.tigris.org/" target="_blank"&gt;Tortoise SVN&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.google.com/" target="_blank"&gt;Google code&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://unfuddle.com/" target="_blank"&gt;unfuddle&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Builder Servers and Continuous Integration&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://hudson-ci.org/" target="_blank"&gt;Hudson&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.jetbrains.com/teamcity/index.html" target="_blank"&gt;TeamCity&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://cruisecontrol.sourceforge.net/" target="_blank"&gt;Cruise Control&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/" target="_blank"&gt;Cruise Control .Net&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://cruisecontrolrb.thoughtworks.com/" target="_blank"&gt;Cruise Control rb&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Text Editors&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.vim.org/" target="_blank"&gt;Vim&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.gnu.org/software/emacs/" target="_blank"&gt;emacs&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.e-texteditor.com/" target="_blank"&gt;e text editor&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://macromates.com/" target="_blank"&gt;textmate&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm" target="_blank"&gt;Notepad ++&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.scintilla.org/SciTE.html" target="_blank"&gt;Scite&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Command Shell&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.cygwin.com/" target="_blank"&gt;Cygwin&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx" target="_blank"&gt;Powershell&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Scripting Languages&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.ruby-lang.org/en/" target="_blank"&gt;Ruby&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.python.org/" target="_blank"&gt;Python&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Books&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.pragprog.com/the-pragmatic-programmer" target="_blank"&gt;Pragmatic Programmer&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://oreilly.com/catalog/9780596519780/" target="_blank"&gt;Productive Programmer&lt;/a&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8507387027797911464?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8507387027797911464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8507387027797911464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8507387027797911464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8507387027797911464'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/04/tool-list-from-kalamazoo-x.html' title='The Tool List from Kalamazoo X'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-247474031176720384</id><published>2010-03-29T08:30:00.000-04:00</published><updated>2010-03-29T08:30:01.434-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflex Design and Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Pillar Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>On the Move to Pillar</title><content type='html'>&lt;p&gt;It wasn’t that long ago I was announcing my move to Reflex, but I am indeed taking the career on the road again, this time to join the team at &lt;a href="http://pillartechnology.com/"&gt;Pillar Technology&lt;/a&gt;. Officially, I’ll be on board at Pillar on April 1st…no foolin’.&lt;/p&gt;  &lt;p&gt;I have to give a big thanks to Andrew at Reflex for putting enough trust in me to make a difference there. In the short time there, we instituted a number of changes that will help them going forward. In two short months, we dove into cloud computing with Amazon, github, basecamp, Kaban, threw VSS out the window, and strived for more communication and visibility in all our projects. We bit off a lot in a short time and got some good positive momentum out of all of it.&lt;/p&gt;  &lt;p&gt;However, as with any job or company, changes happen that effect everybody there. In this case, the changes came much quicker than I expected, and the opportunity to join Pillar came up and was too good to turn down. &lt;/p&gt;  &lt;p&gt;Change is never too easy, but I’m excited to be joining Pillar. I’m going to get to work with some familiar faces, and some new ones. I’m going to get to push further into agile and lean, and learn from some leaders in the industry. All in all, I think this is an excellent opportunity for me and my career.&lt;/p&gt;  &lt;p&gt;And, thankfully, Lotus Notes wasn’t involved in the decision making process what so ever. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-247474031176720384?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/247474031176720384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=247474031176720384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/247474031176720384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/247474031176720384'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/03/on-move-to-pillar.html' title='On the Move to Pillar'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4969106413863521237</id><published>2010-03-28T18:08:00.001-04:00</published><updated>2010-03-28T18:08:32.249-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Kalamazoo X'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>Countdown to Kal-X</title><content type='html'>&lt;p&gt;On April 10th I’ll be attending one of my favorite conferences, &lt;a href="http://kalamazoox.org/"&gt;Kalamazoo X&lt;/a&gt;. This will be the second year for the X conference, a one day, one track, no code conference. Each session will be 30 minutes long this year, and there are some &lt;a href="http://kalamazoox.org/2010Sessions"&gt;great speakers and sessions&lt;/a&gt; lined up.&lt;/p&gt;  &lt;p&gt;I really enjoyed the one-track format of Kal-X last year, because everybody was in the same conversation. Since we had all been to the same sessions lunch became like a big open space, recap combo. &lt;/p&gt;  &lt;p&gt;The non-coding part opens the conference up to more than just developers. There were managers, designers, marketers, and students there last year. It was a great mix, and lead to some great questions during the conference.&lt;/p&gt;  &lt;p&gt;I’m going to take a half hour break from being an attendee to be a speaker this year, as well. I’m going to give 30 minutes on what tools your dev team should have to be more efficient and help you build higher quality software. There will be a few tools for the whole team, and a few suggestions for the individual to employ.&lt;/p&gt;  &lt;p&gt;If you’re looking for a one-day conference that will get the wheels turning, I can’t recommend Kal-X enough.&lt;/p&gt;  &lt;p&gt;Oh, and there’s this &lt;a href="http://www.bellsbeer.com/"&gt;little brewery&lt;/a&gt; in Kalamazoo… :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4969106413863521237?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4969106413863521237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4969106413863521237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4969106413863521237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4969106413863521237'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/03/countdown-to-kal-x.html' title='Countdown to Kal-X'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-6503037346609109380</id><published>2010-03-21T18:42:00.001-04:00</published><updated>2010-03-21T18:42:14.020-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><title type='text'>Dropbox, ASP.Net, and a Mac</title><content type='html'>&lt;p&gt;I recently &lt;a href="http://blog.timwingfield.com/2010/01/five-days-with-my-macbook-pro.html"&gt;switched to a Mac&lt;/a&gt; for my development platform, and have enjoyed the experience so far. Working with zsh and ruby and rails and all kinds of things have been much easier in OSX. Getting down with .Net is still done in Win7 for me, usually on my VM. (I haven’t booted into Windows for .Net development, yet, VMWare has done great.)&lt;/p&gt;  &lt;p&gt;I set up my environment so that most everything is saved on the OSX partition, which isn’t a big deal because VMWare just shares folders over to Windows. So, all my files reside in one place. Nice and tidy. I have a Code directory set up to keep my code on one spot (genius on the naming of that directory, I thought). It’s shared over to Windows, and I can get to everything in either OS.&lt;/p&gt;  &lt;p&gt;The downside to this plan is that to Windows it’s a network share. If you’ve ever fired up Visual Studio to do some ASP.Net development over a network share, you know it’s not a happy camper. But, I don’t want to duplicate everything for the sake of keeping Studio happy. If I do that for Visual Studio, then I’ll have to do it for everybody, and that’s a slippery slope I don’t want to go down.&lt;/p&gt;  &lt;p&gt;A little Googling later, and I find somebody using &lt;a href="http://www.dropbox.com"&gt;Dropbox&lt;/a&gt; to keep it all synced up. I’m already a happy Dropbox customer, and had the, “Well, duh!” moment as soon as I read it. (If you’d like to become a happy Dropbox customer, &lt;a href="https://www.dropbox.com/referrals/NTIyNzAyMDE5"&gt;get an extra 250 MB when you sign up with my invitation&lt;/a&gt;. They give me an extra 250 MB, too.)&lt;/p&gt;  &lt;p&gt;Pretty easy to set up at that point. I installed Dropbox on the VM, created a folder in it for .Net development, and I was all ready to go. ASP.Net was happy because it was now on a local drive, I was happy because I could still move things in and out of git on the Mac side of things.&lt;/p&gt;  &lt;p&gt;I can already hear some howling, “You’re duplicating your code! It’s stored twice on the same machine!” True…but I Dropbox does all the syncing for me, so it’s mostly an afterthought. The upside is that I can get to it with the tools I want in the OS I want whenever I want. Code it up in Studio, grep the VSS files out of it in zsh, commit branch and merge with git on the Mac, and debug away in Windows. &lt;/p&gt;  &lt;p&gt;Even though the code files exist twice, the tools don’t. I don’t have git or a text editor installed on Windows because I can use the Mac ones.&lt;/p&gt;  &lt;p&gt;Another big downside would be coding sans Internet connection. For the most part Dropbox syncs everything up so quickly I rarely notice it. But, if I’m away from an Internet connection, that’s not going to happen at all, and even though both copies are on the same machine, they’d be out of sync until I get hooked back up. For all practical purposes, this hasn’t been an issue, yet. &lt;/p&gt;  &lt;p&gt;Overall, for having a little duplication on the hard drive and an extra layer of something-that-could-go-wrong in there, the experience has been, well, not noticeable. Everything just works, I haven’t had to wait on Dropbox to finish syncing files yet, and I get to use the right tool for the right job. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-6503037346609109380?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/6503037346609109380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=6503037346609109380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6503037346609109380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6503037346609109380'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/03/dropbox-aspnet-and-mac.html' title='Dropbox, ASP.Net, and a Mac'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7238686258532153397</id><published>2010-01-12T08:30:00.000-05:00</published><updated>2010-01-12T08:30:00.581-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Setting Job Change Goals</title><content type='html'>&lt;p&gt;Having just gone through a job change, I thought about sharing one of the bigger aspects of my job search process. When this process started for me – and don’t be fooled, it is a whole process and not one taken lightly – I set four base goals that my new (or current) employer had to meet. &lt;/p&gt;  &lt;p&gt;I was given this idea while listening to &lt;a href="http://www.rolemodelsoft.com/people/ken_auer"&gt;Ken Auer&lt;/a&gt; speak at SCNA this summer. Ken was telling of when he decided to start his own company and one of his mentors said, “Set four goals for yourself, and only one of them can be monetary.” That hit home with me at the time: only one can be monetary. It was simple, and in regards to your career plainly obvious, but actually hearing it made it hit much harder.&lt;/p&gt;  &lt;h4&gt;1. Can I effect change?&lt;/h4&gt;  &lt;p&gt;I’ve spent the last 5+ years living agile development and working with XP development practices. I’ve been involved with Book Clubs and started &lt;a href="http://www.codeandcoffee.info/"&gt;Code and Coffee&lt;/a&gt;. I’ve picked up four different build servers, enjoyed development in ASP.Net MVC, and done a cannonball into the Rails pool. Can I take all this knowledge and use it for good instead of evil? Can I get a new organization on a path of continuous improvement?&lt;/p&gt;  &lt;h4&gt;2. Will I get to continue to push Agile/Lean and work with good technology?&lt;/h4&gt;  &lt;p&gt;I’ve put a lot of time into Lean and Kanban over the last year and a half. Both learning it, molding the process on various projects, then speaking about it to about anybody who’d listen. I want to keep on that course, because I think I’ve only started to scratch the surface of what Lean can bring to an organization.&lt;/p&gt;  &lt;p&gt;Additionally, will I continue to get to work with cool technology, or better, be involved in the decision making process on what technology we’ll use? The phrase, “Right tool, right job,” means a lot to me.&lt;/p&gt;  &lt;h4&gt;3. Cool people to work with.&lt;/h4&gt;  &lt;p&gt;I don’t want to be a one man dev team as the member of a one person dev team is never wrong. I want to be around people that I can continue to learn from, that will push me as much as I can (hopefully) push them. And, I want to have fun. It seems simple, but for many years of my IT career it hasn’t felt like work because it’s fun doing the job I do. A lot of that has to do with the people I’ve worked with in the past.&lt;/p&gt;  &lt;h4&gt;4. $$…can I get what I’m worth?&lt;/h4&gt;  &lt;p&gt;One of the four has to be about money – I don’t do this for free, after all. &lt;/p&gt;  &lt;p&gt;Market value was one of the toughest things to determine. Different people value different skills at different levels. If you’re in the consulting game, you have to have a salary that your bill rate will support. And the downward pressure on bill rates the last year is no great secret.&lt;/p&gt;  &lt;h4&gt;The unspoken goal – family time.&lt;/h4&gt;  &lt;p&gt;This is one I never put on paper because it’s the first thing that concerns me while thinking about anything with my job and my career. I’ve been extremely lucky to have a wife and two boys who have supported me as I started speaking and being gone more weekends with code camps, give camps, and conferences. So, the length of the commute to any office becomes a big deal. In an interview don’t hit me with, “We have a mandatory 45 hour work week,” because you’re taking almost another day per month of my time away from my family.&lt;/p&gt;  &lt;p&gt;If you’re in a position where you’re starting to poke around to see what might be next for you, take the time and spell out what you want. Talk it over with your significant other, with some close friends, and forge ahead. Writing it down makes you stop and think about where you really want to go. &lt;/p&gt;  &lt;p&gt;At least it did for me.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7238686258532153397?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7238686258532153397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7238686258532153397' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7238686258532153397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7238686258532153397'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/01/setting-job-change-goals.html' title='Setting Job Change Goals'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1890230607293301892</id><published>2010-01-07T08:30:00.002-05:00</published><updated>2010-01-07T08:30:01.349-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflex Design and Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Solutions'/><category scheme='http://www.blogger.com/atom/ns#' term='career'/><title type='text'>Career.Next</title><content type='html'>&lt;p&gt;When you start a new job, that first day is one of the most exciting you have while you’re there. You’re busy getting settled in, meeting new people, learning new ways of doing things, and eventually fitting in and finding your place. For me, that day was June 21st, 2004 and the new company was Quick Solutions Inc. &lt;/p&gt;  &lt;p&gt;However, on that first day, you don’t start thinking about when the last day will be. But with most careers that last day on a job is out there somewhere. Eventually your career leads you on to something new, something more challenging, maybe something you never expected back on that first day. That’s exactly what has happened with me, and that last day at QSI that I never really expected will be January 8th, 2010.&lt;/p&gt;  &lt;p&gt;To say I appreciate the opportunities granted me while I was at Quick would be a rather large understatement. I’m still in awe of some of the people I worked with over the years at QSI. Most everybody assembled in our app dev group was extremely talented and extremely passionate about technology, continuous improvement, and sharing what they knew. It was exciting to go to work most days because of who was going to be sitting at the desk next to you.&lt;/p&gt;  &lt;p&gt;So what is next? I’m off to &lt;a href="http://www.reflexdt.com/work.aspx"&gt;Reflex Design &amp;amp; Technology&lt;/a&gt; to help them build a development team. Actually, on day 1 I’ll &lt;strong&gt;BE&lt;/strong&gt; the dev team - Lord help them. I’m more than a little excited to be stepping into this role with them. (Yes, if you’re doing the date math in your head, I’ll be at Reflex for two days then I head for &lt;a href="http://codemash.org/"&gt;Codemash&lt;/a&gt;.) &lt;/p&gt;  &lt;p&gt;Again, many thanks to the folks I worked with at QSI. There’s no way I’d be ready to step into the role I’m taking without all that I’ve learned from &lt;em&gt;all of you&lt;/em&gt; over the last five plus years.&lt;/p&gt;  &lt;p&gt;I’m sure at this point many of you are asking, “Why did he leave?” That’s not easy to answer. It’s a very long and complex process I went through to arrive at this decision. But, I managed to sum it up in just two words…&lt;/p&gt;  &lt;p&gt;Lotus Notes&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1890230607293301892?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1890230607293301892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1890230607293301892' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1890230607293301892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1890230607293301892'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/01/careernext.html' title='Career.Next'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-146052476468146335</id><published>2010-01-03T14:00:00.000-05:00</published><updated>2010-01-03T14:00:01.376-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Five Days with My MacBook Pro</title><content type='html'>&lt;p&gt;With a few changes headed my way in the coming new year, it was once again time to get some new hardware. I took the leap and opted for a MacBook Pro. (2.66GHz/4GB/320GB/15” so not the biggest, &lt;a href="http://lh5.ggpht.com/_5SnOEGqkJYw/S0DmoDoABjI/AAAAAAAACD8/GjlpjC4Xsmo/s1600-h/mac_vs_pc_2%5B11%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="mac_vs_pc_2" border="0" alt="mac_vs_pc_2" align="right" src="http://lh6.ggpht.com/_5SnOEGqkJYw/S0Dmo_Xmd7I/AAAAAAAACEA/kvkPr2XcY54/mac_vs_pc_2_thumb%5B9%5D.png?imgmax=800" width="220" height="246" /&gt;&lt;/a&gt;baddest one.) Here are a few of my initial leaving-Windows-and-Dell thoughts. &lt;/p&gt;  &lt;p&gt;I can say after five days that I’m pretty sure I made the right move. There are a few things I’m struggling with in the switch, mainly my fingers going to the correct keys. Years of hitting CTRL on a windows keyboard has me hitting the fn key on the MBP, which doesn’t do much. Getting used to the Command key will take some time, but the oddest keyboard issue I’m having is hitting the B key. The reach is apparently shorter because I’ve put a lot of spaces where there should be a B.&lt;/p&gt;  &lt;p&gt;On the flip side, it didn’t take me very long to get used to the multi-touch functions on the track pad. Having an iPhone doesn’t hurt, but the two, three, and four finger operations didn’t take long to become comfortable with. Scrolling through blog readers, articles, and Tweetdeck is a lot easier.&lt;/p&gt;  &lt;p&gt;Installing applications is a lot easier, and a lot quicker than on Windows. To be fair, I haven’t installed a lot of huge apps, but the fairly large ones I did install went really quickly. The only real side-by-side comparison of installation I have is Tweetdeck, and it was a fraction of the time getting it up and running on the Mac. Most apps are just download, mount the image, drag to applications, unmount the image, and run it.&lt;/p&gt;  &lt;p&gt;Now on to one of the bigger reasons I was after a Mac: Ruby on Rails development.&lt;/p&gt;  &lt;p&gt;Rails on Windows was painfully slow at times. I tried all kinds of stuff to get my specs to run in less time than it took me to go downstairs and brew a cup of coffee. After copying the git repo of one of my sample apps over, I ran the specs and it reported .7-ish seconds. And it actually WAS .7-ish seconds. Not the 45 seconds of dead time at the command prompt while it fired up servers and stuff then reporting .7-ish seconds when it was done with the tests that I was used to. I’m already looking forward to doing some more of this.&lt;/p&gt;  &lt;p&gt;Before I start sounding like a total fan boy, it hasn’t all been awesome. There was a 2 hour fight with an iso and some printer drivers to try and get my printer at home to work. Still haven’t got it to work, so I gave up and grabbed Brendan’s netbook to print off what I needed. &lt;/p&gt;  &lt;p&gt;I’m also not enthralled with only having 1440 x 900 resolution. But, I’m getting old and my eyes would get tired staring at the hi-res Dell I had before, so maybe I should not worry about this one too much.&lt;/p&gt;  &lt;p&gt;Also, couldn’t find any decent blog writer that lived up to Windows Live Writer, so this is being written in Live Writer in my Windows VM. (Bootcamp + VMWare Fusion + Win7 is freaking awesome. Looking forward to some .Net dev when I get Studio installed.)&lt;/p&gt;  &lt;p&gt;Suffice it to say, the positives out weigh the negatives so far. I’m sandals-to-work away from swallowing the blue pill with the Apple logo on the side of it. :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-146052476468146335?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/146052476468146335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=146052476468146335' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/146052476468146335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/146052476468146335'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2010/01/five-days-with-my-macbook-pro.html' title='Five Days with My MacBook Pro'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh6.ggpht.com/_5SnOEGqkJYw/S0Dmo_Xmd7I/AAAAAAAACEA/kvkPr2XcY54/s72-c/mac_vs_pc_2_thumb%5B9%5D.png?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3809562978726304734</id><published>2009-12-22T21:30:00.000-05:00</published><updated>2009-12-22T21:35:18.516-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Beware Your Buffering</title><content type='html'>&lt;p&gt;In a twitter discussion that was centering around some Kanban joy, the point of buffering came up. I offered &lt;a href="http://twitter.com/timwingfield/status/6944584935" target="_blank"&gt;a bit of twitter-esque advice&lt;/a&gt;, meaning it was short, could be interpreted as terse, and lacked the detail it needed. As any good friend would do, &lt;a href="http://twitter.com/jimholmes" target="_blank"&gt;Jim&lt;/a&gt; &lt;a href="http://twitter.com/JimHolmes/status/6944906114" target="_blank"&gt;called me out&lt;/a&gt; for my 140 character bit of guidance.&lt;/p&gt;  &lt;p&gt;So, in more than 140 characters…&lt;/p&gt;  &lt;p&gt;Be careful with your queues on your Kanban board. (I say queue here, because a buffer is just the queue for the next step.) By definition, any queue is waste. It’s a step in the process where something is waiting, therefore value isn’t being provided to your customer.&lt;/p&gt;  &lt;p&gt;Can queues be used effectively? Yes. Quite effectively, but you have to stay on top of them. In reality, there has to be some queuing going on to give a pull system something to pull. In practice, those queues need to be as small as you can keep them to keep things flowing.&lt;/p&gt;  &lt;p&gt;My tweet that started this mess was that I’d been burned by buffers on more than one occasion. Here’s one nasty one where the queue wasn’t a help, it was hiding the real problem.&lt;/p&gt;  &lt;p&gt;We had a project where our developers far outnumbered our testers. This isn’t an unheard of scenario in the world of software development, but we handled it badly on our Kanban board. We ended up with not one, but two buffers between the dev team and the QA folks. The true, root cause problem was we had a resource problem because we needed more testers. Instead, we masked it with some queuing.&lt;/p&gt;  &lt;p&gt;The biggest problem was that we lost our short feedback loop from development to demo. Early in the process, we’d complete a feature and it would demo within a day or two. As the project progressed and the developers’ momentum took off, the testing team was backed up and the feedback loop grew. Bugs were sitting open longer, code complete features waited to be tested, and the churn began.&lt;/p&gt;  &lt;p&gt;Our solution was to swarm the test queue to get it lowered. Having a dev or two help get some testing done got our backed up test queue fixed, but it put devs in a testing role which I’m not a big fan of doing. (Devs are notorious for making sure something works rather than looking for ways something could break.) Also, this solution was very temporary as the queue naturally filled back up once the dev team was back in high gear. The actual solution: add a testing resource. Our full queues told us that, but we didn’t listen too closely for a while.&lt;/p&gt;  &lt;p&gt;In the end, some buffers and queues are inevitable in many situations. However, make sure to do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Make them as small as you can, maybe half the size of the queue limit of the step that the buffer is feeding. Adjust as necessary, but don’t keep increasing it as it fills up. &lt;/li&gt;    &lt;li&gt;If you need to increase its size, ask why a couple times to clear it up. If the answer is, “Because we need more room!” then look at the next step and see why it’s backing up your process. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So, back to what started all this…buffers can bite you in the butt as they tend to mask the issue rather than solving it. Make sure your buffers aren’t hiding a bigger problem.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3809562978726304734?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3809562978726304734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3809562978726304734' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3809562978726304734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3809562978726304734'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/12/beware-your-buffering.html' title='Beware Your Buffering'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2595051597532186006</id><published>2009-12-10T08:30:00.000-05:00</published><updated>2009-12-10T08:30:00.732-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Rails Study Apps</title><content type='html'>&lt;p&gt;I’m trying to pick up some rails in my spare time. Been plugging away at my pet project when I can, which leads to a lot of googling while I do it. If one of my known Rubyist friends is at a &lt;a href="http://www.codeandcoffee.info" target="_blank"&gt;Code and Coffee&lt;/a&gt; session, I spend a fair amount of time picking their brains and pairing up to learn what I can in an hour or so.&lt;/p&gt;  &lt;p&gt;That all works pretty well, but at my pace I’ll be forever getting my Ruby code to look less like C# and more like Ruby. So, as &lt;a href="http://stevenharman.net/blog/archive/2009/11/18/reading-code-is-key-to-writing-good-code.aspx" target="_blank"&gt;Steve blogged recently&lt;/a&gt;, why not find a few Rails apps to read? So, I hit up my twitter friends: &lt;a href="http://twitter.com/timwingfield/status/6464205602"&gt;http://twitter.com/timwingfield/status/6464205602&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I got three pretty good responses, and finally got time tonight to pull them down and take a quick look at them. I don’t have a lot of info on any of them, but I did browse the source to get a feel for what was going on.&lt;/p&gt;  &lt;h4&gt;Radiant CMS&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://github.com/radiant/radiant"&gt;http://github.com/radiant/radiant&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This one was recommended by &lt;a href="http://twitter.com/dugaldwilson" target="_blank"&gt;Dugald Wilson&lt;/a&gt;. Decent amount of code here to look at, and uses RSpec for the test framework. This one definitely fit the bill for what I was after.&lt;/p&gt;  &lt;h4&gt;Spot.us&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://github.com/spot-us/spot-us"&gt;http://github.com/spot-us/spot-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I got this one as a tag team recommendation from &lt;a href="http://twitter.com/pragma_tech" target="_blank"&gt;Scott Walker&lt;/a&gt; and &lt;a href="http://twitter.com/mattdarby" target="_blank"&gt;Matt Darby&lt;/a&gt;. This is a non-profit company doing Community Funded Reporting and is coming from the folks at &lt;a href="http://www.hashrocket.com/" target="_blank"&gt;Hashrocket&lt;/a&gt;. More RSpec out of this project, and again a fair amount of code to pour over.&lt;/p&gt;  &lt;h4&gt;Redmine&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://github.com/edavis10/redmine"&gt;http://github.com/edavis10/redmine&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The third one came through &lt;a href="http://twitter.com/jamin4jc" target="_blank"&gt;Ben Wagaman&lt;/a&gt;. This one uses TestUnit instead of RSpec, but still some decent reading. I’m going to have to dig into the tests a bit more on this one, though, because the file names aren’t jumping out at me as model/controller/etc type tests. But, that’s the point of this exercise, to see what other folks are doing.&lt;/p&gt;  &lt;p&gt;I’ve got a little flying and a lot of driving ahead of me this weekend, hopefully I get some time to dive deeper into what each of these apps is up to, and get some more Rails code under my belt. &lt;/p&gt;  &lt;p&gt;If you’ve come across a few more open source Rails apps out there, please drop a link in the comments.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2595051597532186006?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2595051597532186006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2595051597532186006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2595051597532186006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2595051597532186006'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/12/rails-study-apps.html' title='Rails Study Apps'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1935342501445145811</id><published>2009-11-14T12:47:00.001-05:00</published><updated>2009-11-14T12:47:16.544-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>ASP.Net MVC: A Step in the Right Direction</title><content type='html'>&lt;p&gt;A link to Doug Copestake’s article &lt;a href="http://www.thecurlybracket.com/?p=164" target="_blank"&gt;“ASP.Net MVP: A Step Backwards?”&lt;/a&gt; was forwarded to me, and it made some short rounds on twitter. I read it and had a comment underway and thought, “This is WAY to big for a comment, let’s blog it!” So here we are.&lt;/p&gt;  &lt;p&gt;Off the top, I’d like to give a tip of the hat to Doug for stepping outside his day to day and taking a look at ASP.Net MVC. It’s very easy to hide behind FUD and just blow off something different. Additionally, his initial findings are pretty much on par with most other folks happy with WebForms who take their first look at MVC.&lt;/p&gt;  &lt;p&gt;The MVC framework definitely provides simplicity and separation of concerns to web development. It allows you to only write the code you need to write to get the job done, and it allows you to work with the framework. Views become very small and very specialized, controller actions mature to be very thin, and it’s all easily testable. &lt;/p&gt;  &lt;p&gt;This has made my work with the MVC framework extremely successful. Since everything is easily testable, as we refactor the code to clean it up or add new functionality, it all flows very easily.&lt;/p&gt;  &lt;p&gt;Control reuse comes from veteran WebForms developers quite often. But if we again point at simplicity, how many of those drag and drop controls were written to cover more functionality than you need? You drag a grid control out and use 15% of it’s power because its made for everyone. Yes, you can write your own application controls to do exactly what you want, but you can do that in MVC, too. &lt;/p&gt;  &lt;p&gt;Another point to control reuse is the leveraging of more javascript frameworks to do many of the things that the WebForm control suites do. In jQuery UI alone, you’ll get tabs, accordion panels, sliders and other UI elements, all with out that “server side” part that is so prevalent in WebForms. The win there is in more than just lighter weight controls, you gain a much better user experience. (And who doesn’t like happy users?)&lt;/p&gt;  &lt;p&gt;The spaghetti code point Doug makes is quite valid, though I think that’s not a factor of one framework or the other as much as it is the person writing the code. The &lt;a href="http://www.vanderburg.org/Blog" target="_blank"&gt;Glen Vanderburg&lt;/a&gt; quote, “A bad developer will move heaven and Earth to do the wrong thing,” applies to all languages and frameworks. The person with the keyboard under their fingers is responsible for keeping their code clean, not the framework developers, but I digress.&lt;/p&gt;  &lt;p&gt;Spaghetti code in the views is a big sign that you’ve done something wrong. Even before moving to &lt;a href="http://www.sparkviewengine.com/" target="_blank"&gt;Spark&lt;/a&gt;, if you see lots of server instructions in your views, it’s time to stop and think, “What can I do differently here?” Same can be said of your controllers. If you’re used to writing a 50 line page load method in WebForms, turning similar code into 50 line controller actions is a step in the wrong direction. I guess the main point here is instead of relying/hoping for the framework to do the work for you, the onus is now squarely on the shoulders of the developer to keep his or her code concise.&lt;/p&gt;  &lt;p&gt;Doug’s last point is very true, though: if you have a lot invested in WebForms in your current situation, there’s no real reason to switch away from it. Switching for the sake of switching to anything usually isn’t a good move. &lt;/p&gt;  &lt;p&gt;That said, you can easily run WebForms and MVC in the same web application. If you have a little something to add to the project that can stand on its own, I’d say a look at MVC is in order.&lt;/p&gt;  &lt;p&gt;This definitely would have been too long of a comment… :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1935342501445145811?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1935342501445145811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1935342501445145811' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1935342501445145811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1935342501445145811'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/11/aspnet-mvc-step-in-right-direction.html' title='ASP.Net MVC: A Step in the Right Direction'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8987581085297703649</id><published>2009-10-21T09:15:00.000-04:00</published><updated>2009-10-21T09:15:00.206-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>ASP.Net MVC v. WebForms</title><content type='html'>&lt;p&gt;This question seems to come up a lot in discussions around these two ASP.Net frameworks. Just this past weekend in Cincy at the MVC Firestarter, it came up a number of times.&lt;/p&gt;  &lt;p&gt;So, on the way to work this morning, I was listening to &lt;a href="http://www.hanselminutes.com/default.aspx?showID=202" target="_blank"&gt;Hanselminutes 184&lt;/a&gt;, and the question was FINALLY given an answer by Scott Hunter.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;If you care about separation of concerns, testability and tight control of your markup you should go with MVC. If you’re an enterprise developer and just want to get something out there quickly then use WebForms.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That’s paraphrased, I may have gotten the MVC reasons in a different order, but that was the point made.&lt;/p&gt;  &lt;p&gt;Scary that “Just get it done,” is the main reason to use WebForms. I’ll stick with my “slow” TDD and long term maintainability in MVC and steer clear of WebForms where DDD apparently stands for Drag, Drop, Deploy.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8987581085297703649?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8987581085297703649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8987581085297703649' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8987581085297703649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8987581085297703649'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/10/aspnet-mvc-v-webforms.html' title='ASP.Net MVC v. WebForms'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3153319319405936396</id><published>2009-08-31T08:00:00.000-04:00</published><updated>2009-08-31T08:00:04.786-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>I forgot what the M in MVC was for</title><content type='html'>&lt;p&gt;What brought me to this conclusion was my reading up on a little Rails. I finally took the dive. I’ve been avoiding Rails for a while in favor of just learning Ruby. &lt;a href="http://twitter.com/stevehorn"&gt;Steve&lt;/a&gt; loaned me &lt;a href="http://www.pragprog.com/titles/cerailn/rails-for-net-developers"&gt;“Rails for .Net Developers,”&lt;/a&gt; and the research was underway in earnest.&lt;/p&gt;  &lt;p&gt;On page 89, the light bulb went off. But not for Rails so much as for how I’m writing my ASP.Net MVC apps. Here’s the bit that got me:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;• Models are the classes that represent your business domain and that are responsible for communicating with your data. In Rails, this means the tables in your database.      &lt;br /&gt;• Views represent your presentation layer, for example, HTML and JavaScript.       &lt;br /&gt;• Controllers are responsible for connecting the models and views and managing the flow of the application. &lt;a href="http://twitter.com/timwingfield/status/3646635793" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="doing_it_wrong" border="0" alt="doing_it_wrong" align="right" src="http://lh5.ggpht.com/_5SnOEGqkJYw/SprsvDOyFDI/AAAAAAAAB6c/OHmmuOl240w/doing_it_wrong%5B4%5D.png?imgmax=800" width="244" height="138" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h6&gt;&lt;font color="#666666"&gt;&lt;/font&gt;&lt;/h6&gt;  &lt;p&gt;That reads pretty straightforward to me. Hell, I’ve stood in front of groups of devs on more than one occasion and said, “Views are what gets rendered, controllers marry up the views with anything they need from the model, and &lt;strong&gt;the model is everything that’s not a view or a controller&lt;/strong&gt;.”&lt;/p&gt;  &lt;p&gt;So, what’s been going wrong? I’ve been putting way too much business logic in my controllers.&lt;/p&gt;  &lt;p&gt;The structure of most of the MVC apps I’ve worked with is a typical .Net program structure. We’ve got a core where our business domain lives, and some type of ORM set up to talk to the database. From there, we expose that domain up to the UI through some simple domain services.&lt;/p&gt;  &lt;p&gt;The issue comes when I consume those services. I’m using my controller actions to marry all that up and present it to the UI. I think my “excuse” to this point has been that I have two models: My domain model, which I’m accessing through my domain services, and my presentation model, which lives in the Models directory in the ASP.Net MVC structure. My controllers have to care about two places to get their information to provide to the views. At the least I’m violating the pattern and at worst I’m likely repeating myself somewhere and creating a future maintenance issue.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I think I can see where this happened, too. Think back to the Bad Old Days of dealing with Web Forms, and the cubby code behinds that came with it. In order to avoid the 197 line PageLoad method, I would have a lot of little one-off methods scattered about the code behind file. Switch over to MVC, and it seemed perfectly normal to have a similar structure. Alarms should have gone off when I had 5 classes in the Models directory but 18 methods in one controller class.&lt;/p&gt;  &lt;p&gt;But wait, there’s more!&lt;/p&gt;  &lt;p&gt;While perusing some code on my current project, I came across the [NonAction] attribute decorating a couple of controller actions. Re-reading that…I had NonAction decorating Actions. That has a certain “Jumbo-Shrimp” feel to it, doesn’t it? I suppose the non-action could fall under “managing the flow of the application” from above, but I’m thinking any non-actions might need to be refactored into the model.&lt;/p&gt;  &lt;p&gt;Moving forward on my MVC apps – of any flavor, Ruby or .Net – I think I’ll move to a much thinner controller model in favor of loading up the model with business logic. Though I thought I knew the pattern fairly well, I didn’t practice what I preached.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3153319319405936396?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3153319319405936396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3153319319405936396' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3153319319405936396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3153319319405936396'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/08/i-forgot-what-m-in-mvc-was-for.html' title='I forgot what the M in MVC was for'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh5.ggpht.com/_5SnOEGqkJYw/SprsvDOyFDI/AAAAAAAAB6c/OHmmuOl240w/s72-c/doing_it_wrong%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8438306807214313587</id><published>2009-07-24T20:00:00.000-04:00</published><updated>2009-07-24T20:00:01.939-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><title type='text'>Kanban At XPUserGroup – July 29</title><content type='html'>&lt;p&gt;This is a bit short notice, but I just found out about it last week. (Thanks to &lt;a href="http://twitter.com/muncman"&gt;Kevin&lt;/a&gt; tweeting about it. :) ) But, I’ll be presenting my “A Little Bit of Lean with Kanban” this coming Wednesday for the XPUserGroup here in Columbus. The meeting will be at OCLC at 11:30, I’ll begin my presentation at noon. (Directions and room info at &lt;a href="http://coqaa.org/index.php?pr=OCLC"&gt;OCLC&lt;/a&gt;.)&lt;/p&gt;  &lt;p&gt;I didn’t plan on doing much speaking before leaving for vacation on August 1, but here’s one more session on Kanban. We really can’t spread the word enough about Kanban, so why not give one more a few days before I head south?&lt;/p&gt;  &lt;p&gt;I’m also giving a short presentation on the 7 principles of Lean Software development next week…but you have to be an employee of Quick Solutions to see that one. (Get hired by Tuesday to see it! :) )&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8438306807214313587?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8438306807214313587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8438306807214313587' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8438306807214313587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8438306807214313587'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/07/kanban-at-xpusergroup-july-29.html' title='Kanban At XPUserGroup – July 29'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7379743577655410989</id><published>2009-07-03T12:00:00.000-04:00</published><updated>2009-07-03T12:06:28.213-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeStock'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>CodeStock Recap and Kanban Talk Slides</title><content type='html'>&lt;p&gt;I had a great time at Codestock this past weekend. I didn’t get to many sessions, but I did go to a number of open space sessions (have some work to do on my blog) and the normal “hallway” sessions that never disappoint.&lt;/p&gt;  &lt;p&gt;My talk on Lean and Kanban went really well. There were only a couple seats left in the smallish room we had, but that lead to a much more interactive discussion. The &lt;a href="http://www.timwingfield.com/downloads/A%20Little%20Lean%20With%20Kanban.pptx"&gt;slides are available to download&lt;/a&gt;, with some notes in the deck.&lt;/p&gt;  &lt;p&gt;To answer a couple more questions from the group, here are a couple of the resources I mentioned in the talk:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Core Ladas blog: &lt;a title="http://leansoftwareengineering.com/" href="http://leansoftwareengineering.com/"&gt;http://leansoftwareengineering.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Implementing-Lean-Software-Development-Addison-Wesley/dp/0321437381/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246635882&amp;amp;sr=8-1"&gt;Implementing Lean Software Development&lt;/a&gt; by Mary and Tom Poppendieck&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Coming soon will be &lt;a href="http://www.agilezen.com/"&gt;Agile Zen&lt;/a&gt;. I’ve taken a peek at the beta, and it’ll be quite a tool in helping people and teams do lean development. Sign up for their mailing list to get notified when it comes out.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7379743577655410989?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7379743577655410989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7379743577655410989' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7379743577655410989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7379743577655410989'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/07/codestock-recap-and-kanban-talk-slides.html' title='CodeStock Recap and Kanban Talk Slides'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4180862367522245268</id><published>2009-06-16T08:00:00.000-04:00</published><updated>2009-06-16T08:03:05.677-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='IndyNDA'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>IndyNDA Recap and Covering the ModelBinder</title><content type='html'>&lt;p&gt;I want to thank all that attended my MVC presentation in Indy last week. I had a great time speaking, and even though I left a portion of my code sample out (model binders, which I’ll cover below), I thought it went well and I got some good questions during and after. I apologize for leaving it out of the talk, but I get to write a little blog post about it.&lt;/p&gt;  &lt;p&gt;A couple housekeeping things before I cover the ModelBinder part I missed.&lt;/p&gt;  &lt;p&gt;Off the top, the slides and source code from last week are &lt;a href="http://www.timwingfield.com/downloads/Getting%20started%20with%20MVC.zip"&gt;all zipped up for your downloading convenience&lt;/a&gt;. (The code through SVN is also available on &lt;a href="https://codeincubator.googlecode.com/svn/Samples/timwingfield/MvcSamples/StarDestroyer"&gt;Codeincubator&lt;/a&gt;.)&lt;/p&gt;  &lt;p&gt;During the post talk talking, &lt;a href="http://twitter.com/daveleininger"&gt;Dave&lt;/a&gt; asked me about a grid option in MVC. One we’ve been using is &lt;a href="http://flexigrid.info/"&gt;Flexigrid&lt;/a&gt;. It will do paging and sorting on its own, and will call back to your controller on its own for a little JSON. The big gotcha here is it runs on an older version of jQuery, which bit us in the butt on Friday on our project.&lt;/p&gt;  &lt;p&gt;The blog post that contains the code and explanation…well better explanation than, “I copied and pasted and it worked,” on the partial views is on &lt;a href="http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/"&gt;Steve Sanderson’s blog&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Now on to the part I forgot…&lt;/p&gt;  &lt;h3&gt;ModelBinder&lt;/h3&gt;  &lt;p&gt;I’m still feeling bad for not sharing this part. I got a question about it after the presentation, and that’s when I realized I totally forgot the edit page, which was going to demonstrate the ModelBinder. (Among other things, like the FluentHTML controls.)&lt;/p&gt;  &lt;p&gt;If you have the code form above, the files in play here are InventoryController.cs and Edit.aspx. AssaultItemEditModel.cs is the object passed, but it’s just a property bag.&lt;/p&gt;  &lt;p&gt;For the Reader’s Digest version: the ModelBinder works on the premise of convention over configuration, so the naming of your fields matter in that they have to match the property names of the object you want to bind to.&lt;/p&gt;  &lt;p&gt;For the example I missed, we had the edit model that we wanted to bind to:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;public class AssaultItemEditModel      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public virtual int Id { get; set; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public virtual string Type { get; set; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public virtual string Description { get; set; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public virtual int LoadValue { get; set; }&amp;#160;&amp;#160; &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The view had the form fields hooked to that edit model through the Fluent HTML controls from MVC Contrib.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;% Html.BeginForm(&amp;quot;Save&amp;quot;, &amp;quot;Inventory&amp;quot;);%&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;h2&amp;gt;Edit &amp;lt;%=Html.Encode(Model.Type) %&amp;gt;&amp;lt;/h2&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%=this.Hidden(x =&amp;gt; x.Id) %&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ul class=&amp;quot;details&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;span&amp;gt;Type: &amp;lt;/span&amp;gt;&amp;lt;%=this.TextBox(x =&amp;gt; x.Type) %&amp;gt;&amp;lt;/li&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;span&amp;gt;Description: &amp;lt;/span&amp;gt;&amp;lt;%=this.TextBox(x =&amp;gt; x.Description) %&amp;gt;&amp;lt;/li&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;span&amp;gt;Load Value: &amp;lt;/span&amp;gt;&amp;lt;%=this.TextBox(x =&amp;gt; x.LoadValue) %&amp;gt;&amp;lt;/li&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;%=this.SubmitButton(&amp;quot;Save&amp;quot;) %&amp;gt;&amp;lt;/li&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ul&amp;gt;       &lt;br /&gt;&amp;lt;% Html.EndForm();%&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;And finally, the controller method that’s going to process it all. Rather than taking in the standard id, it takes in a model object to which it will do all the Request.Form for you and hook the form values up to the object properties.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;[AcceptVerbs(HttpVerbs.Post)]      &lt;br /&gt;public ActionResult Save(AssaultItemEditModel item)       &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //do save       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var assaultItem = new AssaultItem(item.Id)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Description = item.Description,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type = item.Type,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LoadValue = item.LoadValue       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Service.SaveAssaultItem(assaultItem);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var message = &amp;quot;Item saved successfully.&amp;quot;; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return this.RedirectToAction(x =&amp;gt; x.Index(message));      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Don’t mind my extra step on newing up an object with the id as a parameter, that’s due to the way I hooked up &lt;a href="http://fluentnhibernate.org/"&gt;Fluent nHibernate&lt;/a&gt; at the start. Basically, to generate my maps from my domain objects, the id gets a private setter as convention. So, to get the right object to save, I had to set up the constructor to take an id argument. I cut some corners to get the demo app out the door. (John, you may hit me with, “Quicker does not equal better,” as soon as you read this.)&lt;/p&gt;  &lt;p&gt;The other way around that is to not use my domain objects in my views, but that’s another discussion.&lt;/p&gt;  &lt;p&gt;Under the hood where the magic happens, I haven’t dug too deep. But, I use this daily and it works swimmingly. You don’t even have to take in the model the view is bound to, just have the form fields match the model you’re taking in. I don’t recommend doing ad hoc model binding, in practice we set our edit model as a child of the view model.&lt;/p&gt;  &lt;p&gt;I feel bad that I didn’t get this up on the screen, because it’s some fun stuff to show off.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4180862367522245268?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4180862367522245268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4180862367522245268' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4180862367522245268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4180862367522245268'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/06/indynda-recap-and-covering-modelbinder.html' title='IndyNDA Recap and Covering the ModelBinder'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-999516521781397405</id><published>2009-06-10T20:39:00.001-04:00</published><updated>2009-06-10T20:39:40.594-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeStock'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><title type='text'>Now Batting Leadoff for CodeStock…</title><content type='html'>&lt;p&gt;I am honored to have been selected to speak at &lt;a href="http://codestock.org/"&gt;CodeStock&lt;/a&gt; and will be delivering having my Kanban conversation in the great state of Tennessee. I’m really looking forward to this as I didn’t make CodeStock last summer, and it looks like a great two day event. The good folks that have organized the conference have slotted me in one of the &lt;a href="http://codestock.org/Agenda.aspx"&gt;opening sessions&lt;/a&gt; on Friday, so we’ll get our Lean on early in the conference.&lt;/p&gt;  &lt;p&gt;There are a number of sessions I’m looking forward to, and since mine is over early I should get to a bunch of them. But, as with any regional conference, I’m looking forward to the hallway sessions as well.&lt;/p&gt;  &lt;p&gt;If you’re thinking about going, go get registered, it looks like it’s going to be a good time.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-999516521781397405?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/999516521781397405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=999516521781397405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/999516521781397405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/999516521781397405'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/06/now-batting-leadoff-for-codestock.html' title='Now Batting Leadoff for CodeStock…'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8130811769289984836</id><published>2009-06-08T08:00:00.000-04:00</published><updated>2009-06-08T08:00:30.643-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>“But WebForms did that FOR me.”</title><content type='html'>&lt;p&gt;While working with the model binder the other day, the statement in the title was made by one of the guys on my team. It’s not an unreasonable statement, but I think it spells out an important distinction between traditional ASP.Net WebForm development and using the new, shiny ASP.Net MVC framework.&lt;/p&gt;  &lt;p&gt;The point in question was in posting an object after edit, the id didn’t automatically come through. The model binders do some magic under the hood, and it’s welcome magic in my opinion as I’ll gladly leave Request.Form back with Classic ASP. However, you still have to tell the model binder the whole story, it’s not done for you anymore. (Nor was it done for you before WebForms.)&lt;/p&gt;  &lt;p&gt;Solution to our little problem: Stash the object id in a hidden form field. (Yes, I know, right click and view source and there’s my object id.) Once looked down upon in WebForms development…well, other than that one GIANT hidden form field called “ViewState”…the hidden field looks to be making a quiet comeback. &lt;/p&gt;  &lt;p&gt;Basically, if you want the model binder to find all the bits to your object, you have to make it available when the page posts. So, it needs to be in the form somewhere.&lt;/p&gt;  &lt;p&gt;Personally, I don’t see this as a step backwards, but I grew up in the salad days of request/response. Having to provide that info so you can get it back seems normal. The flip side is also true: if you don’t need it, you don’t have to add it.&lt;/p&gt;  &lt;p&gt;The more I work with ASP.Net MVC, the more I fall in love with it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8130811769289984836?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8130811769289984836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8130811769289984836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8130811769289984836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8130811769289984836'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/06/but-webforms-did-that-for-me.html' title='“But WebForms did that FOR me.”'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8943154845481235052</id><published>2009-06-07T09:00:00.000-04:00</published><updated>2009-06-07T09:00:11.861-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='IndyNDA'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>Back to Indy for NDA</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_5SnOEGqkJYw/Siu0XrMEoAI/AAAAAAAABdI/WVhaCusjZCU/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://lh5.ggpht.com/_5SnOEGqkJYw/Siu0YLMJTII/AAAAAAAABdM/ncpjreCj0Ww/image_thumb%5B7%5D.png?imgmax=800" width="204" height="52" /&gt;&lt;/a&gt; A few weeks back, I made my first trip to speak in Indy at the &lt;a href="http://www.indycodecamp.org/"&gt;Indy Code Camp&lt;/a&gt;. I had a great time, met some new people, and got invited back to speak at &lt;a href="http://indynda.org/"&gt;IndyNDA&lt;/a&gt; on ASP.Net MVC. &lt;/p&gt;  &lt;p&gt;So, this Thursday, June 11, if you’re in the greater Indianapolis metropolitan area and want to learn a little MVC, then I hope to see you at IndyNDA.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8943154845481235052?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8943154845481235052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8943154845481235052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8943154845481235052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8943154845481235052'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/06/back-to-indy-for-nda.html' title='Back to Indy for NDA'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh5.ggpht.com/_5SnOEGqkJYw/Siu0YLMJTII/AAAAAAAABdM/ncpjreCj0Ww/s72-c/image_thumb%5B7%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1923321635616252592</id><published>2009-05-17T23:00:00.000-04:00</published><updated>2009-05-17T23:00:09.682-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Findlay Area .Net Users Group'/><title type='text'>Presenting in Findlay this Tuesday</title><content type='html'>&lt;p&gt;I can’t believe I didn’t get this blogged sooner: I’m presenting “Care About Your Craft: Adventures in the Art of Software Development” in Findlay this coming Tuesday, May 19th.&lt;/p&gt;  &lt;p&gt;I’m looking forward to heading up to Findlay for this. I met a few of the &lt;a href="http://fanug.org/default.aspx"&gt;FANUG&lt;/a&gt; guys at Indy Code Camp this weekend, so I’ve got a few hecklers already primed.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1923321635616252592?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1923321635616252592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1923321635616252592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1923321635616252592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1923321635616252592'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/05/presenting-in-findlay-this-tuesday.html' title='Presenting in Findlay this Tuesday'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1259046311386128271</id><published>2009-05-17T20:00:00.000-04:00</published><updated>2009-05-17T20:03:47.182-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='Indy Code Camp'/><title type='text'>Indy Code Camp Recap</title><content type='html'>&lt;p&gt;For the first time in my short speaking career, I stepped over my imaginary Microsoft Line and out to another region…alllll the way to Indianapolis. I’ve driven to Memphis to talk, and stay in my region, but never the whopping 3 1/2 hour drive to Indy to see the good folks over there. After this trip, I think I’ll step over the imaginary line a few more times.&lt;/p&gt;  &lt;p&gt;First, a big thanks to &lt;a href="http://twitter.com/DaveLeininger"&gt;Dave Leininger&lt;/a&gt; for putting on a great event. There were over 200 people at the event, and it seemed all were enjoying themselves. Dave drew speakers from 5 states for the Indy Code Camp, so tip of the hat for getting the word out.&lt;/p&gt;  &lt;p&gt;The hallway sessions are always good, but I missed out on a few running &lt;a href="http://twitter.com/jblankenburg"&gt;Jeff&lt;/a&gt; to the airport and back. (And not finding the airport right away didn’t help.) But even with my limited hallway track time, I still met some new folks and talked shop with some familiar faces. &lt;/p&gt;  &lt;p&gt;I’m already looking forward to my next foray over the imaginary line that is the western border of Ohio. (Maybe a trip east is in order? :) )&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1259046311386128271?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1259046311386128271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1259046311386128271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1259046311386128271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1259046311386128271'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/05/indy-code-camp-recap.html' title='Indy Code Camp Recap'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-52494893995945860</id><published>2009-04-28T08:00:00.000-04:00</published><updated>2009-04-28T08:00:19.088-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Code and Coffee</title><content type='html'>&lt;p&gt;After a great day at &lt;a href="http://kalamazoox.org/"&gt;Kalamazoo X&lt;/a&gt;, and a conversation with &lt;a href="http://mvwood.com/"&gt;Mike Wood&lt;/a&gt; about his Bitslinger idea in Cincy. &lt;a href="http://www.jeffblankenburg.com"&gt;Jeff&lt;/a&gt; and I had a few hours in the truck headed south to work out something for Columbus, so &lt;a href="http://codeandcoffee.info/"&gt;Code and Coffee&lt;/a&gt; was born.&lt;/p&gt;  &lt;p&gt;OK, we hatched the general idea…meet at a coffee shop on Thursday mornings, write code. I came up with the name and bought the domain. :)&lt;/p&gt;  &lt;p&gt;The idea is straight forward: Show up at our coffee shop of choice, bring a laptop, pair up, and have fun writing some code.&lt;/p&gt;  &lt;p&gt;Check out &lt;a href="http://codeandcoffee.info/"&gt;http://codeandcoffee.info/&lt;/a&gt; and join us if you can.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-52494893995945860?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/52494893995945860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=52494893995945860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/52494893995945860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/52494893995945860'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/04/code-and-coffee.html' title='Code and Coffee'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2031727665490793985</id><published>2009-04-18T12:50:00.001-04:00</published><updated>2009-04-18T12:50:59.112-04:00</updated><title type='text'>CODoDN Follow Up</title><content type='html'>&lt;p&gt;First, big thanks to everybody that attended my talk on Kanban at &lt;a href="http://cinnug.org/cododn/"&gt;Central Ohio Day of .Net&lt;/a&gt;. It was a lot of fun talking with everybody, no matter how many times I got side tracked.&lt;/p&gt;  &lt;p&gt;The first request from the talk was a link to &lt;a href="http://leansoftwareengineering.com/"&gt;Corey Ladas&lt;/a&gt; blog. Corey has some great stuff in there, but start with the &lt;a href="http://leansoftwareengineering.com/ksse/scrum-ban/"&gt;scrumban&lt;/a&gt; post.&lt;/p&gt;  &lt;p&gt;Here are &lt;a href="http://www.timwingfield.com/downloads/A%20Little%20Lean%20With%20Kanban.pptx"&gt;my slides&lt;/a&gt;. The slides themselves are just to support the talk, but there are notes on each slide.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2031727665490793985?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2031727665490793985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2031727665490793985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2031727665490793985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2031727665490793985'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/04/cododn-follow-up.html' title='CODoDN Follow Up'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-477851432828940645</id><published>2009-04-10T08:00:00.000-04:00</published><updated>2009-04-10T08:00:19.091-04:00</updated><title type='text'>Two Talks at Indy Code Camp</title><content type='html'>&lt;p&gt;I am honored to have been selected to give not one, but two talks at the upcoming &lt;a href="http://www.indycodecamp.org/"&gt;Indy Code Camp&lt;/a&gt; on May 16th.&lt;/p&gt;  &lt;p&gt;I'll be presenting &lt;em&gt;Care About Your Craft: Adventures in the Art of Software Development&lt;/em&gt;, and &lt;em&gt;A Little Bit of Lean With Kanban&lt;/em&gt;. Both these talks are a lot of fun and get good audience participation, so it should be fun.&lt;/p&gt;  &lt;p&gt;The Indy Code Camp is typically as much code as you can crank out, and they have a max of 3 slides request for most talks. But, I'm in &lt;em&gt;Track Five: Beyond Lines of Code&lt;/em&gt;...which is a good thing, as both talks have way more than 3 slides, and 0 lines of code.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-477851432828940645?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/477851432828940645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=477851432828940645' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/477851432828940645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/477851432828940645'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/04/two-talks-at-indy-code-camp.html' title='Two Talks at Indy Code Camp'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5872313580471395442</id><published>2009-04-09T08:00:00.000-04:00</published><updated>2009-04-09T08:00:21.506-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>What I'd Do Different</title><content type='html'>&lt;p&gt;In my &lt;a href="http://blog.timwingfield.com/2009/04/kanban-lessons-learned.html"&gt;last post&lt;/a&gt; I mentioned a few things I'd like to do differently in my next new dev project where we utilize Kanban. I sat down with our PM, Elizabeth, and we did kind of a mini-project retrospective, and what we could do differently from the Kanban side of things to help things flow along better.&lt;/p&gt;  &lt;p&gt;The first thing we thought would help would be to get better info on the cards, and to treat the cards as Minimal Marketable Features. Across the top of the card we'll put the feature number, name, and its time estimate. In the middle of the card, the description and any task breakout that's needed. Across the bottom we'll stick with the WIP start and end dates, and the cycle time will go between them once it's complete. The back of the card we'll put actual developer and tester times, and then once complete total that and put it on the front of the card under the estimated time.&lt;/p&gt;  &lt;p&gt;This will accomplish a few things for us. First, on the dev side of things, it gets that task card breakout thing out of the way and allows us to track the features across the board as a single entity. Secondly, it gets more project management info clearly on the dev card, which makes it much easier for people not knee deep in the project daily to keep tabs on what's going on.&lt;/p&gt;  &lt;p&gt;The second thing we thought should be implemented the next time around is an extension of the board, to the left. Our board for this one had a bullpen column where features were in holding waiting for the tasks to breakout. From there, they moved into the backlog, and into work in progress.&lt;/p&gt;  &lt;p&gt;Our idea here is to break that bullpen column out into another Kanban section where discovery, design, and estimation takes place. Once that is complete the feature can wait in a &amp;quot;Ready for Dev&amp;quot; status and be pulled into the backlog column on the development Kanban board when the set trigger point is hit.&lt;/p&gt;  &lt;p&gt;Elizabeth and I went back on forth a bit on where the bullpen board would reside. Initially I wanted to see it isolated from the dev team so they could concentrate solely on the dev tasks at hand. However, Elizabeth's persuasive abilities (strawberry cake with white icing may or may not have played a role here) led us to the conclusion that it should all be one board. This allows the developers to be aware of what's in the pipeline coming at them, lest they relax a bit too much at a critical point in the timeline. And, it allows the dev side of the board to pull from the bullpen as features are estimated and ready to go.&lt;/p&gt;  &lt;p&gt;Finally one last thing we thought we'd employ would be different sized cards for different sized features. If we can't get all features to breakout into a similar estimate range, which is a very real possibility, then maybe get two or three ranges and denote them with different sized cards on the board. This would allow for different cycles to be tracked based on feature size, and a quick look at the board would tell you what type of features are moving through the system at any given time.&lt;/p&gt;  &lt;p&gt;I think these changes to our approach will help the next new dev &lt;a href="http://lh6.ggpht.com/_5SnOEGqkJYw/Sdq_yOBDMGI/AAAAAAAABZU/96kNYcKV0cA/s1600-h/PIC-0300%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="PIC-0300" src="http://lh5.ggpht.com/_5SnOEGqkJYw/Sdq_yW25M3I/AAAAAAAABZY/eGUW0USb0h4/PIC-0300_thumb%5B1%5D.jpg?imgmax=800" width="244" align="right" border="0" /&gt;&lt;/a&gt; project where we employ Kanban. We used it successfully before, but I think this will help get more features into done with less friction for the whole team. Which means cards will get put in the envelope above this lovely lady's picture in a shorter cycle. (Whiteboard drawing courtesy of &lt;a href="http://danshultz.blogspot.com/"&gt;Dan Shultz&lt;/a&gt;.)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5872313580471395442?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5872313580471395442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5872313580471395442' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5872313580471395442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5872313580471395442'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/04/what-i-do-different.html' title='What I&amp;#39;d Do Different'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh5.ggpht.com/_5SnOEGqkJYw/Sdq_yW25M3I/AAAAAAAABZY/eGUW0USb0h4/s72-c/PIC-0300_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5687503417457496313</id><published>2009-04-06T22:13:00.001-04:00</published><updated>2009-04-06T22:13:34.330-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><title type='text'>Kanban Lessons Learned</title><content type='html'>&lt;p&gt;After seeing success with Kanban in a production support environment (&lt;a href="http://blog.timwingfield.com/2008/11/kanban-o-rama-part-1.html"&gt;part 1&lt;/a&gt;, &lt;a href="http://blog.timwingfield.com/2008/11/kanban-o-rama-part-2.html"&gt;part 2&lt;/a&gt;), we decided to give it a try in a new development situation. This project was a mix of new development and working with an inherited code base to implement some existing features differently. &lt;/p&gt;  &lt;p&gt;Because of this situation, we ended up with a mixed bag of features. &lt;a href="http://lh6.ggpht.com/_5SnOEGqkJYw/Sdq2y2RIUZI/AAAAAAAABZM/n3eVSWTdIww/s1600-h/PIC-0301%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="PIC-0301" src="http://lh5.ggpht.com/_5SnOEGqkJYw/Sdq2zb75KNI/AAAAAAAABZQ/RIeracpDFSs/PIC-0301_thumb%5B1%5D.jpg?imgmax=800" width="244" align="right" border="0" /&gt;&lt;/a&gt;At the onset, we decided to break these features out into tasks, and we would track both across our Kanban board, as shown here with a snapshot of our Work In Progress section. &lt;/p&gt;  &lt;p&gt;Features were broken into tasks and grouped together in the backlog. Once a feature went into WIP, it's tasks moved below into the Task Breakout section and were worked there. Once all tasks were completed, they were once again compiled back into a feature and went into test as a whole.&lt;/p&gt;  &lt;p&gt;What we tried to accomplish here was to keep the concept of a MMF while still breaking the work into smaller, more manageable units. What ended up happening was that features themselves became secondary to almost full task development, however we were tracking features through the system for our cycle time. Early, heavy task features that focused more on the business model skewed the cycle time higher, and later UI tweaking features sent it lower. As such, our cycle time diminished quickly as the deadline drew near...a good thing, but I don't think it was totally attributable to the team's momentum.&lt;/p&gt;  &lt;p&gt;I think we failed here in poor estimation of what lie in front of us when we started. A good bit of this is the situation we were in at the onset where we were under pressure to start getting things moving right away, and we didn't give much credence to estimating later features very well. That wasn't really a Kanban issue, and we should have known better. The excuse is we had very little time to ramp up on the discovery side of things when we got the project, but it would just be an excuse...we should have known better.&lt;/p&gt;  &lt;p&gt;One final area where we had some issues was in reporting where exactly we stood in features completed. We were fairly visible on this project, and had a lot of interest in our success by the due date. (OK, what project doesn't?) While you could look at the board and see what was being worked at any given point, due to the lack of good feature estimation up front, it was hard to see where we were in the big picture. In the latter half of the project we stole ourselves a project manager, and she did a bang up job of getting that information worked out, but she did struggle in figuring it out. Again, I think she had trouble due to the lack of good estimation up front.&lt;/p&gt;  &lt;p&gt;It wasn't all pain and suffering as we moved our cards across the board.&lt;/p&gt;  &lt;p&gt;One good thing we got out of the board was it was easily changed to fit our constantly changing team size and make up. We started out as three developers, and ended as four developers - two different than the original three, one PM, and one QA person. Being able to walk up to the board and change the queue limits on feature WIP, task development, and features in test made things flow quite smoothly as the project moved along. It did a good job of identifying a few roadblocks and getting them out of the way, as well.&lt;/p&gt;  &lt;p&gt;As noted earlier, our cycle time did drop as we neared the due date. Part of that was due to the smaller features coming through later, but there was a good bit of momentum on the dev team, too. Morale stayed fairly good as we kept moving things into the done envelope at the right side of the board.&lt;/p&gt;  &lt;p&gt;I still think we were successful with Kanban in this situation, but clearly I think we need some refinements around how we did it on this project. I'll save those ideas for my next post.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5687503417457496313?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5687503417457496313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5687503417457496313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5687503417457496313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5687503417457496313'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/04/kanban-lessons-learned.html' title='Kanban Lessons Learned'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh5.ggpht.com/_5SnOEGqkJYw/Sdq2zb75KNI/AAAAAAAABZQ/RIeracpDFSs/s72-c/PIC-0301_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-6764260423310012936</id><published>2009-03-24T14:22:00.000-04:00</published><updated>2009-03-24T14:30:52.490-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='development practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Pragmatic Programmer'/><title type='text'>"Houston here. We're looking for somebody to blame for your problem, 13."</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;b&gt; Fix the Problem, Not the Blame &lt;/b&gt;        &lt;br /&gt;It doesn't really matter whether the bug is your fault or someone else's&amp;#8212;it is still your problem, and it still needs to be fixed.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;--The Pragmatic Programmer&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I highly doubt that was the response to Jim Lovell after the line, &amp;quot;Houston, we have a problem.&amp;quot; However, in our world of software development it still seems to be the first reaction to any issue that comes up.&lt;/p&gt;  &lt;p&gt;I know in projects past, I've been a huge offender of looking for, &amp;quot;It's not MY fault,&amp;quot; rather than fixing &lt;a href="http://lh3.ggpht.com/_5SnOEGqkJYw/SckmknkbMoI/AAAAAAAABWE/kzGy6Onc22Q/s1600-h/blame%5B10%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="blame" src="http://lh3.ggpht.com/_5SnOEGqkJYw/SckmlkbTKVI/AAAAAAAABWI/NIpQUNHpMqM/blame_thumb%5B6%5D.jpg?imgmax=800" width="194" align="right" border="0" /&gt;&lt;/a&gt;the problem at hand. &lt;a href="http://toddkaufman.blogspot.com/"&gt;Todd&lt;/a&gt; even nicknamed me Blameosaurus on one project because I got so good at looking for the blame. So, I'm not exempt from my own post here.&lt;/p&gt;  &lt;p&gt;I've been a consultant for one company or another for over ten years now, and we're constantly thrown into burning buildings to get something working. There are a plethora of issues on day 1, and all too often those of us on the team spend too much time bitching about the issues and not enough time rolling up our sleeves to get things squared away. So, day 2 rolls around and we're in the same boat, and the same problem still exists.&lt;/p&gt;  &lt;p&gt;That said, sometimes there is a right time to track somebody down that created a problem. Don't do it as a way to shame them, but rather for more clarification. Who knows what the situation as like at the time they made the error, and maybe it's a good time to help somebody learn something new.&lt;/p&gt;  &lt;p&gt;I feel I'm still an offender of whipping out the blame thrower a bit too often, but I'm making a conscious effort to quit and move on with the solution.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-6764260423310012936?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/6764260423310012936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=6764260423310012936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6764260423310012936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6764260423310012936'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/03/here-we-looking-for-somebody-to-blame.html' title='&amp;quot;Houston here. We&amp;#39;re looking for somebody to blame for your problem, 13.&amp;quot;'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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://lh3.ggpht.com/_5SnOEGqkJYw/SckmlkbTKVI/AAAAAAAABWI/NIpQUNHpMqM/s72-c/blame_thumb%5B6%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4184012250120810275</id><published>2009-03-17T19:52:00.002-04:00</published><updated>2009-03-17T20:18:30.110-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Day of .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Kalamazoo X'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='CODODN'/><title type='text'>Some April Kanban Talks</title><content type='html'>I'm happy to have been selected to two conferences in the region to share an hour or so of Kanban, and my experiences with it.&lt;br /&gt;&lt;br /&gt;The first will be at &lt;a href="http://cinnug.org/cododn/"&gt;Central Ohio Day of .Net&lt;/a&gt; on April 18th in Wilmington. This is a great little conference that combines the forces of the dev communities of Dayton, Cincy, and Columbus for a day of geeking out. In addition to the great sessions they have lined up, there will also be Open Spaces. If you've got time on a Saturday in the spring, this is a great gathering at a great price...free!&lt;br /&gt;&lt;br /&gt;The following Saturday, April 25th, I'm going to trek north and present at the Kalamazoo X conference. This is the first year for this conference, and it looks really interesting. It's focus is on the non-tech side of development, so there will be lots of dev process, design, and user interaction type talks. All the stuff we need to know without opening up our favorite IDE. As an added bonus, &lt;a href="http://www.bellsbeer.com/"&gt;this place&lt;/a&gt; is in Kalamazoo for a required stop.&lt;br /&gt;&lt;br /&gt;That will keep a couple Saturday afternoons busy in April for me. Now, if a certain local hockey team can keep the Saturday evenings busy...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4184012250120810275?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4184012250120810275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4184012250120810275' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4184012250120810275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4184012250120810275'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/03/some-april-kanban-talks.html' title='Some April Kanban Talks'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1503848292003001891</id><published>2009-03-06T20:47:00.003-05:00</published><updated>2009-03-06T21:03:24.046-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='COALMG'/><title type='text'>COALMG Kanban Talk Follow-up</title><content type='html'>I would like to thank everybody that attended my Kanban talk at &lt;a href="http://www.coalmg.org/"&gt;COALMG&lt;/a&gt; on March 5th. There were some great questions, a good discussion, and judging by the tweets on Twitter afterward, it got some wheels turning. I'm glad the talk got some of you thinking about things you can look into.&lt;br /&gt;&lt;br /&gt;As promised to &lt;a href="http://www.jeffreyhunsaker.com/"&gt;Jeff&lt;/a&gt;, here are my slides: &lt;a href="http://www.timwingfield.com/downloads/A%20Little%20Lean%20With%20Kanban.pptx"&gt;A Little Lean With Kanban&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The disclaimer on the slides: They meant to support the presentation (I have totally  bought into the &lt;a href="http://www.amazon.com/gp/product/0321525655/103-6148611-3957463?ie=UTF8&amp;amp;tag=garrreynoldsc-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0321525655"&gt;Presentation Zen&lt;/a&gt; approach to presenting), so on their own they don't say much. However, my notes to each slide are there, and that should provide some value. Also, even though I used pptPlex for the presentation, if you don't have that they'll still work fine in Power Point.&lt;br /&gt;&lt;br /&gt;Also, I love feedback. That was the first time I gave that presentation in that form, and welcome any suggestions you may have. I already got a few from &lt;a href="http://govorin.blogspot.com/"&gt;Comrade&lt;/a&gt;, &lt;a href="http://jamescbender.com/bendersblog/Default.aspx"&gt;James&lt;/a&gt;, and &lt;a href="http://www.pandamonial.com/"&gt;Amanda&lt;/a&gt; over post-talk beers that will be folded in to the next iteration.&lt;br /&gt;&lt;br /&gt;And all you guys named Jeff that bailed on the post-talk beers...for shame!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1503848292003001891?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1503848292003001891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1503848292003001891' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1503848292003001891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1503848292003001891'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/03/coalmg-kanban-talk-follow-up.html' title='COALMG Kanban Talk Follow-up'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5372757213103055748</id><published>2009-03-01T15:25:00.004-05:00</published><updated>2009-03-01T16:03:58.406-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pptPlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='presenting'/><title type='text'>A Weekend With pptPlex</title><content type='html'>Some time last fall I believe, &lt;a href="http://jeffblankenburg.com/default.aspx"&gt;Jeff&lt;/a&gt; introduced me to &lt;a href="http://www.officelabs.com/projects/pptPlex/Pages/default.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;pptPlex&lt;/span&gt;&lt;/a&gt; from &lt;a href="http://www.officelabs.com/Pages/Default.aspx"&gt;Microsoft Office Labs&lt;/a&gt;. It does some pretty neat tricks with your slide deck. To me it appeared to be &lt;a href="http://fileforum.betanews.com/detail/Microsoft-Deep-Zoom-Composer/1217877118/1"&gt;Deep Zoom&lt;/a&gt; for Power Point. (And let's be honest, anything to spice up Power Point is a good thing.)&lt;br /&gt;&lt;br /&gt;So, I've got a new presentation to put together, and thought now would be a good time to give &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;pptPlex&lt;/span&gt; a try. I wasn't disappointed, it does make moving through your presentation more fun. To get it to work there are a couple special slide types it uses, and a different way to launch the deck, and that's about it.&lt;br /&gt;&lt;br /&gt;The first special slide is the section divider slide. It has a title and some grayed out text on it. You drag it into the deck at the point you want a section to start, add the title, and done. That section will exist until &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;pptPlex&lt;/span&gt; finds another section divider slide. This groups your slides by however you'd like, and applies the title from the section divider slide to that group.&lt;br /&gt;&lt;br /&gt;The second special slide type is a canvas slide. This slide ends up being the canvas for the whole presentation. There are a few &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;pre-made&lt;/span&gt; ones you can use, and also two custom options. Basically, the layout you choose determines how your slide groups are arranged on the canvas. I ended up using the advanced custom option, which wasn't too hard to lay out. Lots of typical dragging and dropping to get the layout like you want it. Took maybe 10 minutes to get my six sections all set up like I want.&lt;br /&gt;&lt;br /&gt;Both the section and canvas slides appear on the new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;pptPlex&lt;/span&gt; portion of the ribbon. Also on that menu are the new options for launch that will start your presentation up in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;pptPlex&lt;/span&gt; mode rather than in traditional Power Point mode. The first of "From Overview" is the one that will start your presentation from the canvas, and is the one I think most people are going to use.&lt;br /&gt;&lt;br /&gt;Now for the downsides I ran into...&lt;br /&gt;&lt;br /&gt;First issue I came up with was that it didn't work with my presenter mouse. I've got the Microsoft Wireless Notebook Presenter Mouse 8000, and no dice with it doing anything in presenter mode. A little searching on the web turns up that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;pptPlex&lt;/span&gt; doesn't yet support that mouse. HOWEVER! It will support use with a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Wii&lt;/span&gt; remote and an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;xbox&lt;/span&gt; controller. +1 to each for cool factor, but I'm trying to be practical here and still give a presentation.&lt;br /&gt;&lt;br /&gt;My solution to this ended up being mapping the two side buttons on my mouse to the left and right keys on the keyboard. It's not the ideal solution, but it will cover 90% of what I'll need to handle during a presentation. There will be a couple of gotchas with this, but it should get the job done.&lt;br /&gt;&lt;br /&gt;The second issue I came across was that once you've published your slides to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;pptPlex&lt;/span&gt; output, you lose all your animations. I don't use animations a lot, but a couple places they would have come in very handy for effect. However, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;pptPlex&lt;/span&gt; FAQ lays out that they just didn't have time to get that in for this release. (Yo, MS, add one more guy to the team and task him with mouse integration and animation!)&lt;br /&gt;&lt;br /&gt;Overall, I'm digging the product. I think it'll help with a lot of my presentations, and I'll probably refactor any of my old ones to use it. The cool factor it brings makes the above two hurdles tolerable.&lt;br /&gt;&lt;br /&gt;Besides, a sensor bar and a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;bluetooth&lt;/span&gt; card form my laptop will have me running a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Wii&lt;/span&gt; controller in no time!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5372757213103055748?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5372757213103055748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5372757213103055748' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5372757213103055748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5372757213103055748'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/03/weekend-with-pptplex.html' title='A Weekend With pptPlex'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8923180867434013509</id><published>2009-02-12T08:00:00.001-05:00</published><updated>2009-02-12T08:00:01.180-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Goals'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Goals for 2009</title><content type='html'>I got &lt;a href="http://jeffblankenburg.com/2009/01/goals-for-2009.aspx"&gt;tagged by Jeffery&lt;/a&gt; back in January for this, and since there's nothing I should do today that I can't put off until tomorrow...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Professional Goals&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Speak 12 to 15 times:&lt;/span&gt; I spoke 12 times last year, covered three different states, and had a heck of a time. Why no big increase here? Because realistically speaking (pardon the pun), that was plenty with everything else that goes on with job and family.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Present "Care About Your Craft" at least 5 times:&lt;/span&gt; I gave this one a couple times last year, and would like to give it more. It's a great talk that covers a lot of things developers can do outside of their syntax of choice to be better developers.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Upgrade the MVC talk and samples:&lt;/span&gt; When I wrote my goals out at the beginning of the year, I put this one on here because I'm a little behind on my MVC. But this week, I started in on a project that was going to leverage it, and found out just how far behind I am. So, I'm already underway on achieving this goal.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Create a new presentation:&lt;/span&gt; This one will be taken care of thanks to being invited to speak on Kanban at COALMG in March. (I've procrastinated this post long enough that one goal is reached! w00t!)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Write a sample app in Ruby:&lt;/span&gt; I need to work on my Ruby some more.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Contribute to an open source project:&lt;/span&gt; I need to do this, as well. Need to find the right one to contribute to, though. Maybe combine this with goal #5.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Get the blog better organized:&lt;/span&gt; Had this one on the list for a while, but I keep putting it off. Should I install Grafitti? Should I just run with Blogger? I need a new design no matter what engine I use. Thankfully, I've got a few friends who are willing to help out on all points, should be fun.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. Write 35 blog posts:&lt;/span&gt; 3 posts a month should be doable. Though it's already February and I'm behind my pace.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9. Read 12 books:&lt;/span&gt; A book a month...like above, I'm aleady behind. On my list, though, are to re-read the Pragmatic Programmer, finish Implementing Lean Software, and to get through Uncle Bob Martin's Clean Code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Personal Goals&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Fix my office to be more usable: &lt;/span&gt;Wendy and I don't have the best layout to our home office, and we both need a little space of our own in there.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Get better lighting in our basement:&lt;/span&gt; We have two choices for lights during movie watching - harsh flourescent lighting, or none at all.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Budget our vacations better:&lt;/span&gt; We've got two trips planned already, and we tend to say, "Screw it! We're on vacation!" when we go to buy something while we're out seeing the world. (Usually Disney World.)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Clean up our finances:&lt;/span&gt; I'm waiting for a year when this ISN'T on my list of goals.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Lose weight:&lt;/span&gt; Like #4, I could use a year without this one on the list. Thankfully I'm starting '09 lighter than I was in '08, but could still drop a few more pounds.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8923180867434013509?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8923180867434013509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8923180867434013509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8923180867434013509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8923180867434013509'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/02/goals-for-2009.html' title='Goals for 2009'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8376805336917802231</id><published>2009-02-10T08:00:00.001-05:00</published><updated>2009-02-10T08:23:16.426-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><title type='text'>Speaking at COALMG</title><content type='html'>I have been selected to present on &lt;a href="http://www.coalmg.org/2009/02/march-meeting-announcement-little-bit.html"&gt;Kanban to the Central Ohio ALM Group&lt;/a&gt; on March 5th. This will kick off my 2009 speaking tour, and I get to open it with a new talk on Kanban. I'm really looking forward to this talk because I've seen the advantages of Kanban first hand.&lt;br /&gt;&lt;br /&gt;So, if you want to learn a little about Kanban, what it is, and how to get started with it...or if you just want to heckle me...drop by the Microsoft offices on Polaris Pkwy March 5th.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8376805336917802231?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8376805336917802231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8376805336917802231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8376805336917802231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8376805336917802231'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/02/speaking-at-coalmg.html' title='Speaking at COALMG'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-9199488793734437610</id><published>2009-01-11T20:49:00.003-05:00</published><updated>2009-01-11T22:21:34.435-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeMash'/><title type='text'>Codemash 2009 thoughts</title><content type='html'>Another &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Codemash&lt;/span&gt; has come and gone, which means there are more than a few recap posts out there, so I'll add mine to the pile.&lt;br /&gt;&lt;br /&gt;The biggest take away for me this year was the sheer number of people I got to talk to, shake hands with, and bend an elbow with. In past years, that group has been basically limited to the other Quick folks that were up there or a small circle of people outside of Quick that I knew. This year, though, that number was much larger. I can easily attribute this to two things.&lt;br /&gt;&lt;br /&gt;First, I got out and about in the community more in '08 than in past years, including a few speaking gigs around the region. I got to hang out for extended times with new colleagues from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Cincy&lt;/span&gt; to Grand Rapids and a lot of places in between. That made for a lot of familiar faces while strolling around Kalahari.&lt;br /&gt;&lt;br /&gt;Second, and this is probably the larger of the two: Twitter. I started in on Twitter last year after &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Codemash&lt;/span&gt; and before I headed to Mix, and it showed at this year's edition of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Codemash&lt;/span&gt;. The number of people I could talk with in person because we'd had a few conversations on Twitter made starting those conversations much easier.&lt;br /&gt;&lt;br /&gt;For the content itself, I was really impressed with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Pre&lt;/span&gt;-Compiler. This was the first year for the extra day, and I wish they'd have spread that material over the whole conference. I found myself wanting to be in three places at once on Wednesday. I ended up with a morning of Ruby with Joe and Jim, and an afternoon of Lean and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Kanban&lt;/span&gt; with Dave &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Laribee&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;For the full conference, I was all over the place. Some open spaces, some sessions, some hallway conversation, some recovery time that we don't need to discuss here, etc, etc. I took in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Venkat's&lt;/span&gt; second session (skipped the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Scala&lt;/span&gt; one), made sure I saw Mary &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Poppendieck&lt;/span&gt;, saw &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Laribee's&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;DDD&lt;/span&gt; talk, and a few others.&lt;br /&gt;&lt;br /&gt;Open Spaces I was really looking forward to on the heels of all the news from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;DevLink&lt;/span&gt; and what Alan Stevens did down there. I got to two, one on pair programming and one on branding yourself. I submitted one, but thanks to the snow and the room changing a couple times my turnout was five other people from Quick. We decided we could cover this at another meeting and headed back out into the sessions. So, overall I was a bit let down with the Open Spaces, but I think good content in the sessions combined with good content in the Open Spaces makes for some tough choices. Alan runs a slick Open Space, though. The ceremony is kind of cool. [Insert essence v. ceremony joke here]&lt;br /&gt;&lt;br /&gt;My mini-speaking part in the show was when Jon Kruger, Steve Harman, and myself gave some first hand experiences with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Kanban&lt;/span&gt; in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;QSI&lt;/span&gt; vendor session. We ended up with a decent turnout and went 10 minutes over our allotted time taking more questions. I thought it turned out really well.&lt;br /&gt;&lt;br /&gt;So, another &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Codemash&lt;/span&gt; behind me, and another kick in the butt to start the new year. Top of the list, clean up the blog. In the branding open space I learned that using the default theme from .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;txt&lt;/span&gt; turns people off...thank goodness I use the default blogger theme, instead. I'm going to get Graffiti installed and get a better look for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-9199488793734437610?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/9199488793734437610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=9199488793734437610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/9199488793734437610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/9199488793734437610'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2009/01/codemash-2009-thoughts.html' title='Codemash 2009 thoughts'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-992040515804513895</id><published>2008-11-19T19:50:00.004-05:00</published><updated>2008-11-19T20:52:55.703-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanaban'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Kanban-o-rama - Part 2</title><content type='html'>In &lt;a href="http://blog.timwingfield.com/2008/11/kanban-o-rama-part-1.html"&gt;part one&lt;/a&gt; I laid out the why and the how of our Kanban set up. In this part, a nice cell phone picture and some what it's done for us.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Board&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.timwingfield.com/uploaded_images/PIC-0239-775678.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://blog.timwingfield.com/uploaded_images/PIC-0239-775663.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here's our "borrowed" whiteboard. In stroke of genius from Mark, we drew the dividing lines with a Sharpie which makes them semi-permanent. One post-it note equals one work item, so for every post-it on the board there's a corresponding entry in our SharePoint work item list. Yellow post-its are regular priority items, purple tickets are high priority. (The stray colors are just strays...green == yellow, and fucia == purple.)&lt;br /&gt;&lt;br /&gt;To the right of the names is where we start working with the tickets in the backlog column. It's sized to fit three tickets to help enforce our max three rule for that slot. Below that is the Blocked area, which isn't sized to scale of their respective max allowable tickets.&lt;br /&gt;&lt;br /&gt;Moving to the right across the board is each developer's Work in Progress slot. Again, sized to enforce the max allowable items. This is where carried over our dotting strategy from the previous set-up: Yellow is domain understood, green is design understood and in dev, red is dev complete, blue is in production. (Though following this photo we have decided that blue will mean passed testing in staging, ready for production.)&lt;br /&gt;&lt;br /&gt;At the bottom of the Work in Progress column is our Emergency slot. This is where our "drop everything" items end up. To our surprise, it hasn't been utilized as much as we thought it would.&lt;br /&gt;&lt;br /&gt;To the right of the Work in Progress slot are our Ready for Test and Tested slots. These are the first real community slots on the board, and the honor system is in place for getting things tested. So far, so good on that.&lt;br /&gt;&lt;br /&gt;The far right of the board is open space for notes, tracking what's gone into production, and blimp drawings.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What its done for us&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So far the big win for us has been gaining focus on one item at a time. We still have some growing to do in this area, as the inevitable "How long would it take to do X?" questions come up daily, and you find yourself looking at code you weren't aware existed when you started the day. So, we're trying to push harder to keep the distractions down, and keep the focus switching lessened.&lt;br /&gt;&lt;br /&gt;Another thing that moving to this system has allowed is that it's much eaiser to report up the chain of command what each person is working on. It's much easier to manage expectations on when something will be finished and when another item will be started. Also, when the, "Item Q has to be done right away," request comes in I can say which items are being worked and ask which one should be stopped to pick up Item Q. Now that I can better articulate what each guy is doing, these requests are more often becoming, "Oh, this can wait until one of those is finished."&lt;br /&gt;&lt;br /&gt;We've been using this for about four weeks now, and have had a few discussions around it. The early returns from the dev team is that they like it quite a bit. The numbers reflect that it's working, too, as we've closed more tickets over the last four weeks than we had in any four week period since mid-July.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-992040515804513895?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/992040515804513895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=992040515804513895' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/992040515804513895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/992040515804513895'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/11/kanban-o-rama-part-2.html' title='Kanban-o-rama - Part 2'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4298341848405663940</id><published>2008-11-16T19:20:00.007-05:00</published><updated>2010-03-28T22:00:07.368-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kanban'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Kanban-o-rama - Part 1</title><content type='html'>Our current project is much more of the maintenance variety than of the new development type. Originally we tried to apply our standard scrum-ish approach to it - feature cards, load sheets, 2 week iterations, etc. However, it became clear that working maintenance tickets wasn't going to fit that model. Our load sheets meant nothing after a while because they were just getting overloaded with work items that were un-estimated, but needed assigned to get worked. It also became increasingly difficult to track the status of an item. Due to the lack of information about some tickets, any developer would show multiple tickets being "worked" at any given time. Keeping track of that on prod push day wasn't very easy, either.&lt;br /&gt;&lt;br /&gt;Enter the Kanban idea.&lt;br /&gt;&lt;br /&gt;The idea was brought up after a Friday retrospective by fellow QSI guy, &lt;a href="http://govorin.blogspot.com/"&gt;Alexei&lt;/a&gt;. Comrade, myself, and our PM had about an hour discussion around the idea, and the following Monday put it into action. I did some information gathering over the weekend, hit up a couple other Quick guys for some more information, "borrowed" a white board from an office in the building, and away we went.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;"&gt;Our setup&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our setup is pretty simple. You can have 1 item as "Work in Progress" at any one time. You can't work more than one item at a time. Focus on that item until complete, then pull an item from your backlog.&lt;br /&gt;&lt;br /&gt;We set up the backlog not as a community backlog, but each developer has his own backlog. I know this isn't ideal, but it gives us one extra layer of control on the flow of which tickets go to which guy to fix them. (The system we're working on is pretty broad, and though I'd love to practice collective ownership of the whole thing across the whole team, that's just not practical.) The backlog can max out at 3 items, and the item you choose is your choice, unless there's a high priority item in your backlog. (Denoted by a purple ticket rather than the normal yellow.)&lt;br /&gt;&lt;br /&gt;If your item becomes blocked, we have two blocked areas available to move the ticket into. The first is "Blocked, need more information." Tickets moved here are assigned back to the PM who will follow up with the user to get the information needed to complete the ticket.&lt;br /&gt;&lt;br /&gt;The second blocked area is "Blocked, Internal" which is a horrible name...the creative juices just weren't flowing that day. Typically tickets get moved here when they're dependant on another work item to be completed prior to them being worked.&lt;br /&gt;&lt;br /&gt;Our max tickets allowable in the Need More Info slot is 8, and the internal is 2. If we go over those counts, we stop and figure out what we need to do to move those tickets along.&lt;br /&gt;&lt;br /&gt;Once a ticket is no longer blocked, it goes back into the developer's backlog that originally had it. If there's not room in the backlog when it comes unblocked, it will wait in the "Ready for Dev" queue that is maintained in SharePoint. All the tickets are tracked through SharePoint as well as on the board, but prior to hitting the board they're managed only in SharePoint.&lt;br /&gt;&lt;br /&gt;Once a work item is completed, it moves to "Ready to Test." The rules of testing are you test a ticket you didn't complete, as we don't have dedicated QA resources available. When you complete an item and there's one available for test, take the time to test it before starting your next item. So far, using the honor system has worked well, though we do still have some testing to catch up on before we do our weekly prod push. (We've picked Tuesday, so there's some testing going on Monday afternoon.)&lt;br /&gt;&lt;br /&gt;Following testing, the ticket moves to "Tested." There it sits until it's rolled out to production.&lt;br /&gt;&lt;br /&gt;That's the standard flow we've been using, but we did open up an "Emergency" option. So far, we've only had three emergency items drop into that slot. When that happens, the developer chosen to work it stops the item he's currently working and switches gears to the emergency until it's complete.&lt;br /&gt;&lt;br /&gt;I'll end part 1 here. Up next I'll show off some photos of our board and add some more details as to how its been working out for us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4298341848405663940?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4298341848405663940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4298341848405663940' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4298341848405663940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4298341848405663940'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/11/kanban-o-rama-part-1.html' title='Kanban-o-rama - Part 1'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4345131704608290845</id><published>2008-08-17T20:31:00.005-04:00</published><updated>2008-08-30T14:24:06.086-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='eRubyCon'/><title type='text'>eRubyCon takeaways</title><content type='html'>I had the pleasure of attending &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;eRubyCon&lt;/span&gt; here in Columbus Aug. 15-17. This is the second year for the event organized by &lt;a href="http://www.objo.com/"&gt;Joe O'Brien&lt;/a&gt;, and the first year I got to attend. &lt;a href="http://www.joshholmes.com/"&gt;Josh Holmes&lt;/a&gt; has put up great &lt;a href="http://www.joshholmes.com/2008/08/17/eRubyCon2008Day2.aspx"&gt;reviews&lt;/a&gt; of the sessions up on his blog.&lt;br /&gt;&lt;br /&gt;Since I don't really want to repeat Josh, what were my takeaways from the event?&lt;br /&gt;&lt;br /&gt;First, that I still need to get more involved in Ruby. This is just a cool language that allows you to do so much as a developer. The allure of &lt;a href="http://rspec.info/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;RSpec&lt;/span&gt;&lt;/a&gt; aside, it just reads well and makes sense. So, a couple things came to mind as near term goals. First, I need to start with some simple scripts for everyday tasks, and write them in Ruby. Second, I'm going to try to wire up &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;IronRuby&lt;/span&gt; to test some of my C# hobby code. Doubt I want to drag that one into the office just yet. Those two items should get the ball rolling for me.&lt;br /&gt;&lt;br /&gt;Second, and I think the larger takeaway for me, was that the .Net community was almost totally missing. I noticed this in two areas, there were very few .Net developers in &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;attendance&lt;/span&gt;, and most of the topics only recognized that Ruby people were converting from Java. There was a lot of Java venom being tossed around for that reason, but the opposite of love isn't necessarily hate. It's apathy. The .Netters took it on the chin in the apathy department.&lt;br /&gt;&lt;br /&gt;What can we in the .Net space do about this? First and foremost, get out there and see what else is going on. There is a lot of software not written on a Microsoft platform, what can you learn from them? I'm not saying learn something top to bottom, but get ideas from others.  In the end, language doesn't matter as we're all trying to solve people problems, and the better armed you are to solve those problems, the better off we are as a whole.&lt;br /&gt;&lt;br /&gt;Before I lay all this at the feet of the .Net community, those outside the Microsoft environment have a little responsibility here, as well. When &lt;a href="http://blog.prokrams.com/"&gt;Michael &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Letterle&lt;/span&gt;&lt;/a&gt; and Josh Holmes were up to give the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;IronRuby&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Silverlight&lt;/span&gt; double header the room cleared a good bit. For the same reason the .Net folks should look outside their comfort zone, maybe others should take the chance to look inside the big blue monster to see what's happening.&lt;br /&gt;&lt;br /&gt;I'm well aware of time constraints and family and "I'm already learning seven other things!" and a reading list that's growing faster than it's shrinking. But, instead of hitting your fourth Day of .Net in a row, take in a Ruby or Python conference. Or, if you're already at a Ruby conference, stick around and see what &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;IronRuby&lt;/span&gt; is bringing to the Microsoft and Ruby communities.&lt;br /&gt;&lt;br /&gt;One of my favorite terms of late is Jim &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Holmes's&lt;/span&gt; "&lt;a href="http://frazzleddad.blogspot.com/2008/05/value-of-specializing-generalists.html"&gt;Specializing Generalist&lt;/a&gt;." Looking inside or outside the Microsoft space, as the case may be, will add to the Generalist side of the equation. And, who knows, may change what you decide to be a Specialist in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4345131704608290845?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4345131704608290845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4345131704608290845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4345131704608290845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4345131704608290845'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/08/erubycon-takeaways.html' title='eRubyCon takeaways'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7635038938491998511</id><published>2008-07-09T23:57:00.004-04:00</published><updated>2008-07-10T01:08:21.776-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>TDD Starting to Sink In</title><content type='html'>Back in late March, I &lt;a href="http://blog.timwingfield.com/2008/03/tdd-growing-pains.html"&gt;blogged about my issues getting going with TDD&lt;/a&gt;. At the time I was nearing the end of a project where I had attempted some unit testing, but had not done it up front. I was looking forward to a clean slate to get some more work on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;TDDing&lt;/span&gt; up my code.&lt;br /&gt;&lt;br /&gt;That opportunity somewhat presented itself, though I was moving on to an established team, which presents its own challenges. However, this team, or a good portion of it, was practicing TDD. So, plenty of example code out there. Not only that, I ended up sitting about 3 feet from world renowned TDD zealot, &lt;a href="http://stevenharman.net/"&gt;Steve Harman&lt;/a&gt;. Steve is a great teacher, and only yelled at me a few times. (And I only cried the one time...)&lt;br /&gt;&lt;br /&gt;That helped on the professional side of things, but even in my own hobby coding I started writing more and more tests before the code. I've been presenting on ASP.Net &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MVC&lt;/span&gt; at a few places recently, and the sample code I use there was written all TDD style. (And is presented test first.) Well, almost all of it...somebody wrote his repository wrong, and the updates didn't work so well. I have some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;refactoring&lt;/span&gt; to do.&lt;br /&gt;&lt;br /&gt;So, here I am 3 months later, where do I stand on the points I brought up back in March?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;1. I tend to wrestle a lot with when to layout some of the framework and when to just breakdown and write the tests.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This one became pretty easy when Steve introduced some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;BDD&lt;/span&gt; (&lt;a href="http://en.wikipedia.org/wiki/Behavior_driven_development"&gt;Behavior Driven Design/Development&lt;/a&gt;) style grammar to our testing. This one shift in thinking opened up my ability to get the requirements into unit tests, and get them green quicker. In a nutshell, thinking along the lines of, "When X condition is present, then Y should happen," and naming the classes and test methods with that type of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;grammar&lt;/span&gt; took me well beyond wondering when to write the tests.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;2. A recent project found our team working with a pile of generated tests.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Generated tests are a thing of the past. This is a non-issue at this point.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;3. When to mock?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Again, a healthy dose of Steve helped here a lot. Also, &lt;a href="http://www.ayende.com/projects/rhino-mocks/downloads.aspx"&gt;Rhino Mocks&lt;/a&gt; 3.5 was &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;released&lt;/span&gt; with the &lt;a href="http://ayende.com/Blog/archive/2008/05/16/Rhino-Mocks--Arrange-Act-Assert-Syntax.aspx"&gt;Arrange, Act, Assert syntax&lt;/a&gt;, and that cleared up a lot in the mocking area. No more record and playback blocks, and lots of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;lambdas&lt;/span&gt; to stub out that which you want doing the dirty work.&lt;br /&gt;&lt;br /&gt;The answer to the original question finally became clear: Get the hard stuff out of the way with mocks. Beyond that, get the stuff that you're not testing out of the way with mocks. The AAA &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;syntax&lt;/span&gt; made that pretty easy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;4. Is this test trivial, or needed?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, I still have a bit of trouble here. Not as much as before, but occasionally I find myself writing a test, looking at it, and going, "Gee, I'm testing the setter of that property...that had BETTER work!"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;5. I still have large holes in what I test.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Again, still having trouble here. Even with the good TDD practices in place at the most recent project, I found myself frustrated and writing the code and screen testing it rather than writing my unit tests up front. I did have a deadline that I was up against, but cutting the unit tests is never the right solution. I fell back to an old habit, one I've been working pretty &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_8"&gt;diligently&lt;/span&gt; on breaking.&lt;br /&gt;&lt;br /&gt;In the March blog entry, this referred to unit testing my javascript. Well, ending up on a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Webforms&lt;/span&gt; project pretty much ended my worries about getting my javascript tested.&lt;br /&gt;&lt;br /&gt;So, with those steps behind me, what do I want to focus on now? Well, I can still improve on numbers 4 and 5 above, but I think those two will be continuous improvements. I'm going to continue down the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;BDD&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;ish&lt;/span&gt; path. It's not pure &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;BDD&lt;/span&gt;, but it got me over the hump, and I like the syntax. But overall, I'm just going to keep going at getting the tests written up front. Focus more on the red, green, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;refactor&lt;/span&gt; as much as I can. I'm seeing the benefits, just need to get those old habits kicked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7635038938491998511?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7635038938491998511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7635038938491998511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7635038938491998511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7635038938491998511'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/07/tdd-starting-to-sink-in.html' title='TDD Starting to Sink In'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-1308813150058935204</id><published>2008-06-17T19:32:00.003-04:00</published><updated>2008-06-17T20:08:31.479-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dayton .Net Developers Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Cincinnati .Net User Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='Memphis .Net User Group'/><title type='text'>The Summer Tour of Timbo</title><content type='html'>The summer speaking tour is about to get underway, fresh off the heels of my successful spring tour. (Successful after the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;QSI&lt;/span&gt; Tech Night unit-test-a-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;palooza&lt;/span&gt; fun.)&lt;br /&gt;&lt;br /&gt;We'll be kicking off the summer tour in Cincinnati next Tuesday (6/24) at the June &lt;a href="http://cinnug.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CINNUG&lt;/span&gt;&lt;/a&gt; meeting. I'll be presenting on the ASP.Net &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;MVC&lt;/span&gt; framework, why it's cool, why you should be using it now, and how it will do simple household chores for you - walking the dog, doing the laundry, and cleaning the bathroom. (It doesn't do windows, though.)&lt;br /&gt;&lt;br /&gt;Fresh off the evening in Cincinnati, I'll be heading to Dayton the very next evening to present the same &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;riveting&lt;/span&gt; and engaging presentation to the good people of the &lt;a href="http://daytondevgroup.net/"&gt;Dayton .Net Developers Group&lt;/a&gt;. Fellow Quickie &lt;a href="http://frazzleddad.blogspot.com/"&gt;Jim Holmes&lt;/a&gt; helps run the Dayton bunch, so I expect heckling in Dayton.&lt;br /&gt;&lt;br /&gt;Following the quick bang-bang trip across south western Ohio, I'm off for a few weeks before I head below the Mason-Dixon line to speak to the &lt;a href="http://memphisdot.net/"&gt;Memphis .Net User Group&lt;/a&gt; on July 24. "Memphis?!?!" you saying. &lt;a href="http://www.jeffblankenburg.com/index.html"&gt;Jeff&lt;/a&gt; introduced me to &lt;a href="http://www.colinneller.com/blog/"&gt;Colin &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Neller&lt;/span&gt;&lt;/a&gt;, president of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MNUG&lt;/span&gt;, when I was in Vegas for Mix, and he invited me down after I expressed a little interest in getting out to do some speaking. My topic in Memphis is as yet undecided. Colin has a &lt;a href="http://memphisdot.net/forums/t/57.aspx"&gt;poll&lt;/a&gt; up in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;MNUG&lt;/span&gt; forums for either an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MVC&lt;/span&gt; deep dive or my Evangelizing the Pragmatic Programmer talk. Can't wait to see the results. It's 50/50 at the moment, so if you're in the Memphis area get your vote in...you could be the deciding vote!&lt;br /&gt;&lt;br /&gt;That ends my scheduled trips at the moment, who knows what I'll rope myself into as August comes along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-1308813150058935204?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/1308813150058935204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=1308813150058935204' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1308813150058935204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/1308813150058935204'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/06/summer-tour-of-timbo.html' title='The Summer Tour of Timbo'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2483764461632160781</id><published>2008-06-09T22:27:00.002-04:00</published><updated>2008-06-09T23:32:19.500-04:00</updated><title type='text'>How I got started programming</title><content type='html'>I got called out by &lt;a href="http://www.jeffblankenburg.com/2008/06/software-development-meme.html"&gt;Jeff&lt;/a&gt; in his post on the same subject. I believe this idea can be traced back to &lt;a href="http://www.michaeleatonconsulting.com/blog/archive/2008/06/04/how-did-you-get-started-in-software-development.aspx"&gt;Michael&lt;/a&gt;, and it's a pretty good idea. It's nice to see how our friends and colleagues have progressed.&lt;br /&gt;&lt;br /&gt;Fair warning, this could get long winded. I am, after all, talking about my favorite subject...me. :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How old were you when you started programming?&lt;/span&gt;&lt;br /&gt;I think I was 12 when I first wrote some kind of program. Christmas of my 7th grade year, Ma and Pa Wingfield bought an Apple IIe, along with a couple games. However, I quickly got bored with the games and wanted to make that machine do the stuff I wanted. I talked mom into springing for the 128k upgrade card, and I got down to writing some BASIC programs.&lt;br /&gt;&lt;br /&gt;Between the 7th and 8th grade, mom actually sent me to Ohio State to "Computer Camp." It was like Code Mash '83. A bunch of 12-14 year olds on OSU's campus for a week writing code. Oddly enough, at the time I was an "Apple Guy" because that's what we had at home, but all the machines at the camp were IBM's. So, I basically just focused on the BASIC code, and not all the screwy graphics stuff that only worked on the IBMs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How did you get started in programming?&lt;/strong&gt;&lt;br /&gt;Through High School, I did very little programming. Females and football were my main focus, and after graduating I was off to OSU to get an Ag Econ degree. While at OSU I did take a beginning programming course, and it was one of the few courses I enjoyed. (Didn't take the hint, though.) In it, we were writing PASCAL on Macs...back to the Apple. (The irony is getting thick, here.)&lt;br /&gt;&lt;br /&gt;After that class at OSU I let my programming gene slip again, and didn't really take it back up until I got a 486 in '93. After getting that, and with the web boom right around the corner, HTML and javascript were intriguing, so I hobbied around with them for a while. Then, got serious and went to Franklin to work on getting a CS degree. That's when it all started to come together and I figured out I really was a computer guy at heart. (At FU I did most work on a UNIX system...no Apple this time, but no PC, either.)&lt;strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;What was your first language?&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;As noted above my first language was BASIC on the Apple. Lots of GOTOs in my code, too. Nothing brought my 128k expansion card to it's knees quicker than a nice infinite GOTO loop.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;What was the first real program you wrote?&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;This is kind of a two parter for me. The first large program I got working was a Stock Market simulator I copied out of a magazine. I made a few minor tweaks to it to make the stocks move faster and change the companies that were traded.&lt;br /&gt;&lt;br /&gt;But, the first real program I wrote from scratch was a farming simulator when I was in the 8th grade for the IIe. I grew up on a grain farm, and decided to write a simulator for planting, harvesting, and trading grain. I titled the program "Appleculture" which I thought was pretty snappy. The most difficult part of the game to program was the random number stuff to make the grain prices move, but not move too much. And to make them trend up or down, not taking huge jumps in the opposite direction it took the turn before. It got pretty involved. It also had a banking portion to it, so I guess I was staring my "line of business app" future square in the face there and didn't even know it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;What languages have you used since you started programming?&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Hmmm...BASIC, PASCAL, C++, Java, VB 5, HTML, Javascript, ASP, VBScript, PHP, C#, VB.Net, Ruby (just getting started on that one)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;What was your first professional programming gig?&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;First professional programming gig was at a small lighting manufacturing company near the airport back in about 1997, I believe. I was brought in to build the website, oversee the computer systems, and do some other things around the building. Turned out the guy that owned the company wasn't all that good at delegating, so it ended up being more of a production manager position than web position. I did get the website launched before I left, and it was still the web site up until about 18 months ago. (Which is really kind of sad.)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;If you knew then what you know now, would you have started programming?&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Yes. If I knew then what I know now, I would have started focusing on programming much sooner. My real programming life didn't start until I was about 26 or so, even though I was writing random grain price generators when I was 13.&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;If there is one thing you learned along the way that you would tell new developers, what would it be?&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;I'll have to follow the crowd and say soft skills is a big one. Everything is a people problem, so to solve those problems you've got to deal with people. If you think fixing the problem is locking yourself in an office or hunkering down in a cube for endless hours typing away, you're mistaken.&lt;br /&gt;&lt;br /&gt;Secondly - can't narrow this one to just one - and I read this in somebody else's post and heard it from &lt;a href="http://brianhprince.blogspot.com/"&gt;Brian Prince&lt;/a&gt;, get a mentor or mentors. After leaving the small manufacturing place I've been lucky enough to have at least one person at each company that's been a mentor to me. At Quick it seems I'm surrounded by mentors. In this chosen career you're always learning, if you're not always learning YOU are the problem.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;What's the most fun you've ever had ... programming?&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Not sure I can narrow down a "most fun" time, but my most satisfying time was working on the MCCH project for the Attorney General's office. Simplified explanation, this was the web interface for the Amber Alert system in Ohio. My email address is still in the db for all Amber alerts in the state, and seeing, "Alert canceled, child recovered," come into the inbox always makes me feel good.&lt;br /&gt;&lt;br /&gt;Jeff called me out, so I'll pass along the call outs. Like to hear the stories of...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://frazzleddad.blogspot.com/"&gt;Jim Holmes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wewillrulethegalaxytogether.blogspot.com/"&gt;Greg Finzer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://philipjordan.blogspot.com/"&gt;Phil Jordan&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.stevehorn.cc/"&gt;Steve Horn&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://programwith.net/"&gt;Matt Casto&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2483764461632160781?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2483764461632160781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2483764461632160781' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2483764461632160781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2483764461632160781'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/06/how-i-got-started-programming.html' title='How I got started programming'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4234388298295375565</id><published>2008-04-27T22:22:00.004-04:00</published><updated>2008-04-27T22:56:14.772-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vacation'/><category scheme='http://www.blogger.com/atom/ns#' term='Blackjack II'/><category scheme='http://www.blogger.com/atom/ns#' term='Disney World'/><title type='text'>So much to blog about...but I'm on VACATION!</title><content type='html'>I've got so much I should be writing about. Considering I just spoke at Central Ohio Day of .Net and at Cincinnati Financial's .Net User Group just over a week ago, there are a couple of wrap ups due there. Also have a little jQuery with MVC that I'd like to blog up. Actually, I should have a few more MVC posts coming out.&lt;br /&gt;&lt;br /&gt;HOWEVER!&lt;br /&gt;&lt;br /&gt;Tomorrow at 7:10am I get to fly to Orlando with my youngest for a trip he doesn't know about yet. Big surprise for the five year old will hit tomorrow morning.&lt;br /&gt;&lt;br /&gt;With my Blackjack II loaded and ready to go, there will be &lt;a href="http://twitter.com/timwingfield"&gt;tweets&lt;/a&gt; from The World, I'm sure. I tried to get Windows Live to accept photos, but couldn't get it to work. The emails all bounce back and the photos never appear. So, Google to the rescue, and I've got &lt;a href="http://tjwmobileblog.blogspot.com/"&gt;a mobile blog&lt;/a&gt; all ready to go, complete with a before picture of the unsuspecting Alex.&lt;br /&gt;&lt;br /&gt;So, this short trip to see what Mickey and Donald are up to will be used as a moblie computing experiment. OK, maybe not so much an experiment as three days in my favorite vacation spot with my son and my still fairly new found mobile universe. Should be a lot of fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4234388298295375565?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4234388298295375565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4234388298295375565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4234388298295375565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4234388298295375565'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/04/so-much-to-blog-aboutbut-im-on-vacation.html' title='So much to blog about...but I&apos;m on VACATION!'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8648397246608793221</id><published>2008-04-05T13:28:00.003-04:00</published><updated>2008-04-05T13:52:48.288-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='Blackjack II'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mobile'/><title type='text'>Video on ye ol Blackjack II</title><content type='html'>Got a short trip coming up soon which will involve me and my youngest, Alex, hopping on a plane for a couple of hours. Being tech-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ish&lt;/span&gt;, and wanting to pack light, I figured I'd get a couple of episodes of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Spongebob&lt;/span&gt; from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;iTunes&lt;/span&gt;, and we'd have one entertained 5 year old via my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Nano&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;But, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Nano&lt;/span&gt; has one small screen. And, hey, look at that...the screen on my Blackjack is about TWICE as big! Light bulbs go off everywhere...&lt;br /&gt;&lt;br /&gt;Went something like this...&lt;br /&gt;&lt;br /&gt; - Blackjack runs Windows, and has windows media player. I've got a ton of .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;avi&lt;/span&gt; movies, let's load one up!&lt;br /&gt;&lt;br /&gt;[Failure]&lt;br /&gt;&lt;br /&gt; - OK, it's a stripped down version of media player, we'll just convert that sucker to a .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;wmv&lt;/span&gt; file and we'll be in business!! Google up a video converter and find &lt;a href="http://www.nchsoftware.com/prism/plus.html"&gt;Prism&lt;/a&gt;. Free, and does the trick. So, about 90 minutes later...30 minutes for the conversion, 60 minutes for Vista to kindly copy it to my Blackjack...we're pressing play on the Blackjack.&lt;br /&gt;&lt;br /&gt;[Failure]&lt;br /&gt;&lt;br /&gt; - Mother puss bucket...in a moment of weakness, I email fellow &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;BJII&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;noob&lt;/span&gt; &lt;a href="http://stevenharman.net/"&gt;Harman&lt;/a&gt;. I figured his newly bestowed MVP status has given him great powers over all things Microsoft. It did, "Email Keith Elder, he's the mobile wizard."&lt;br /&gt;&lt;br /&gt; - I email &lt;a href="http://keithelder.net/blog/"&gt;The Elder&lt;/a&gt;, who promptly replies with, "Yikes, that's the one thing I've never tried on my phone!" Keith did direct me to another converter, Pocket DVD Wizard. This one is $25 with a free trial, which I snagged as it will give me 5 minutes of a movie converted to the format I need.&lt;br /&gt;&lt;br /&gt; - Fire up Pocket DVD Wizard, which asks what device I'll be using. Select &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Samsung&lt;/span&gt;, and the secret is revealed: The file type needs to be .3&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;gp&lt;/span&gt;. With the conversion complete, I copy 5 minutes of &lt;a href="http://www.imdb.com/title/tt0114709/"&gt;Toy Story&lt;/a&gt; to the Blackjack, and...&lt;br /&gt;&lt;br /&gt;[Success!!]&lt;br /&gt;&lt;br /&gt; - Short lived success, though, as it will only play in a tiny window. Flipping it to full screen makes it very &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;pixelated&lt;/span&gt; and choppy. The window it plays in is smaller than that of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Nano&lt;/span&gt;, so back to square one.&lt;br /&gt;&lt;br /&gt;Well, back to square 1.5. We're now converting a couple of those .&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;avi&lt;/span&gt; files to .mp4 for the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Nano&lt;/span&gt;. I figure the 4GB &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Nano&lt;/span&gt; will get us to and from Orlando, keep Alex occupied, and I'll use my Blackjack as an mp3 player for myself.&lt;br /&gt;&lt;br /&gt;Assuming I can get that to work...&lt;br /&gt;&lt;br /&gt;Oh, and Alex has no idea about the trip, it's a big surprise for him. Don't tell him!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8648397246608793221?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8648397246608793221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8648397246608793221' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8648397246608793221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8648397246608793221'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/04/video-on-ye-ol-blackjack-ii.html' title='Video on ye ol Blackjack II'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2245574017533195672</id><published>2008-03-30T18:31:00.003-04:00</published><updated>2008-03-30T20:11:01.799-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>TDD growing pains</title><content type='html'>I've understood and attempted to follow TDD practices for a while. The initial understanding of it was pretty tough, and very, VERY sporadically put into practice. After all, it's a pretty big shift in thinking when you first encounter it. "Write tests? For code that's not there?? Wow, that's fantastic!!"&lt;br /&gt;&lt;br /&gt;So, over time I've gotten much better at the whole TDD thing. Or so I had thought.&lt;br /&gt;&lt;br /&gt;Wednesday, mid-presentation, my lack of patience with the system outed me. I had written my tests, passed my tests, changed my code, changed it a little more, and then went to present it. Wow did I get smacked in the head by not running the tests after each change. (Continuous integration for a small demo app didn't really enter my mind. I have a hard time firing up CI at home since there's not much to I, but maybe I should join &lt;a href="http://arcware.net/archive/2008/03/19/My-Tools-for-Writing-Software-at-Home.aspx"&gt;Mr. Donaldson in doing so&lt;/a&gt;.) So, big time lesson learned there.&lt;br /&gt;&lt;br /&gt;The flip side to that bit of a stumble was the amount of time TDD saved me on my current project at work. I had written a number of unit tests to cover some business logic, and a few integration tests. A couple of defects came in showing that I needed to change a number of my dates to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;nullable&lt;/span&gt; objects. Not a difficult change, but not totally trivial, either. Made the changes, ran the tests. Oops...more changes, ran the tests. The whole change over was done, tested, and passing within 15 minutes.&lt;br /&gt;&lt;br /&gt;A few pitfalls I've fallen into while traveling down the path towards TDD enlightenment:&lt;br /&gt;&lt;br /&gt;1. I tend to wrestle a lot with when to layout some of the framework and when to just breakdown and write the tests. The main reason I wrestle with this one is that the good &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ol&lt;/span&gt;' crutch of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;intellisense&lt;/span&gt; sure comes in handy for test writing if you've framed your code out some. (When writing Ruby code in e, this doesn't seem to be as much of an issue for me.)&lt;br /&gt;&lt;br /&gt;2. A recent project found our team working with a pile of generated tests. With the ever present deadline looming larger and larger, we decided to go with the generated tests as they appeared to be "good enough." They were good at the start, but as the code base grew, and our tests with it, we started looking at our CI build taking up to an hour. There's a big red flag. Dug into the code, very few unit tests were generated, but a pile of integration tests were. Takes a while for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;nHibernate&lt;/span&gt; to do its thing 4,316 times. (We've since started cleaning that up, build is back to a more reasonable, but still outrageous half-an-hour now...)&lt;br /&gt;&lt;br /&gt;3. When to mock? I'm hip to the whole mocking thing, but identifying the right time to do so is still giving me troubles. I'm sure I'll get there with practice, just need some more practice.&lt;br /&gt;&lt;br /&gt;4. Is this test trivial, or needed? In a &lt;a href="http://blog.timwingfield.com/2008/03/is-code-coverage-worth-bragging-about.html"&gt;previous post&lt;/a&gt; I mentioned viewing code coverage the other way around, seeing what's uncovered rather than covered. I don't see 100% coverage, er I mean, 0% uncovered as attainable in the web projects I usually work on, but where do you draw the line? If you end up falling over on a piece of untested code, I guess it wasn't trivial.&lt;br /&gt;&lt;br /&gt;5. I still have large holes in what I test. Just about all of my javascript code is completely untested. I know there are frameworks available to help me with that, but I haven't gotten down and dug into them.&lt;br /&gt;&lt;br /&gt;So, short term I'm going to keep the ears pinned back and keep moving forward with the testing first. May as well get a home build server set up, and keep digging on mocking as much as I can. Gonna have to investigate &lt;a href="http://code.google.com/p/moq/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Moq&lt;/span&gt;&lt;/a&gt;, as well. Also, time to get that javascript tested. With as much AJAX as we're cranking out, this is quickly becoming a priority.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2245574017533195672?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2245574017533195672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2245574017533195672' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2245574017533195672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2245574017533195672'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/03/tdd-growing-pains.html' title='TDD growing pains'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-237267939506968213</id><published>2008-03-30T13:11:00.006-04:00</published><updated>2008-03-30T14:04:25.009-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Speaking'/><category scheme='http://www.blogger.com/atom/ns#' term='TechNight'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Solutions'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>Tech Night - Getting Started with MVC</title><content type='html'>First of all, thanks to all those who attended &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;TechNight&lt;/span&gt; this past week at &lt;a href="http://www.quicksolutions.com"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;QSI&lt;/span&gt; HQ&lt;/a&gt;. That was by far the largest crowd I'd seen gather for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;TechNight&lt;/span&gt;, much bigger than the 10 people that came in September when I presented on ASP.Net AJAX. With Quick having the much larger training center now, I hope this trend continues.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;The Snag&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;During post-presentation discussions, I finally arrived at why the test failed. Short version: I'm an idiot.&lt;br /&gt;&lt;br /&gt;Long version: I went with the whole TDD approach to the presentation to show how &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;MVC&lt;/span&gt; was more testable. It is a great way to show some of the advantages of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;MVC&lt;/span&gt;. It is if you continue to run those tests as you &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;refactor&lt;/span&gt; your code.&lt;br /&gt;&lt;br /&gt;What I did was stop at red, green, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;refactor&lt;/span&gt;. I didn't try for more green following an additional &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;refactoring&lt;/span&gt;. I had written and passed my product controller tests, where the big test failure happened in the presentation, before I had added my model code to the product controller. That's a pretty big change, and clearly the tests caught that change...in front of an audience, rather than in the comfort of my own home.&lt;br /&gt;&lt;br /&gt;So, my protests of, "These passed at home!" were correct, because I only ran them once. Like I said, idiocy.&lt;br /&gt;&lt;br /&gt;In the end we got it working for purposes of the demo, and I owe Mel, Steve, Steve, Kris and many others who shouted advice a big thanks for helping me over the hurdle. However, the demo ended up testing what I didn't need or want to test: That &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;LINQ&lt;/span&gt; was doing what it said. I had wanted to add one more test prior to the demo that hit an in memory collection of products, that would have solved my problem with the connection string and been a much better test of the controller code.&lt;br /&gt;&lt;br /&gt;Here is a link to the code and slides: &lt;a href="http://code.google.com/p/codeincubator/source/browse/Samples/Getting-Started-With-MVC"&gt;Getting Started With &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;MVC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;That &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;resisdes&lt;/span&gt; in a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SVN&lt;/span&gt; repository on Google Code (&lt;a href="http://stevenharman.net/"&gt;thanks Steve&lt;/a&gt;), and will get updated as I update the presentation. Clearly I have a couple of tests to add, some data issues to clear up, and will &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;probalby&lt;/span&gt; change the slides some as it progresses. Keep an eye on it in the near future for updates, &lt;a href="http://cinnug.org/cododn/default.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;CODoDN&lt;/span&gt;&lt;/a&gt; will be here before I know it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-237267939506968213?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/237267939506968213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=237267939506968213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/237267939506968213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/237267939506968213'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/03/tech-night-getting-started-with-mvc.html' title='Tech Night - Getting Started with MVC'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3432771786101415064</id><published>2008-03-12T22:42:00.005-04:00</published><updated>2008-03-12T23:04:10.382-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='code coverage'/><title type='text'>Is code coverage worth bragging about?</title><content type='html'>I'm a hockey fan, have been for a while. In being a hockey fan, I've had a number of statistical discussions around the sport. Second only to baseball fans in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;statsville&lt;/span&gt;, hockey fans love their numbers. One major discussion took place around shots on goal. That semi-subjective stat that tells a team how many times the goalie got between them and a goal. I've seen teams put 40 shots on net and lose to a team that got 18 because 3 of the 18 went in and only 1 of the 40. After the game, you lost, but hey...you put 40 shots on that guy! You certainly didn't lose for a lack of trying.&lt;br /&gt;&lt;br /&gt;So, over in the software world, I'm now wondering if Code Coverage is our shots on goal stat. You get over beers and start talking with peers and hear...&lt;br /&gt;&lt;br /&gt;Bob: "I've got 40% code coverage!"&lt;br /&gt;&lt;br /&gt;Terry: "Bah, that's nothing, we hit 55% this afternoon!"&lt;br /&gt;&lt;br /&gt;James: "You both suck, we've got 70% coverage and are almost through &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;UAT&lt;/span&gt;!"&lt;br /&gt;&lt;br /&gt;Here's what's missing in that discussion...Bob is 60% uncovered, Terry is 45% uncovered, and James has 30% of his code waiting to spring something on him in the next few days of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;UAT&lt;/span&gt;. In essence, they've each got a number of shots on goal, but how many are in the net? Are we focused on the wrong side of the equation?&lt;br /&gt;&lt;br /&gt;The goal of 100% code coverage is a tough one, unless you're &lt;a href="http://objo.com/"&gt;Joe O'Brien&lt;/a&gt;. (See: Testing Mandatory, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;CodeMash&lt;/span&gt; 08) In my life in ASP.Net, getting 1% coverage on a code behind file would be worth a round of beers.&lt;br /&gt;&lt;br /&gt;But, are we focused on the wrong goal? Clearly, increasing your code coverage is decreasing uncovered code. But, if your goal is 75% coverage and you reach that goal, do you stop? Maybe shifting our focus to code &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;uncoverage&lt;/span&gt; will close that gap.&lt;br /&gt;&lt;br /&gt;Don't be happy with those 40 shots on goal...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3432771786101415064?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3432771786101415064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3432771786101415064' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3432771786101415064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3432771786101415064'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/03/is-code-coverage-worth-bragging-about.html' title='Is code coverage worth bragging about?'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2042349990555430139</id><published>2008-03-11T06:21:00.003-04:00</published><updated>2008-03-11T06:44:57.629-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Mix08'/><category scheme='http://www.blogger.com/atom/ns#' term='Mix'/><title type='text'>Mix08 Recap</title><content type='html'>&lt;p class="MsoNormal"&gt;My recap of Mix08 has to start with a big thank you to &lt;a href="http://www.jeffblankenburg.com/index.html"&gt;Jeff Blankenburg&lt;/a&gt;, and the small company he works for based in Redmond, WA. Jeff got me a ticket to Mix (QSI got me the plane ticket and hotel stay), then once I got there he got &lt;a href="http://www.colinneller.com/blog/"&gt;Colin Neller&lt;/a&gt;, who runs the &lt;a href="http://mnug.net/"&gt;Memphis user group&lt;/a&gt;, and myself tickets to the Blue Man Group. Then when the White Death hit Columbus and our flight home got cancelled, Jeff put us up in his room for the night because he was staying one more evening. (Oh, and he loaned me $40 at the craps table…but he told me the juice is running on that.) If your DE is to drive more interest, JB is doing a good job getting me around the Microsoft community. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Second big thank you is going to go to &lt;a href="http://stevenharman.net/"&gt;Steve Harman&lt;/a&gt;. Steve and I both work for Quick, and roomed together while at Mix. (That’s the rest of the “us” that Jeff put up courtesy of the Blizzard of ’08.) Steve has a number of contacts in the community, and he introduced me to everybody he knew, and some he didn’t know. (And after &lt;a href="http://blog.timwingfield.com/2008/03/tim-and-steves-not-so-excellent.html"&gt;our interesting trip home&lt;/a&gt;, Steve and I didn't kill each other, and we're still speaking.)&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So, with Jeff and Steve leading the way, easily the biggest part of Mix for me was the people I met. There were a number of sessions I didn’t go to as I stayed in the Open Spaces/Sandbox area to just talk with people. So, I may have missed a Silverlight session, but I got to spend about 35 minutes talking to &lt;a href="http://haacked.com/Default.aspx"&gt;Phil Haack&lt;/a&gt; about the ASP.Net MVC framework. The guy writing that framework has to be a pretty solid source of information. Later I watched the Steve Balmer keynote with &lt;a href="http://blog.wekeroad.com/"&gt;Rob Conery&lt;/a&gt;. Rob shared a lot of what his general development practices are, and what tools he uses. (I didn’t luck out and have beers with ScottGu like Steve did, though.)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I did get to a few sessions, though. The highlight one for me was &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman’s&lt;/a&gt; talk on the ASP.Net MVC framework. Since I’ll be doing one of those myself on March 26&lt;sup&gt;th&lt;/sup&gt;, figured I better watch Scott to get some materials to borrow…er, I mean get ideas. I also got to see &lt;a href="http://www.nikhilk.net/Category.aspx?id=1"&gt;Nikhil Kothari&lt;/a&gt; talk about ASP.Net AJAX apps moving forward, which was pretty cool for me since I got a lot of information from Nikhil back when I was picking up on what was then ATLAS. One of the better sessions was a panel discussion on Open Source and where it’s headed. The panel consisted of Mike Schroepfer (Mozilla), Rob Conery (Microsoft), Andi Gutmans (Zend), Miguel de Icaza (Novell, Moonlight), Sam Ramji (Microsoft). They took questions which started the discussions, which got heated at times, but raised some great points. In hindsight, I wish I’d had found another panel discussion to go to.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;All the sessions, including the keynotes (the Guy Kawasaki, Steve Ballmer keynote should not be missed) are available online now at &lt;a href="http://sessions.visitmix.com/"&gt;http://sessions.visitmix.com&lt;/a&gt; in a number of formats. All that information is great, so in the end I really won’t miss any sessions I wanted to see, but the opportunities to meet the people I met aren’t available online. Here’s looking forward to Mix09 already.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2042349990555430139?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2042349990555430139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2042349990555430139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2042349990555430139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2042349990555430139'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/03/mix08-recap.html' title='Mix08 Recap'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3027243394854063956</id><published>2008-03-08T21:12:00.003-05:00</published><updated>2008-03-10T14:39:58.919-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='travel nightmare'/><title type='text'>Tim and Steve's (not so) Excellent Adventure</title><content type='html'>After a wonderful trip to Mix08 in Vegas (update coming soon), Mr. Harman and myself were to have flown to home last night. However, the White Death didn't allow that, but thankfully Jeff had room for us. So, an extra night in Vegas, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;rebooked&lt;/span&gt; plane rides for the next morning which would at least get us to Chicago. We left Chicago, with the lovely Mrs. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Wingfield&lt;/span&gt; providing updates from home, hoping that we had a flight waiting for us at Midway that would take us home.&lt;br /&gt;&lt;br /&gt;We got to Midway, I fired up my phone, text message from Wendy: "Your flight has been cancelled." So, a quick call to her with confirmation numbers and a hope that she could get through before we got off the plane. She did, but we had to go to the counter anyway. There our options were presented as: Stay in Chicago until Monday, or go somewhere else and try and get home. As much fun as two nights in Chicago sounded after four days in Vegas, we were ready to come home...so off to Indy!&lt;br /&gt;&lt;br /&gt;Once in Indy, we got a rental car (a Grand &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Prix&lt;/span&gt; for you scoring at home) and have made it to a Holiday Inn about 30 miles east of Indianapolis. The hope is tomorrow the snow is cleared off I-70 and we can get back to Columbus.&lt;br /&gt;&lt;br /&gt;If not, we have our very own version of Planes, Trains, and Automobiles..."THOSE AREN'T TWO PILLOWS!!!"&lt;br /&gt;&lt;br /&gt;UPDATE: Tim and Steve's excellent adventure came to an end yesterday (Sunday the 10th) around noon. We made the drive in from Indy pretty easily. There were a number of cars in the ditch, mostly four wheel drives. Theory was the driver thought he/she was invincible and learned four wheel drive does not mean four wheel stop. The hairiest part of the journey was navigating German Village streets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3027243394854063956?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3027243394854063956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3027243394854063956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3027243394854063956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3027243394854063956'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/03/tim-and-steves-not-so-excellent.html' title='Tim and Steve&apos;s (not so) Excellent Adventure'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-10509025330966850</id><published>2008-02-23T12:59:00.013-05:00</published><updated>2008-03-01T01:34:51.197-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Don't hide behind a catch block</title><content type='html'>&lt;blockquote&gt;&lt;b style="font-size: 30px;"&gt;"Pragmatic Programmer tip #32: Crash Early."&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I've been recently tasked with some refactoring items. Like any project that's longer than 8 weeks, you'll dig into some code and find yourself going, "What was I thinking with THIS?" Or, if the project's a bit longer, you wonder if you came up with this gem (and no, not a Ruby gem) or if somebody else on the team left this odor in the code.&lt;br /&gt;&lt;br /&gt;The code smell of this particular blog post is the abuse of the try/catch block. I've stumbled across a few uses of the try/catch programatically, or worse, using an empty catch block to hide an issue you're not sure how to deal with.&lt;br /&gt;&lt;br /&gt;Right off the top will go with the empty catch block. I encountered a few of these while refactoring, and had to wonder why we were hiding behind the empty catch block. Crash early, but when you crash sweep that under the rug and move on? That's not good. If you need a catch block, then isn't there something you should be catching? Take the following for an example:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.timwingfield.com/uploaded_images/ToInt-730092.gif"&gt;&lt;img src="http://blog.timwingfield.com/uploaded_images/ToInt-730085.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;That's a pretty simple little conversion function, with the dreaded empty catch block in there. It's there not because of the TryParse, which is going to give you a false if it fails its own try, but because applying ToString to a null object is going to throw an object error. Rather than the empty catch, why not a null check on o? Then you know what you're dealing with rather than not caring and returning 0 for anything you're not expecting. To me, this is a classic garbage in, garbage out scenario. You pass in a null or an object that can't be converted to a an int and you get a 0.&lt;br /&gt;&lt;br /&gt;Next up was a bit of sheer genius, and throwing my hands up when dealing with nHibernate. Rather than find out what was going on, I resorted to using a try/catch procedurally to handle the issue. Here's a bit of code that shows my brilliant solution:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.timwingfield.com/uploaded_images/ObjSave-794050.gif"&gt;&lt;img src="http://blog.timwingfield.com/uploaded_images/ObjSave-794047.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The issue there turned out to be that we were &lt;a href="http://toddkaufman.blogspot.com/2008/02/failing-to-fail-early.html"&gt;using the load method from nHibernate rather than the get&lt;/a&gt;, so I didn't have null object to check. I had an actual proxy object full of null properties. My solution, duck behind the catch block and make it bend to my will. If the load found something, the id check would pass and I'm doing an update. If the resulting object error from the property check threw, then I'm dealing with a new object, time for an insert.&lt;br /&gt;&lt;br /&gt;In this case my ignorance of nHibernate's dealing with objects was the problem, but ignorance is no excuse. Using the try/catch in this manner was a hack with Paul Bunyan's ax. It got me moving foward, but was a bad solution.&lt;br /&gt;&lt;br /&gt;The final empty catch falls in the same lines, where ignorance of what was available to us wasn't found until much later. This empty catch block example was saving us from a null reference error in a nullable data type in a data bind method.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.timwingfield.com/uploaded_images/databind1.gif"&gt;&lt;img src="http://blog.timwingfield.com/uploaded_images/databind1.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Getting rid of this empty catch may have been the easiest of the three, because nullable data types carry a "HasValue" property that tells you, well, if they have a value. The refactored code looked like:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.timwingfield.com/uploaded_images/databind2.gif"&gt;&lt;img src="http://blog.timwingfield.com/uploaded_images/databind2.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Using the HasValue property, we can refactor this one down to the always elegant ternary operator. We know what value we have or don't have and can cleanly bind our data to what's in this case a grid column.&lt;br /&gt;&lt;br /&gt;If you're going to fail early, don't hide the failure. Figure out what it is and write the correct code for it. The try/catch is there to help you handle exceptions, not to hide them and move on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-10509025330966850?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/10509025330966850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=10509025330966850' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/10509025330966850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/10509025330966850'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/02/dont-hide-behind-catch-block.html' title='Don&apos;t hide behind a catch block'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7677657182540236245</id><published>2008-02-21T20:40:00.004-05:00</published><updated>2008-02-22T20:14:22.039-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Does Your Project Have a Junk Drawer?</title><content type='html'>&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Everybody's&lt;/span&gt; kitchen has a junk drawer. You know, the drawer where the tape, scissors, small jar of screws, various measuring items, and those &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;clacker&lt;/span&gt; balls on a string that your mom is hiding from you. (Well, the ones my mom was hiding from me.) If  you've got something in the house, and you're not sure where it goes, you fire it into the junk drawer. Oddly enough, you also find many useful items by looking in the junk drawer first when tackling something around the house.&lt;br /&gt;&lt;br /&gt;However, I've found on a few recent projects that we're falling into the Junk Drawer model a bit. Look around your project, do you have file named "Utilities?" Maybe one called "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;GlobalMethods&lt;/span&gt;?" Or the very popular "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ProjectHelper&lt;/span&gt;?" If so, there's a good chance you're throwing all kinds of things into the junk drawer. Could be a static class library, a little something in the App_Code directory in an ASP.Net project, or even a javascript file. Or, better yet, all three!&lt;br /&gt;&lt;br /&gt;Now, don't misunderstand me, utility classes can be helpful. If you've got a series of string manipulations you need for a project, then a static &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;stringUtils&lt;/span&gt; file makes perfect sense. Maybe a constants file for things that don't fit in an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;enum&lt;/span&gt;. As long as they are well defined and don't creep outside the scope of what you're trying to accomplish, I think they can be very helpful.&lt;br /&gt;&lt;br /&gt;But, the junk drawer file that contains string manipulations, constants, get user name methods, some validation methods, a few odd conversion methods, a couple more string methods, and a few methods only called from your test project is not much of an asset to your project.&lt;br /&gt;&lt;br /&gt;From a usage aspect, how do you tell other team members where your constants live? If they're scattered about your utility file, suddenly you're going to the same file for some string methods and your constants representing a product group. Or worse, your team gets so used to hitting your helper file that everything starts collecting there. Before you know it, you're looking at a maintenance nightmare with a couple thousand lines of code that should live in a number of more logical places.&lt;br /&gt;&lt;br /&gt;Look  around your projects, if you find a junk drawer take the time to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;refactor&lt;/span&gt; that thing out of there. Get all the files where they belong. You could end up with a utility file or two, but most likely you'll find you can move a number of methods right to the class that's using them because it's the only class that's using them. Turns out our friend &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;YAGNI&lt;/span&gt; contributes many "global utility" functions to our projects.&lt;br /&gt;&lt;br /&gt;Keep the junk drawer in your kitchen, though. Where else are you going to keep your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SpongeBob&lt;/span&gt; commemorative &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Krusty&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Krab&lt;/span&gt; stamp?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7677657182540236245?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7677657182540236245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7677657182540236245' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7677657182540236245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7677657182540236245'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/02/does-your-project-have-junk-drawer.html' title='Does Your Project Have a Junk Drawer?'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8965672809263631346</id><published>2008-02-21T19:28:00.003-05:00</published><updated>2008-02-21T19:55:26.030-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech fun'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax-ish'/><title type='text'>How an AJAX guy would pack</title><content type='html'>At the request of (soon to be former) boss, &lt;a href="http://brianhprince.blogspot.com/2008/02/how-does-architect-pack.html"&gt;Brian H. Prince&lt;/a&gt;, I've been tasked with explaining how an AJAX guy would pack. Even though this AJAX guy isn't involved in the moving because he's been &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;off site&lt;/span&gt; for almost a year, I'll play along...&lt;br /&gt;&lt;br /&gt;The first problem an AJAX guy is faced with when preparing to pack are the vast array of box options available to him. All the boxes appear to be roughly the same size, they are just slightly different colors of brown. There is one box that appears to be bigger, so it will hold more for the big move, but upon opening the box you see that a lot of space inside is taken up by an inner, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;un&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;openable&lt;/span&gt; box with "Update Panel" stamped on it. So, in the end, all the boxes hold roughly the same amount of stuff.&lt;br /&gt;&lt;br /&gt;So, after picking a box, AJAX Packing Guy (or Gal) - henceforth referred to as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;APG&lt;/span&gt; - gets down to improving the packing user experience. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;APG&lt;/span&gt; opens up three boxes, puts one item in each box, then goes about cleaning their desk. At some point during the desk cleaning they notice that all three boxes are now full. They seal those up, and open three more boxes, then back to cleaning the desk. Oh, look at that...those three are now full, too!&lt;br /&gt;&lt;br /&gt;Once all the items are packed away, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;APG&lt;/span&gt; uses their powers to make each box shrink and fade at the same time...only to reverse the process at the new site and have the packed boxes reappear by fading back in and growing back to normal size.&lt;br /&gt;&lt;br /&gt;What happened to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;APG&lt;/span&gt; who picked the larger box, you wonder? Well, the "Update Panel" carton inside looked to be very helpful at first, but once &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;APG&lt;/span&gt; opened more than once box and set them to working, the update panels started running into each other, and reopening packed boxes, and taking apart boxes that had been put together. Eventually they got everything packed, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;APG&lt;/span&gt; had to do very little in the way of opening boxes, but it took a while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8965672809263631346?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8965672809263631346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8965672809263631346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8965672809263631346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8965672809263631346'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/02/how-ajax-guy-would-pack.html' title='How an AJAX guy would pack'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5196368089453025114</id><published>2008-01-11T19:14:00.000-05:00</published><updated>2008-01-20T10:13:26.569-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeMash'/><title type='text'>CodeMash: Feeling The Vibe.</title><content type='html'>I had originally set out to cover my travels through &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CodeMash&lt;/span&gt; similar to my post from Day 1. Give a recap of my morning, afternoon, etc. However, it soon became clear that keeping up with what I was hearing and doing was going to be tough, and that I wasn't going to have the time to sit down and enter it. On top of that, it feels like giving a couple sentences to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;somebody's&lt;/span&gt; 1:15 presentation gives them a disservice for the work they put into it.&lt;br /&gt;&lt;br /&gt;Then I read &lt;a href="http://www.hanselman.com/blog/CodeMash2008WrapupWhatAreYouWorkingOn.aspx"&gt;Scott &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Hanselman's&lt;/span&gt; entry on his day at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;CodeMash&lt;/span&gt;&lt;/a&gt;, and I couldn't agree more with his point about "The Vibe" of the conference. Scott made a great contribution to The Vibe with his great keynote followed by just wandering the halls and jumping into conversations. A few of us were lucky enough to have him jump into our conversation before he discovered Rock Band. What's odd is it was kind of the "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CodeMash&lt;/span&gt; Way" to have Scott drop in and say, "So, what are you guys talking about?" It just seemed normal, and the conversation didn't miss a beat.&lt;br /&gt;&lt;br /&gt;The "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;CodeMash&lt;/span&gt; Way" is that everybody wants to learn something from everybody else. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Nobody's&lt;/span&gt; language or approach is any better or worse than the person you're talking with, both of you are trying to learn something from the other. It's at its most evident when you look around the room during a presentation. &lt;a href="http://www.joshholmes.com/"&gt;Josh Holmes&lt;/a&gt; was giving a talk on Microsoft's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;DLR&lt;/span&gt;, and in the back of the room &lt;a href="http://objo.com/"&gt;Joe O'Brien&lt;/a&gt; is taking it all in...and helping Josh along with some of the dynamic language benefits. The flip side is Josh was in the back of the room for Joe's talk on testing in Ruby the day before. The aforementioned Scott &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;Hanselman&lt;/span&gt; was sitting along the wall for &lt;a href="http://www.diditwith.net/"&gt;Dustin Campbell's&lt;/a&gt; presentation on F#. (And Scott's phone rang twice...that's two rounds of donuts, Mr. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Hanselman&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;Suddenly the community isn't defined as the Ruby community, the .Net community, or the Java community...we're one big problem solving community exploring what weapons we can add to the arsenal to solve those problems. What .Net or Java guy heard Joe say, "I have 100% code coverage in Ruby at all times," and didn't have their jaw hit the floor? (Probably more than one since he asked the room what their coverage was and got answers ranging from "code coverage?" to 25% to 80%.)&lt;br /&gt;&lt;br /&gt;I added a little to The Vibe, giving some advice on ASP.Net AJAX in the hallway (and thinking next year I should offer up a talk titled, "The Update Panel Sucks"), but for the most part I just soaked up all I could soak up. I went to Ruby discussions, saw plenty of Java code, and my only .Net sessions were on F# (where I was lost about 8 minutes after, "Hi, I'm Dustin Campbell" - functional programming not my bag) and Josh &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Holmes's&lt;/span&gt; talk on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;DLR&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The best place to dig The Vibe is in the hallways, the open spaces, and the "Ask the Experts" sessions. I got the chance to meet and talk to &lt;a href="http://blogs.msdn.com/saraford/default.aspx"&gt;Sara Ford&lt;/a&gt; in the hallway, but only because &lt;a href="http://onestepback.org/index.cgi"&gt;Jim &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Weirich&lt;/span&gt;&lt;/a&gt; had stolen the experts room to give his 10 things about Ruby talk, which I was attending.&lt;br /&gt;&lt;br /&gt;The amount of Ruby I learned in there pales in comparison to the informal sessions many of us had with Jim. I really lucked out here. It started with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;CodeMash&lt;/span&gt; committee member and speaker, aspiring member of the Blue Man Group, Rock Band star, agile aficionado, and all around great guy&lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;a href="http://brianhprince.blogspot.com/"&gt;Brian Prince&lt;/a&gt; walking up to Jim at the &lt;a href="http://www.quicksolutions.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;QSI&lt;/span&gt;&lt;/a&gt; sponsored Meet and Greet and asking what Aaron and I needed to do to get started in Ruby. That started an hour long discussion that many people walked up and joined. The next day at lunch, a few of us were sitting at a table eating when Jim walked by and recognized us from the night before, so he joined us. More opportunity to soak up what he had to offer. (I later commented to Brian, "Jim walks by and you learn something.") This isn't meant to be the Jim &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Weirich&lt;/span&gt; love-fest, he's a nice guy and all, but more along the lines of the "accidental" things that happen at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;CodeMash&lt;/span&gt; to add to The Vibe.&lt;br /&gt;&lt;br /&gt;Compared to last year, I think The Vibe took on a much bigger feel this year. Maybe that's me moving out of my comfort zone at sessions, but mostly I noticed it outside the sessions while walking around. The informality of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;CodeMash&lt;/span&gt; builds The Vibe, but the people attending and speaking dropping our "barriers" is what takes The Vibe to a fever pitch. I'm already looking forward to next year's edition.&lt;br /&gt;&lt;br /&gt;Of Note: I didn't win an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;iPod&lt;/span&gt; this year, like last year. I didn't win an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Xbox&lt;/span&gt; or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Wii&lt;/span&gt;, either. I did win &lt;a href="http://nostarch.com/frameset.php?startat=ruby"&gt;a book&lt;/a&gt;...ON RUBY!!! Woo-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Hoo&lt;/span&gt;!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5196368089453025114?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5196368089453025114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5196368089453025114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5196368089453025114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5196368089453025114'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/01/codemash-feeling-vibe.html' title='CodeMash: Feeling The Vibe.'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-891505497320365522</id><published>2008-01-10T11:57:00.000-05:00</published><updated>2008-01-11T13:11:48.322-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeMash'/><title type='text'>CodeMash Day 1 Morning</title><content type='html'>CodeMash has started out with a bang for me, as I missed the first half of Neal Ford's Keynote on Software Engineering and Polygot Programming because I thought it started at 9 rather than the actual starting time of 8. The best part was I didn't oversleep, I was up in plenty of time, just didn't put my reading comprehension skills to work to read the start time of the keynote.&lt;br /&gt;&lt;br /&gt;So, the last half of Neal's talk was excellent. (Referencing ORMs as programming's "Vietnam" was fun to witness.)&lt;br /&gt;&lt;br /&gt;Following the keynote, I headed off to Testing Mandatory, a session given by Joe O'Brien about testing in Ruby. Solid session, and makes me want to learn Ruby that much more. Joe kind of shoots from the hip, but the message gets through.  The biggest message was how easy testing is in Ruby, that it's built in from the beginning. He also provided a good idea on how to learn Ruby: Take one of the libraries and write unit tests for it.&lt;br /&gt;&lt;br /&gt;The last morning session I headed to Intro to Castle with Jay Wren. Jay's pretty accomplished in Castle, so knows the material well. However, from my headbanging with Castle during my current project with trying to wedge it in our existing code base gave me all the intro that Jay was laying out. He did go more into MonoRail, so that was good, but I'm guessing my first trip into MVC land on ASP.Net will be with Microsoft's release of the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-891505497320365522?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/891505497320365522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=891505497320365522' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/891505497320365522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/891505497320365522'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/01/codemash-day-1-morning.html' title='CodeMash Day 1 Morning'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7176650266648192164</id><published>2008-01-01T22:13:00.000-05:00</published><updated>2008-01-01T22:56:56.962-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development conference'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='nerds in speedos'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeMash'/><category scheme='http://www.blogger.com/atom/ns#' term='Kalahari'/><title type='text'>A little CodeMash love</title><content type='html'>Coming up in a few days will be &lt;a href="http://www.codemash.org/"&gt;CodeMash &lt;/a&gt;at the Kalahari Resort in Sandusky, OH. Having been to a few conferences, I consider this one a "don't miss." And here's why...&lt;br /&gt;&lt;br /&gt;1. It's an indoor waterpark...nerds in speedos!&lt;br /&gt;&lt;br /&gt;2. The collection of speakers and topics is second to none. This isn't your, "JAVA OR DIE!!!" meeting, just as its not, "Bill Gates cured my brother-in-law's limp," type show, either. It's a gathering of people passionate about their chosen field, wanting to share that passion, and get information on areas outside their comfort zone.&lt;br /&gt;&lt;br /&gt;3. The Kalahari sells alcohol. Consider the alcohol induced war stories: "I had to deal with a five part composite primary key that allowed nulls!" It can only get better from there...&lt;br /&gt;&lt;br /&gt;4. Keynoters that include Neal Ford (who also gave a keynote last year), Scott Hanselman, and Brian Goetz.&lt;br /&gt;&lt;br /&gt;5. Breakout sessions with Neal Ford, Brian Goetz, Bruce Eckel, and Brian Prince! (Yes, I know, "one of these things is not like the others," but he has a direct impact on my paycheck.)&lt;br /&gt;&lt;br /&gt;6. Conference food!!&lt;br /&gt;&lt;br /&gt;If one or more of those six items hasn't piqued your interest then how about adding them all up: Brian Prince in a speedo delivering a presentation on Agile Development with a beer in one hand and a ham or turkey sandwich in the other.&lt;br /&gt;&lt;br /&gt;Now that your interest has waned, fear not that won't happen. (And that direct impact on my paycheck is likely negative, now...)&lt;br /&gt;&lt;br /&gt;Seriously, this is a good conference. If your looking for a "bang for your buck" type deal, then it's tough to beat CodeMash. I've been to pricier conferences and gotten much less out of them, mainly because much less was available. Last year's highlights for me were two breakout sessions with Scott Guthrie following his keynote and a session with Neal Ford on how to be a better overall developer. (Additionally, I had a strange urge to attend &lt;a href="http://www.burningman.com/"&gt;Burning Man&lt;/a&gt;...)&lt;br /&gt;&lt;br /&gt;I came away last year being a little upset with myself for focusing too much in my .Net comfort zone, something I'm going to avoid this year. There are a couple of .Net sessions I want to see to learn some of the newer features, and one on Castle that I want to see. Beyond my comfort zone, there are a few Python sessions that I think I'll check-out. Oh, and I'll be in attendance at anything being presented by Neal Ford.&lt;br /&gt;&lt;br /&gt;If you're planning on attending, look me up and say hi. I have a nullable composite key story to share with you. And, I don't own a speedo.&lt;br /&gt;&lt;br /&gt;Yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7176650266648192164?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7176650266648192164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7176650266648192164' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7176650266648192164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7176650266648192164'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/01/little-codemash-love.html' title='A little CodeMash love'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3063373910232507925</id><published>2008-01-01T20:52:00.000-05:00</published><updated>2008-01-01T20:57:42.657-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='college football'/><category scheme='http://www.blogger.com/atom/ns#' term='Fox Sports is teh suck'/><title type='text'>Oh goody, the Fox portion of Bowl season begins...</title><content type='html'>8PM pre-game show.&lt;br /&gt;&lt;br /&gt;8:30PM game start.&lt;br /&gt;&lt;br /&gt;8:51 PM game actually sees a kick-off.&lt;br /&gt;&lt;br /&gt;Only three more of these to go until things rightfully go back to ESPN, ABC, or CBS next fall...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3063373910232507925?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3063373910232507925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3063373910232507925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3063373910232507925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3063373910232507925'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2008/01/oh-goody-fox-portion-of-bowl-season.html' title='Oh goody, the Fox portion of Bowl season begins...'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5857733763581685893</id><published>2007-12-30T11:45:00.000-05:00</published><updated>2007-12-30T13:50:52.204-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LSU'/><category scheme='http://www.blogger.com/atom/ns#' term='college football'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS Title Game'/><category scheme='http://www.blogger.com/atom/ns#' term='Ohio State'/><category scheme='http://www.blogger.com/atom/ns#' term='SEC v. Big 10'/><category scheme='http://www.blogger.com/atom/ns#' term='BCS'/><title type='text'>Why Should the Buckeyes Even Bother?</title><content type='html'>As we work our way closer to the (mythical) National Championship game (sponsored by Allstate), it becomes clearer and clearer to this Buckeye fan that there's really no reason for the Men of the Scarlet and Gray to make the trip. After all, they're playing the SEC, and the SEC owns not only Ohio State, but all of the Big Ten (11), and playing the game is merely a formality to hand the SEC another crystal football.&lt;br /&gt;&lt;br /&gt;OSU's record against the SEC in bowl games is pretty well noted, it's a giant 0-fer. Add in last season's whacking at the hands of the SEC in the championship game, and once again the theory of "why bother?" gets clearer and clearer.&lt;br /&gt;&lt;br /&gt;Then the Dispatch prints &lt;a href="http://www.journalgazette.net/apps/pbcs.dll/article?AID=/20071229/SPORTS03/712290320/-1/SPORTS03"&gt;this gem&lt;/a&gt; (as linked from the Ft Wayne Journal Gazette because I couldn't find the Dispatch's link), and it all becomes just more irritating. Now, our author for this commentary hails from Knoxville, Tennessee, so slight bias probably doesn't play into this. Listing the "Big Ten’s five most humiliating bowl losses to the SEC" is cute. But, as I found on &lt;a href="http://www.secsportsfan.com/bigtenseccomp.html"&gt;this blog&lt;/a&gt;, the Big Ten is 8-7 in the last five years against the SEC in bowl games. But wait, they used THIS YEAR'S bowls as the 5th year, but none of them have been played yet. I checked the '02 season and found out why they didn't use it...Big 10 was 2-1 vs. the SEC that year, bringing the actually played five year total to 10-8 in favor of the big, slow, corn-fed, can't-hang-with-the-speed boys from up nort'. (And, oh by the way, in '02 the Big 10 won the National Championship. I believe this is where the obligatory, "ooooh, BURN!" goes.)&lt;br /&gt;&lt;br /&gt;So, it appears the recent dominance isn't as tilted towards the SEC as the media zealots from south of the Mason-Dixon line would have you believe. Recent memory has the SEC whacking Ohio State 41-14, so our friends from down south have "what have you done for me lately" on their sides.&lt;br /&gt;&lt;br /&gt;Now, here's where I'm going to diverge a bit, and maybe cause some controversy...&lt;br /&gt;&lt;br /&gt;Ohio State happens to be playing LSU this season, not the SEC. LSU is a member of the SEC, but Coach Tressel doesn't have to prepare for the whole conference. Also, as it turns out, Ohio State lost to FLORIDA last year in the title game, not the whole SEC. Again, Florida is a member of the SEC, but not the whole conference. On that fateful night, Florida was far and away the better prepared team for the game, and how can you blame them...they had a month to hear how they didn't even belong on the same field. (Hmmm, that's sounding familiar...)&lt;br /&gt;&lt;br /&gt;When we break away from the stereotypical ramblings of the media, we find out that Ohio State is taking on LSU. The constant focus on the conference match-up seems to be taking a little something away from both programs. We're about to see two of the best defenses the country has to offer this season, but the fixation is on Minnesota beating Arkansas in Nashville in '02. Oops, sorry that was five bowl seasons ago, the fixation is probably on Penn State beating Tennessee last year in Tampa. Crap, did it again...focus is on Wisconsin beating Arkansas in Orlando last season?&lt;br /&gt;&lt;br /&gt;Sorry, fell into the conference comparison trap myself...&lt;br /&gt;&lt;br /&gt;When we look at the two teams playing, we're looking at two pretty storied programs. They've faced each other twice, and LSU has never beaten Ohio State. They did tie in '87 in the first of the home and home meetings, but OSU won 36-33 in Ohio Stadium in '88. Each has their fare share of National Titles, LSU winning it more recently following the '03 season.&lt;br /&gt;&lt;br /&gt;For this year's game, it's pretty much a given that it's a defensive battle and the team whose offense gets loose a couple times will win it. LSU is getting the nod in that category, as they have a bit more explosive offense than Ohio State. ("A bit more" is like saying Arrogant Bastard has "a bit more" flavor than Coors Light.) LSU is getting picked by most, is favored by Vegas, and is the Fan Pick on ESPN.com. But, they still have to line it up and play it, so a few things leaning in the Buckeye's favor...&lt;br /&gt;&lt;br /&gt;- Anybody who thinks Jim Tressel will make the same mistakes in preparation as he did a year ago is kidding themselves. Jimbo will have the boys way more ready to go in 'Nawlins than in the desert.&lt;br /&gt;&lt;br /&gt;- The underdog has a better record in the BCS title game than the favorite. And, oddly enough, the #1 team in the land is the underdog this time around.&lt;br /&gt;&lt;br /&gt;- Remember the '04 Alamo Bowl? Ohio State beat Oklahoma State 33-7 and Ok. St. was a 1 point favorite. Cowboys head coach that night: Les Miles.&lt;br /&gt;&lt;br /&gt;So, grab your beer and nachos and get ready to watch the Backed-in Bowl. The Backed-in Buckeyes from the Big 10 vs. the 2 loss Legit LSU Tigers. Should be a good one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5857733763581685893?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5857733763581685893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5857733763581685893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5857733763581685893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5857733763581685893'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/12/why-should-buckeyes-even-bother.html' title='Why Should the Buckeyes Even Bother?'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-770732636853785749</id><published>2007-12-14T22:55:00.001-05:00</published><updated>2007-12-14T23:22:56.113-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Grok Talk'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Solutions'/><category scheme='http://www.blogger.com/atom/ns#' term='Pragmatic Programmer'/><title type='text'>GROK Talk Slides</title><content type='html'>For all you who sat through my record timed performance of a GROK talk, here are the slides.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.timwingfield.com/downloads/the%20pragmatic%20programmer%20sermon.ppt"&gt;Pragmatic Programmer Sermon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I apologize for ripping through it, but the gift exchange loomed. The subject didn't really lend itself to Q&amp;amp;A real well, though I think all the points are important. If you haven't read/borrowed/stolen this book yet, do so today. For the time being, &lt;a href="http://www.pragmaticprogrammer.com/the-pragmatic-programmer/extracts/tips"&gt;here's the list of tips&lt;/a&gt; from the book. I worked off about 20 of them.&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Post GROK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A friend of mine recently purchased a restaurant in town. After the Quick festivities I headed there to discuss reworking his website. (I'm working for beer...it's a win, win.) This particular friend spent about 15 years in the local IT market, so he has some contacts.&lt;br /&gt;&lt;br /&gt;While I was there a group of four guys strolled in to celebrate the end of the work week. Turns out these four guys were in IT, my buddy strikes up a conversation, since they were buying beer from him and all. They work for a small consulting firm (that I'd never heard of), and were very intrigued to find out that I was a developer. So, they asked the standard sales/recruiting questions...where are you, what do you do, etc. The requisite, "You don't sound so happy, here's my card, we'll pay you more," came out and I smiled politely.&lt;br /&gt;&lt;br /&gt;Then they sent over one of their developers, at least they introduced him as such. He struck up a very non-technical discussion about the .Net Framework, PHP, MySQL, and some other buzzwords. I managed to not laugh uncontrollably, and continued to smile politely. Honestly, as soon as he attached "Framework" to .Net, I was done. I would have easily been the most senior person in their shop...probably by a few years. Then it hit me: Do I want to be the mostest seniorest person in a very junior body shop, or a senior member of the development environment I am currently a member of?&lt;br /&gt;&lt;br /&gt;Without gushing too much...I'm not going anywhere. The IT talent collected around me at this point is amazing, and Quick keeps bringing it in. The whole, "We'll pay you more!" argument is intriguing, but how much more would it take? I'm in a pretty good position at this point. The advancement within the group is no easy task, but the advancement professionally is as good as it gets.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-770732636853785749?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/770732636853785749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=770732636853785749' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/770732636853785749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/770732636853785749'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/12/grok-talk-slides.html' title='GROK Talk Slides'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3562374439731190729</id><published>2007-12-12T21:33:00.000-05:00</published><updated>2007-12-12T21:37:57.110-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winter ales'/><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><title type='text'>Winter beer clunker</title><content type='html'>On the recommendation of a coworker I recently purchased some Winter's Bourbon Cask Ale. This coworker proclaims himself to be a beer fan, so I took his advice...even after hearing him say, "It's a product of Anheuser-Busch."&lt;br /&gt;&lt;br /&gt;Should've stopped myself there. This stuff pedestrian at best. It's semi-flavorless with a hint of beer taste and some spices. Nothing stands out about it. At all.&lt;br /&gt;&lt;br /&gt;So, big thumbs down to Winter's Bourbon Cask Ale. Your money is much better spent on Sierra Nevada's Celebration Ale.&lt;br /&gt;&lt;br /&gt;Your money is much better spent on Blatz, for that matter...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3562374439731190729?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3562374439731190729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3562374439731190729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3562374439731190729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3562374439731190729'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/12/winter-beer-clunker.html' title='Winter beer clunker'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7953651084541947662</id><published>2007-12-11T23:39:00.000-05:00</published><updated>2007-12-12T00:16:46.161-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><category scheme='http://www.blogger.com/atom/ns#' term='porters'/><category scheme='http://www.blogger.com/atom/ns#' term='stouts'/><title type='text'>Porters and Stouts</title><content type='html'>I'm a pale ale, IPA, gimme-all-the-hops-you-got kind of guy. But it's winter, and &lt;a href="http://toddkaufman.blogspot.com/"&gt;Todd&lt;/a&gt; reminded me today it's time to get into porter and stout mode. So, following Brendan's hockey practice tonight, he and I swung into the nirvana that is the Giant Eagle beer cooler.&lt;br /&gt;&lt;br /&gt;As any young padwan would do, Brendan immediately asked, "Dad, are we getting some Dead Guy tonight?" His learnings at such a young age warmed my heart...guessing it wouldn't warm his mother's heart the same way. Just a guess on my part...&lt;br /&gt;&lt;br /&gt;Since I was on a mission for porters and/or stouts, I had to fore go my son's excellent suggestion. I roamed the beer cooler for a while and settled on some &lt;a href="http://beeradvocate.com/beer/profile/152/73"&gt;Young's Double Chocolate Stout&lt;/a&gt; and a selection from the Rogue brewery, their &lt;a href="http://www.rogue.com/brews.html#mocha"&gt;Mocha Porter&lt;/a&gt;. The Rogue brew didn't disappoint, and though I'm not a huge fan of porters, this one is quite tasty. The Young's, though, oh my. I had forgotten how good this beer was. The first sip was all chocolate, and it only got better from there.&lt;br /&gt;&lt;br /&gt;Not to be missed in tonight's rundown is there was already some &lt;a href="http://www.northcoastbrewing.com/beer-rasputin.htm"&gt;Old Rasputin Russian Imperial Stout&lt;/a&gt; in the fridge. &lt;a href="http://www.barleysbrewing.com/downtown/index.htm"&gt;Barley's in downtown Columbus&lt;/a&gt; made me a fan of Russian Imperial Stout, and I rate theirs better than the bottles from the good folks at the North Coast Brewery. After the first one from Barley's I was convinced they measured the alcohol content in it by proof rather than by volume. However, short of bringing my next growler home from Barley's, Old Rasputin fits the bill.&lt;br /&gt;&lt;br /&gt;So far, the shift into porter and stout mode is going well. I'm sure some Christmas brews, such as some &lt;a href="http://www.sierranevada.com/beers/celebrationale.html"&gt;Sierra Nevada Celebration Ale&lt;/a&gt;, will be in order as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7953651084541947662?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7953651084541947662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7953651084541947662' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7953651084541947662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7953651084541947662'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/12/porters-and-stouts.html' title='Porters and Stouts'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3283083067350456913</id><published>2007-12-03T23:11:00.000-05:00</published><updated>2007-12-03T23:16:44.707-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net AJAX'/><title type='text'>Intro to ASP.Net AJAX Slides and Code</title><content type='html'>Before Thanksgiving I gave an intro to ASP.Net AJAX presentation at Affinion and Nationwide, and would like to thank those that attended. As promised, and better late than never, here are the links to the slides and the code samples. The code samples include the javascript callbacks that I did during the presentation.&lt;br /&gt;&lt;a href="http://www.timwingfield.com/downloads/Intro%20asp.net%20code%20samples.zip"&gt;&lt;br /&gt;Code Samples&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.timwingfield.com/downloads/Intro%20asp.net%20ajax%20-%20slide%20deck.ppt"&gt;Slide Deck&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Again, thanks to those who attended.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3283083067350456913?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3283083067350456913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3283083067350456913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3283083067350456913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3283083067350456913'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/12/intro-to-aspnet-ajax-slides-and-code.html' title='Intro to ASP.Net AJAX Slides and Code'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3853701242644867833</id><published>2007-12-02T21:10:00.000-05:00</published><updated>2007-12-02T22:03:25.682-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='college football'/><category scheme='http://www.blogger.com/atom/ns#' term='Fox Sports is teh suck'/><title type='text'>Fox Sports can't spell "BCS"</title><content type='html'>So, two years ago when Fox bought the BCS and we all knew it was the first sign of the apocalypse was upon us, I didn't know how far they could sink. Watching their broadcasts of the Orange, Sugar, Fiesta, and BCS Title games last year was painful. (Ohio State's pole-axing aside.) The pre-game crap was recycled from their NFL and MLB broadcasts, and their whole approach to the broadcasts seemed to be: "This is our first time with college football, it must be the first time for you, too, Mr. Viewer!"&lt;br /&gt;&lt;br /&gt;But tonight, they took their idiocy to a whole new level...&lt;br /&gt;&lt;br /&gt;First off, they give us a 40 minute BCS "selection" show...as if they could somehow match the similar show that takes place in March...and give us one "selection" in the first 25 minutes of the show. Never mind that the BCS isn't a "selection," it's a computer program that says who's automatically playing in the BCS and what openings remain for the top 12 teams to play in one of the BCS games. This year the "selected" teams were Illinois, Hawai'i, Kansas, and Georgia. Everybody else got an automatic bid, and most of the automatic bids go to very specific bowl games...which is where Fox cranked the retardery up to 11.&lt;br /&gt;&lt;br /&gt;They followed a pattern of announcing one team for a couple bowls, then later announcing the other. This was after announcing who got the automatic bids...of import here is that Ohio State had the automatic bid from the Big 10. The Fox goes on to announce the Rose Bowl match up of USC and a mystery team, who after a couple commercials is revealed to be Illinois.&lt;br /&gt;&lt;br /&gt;So, let's recap what's gone through any college football fan's mind by this point...&lt;br /&gt;&lt;br /&gt;1. "God, I wish this was still on ABC."&lt;br /&gt;2. "Ohio State is the Big Ten(11)'s automatic bid."&lt;br /&gt;3. "I should turn to ESPN, but I can't...avert...my...eyes..."&lt;br /&gt;4. "Illinois is going to the Rose Bowl. Good for Illinois."&lt;br /&gt;5. "Looks like the Buckeyes are back in the title game."&lt;br /&gt;&lt;br /&gt;Now, after we've all arrived at number five in the list above, Fox assumed we'd barely gotten to four thank to our lack of any formal education. So, in order to hold our attention, they announce that UGA is going to the Sugar Bowl, which removes the suspense about where LSU will go, so they go ahead and tell us LSU is in the title game against...they put up a question mark!! Some UNKNOWN team is going to play LSU!! "There's only one slot left!!" says Joe Fan, "I wonder who it could be?!!? Oh, come on, Fox, please, please reveal that team!!"&lt;br /&gt;&lt;br /&gt;Finally, they revealed that the mystery team was Ohio State, and completed their assault on the intelligence for the average college football fan. I can hardly wait for their coverage of the games, now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3853701242644867833?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3853701242644867833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3853701242644867833' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3853701242644867833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3853701242644867833'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/12/fox-sports-cant-spell-bcs.html' title='Fox Sports can&apos;t spell &quot;BCS&quot;'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4961404159516547734</id><published>2007-11-22T23:01:00.000-05:00</published><updated>2007-11-22T23:18:04.758-05:00</updated><title type='text'>Blog address updated</title><content type='html'>Procrastination finally got the best of me, and I sat down with my closest adviser, &lt;a href="http://www.keiths.ca/"&gt;Alexander Keith&lt;/a&gt;, and between the two of us we managed to get the "Wagon Queen Family Truckster" blog moved over to the new address of blog.timwingfield.com - complete with snappy new name. (I was blessed with the name of Wingfield...the rest, as they say...) In addition to the move, I'll also start putting my tech related posts here and allow the &lt;a href="http://slight-weapons-malfunction.blogspot.com/"&gt;Slight Weapons Malfunction&lt;/a&gt; blog to lapse...well, lapse more.&lt;br /&gt;&lt;br /&gt;Turns out my blog-per-subject thought wasn't one of my better ones. I'm still maintaining &lt;a href="http://betteronice.blogspot.com/"&gt;the hockey blog&lt;/a&gt; separate because I can manage enough posts to make that work, and I've added a couple other contributors. But, the tech only blog suffered from lack of content, and the personal blog started to get better. Combining the two subjects just seems to make sense for less to manage. Plus, I can put a little something at that timwingfield.com address I acquired earlier this year.&lt;br /&gt;&lt;br /&gt;So, if you're subscribed to family-truckster.blogspot.com, you'll want to update your subscription. &lt;code&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4961404159516547734?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4961404159516547734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4961404159516547734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4961404159516547734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4961404159516547734'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/11/blog-address-updated.html' title='Blog address updated'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8530279319618924538</id><published>2007-11-17T20:13:00.000-05:00</published><updated>2007-11-17T20:53:47.140-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ohio State'/><category scheme='http://www.blogger.com/atom/ns#' term='Mike Hart is a douche'/><category scheme='http://www.blogger.com/atom/ns#' term='Ohio State v. Michigan'/><title type='text'>The Game goes to the Buckeyes</title><content type='html'>Off the top, I need to give some credit to Chad Henne. I have a new respect for Henne. The guy has a sack the size of the state of Michigan. He is beyond injured, has been for weeks, and guts out the game today. The performance wasn't that good, but upon returning from the locker room, Lloyd tried to keep him out of the game, but I think the coach would have needed two Clydesdales, a John Deere, and a Cat dozer to keep Henne off the field. Henne is a gamer, and for that I tip my (scarlet and gray) hat to him.&lt;br /&gt;&lt;br /&gt;At the other end of the spectrum...what little respect I had for Mike Hart is now gone. The guy ran his mouth after losing last year, ran his mouth after the MSU game, ran it again before the game, and ran it during the game...the only thing he couldn't run was the goddamned football.&lt;br /&gt;&lt;br /&gt;Hey, Mike, guess what: There was a football game today. Your QB who has had to sign his name left handed for the last 3 weeks managed to show up, where were you? Oh, that's right, flapping your gums. Sitting out the Wisconsin game to "get ready" to run for 44 yards. On top of that you have 0 wins vs. Ohio State. In one of your pre-game jaw workouts you said, "I'd rather lose to Appalachian State than to Ohio State." Guess what big boy, you managed to do both this season. Mike Hart's career tally vs. App St and Ohio St. - 0-fer how ever many games you played. (0-5 for those of you scoring at home.)&lt;br /&gt;&lt;br /&gt;Even better out of Hart, when the game got tough and his ankle got a little sore, off to the sidelines. Took himself off the field. Henne, as mentioned previously, would have gone out on the field looking like the &lt;a href="http://www.warcraftmovies.com/tinymce/jscripts/tiny_mce/plugins/imagemanager/images/51943/monty_python_2__limbless_black_knight.jpg"&gt;Black Knight in Monty Python's Holy Grail&lt;/a&gt;. But not Hart. His team can't do shit and he's got an ouchy boo-boo, so off to the bench he goes. Turns out you can talk the talk Mike, but it ends there. Greatest running back in Michigan history? 0 and four, pal.&lt;br /&gt;&lt;br /&gt;Enough about that, how about the Big Ten Champion Ohio State Buckeyes? Turns out that defense can bounce back from Juice-fest a week ago. That the offense isn't flashy or exciting, but can win football games. Seems Beanie Wells knows how to run the football a little bit...or, maybe a lot. Michigan's tackles will be having nightmares about Vernon Gholston for a few weeks.&lt;br /&gt;&lt;br /&gt;So, in OSU's win, they didn't have the flash and dash of Troy Smith in the backfield, but they didn't need that this time around. With a defense giving up under 100 yards and all of 3 points, giving the ball to Beanie over and over was sufficient. Sure, it got boring late in the second half, but taking chances wasn't needed.&lt;br /&gt;&lt;br /&gt;So, today's running back match up yielded two important things: 1. Beanie Wells is a big game, big time running back. 2. Mike Hart(less) is no Beanie Wells.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8530279319618924538?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8530279319618924538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8530279319618924538' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8530279319618924538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8530279319618924538'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/11/game-goes-to-buckeyes.html' title='The Game goes to the Buckeyes'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4278439397704874203</id><published>2007-10-29T21:25:00.001-04:00</published><updated>2007-10-29T22:51:36.249-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='baseball sucks'/><title type='text'>Baseball is OVER!!</title><content type='html'>Thank goodness, the baseball season has finally come to an end.&lt;br /&gt;&lt;br /&gt;They're finally done dragging the season out. Yeah, I'm a hockey fan, and the NHL takes heat for the 8 month season, but there's actual action in a hockey game...9 months of it isn't enough. But, this isn't about hockey, I do enough of that &lt;a href="http://betteronice.blogspot.com/"&gt;here&lt;/a&gt;, this is about baseball and all its annoyances...&lt;br /&gt;&lt;br /&gt;First of all, the bane of all my Tribe fan buddies' existence is the off game in the middle of the three game home stand. Don't these guys spend all summer playing three and four game series? Don't they string three series together at times, playing 9 or 10 straight days? You get a "travel day" to get alllll the way from Boston to Cleveland, and then you need an off day in Cleveland after game 4? Why? Sight seeing? The Rock and Roll Hall of Fame is nice, but I'm sure Schilling can bring the family back in January to see it. (Because what's more beautiful than Cleveland in January? Well, other than Buffalo...) The NL was done by then, there was no baseball on, just the Sawx and Tribe lounging around in Cleveland in October waiting on the first lake effect snow.&lt;br /&gt;&lt;br /&gt;Secondly, why do playoff games take 4 and a half hours? Extra innings puts you into the wee hours of the morning. During this year's playoffs I managed to watch a whole football game (Ohio State @ Purdue) during roughly 8 innings of a baseball game, and I got an entire Jackets game in before the 7th inning even started in one of the ALCS games. Honestly, Fox, do you need to start these games at 8 and end them at 1:26 in the morning? I understand that the American League is involved in at least half the playoff games, so I expect them to take a while, but even AL fans are complaining about how long these games are taking.&lt;br /&gt;&lt;br /&gt;And finally, Sawx fan should be thrilled that they just won the Series in less than 85 or so years from the previous one. Do they celebrate? No, they bitch and moan because A-Rod decided to use that day to say he wouldn't be a Yankee next year. So what? You guys hate the Yankees anyway, right? You have the ultimate "SCOREBOARD!" on them, why whine about one of their players announcing they'd leave? Suck it up a little Sox fan...sheesh. You'd think the whole A-Rod thing was like the press would act if Joe Torre turned down a contract with the Yankees. (What? He did? How'd I miss that??)&lt;br /&gt;&lt;br /&gt;So, now we're on to the once daily gold glove, Cy Young winner announcements to keep baseball in the news until Christmas or so...or long since forgotten by any self-respecting football fan. I'm sure some member of the Yankees will take a dump in the next 24 hours and the press will be all over it for us. Hell, somebody might actually spot the National League, but nobody in the press would notice because the Yankee turd would probably be a world record of some kind.&lt;br /&gt;&lt;br /&gt;Ahhh, baseball season is over...pitchers and catchers report in only 48 hours or so...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4278439397704874203?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4278439397704874203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4278439397704874203' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4278439397704874203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4278439397704874203'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/10/baseball-is-over.html' title='Baseball is OVER!!'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7033565030567250619</id><published>2007-10-13T18:03:00.000-04:00</published><updated>2007-10-13T18:20:45.673-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DirecTV'/><category scheme='http://www.blogger.com/atom/ns#' term='CBS'/><category scheme='http://www.blogger.com/atom/ns#' term='WOW'/><title type='text'>Stupid TV...</title><content type='html'>As blogged last week, I'm supposed to be in Lexington with my brother watching the LSU-Kentucky football game. (Currently LSU is up 10 playing under cloudless skies.) I'm not in Lexington because CBS decided this should be a 3:30 game rather than the 7PM start it was originally scheduled to be. When did they make this decision? Last Sunday.&lt;br /&gt;&lt;br /&gt;Since Kevin coaches JV football, we weren't going to make it from Waynesfield, OH to Lexington and get parked and get in the stadium in 3 hours. One traffic delay would mean $200+ in tickets would have gotten us maybe a half of football...and no pre-game beers. So, thank you CBS, for trashing a pretty good plan the Wingfield boys had in place. (Kev did get the tickets sold, and we lost $30 a piece on them. Could have been worse.)&lt;br /&gt;&lt;br /&gt;Stupid TV gripe part two...WOW taking a dump on hockey fans...&lt;br /&gt;&lt;br /&gt;I've managed the first two weeks of the NHL season without Center Ice...barely managed. Why? WOW currently isn't carrying it, and indications are they aren't going to carry it at all this year. What that means here is we're likely about to become DirecTV customers again. So, after three years of WOW cable, all three where they offered the Center Ice package, it's time to leave. In this instance, choice is nice. (And, no, Time-Warner isn't an option...same crap as WOW, different name. Plus, DirecTV is offering 35 or so HD channels at the moment...about 34 more than TW or WOW have....)&lt;br /&gt;&lt;br /&gt;In the meantime, though, no Hockey Night In Canada...&lt;br /&gt;&lt;br /&gt;In other news, Iowa won a football game today. I might mention that in my weekly recap tomorrow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7033565030567250619?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7033565030567250619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7033565030567250619' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7033565030567250619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7033565030567250619'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/10/stupid-tv.html' title='Stupid TV...'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5012106910346919702</id><published>2007-10-07T17:51:00.000-04:00</published><updated>2007-10-07T18:08:40.690-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='college football'/><title type='text'>The Cardinal unrolls a Trojan</title><content type='html'>The debate over whether USC or LSU should be #1 ended yesterday as Jim Harbaugh, everybody's favorite Michigan grad, and his Stanford Cardinal pulled off the big upset of USC. If not for Appalachian St. beating Harbaugh's alma mater, it may have been the biggest upset of the year.&lt;br /&gt;&lt;br /&gt;So, while USC was losing at home, Florida was going down in Death Valley. Imagine that, LSU winning a night game at home...whodda thunk it? Even in guiding his team to its second loss in two weeks, Tim Tebow is rumored to have passed a loaf on the sidelines and daisies immediately sprang forth and children were heard to be signing.&lt;br /&gt;&lt;br /&gt;In the grand ol' Big 10(11), the suckitude continued...this time it was Wisconsin dropping, and at the hands of upstart Illinois. The Illini find themselves one 6 point loss to Mizzou from being tied with Ohio State for the outright lead. Other semi-surprises were Indiana winning again, and Northwestern taking down MSU in OT. Non-surprises of the weekend...Ohio State winning at Purdue and Iowa losing. Again.&lt;br /&gt;&lt;br /&gt;So, the joy of college football rolls on. We sit with three undefeated teams at the top, and a bunch of one-loss teams behind them. Can Ohio State survive trips to State Penn and Ann Arbor? Will Cal survive another showdown with USC? Will LSU survive the always tough, and ridiculously deep SEC? (Kev and I will be in Lexington next week...will they bite it there at the hands of UK?) One thing's for sure, there's enough drama left in this season to give the BCS boys fits again.&lt;br /&gt;&lt;br /&gt;Good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5012106910346919702?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5012106910346919702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5012106910346919702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5012106910346919702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5012106910346919702'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/10/cardinal-unrolls-trojan.html' title='The Cardinal unrolls a Trojan'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-6856641770142090610</id><published>2007-09-30T15:25:00.000-04:00</published><updated>2007-09-30T15:52:50.721-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='college football'/><title type='text'>Upsets galore!</title><content type='html'>I love college football and all the fun that goes with it. Yesterday was one of those days that keeps you tuning in with half the top 10 falling. Sure, Ohio State will benefit by not losing and climb into the top 5, but so many big losses on one day was amazing to watch. Of course "them" at ESPN were banging on LSU early on yesterday afternoon because they "started slow" and only beat Tulane by 25 points. Wonder if Florida, Texas, Oklahoma, W. Va, and Rutgers would trade places with LSU about now? Guessing they would...&lt;br /&gt;&lt;br /&gt;For the fun in the crap fest that is the Big 10, all kinds of great stuff happened. Penn St showed that they were marginally overrated by losing their second game in 2 weeks, this time to Illinois. Michigan continued their meteoric rise from 1-AA doormat by putting a 12 point whupping on Northwestern. (Psst, meatchicken...Ohio State didn't need the whole game to put 28 up on the 'Cats. Hell, they didn't even need the whole first quarter. Just sayin'...) Indiana went into Iowa and won, guess Kirk will have to wait another year to try and remove the pretender tag. Wisconsin, while boring as hell just continues to win. November 3rd is looming large on the horizon. And to cap the day, Purdue dropped ND to 0-5...way to go Boilers! Your reward is the Buckeyes...enjoy.&lt;br /&gt;&lt;br /&gt;I don't have the stat attack from last week, instead, I'm going to introduce my new favorite player...at least for this week: Wes Byrum, K, Auburn University.&lt;br /&gt;&lt;br /&gt;Probably not a big stretch to figure out that I'm happy to see Florida lose. (At anything...football, basketball, baseball, hockey, lumberjack competitions, whatever.) And Wes had a big hand...er, foot in knocking off the Gators yesterday. However, he's my new favorite player not because he had to kick the game winning field goal - not once, but twice - but because before the thing even cleared the uprights, he was celebrating. And what way did young Wes decide was the best way to celebrate? By turning and giving the Gator Chomp back to the good folks at The Swamp. Atta boy, Wes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-6856641770142090610?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/6856641770142090610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=6856641770142090610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6856641770142090610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6856641770142090610'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/09/upsets-galore.html' title='Upsets galore!'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2520421758331574453</id><published>2007-09-27T21:52:00.000-04:00</published><updated>2007-09-27T22:56:53.885-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hockey'/><category scheme='http://www.blogger.com/atom/ns#' term='coaching'/><category scheme='http://www.blogger.com/atom/ns#' term='soccer'/><title type='text'>Coaching Soccer</title><content type='html'>A few weeks ago at practice Brendan's coach asked for volunteers to help coach in case he was out of town, and I deftly pointed at another dad and said, "He'll do it!" Nice job, Timbo, you volunteered. (And other dad didn't think it was too funny, and now thinks you're pretty much a douchebag. Two birds with one stone as only I could do it...) After practice, I talked to John and said that I've coached hockey for a couple years, and though I know nothing about soccer I can help maintain order.&lt;br /&gt;&lt;br /&gt;So, tonight was the big night. John's out of town, his assistant is out of town, so practice is being run by his wife, Lisa, and yours truly. Thankfully Lisa had played soccer since she was five, and I believe played in college. I, on the other hand, know a soccer ball is round, that you can't use your hands if you're not the goalie, and in a wager for a beer could probably explain offsides. I mentioned that to Lisa at the game on Saturday and she told me not to worry because, "...it's just like hockey!"&lt;br /&gt;&lt;br /&gt;Sure it is...but there are a few minor differences. Off the top, offsides doesn't involve a blue line. How do you know if you're in the wrong place without a big blue line??? That's just insane. Secondly there's the whole ball v. puck thing...when a puck rolls, that's a bad thing. Protective gear for a soccer player involves a couple of shin guards. (Though after watching these kids kick at each other, helmets, shoulder pads, and hockey pants wouldn't be a bad idea.) And finally, a goalie doesn't need an additional 45 minutes to get dressed in more leather gear on than Carrie Ann Moss in the Matrix to play in net. (I believe they're also called a "keeper." What the hell are they keeping???)&lt;br /&gt;&lt;br /&gt;So, with those formalities worked out, I figured I'd be OK. It's a group of 8 year old kids like any other group of 8 year old kids. They'll run around do the drills as instructed and hopefully enjoy themselves. Wow was I mistaken...it was a mess. Yelling, laughing, crying, running, kicking...and that was just two kids going to a water break.&lt;br /&gt;&lt;br /&gt;Now, I know kids will be kids and they have their moments of not paying attention at all, but this seemed to be a whole new level. Not that the kids that put on skates are any better or worse, but had this been a hockey practice there would have been a lot of skating. Not to mention a lot of yelling and a lot of whistles. Are hockey kids different kids? No, I don't think so. But, their coach comes armed with more than a whistle...he's got hockey gloves on and a stick in his hands.&lt;br /&gt;&lt;br /&gt;So, I enjoy working with kids in sports, but I don't envy the soccer and baseball coaches of the world...not at all. I'll stick to coaching hockey, where the little rug rats are contained by boards and glass.&lt;br /&gt;&lt;br /&gt;And I have a stick and gloves...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2520421758331574453?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2520421758331574453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2520421758331574453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2520421758331574453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2520421758331574453'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/09/coaching-soccer.html' title='Coaching Soccer'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-4384209898383867498</id><published>2007-09-23T10:06:00.000-04:00</published><updated>2007-09-23T12:51:19.412-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='college football'/><title type='text'>The fun of College football - 9.22.07</title><content type='html'>I basically had the house to myself yesterday to work on a presentation for work. During the day the TV stayed tuned to college football, which is pretty much normal for a Saturday around here. I took my scheduled break from the presentation at 3:30 to watch Ohio State play Northwestern. At 3:42, with the Buckeyes firmly in control, I went back to work.&lt;br /&gt;&lt;br /&gt;Complaint time: Locally the OSU game got swapped with the meeshigan v. State Penn game on Mickey's family of networks. So, OSU on ABC, the "other game" to ESPN. Both in HD...or so you would think. Here's what happened on my cable network...they switched OSU to ABC on both feeds, but only switched the meatchicken game on the regular feed. So, I had two HD feeds of Ohio State eeking out a 51 point win. Would it REALLY be that hard to have swapped out both, WOW? Just wondering. (While you're at it, why don't you maybe list that FSN's HD feed shows glorious, high definition football all Saturday as opposed to your listed "HD Promo" when the Reds or Jackets aren't on in HD?)&lt;br /&gt;&lt;br /&gt;On to other football related things, and right off the top...Dear LORD how bad is the Big 10(11)??? Ohio State is emerging as the top of the conference once again, and they're in a down year. Penn St couldn't beat a team that couldn't beat a team from 1-AA who couldn't beat a different 1-AA team yesterday! (If you didn't follow all that, App St's win streak came to an end yesterday at the hands of Wofford 42-31. Associative property of football states that Wofford v. Penn St should be a helluva football game.) Michigan St might be good, but they beat Notre Dame, so they could suck. Wisconsin and Iowa was fun to watch...if you tuned in only for the last 5 minutes of each half. Speaking of Iowa, they get great run in the press every year it seems, only to fall flat at some point or points. If Ference is such a stud as a coach, when is he going to sack up and win the Big 10? Outright, Iowa Fan, not by tying teams you don't play. (I notice that neither Ohio State or what's left of michigan are on Iowa's schedule...hmmm...)&lt;br /&gt;&lt;br /&gt;Other games I caught a bit of were the Browns-Bengals-esque, "Defense is overrated" score fest in Stillwater, OK and the Georgia v. Bama game. Gotta admit, I don't mind watching Saban lose football games. And that one was an OT thriller. Bama ties it up with just over a minute left after trailing pretty much the whole game only to go 3-and-field goal in OT and have the Dawgs score on their first play from scrimmage. In a game I didn't see, Tim Tebow rebounded from his horrendous 1 INT game a week ago to throw two TDs and run for two TDs as the Gators held off Ole Miss. Thankfully he got it together, as rumor has it he took a dump last week and it actually DIDN'T smell like fresh cut roses.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Big Gainers (But not big winners)&lt;/span&gt;&lt;br /&gt;1. Brian Brohm, prolific passer from Lousiville, put the ball up 65 times yesterday and threw for 555 yards and 4 TDs in a losing effort. (To Syracuse of all teams.)&lt;br /&gt;&lt;br /&gt;2. Not to be out done, MAC powerhouse Ball State waltzed into Lincoln, NE yesterday and marched up and down the field on the vaunted Black Shirts to the tune of 610 yards total offense. Or, only 153 more yards than USC had in the same stadium a week ago. In two weeks Nebraska fans have seen over 1,000 yards total offense and 89 points against the Huskers. Be glad Oklahoma isn't on the schedule...&lt;br /&gt;&lt;br /&gt;3. Finally, scoffing at the 600 yard mark was Texas Tech QB Graham Harrell who went 46/67 for 646 yards and 5 TDs, but it wasn't enough to beat Ok St.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-4384209898383867498?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/4384209898383867498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=4384209898383867498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4384209898383867498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/4384209898383867498'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/09/fun-of-college-football-92207.html' title='The fun of College football - 9.22.07'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-5220030732389958025</id><published>2007-09-09T18:27:00.000-04:00</published><updated>2007-09-09T18:52:18.414-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><title type='text'>Giant Eagle's a little slice of beer heavan</title><content type='html'>That's right, it's a regular blog-o-rama here today at the Truckster. We go in spurts...doesn't make me a bad person...&lt;br /&gt;&lt;br /&gt;If you're a beer snob and haven't discovered Giant Eagle's beer section yet, you're missing the best beer selection I've ever seen in a chain grocery store. I discovered this a few years back when Giant Eagle landed in Columbus. Any store that builds a walk-in beer cooler in the middle of the store is going to get my business, and I've bought plenty of non-pale American pilsner beers there.&lt;br /&gt;&lt;br /&gt;Today, however, it seemingly got better. My local Giant Eagle expanded beyond the cathedral like cooler. Today I noticed the following available in The Beer Section:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.chimay.com/en/chimay_blue_220.php"&gt;Chimay&lt;/a&gt; - If you've never tried this Trappist Ale, you're missing out. I bought a bottle of the Grand Reserve (blue label) to enjoy during the opening of the NFL season. No Bud Light in this house for football games.&lt;/li&gt;&lt;li&gt;Inside the cooler was a nice selection of &lt;a href="http://www.merchantduvin.com/pages/5_breweries/samsmith.html"&gt;Sam Smith's&lt;/a&gt; beers. The Oatmeal Stout gets most of the accolades, but I've had four or five from Sam Smith, and none of them are disappointing.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Next up was one I'd already purchased, but my purchase was in 6 pack form previously. Giant Eagle went above and beyond in providing a full 2 liter growler of &lt;a href="http://www.rogue.com/brews.html#deadguy"&gt;Rogue Dead Guy ale&lt;/a&gt;. Dead Guy on tap is one of my favorites, but the bottles aren't quite the same. In the growler though, should be closer to draft than bottled. That purchase will have to wait, becuase...&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.arrogantbastard.com/"&gt;Arrogant Bastard&lt;/a&gt; is available!! That's right, one of the greatest brews ever is on sale now at Giant Eagle. I found this one a couple of years ago when Garnett served me one, but didn't stumble across it again for a while. Then during Blankensoft's going away party we found that BJ's on Polaris had it on tap. And now to find bottles of it available at a local grocery? I reigned myself in and only bought 3 bottles.&lt;/li&gt;&lt;/ul&gt;Thankfully the Chimay and Arrogant Bastard I purchased have a high alcohol content...helps dull the pain of the Bears 4 turnovers. Add in their up-the-gut failers on 2nd and 2, 3rd and 3, and 4th and 2, and it's time for more beer...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-5220030732389958025?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/5220030732389958025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=5220030732389958025' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5220030732389958025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/5220030732389958025'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/09/giant-eagles-little-slice-of-beer.html' title='Giant Eagle&apos;s a little slice of beer heavan'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2562485221096597916</id><published>2007-09-09T14:27:00.000-04:00</published><updated>2007-09-09T16:00:51.450-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='college football'/><title type='text'>Let's Go Blue!!</title><content type='html'>Here in the heart of Buckeyedom, the beloved men of the fighting nuts are off to a less than stellar start. Granted, they're 2-0, but taking down Youngstown St and following it up with a 20-2 shellacking of Akron isn't enough to keep the natives from getting mildly restless.&lt;br /&gt;&lt;br /&gt;But, look!! Over there!! MICHIGAN IS SUCKING!!!&lt;br /&gt;&lt;br /&gt;Like the allure of something shiny, watching the Wolverines drop their first two games has kept many scarlet and gray fans pretty happy. Sure, there are a few that spew out the hooey that they want Michigan to be undefeated going into The Game...spare me. Find me a Buckeye fan who shed a tear over Appalachian St taking down big blue a couple weeks ago. Search Buckeye Nation for a guy who tuned in hoping and praying that Oregon would roll over and play dead. These people - if there are more than one - are in the vast minority.&lt;br /&gt;&lt;br /&gt;Additionally, there are the people who want the win "so the conference doesn't appear weak." Appear weak? Um, too late for that one folks...ignoring last year's stellar BCS and bowl performances by the Big 10 (and that mess in the desert still stings yours truly), it appears Bowling Green might be the best team in the Big 10 this season. Forgot, they're not in the league. OK, we'll give it to Penn State for now...but Wisconsin's domination of UNLV, the aforementioned slow start by the Bucks, Michigan's impression of the Duke football program, and Minnesota's toubles with all things MAC aren't speaking well of the Big 10 so far. Maybe Iowa will finally step above poser status this season. (If they do, they'll still get questioned about it without Ohio State or Michigan on the schedule.)&lt;br /&gt;&lt;br /&gt;But I digress...this is supposed to be about michigan's futility thus far. And my glee in said futility...&lt;br /&gt;&lt;br /&gt;I enjoyed the Appalachian St upset, not only because it was Michigan, but because seeing one of the big programs go down at the hands of one of those teams used to "fill out" the schedule was fun to see. (Since it wasn't Ohio St. it was fun to see.) Add in that App St. was only going to the Big House because the NCAA expanded the schedule for that extra game to make a few more dollars off their storied programs, and it just gets better. (Never mind that we can't have a playoff because we don't want the "student-athletes" playing too many games.) I had to chuckle every time they showed the shocked faces in the crown at Michigan Stadium...and they showed those faces a LOT, so I got a lot of chuckling in.&lt;br /&gt;&lt;br /&gt;So, I tuned in to the Oregon game in the same manner you drive by a car accident...it's there, you don't really want to look, but you could catch a glimpse of some carnage. Maybe even some blood, or a severed limb. Oregon didn't disappoint, and the game wasn't nearly as close as the 39-7 score would indicate. The blood came in the form of boo birds in the Big House. The severed limb? The Bronx cheer when Chad Henne appeared to be leaving the game injured. (Before he finally did leave the field injured.)&lt;br /&gt;&lt;br /&gt;So, no need wiping that grin off your face, Buckeye fan. Boeckman may not be setting the world on fire, but you're 2-0 and not the punchline of jokes such as: How many batteries does it take to shock a Wolverine?&lt;br /&gt;&lt;br /&gt;1-AA.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2562485221096597916?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2562485221096597916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2562485221096597916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2562485221096597916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2562485221096597916'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/09/lets-go-blue.html' title='Let&apos;s Go Blue!!'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8355089307679448995</id><published>2007-08-12T14:52:00.000-04:00</published><updated>2007-08-12T15:35:58.556-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Star Wars'/><title type='text'>Star Wars theory</title><content type='html'>It's no secret I'm a bit of a Star Wars fan. And as any good dad would do, have passed that along to the boys. Brendan is into it way more than Alex, but give Alex a little time.&lt;br /&gt;&lt;br /&gt;Now, as fans go, I'm not walking around daily in Jedi garb. I don't own a Stormtrooper costume, nor do I have memorabilia strewn about the house. The "craziest" Star Wars thing I own beyond the DVDs is a skull and crossbones stormtrooper shirt that my loving wife bought for me at MGM-Studios last summer. I do enjoy the movies, and discussion about them, though.&lt;br /&gt;&lt;br /&gt;I had always taken the story line as it was presented in the theaters...see Luke struggle with becoming a Jedi, meet his father, find his sister, and defeat the empire. Follow that with how Anakin came to be, how the empire came to be, and how the Jedi were defeated. Add them together in the order they were released and in essence you have a story about Luke and his father. Additionally, I believe the story is told by R2 and 3PO, which I believe was generally accepted in the 80s when the first three movies were coming out.&lt;br /&gt;&lt;br /&gt;Later, during a lunch discussion, &lt;a href="http://www.jeffblankenburg.com/blog/"&gt;Jeff&lt;/a&gt; offered an alternate theory: Watch them in order of chapter, I-VI, and it becomes a story of the rise and fall of Darth Vader. I found that theory to be pretty interesting, and have passed it along in other discussions.&lt;br /&gt;&lt;br /&gt;Then today I'm reading Neal Ford's blog for the first time. Not sure why I hadn't read it before, Neal is an excellent resource in the tech field, and I saw him speak twice at &lt;a href="http://www.codemash.org"&gt;CodeMash&lt;/a&gt; last January and enjoyed both sessions. However, in the middle of Neal's blog I come across &lt;a href="http://memeagora.blogspot.com/2007/02/inside-edition-star-wars.html"&gt;a post&lt;/a&gt; that discusses another theory about Star Wars: &lt;a href="http://www.morningstar.nildram.co.uk/A_New_Sith.html"&gt;A New Sith, or Revenge of the Hope&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're a mild fan of Star Wars, read that...it'll get the wheels turning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8355089307679448995?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8355089307679448995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8355089307679448995' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8355089307679448995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8355089307679448995'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/08/star-wars-theory.html' title='Star Wars theory'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2453966289994860785</id><published>2007-07-07T11:51:00.000-04:00</published><updated>2007-07-07T15:22:50.472-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Columbus'/><category scheme='http://www.blogger.com/atom/ns#' term='4th of July'/><category scheme='http://www.blogger.com/atom/ns#' term='Red White and Boom'/><title type='text'>Red, White, and Blah</title><content type='html'>July 3rd, 1776 was a big day in American history. It had to be, otherwise the city of Columbus wouldn't have a huge celebration that day. Red, White, and Boom, the annual celebration on the river followed by the big fireworks display, is done to celebrate...Thomas Jefferson crossing the last t and dotting the last i? It's an interesting choice of days, but that's only the beginning of my griping...&lt;br /&gt;&lt;br /&gt;I enjoy a good fireworks show as much as the next person, and Red, White, and Boom is a pretty big fireworks show. The music is usually done well with the fireworks, and the TV production is pretty good. The addition of high def this year made the TV version even better...even more reason to not fight the million or so people clogging downtown Columbus. But, even watching from home, the July 3rd extravaganza still comes up a bit short of the patriotic celebration its supposed to be.&lt;br /&gt;&lt;br /&gt;Though I'm as big of an Ohio State fan as there is, I've yet to figure out what the Across the Field has to do with the 4th, er 3rd of July. The assumption that no celebration can take place in this city without including THE Ohio State University seems a bit short sighted. If there's a large crowd gathered, the fight song must be played?  I'm all for it if that large crowd is seated at Ohio Stadium, but celebrating the day before the Nation's birthday doesn't seem like the best place for it.&lt;br /&gt;&lt;br /&gt;While we're on music, possibly my biggest gripe is the choice of finale music. It should be a constitutional amendment that all July 4th (3rd) celebrations should be required to close with either Stars and Stripes Forever or the 1812 Overture. It's the 4th of July. It's the birthday of the US of A...you should go home humming the Stars and Stripes Forever, not some random song selected by the good folks that also run The Morning Zoo.&lt;br /&gt;&lt;br /&gt;Lastly, I realize we're in the age of sponsorships everywhere. But, did we need to pause the music and fireworks to announce that the grand finale was up next and it was brought to you by Ashland? Who announces the grand finale? I'm glad it was sponsored, and I'm glad Ashland got their name out there, but it seemed like the ultimate interruption. In most fireworks shows you build up to the grand finale, and the sense of anticipation of, "Is this the start of the finale?" is part of the fun of the whole show. Not this year, no anticipation...slight pause and then: "COMING UP NEXT, THE GRAND FINALE! PAY ATTENTION PEOPLE OF COLUMBUS, DON'T MISS IT. IT'S BROUGHT TO YOU BY ASHLAND CHEMICAL. GRAND FINALE IS UP NOW!!"&lt;br /&gt;&lt;br /&gt;So, in the spirit of Red, White, and Boom, I'm announcing the end of this blog entry...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2453966289994860785?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2453966289994860785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2453966289994860785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2453966289994860785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2453966289994860785'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/07/red-white-and-blah.html' title='Red, White, and Blah'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8460762246383676570</id><published>2007-06-30T12:21:00.000-04:00</published><updated>2007-06-30T12:25:31.518-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snack'/><category scheme='http://www.blogger.com/atom/ns#' term='Alex'/><category scheme='http://www.blogger.com/atom/ns#' term='home'/><title type='text'>Hot Dog and Jelly</title><content type='html'>I'm currently sitting on the deck reading some blogs and such, when Alex comes out of the house with a snack he made himself. This could be a new phenomenon, and if so credit should go to Big Al for inventing the HD&amp;amp;J...&lt;br /&gt;&lt;br /&gt;Take one slice of bread, in his case the heel, and spread a generous amount of stawberry jelly on it. Then take one cold hot dog out of the fridge, place it on the bread, and fold the bread around it. Enjoy.&lt;br /&gt;&lt;br /&gt;He ate at least half of it before he was done with it. That doesn't mean he didn't like it, half is usually where he stops with most things.&lt;br /&gt;&lt;br /&gt;So, give it a shot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8460762246383676570?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8460762246383676570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8460762246383676570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8460762246383676570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8460762246383676570'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/hot-dog-and-jelly.html' title='Hot Dog and Jelly'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8083095073009199979</id><published>2007-06-08T21:28:00.000-04:00</published><updated>2007-06-08T22:06:45.005-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anchorage'/><category scheme='http://www.blogger.com/atom/ns#' term='vacation'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska'/><title type='text'>Last day in AK</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/tim.wingfield/RmoCTfJJ80I/AAAAAAAAAYc/Nfaq4mae5Cw/IMG_1830.JPG?imgmax=800"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.google.com/image/tim.wingfield/RmoCTfJJ80I/AAAAAAAAAYc/Nfaq4mae5Cw/IMG_1830.JPG?imgmax=800" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We didn't do a heck of a lot on our last day in the Last Frontier. Mostly we laid around Mom's place, but we did go out for a picnic lunch by &lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;amp;msa=0&amp;msid=101777923852075900439.000001130e26ef3327287&amp;amp;ll=61.179336,-149.961233&amp;spn=0.013902,0.035191&amp;amp;amp;t=h&amp;z=15&amp;amp;om=1"&gt;Lake Hood&lt;/a&gt;. Lake Hood is the biggest float plane airport in the world, and in the 45 minutes we were there we saw at least 8 planes take off and another 4 or 5 land.&lt;br /&gt;&lt;br /&gt;In addition to all the float planes taking off and landing (watering?) on Lake Hood, Ted Stevens International Airport was directly behind us, so we heard plenty of passenger and cargo jets taking off. Also, off in the distance beyond Lake Hood is Elmdorff AFB, so when we first started eating you could see six F-15s in the distance. (You could hear them long before you saw them.) So, if you're in the mood for watching some airplanes, there are three picnic tables behind the FAA building in Anchorage that will give you a view of small 4 person planes, big passenger jets, and the USAF all in one spot.&lt;br /&gt;&lt;br /&gt;The rest of the afternoon was spent relaxing. We did a quick shopping trip at &lt;a href="http://www.rei.com/stores/16"&gt;REI&lt;/a&gt; and &lt;a href="http://www.wavebooks.com/catalog/index.php"&gt;Title Wave Books&lt;/a&gt;. If we were hikers or campers REI would have been a great place to blow a couple grand. Title Wave Books is an interesting store, and we of course lost Mom in there.&lt;br /&gt;&lt;br /&gt;I made a return trip to the Moose's Tooth for a t-shirt, and had an IPA while I was there. The bar was full, so I stepped outside to their outside waiting area and just looked over the Chugach Mountains a little since we're leaving them in a few hours.&lt;br /&gt;&lt;br /&gt;That will about do it for our first trip to Alaska. We've got to pack and then head for the airport about 11:30 or so for our 1:20am flight back to OH.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8083095073009199979?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8083095073009199979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8083095073009199979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8083095073009199979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8083095073009199979'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/last-day-in-ak.html' title='Last day in AK'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-6893823933697266501</id><published>2007-06-08T12:13:00.000-04:00</published><updated>2007-06-08T13:13:50.962-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vacation'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska'/><category scheme='http://www.blogger.com/atom/ns#' term='Matanuska glacier'/><title type='text'>A little driving in Alaska</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/tim.wingfield/RmkHH_JJ8sI/AAAAAAAAAXE/VfEnH8fbYog/IMG_1769.JPG?imgmax=800"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://lh6.google.com/image/tim.wingfield/RmkHH_JJ8sI/AAAAAAAAAXE/VfEnH8fbYog/IMG_1769.JPG?imgmax=800" alt="" border="0" /&gt;&lt;/a&gt;So far all of our touring has involved little driving. We've driven to things close to Anchorage or in Anchorage, or taken the train for the long haul. Yesterday we took a pretty good drive north east of town to &lt;a href="http://www.reindeerfarm.com/"&gt;Williams reind&lt;/a&gt;&lt;a href="http://www.reindeerfarm.com/"&gt;eer farm&lt;/a&gt; and then on up to the &lt;a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;amp;amp;amp;amp;q=palmer,+ak&amp;ie=UTF8&amp;amp;ll=61.779374,-147.77607&amp;spn=0.054548,0.197067&amp;amp;amp;amp;amp;t=h&amp;z=13&amp;amp;iwloc=addr&amp;om=1"&gt;Matanuska glacier&lt;/a&gt;. The glacier is roughly 90 miles from Anchorage.&lt;br /&gt;&lt;br /&gt;The reindeer farm was interesting. We saw a lot of reindeer, Bruce the moose, and Eddy the Elk. You could feed the reindeer, which everybody did, even Alex. You had to pull grass for Eddy to eat, and not everybody was up for that one, so only Wendy and I fed Eddy. It was very windy while we were there, and there was a lot of glacier dust blowing down the valley, so we didn't stay out with the reindeer too long.&lt;br /&gt;&lt;br /&gt;After leaving the reindeer farm we headed east towards the Matanuska glacier. We traveled on Alaska Rt 1, otherwise known as the Glenn highway. The Glenn is a lot of up and down and turning as it follows the Matanuska river through the valley. It's really not a bad drive, until you get one of the locals in their giant pick-up trucks on your ass because 60 on this curvy road is just "too damn slow!"&lt;br /&gt;&lt;br /&gt;We hit a construction zone on the road, which means the road is only one lane. No flaggers up here, you follow a pilot car through the construction zone. Basically, the westbound side of the road is held while the eastbound side follows the pilot car. When the pilot car reaches the other side, it turns around and takes the cars headed the other direction through. I'd say it was at least a 4 mile construction zone, maybe more, so if you miss the pilot car you've got a 15 or 20 minute wait on its return.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.google.com/image/tim.wingfield/RmkI0fJJ8wI/AAAAAAAAAXk/vc6BETsjNRM/IMG_1801.JPG?imgmax=800"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh4.google.com/image/tim.wingfield/RmkI0fJJ8wI/AAAAAAAAAXk/vc6BETsjNRM/IMG_1801.JPG?imgmax=800" alt="" border="0" /&gt;&lt;/a&gt;Once near the glacier, we took Glacier Camp Rd to get closer, but it required crossing a small bridge that a couple occupants of the car didn't really want to cross. (Turns out had we crossed the bridge it was going to cost us $15 per person to continue on...a steep price to see some ice.) We went back up the hill to the main road, and then went about 100 yards and pulled into the &lt;a href="http://longriflelodge.com/"&gt;Long Rifle Lodge&lt;/a&gt;. What a view while you had your burger here, above is what we saw out the window. And the burger was darn good, too. They also had a one-pump gas station, which is a good thing because we needed a little gas to get us back down into Anchorage.&lt;br /&gt;&lt;br /&gt;We left around 1 and returned about 7:30, so it was a nice afternoon. Here's the &lt;a href="http://maps.google.com/maps/ms?f=q&amp;amp;amp;amp;hl=en&amp;ie=UTF8&amp;amp;t=h&amp;om=1&amp;amp;msa=0&amp;msid=101777923852075900439.000001130c268c098db88&amp;amp;ll=61.578957,-148.460999&amp;spn=0.878478,2.252197&amp;amp;z=9"&gt;map with some place markers&lt;/a&gt; of where we went. Our route took us up the Glenn to the Old Glenn Highway to get to the reindeer farm. after leaving the reindeer farm, we continued on the Old Glenn into Palmer, then north-east to the glacier. Coming home we just stayed on Rt 1 the whole way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-6893823933697266501?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/6893823933697266501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=6893823933697266501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6893823933697266501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6893823933697266501'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/little-driving-in-alaska.html' title='A little driving in Alaska'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-2729920941228344212</id><published>2007-06-07T02:16:00.000-04:00</published><updated>2007-06-07T13:59:56.265-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anchorage'/><category scheme='http://www.blogger.com/atom/ns#' term='vacation'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska'/><title type='text'>Maggie, Flattop, and the Moose's Tooth</title><content type='html'>Today's travels in AK started out at the &lt;a href="http://www.alaskazoo.org/"&gt;Alaska Zoo&lt;/a&gt;. It's really a nice little zoo, well kept, very green, and not 90 degrees. (Like it would have been at the Columbus Zoo today.) We walked around the whole thing in about two hours, and they have some very nice exhibits.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/tim.wingfield/RmewefJJ8pI/AAAAAAAAAV8/nBM14-GdEQ4/IMG_1724.JPG?imgmax=720"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://lh6.google.com/image/tim.wingfield/RmewefJJ8pI/AAAAAAAAAV8/nBM14-GdEQ4/IMG_1724.JPG?imgmax=720" alt="" border="0" /&gt;&lt;/a&gt;We did get to see a local celebrity, &lt;a href="http://www.friendsofmaggie.net/"&gt;Maggie the Elephant&lt;/a&gt;. Maggie has been a resident of the Alaska Zoo since 1983, and is the source of some local controversy. There are those that think Maggie shouldn't be kept in the rather harsh and un-elephant climate of Alaska, and the other side that thinks people should have the ability to see a live elephant at their zoo so long as her health isn't in danger. That's the short, "I'm visiting from Ohio," recap.&lt;br /&gt;&lt;br /&gt;As it turns out, today was Maggie's big day, &lt;a href="http://www.ktuu.com/Global/story.asp?S=6623090"&gt;the zoo decided&lt;/a&gt; it was in her best interest to move her south. A decision as to where hasn't been made, but they want her flown and checked out by two independent vets to ensure that she is healthy enough to fly.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/tim.wingfield/RmevCfJJ8mI/AAAAAAAAAVk/izTHgmcbACs/IMG_1752.JPG?imgmax=144"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://lh6.google.com/image/tim.wingfield/RmevCfJJ8mI/AAAAAAAAAVk/izTHgmcbACs/IMG_1752.JPG?imgmax=144" alt="" border="0" /&gt;&lt;/a&gt;After leaving the zoo, we headed towards &lt;a href="http://en.wikipedia.org/wiki/Flattop_Mountain_%28Anchorage,_Alaska%29"&gt;Flattop&lt;/a&gt; to the south east of Anchorage. I say "towards" because it wasn't all that easy to find. Mom couldn't recall the exact route, the maps we'd looked at the night before told half the story, and even a guy mom asked wasn't totally sure. (If you're up here and looking for how to get there, take O'Malley Rd, to Hilltop Rd, to Upper Huffman Dr and follow the sign at the top of Upper Huffman which points you left and up a gravel road.)&lt;br /&gt;&lt;br /&gt;Once there, we paid the parking fee and walked up to the observation area. The observation area gave us a great view of Anchorage, Susitna, Cook Inlet, and way off in the distance you could see the Alaska range, including Denali. (Mt. McKinley to you lower 48 types.) It was a bit hazy, so Denali wasn't in clear view, but you could see the snow covered peaks off in the distance. Behind us on the observation deck was Flattop, which is one of the most visited parks by the locals. You can hike up to the top of Flattop, but we opted against it sticking with the much easier observation area.&lt;br /&gt;&lt;br /&gt;After taking in the first two periods of the Cup Finals, we headed off to the &lt;a href="http://www.moosestooth.net/index2.htm"&gt;Moose's Tooth&lt;/a&gt;. This place came recommended from mom and two of the tour guides on the train yesterday. It's simple, pizza and beer, but they do both very well. (I've yet to have a bad micro-brew up here, guess the long winters make for some good brewers.) To continue the world beer tour, I had a four beer sampler - Alpenglow Amber, Pipeline Stout, their ESB, and their Fairweather IPA - and followed it up with a glass of the ESB. Though, the IPA may have been the best, I opted for the ESB because I'd had an IPA downtown on Monday.&lt;br /&gt;&lt;br /&gt;That pretty much closed out our Wednesday. We're likely heading off to a glacier tomorrow, but who knows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-2729920941228344212?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/2729920941228344212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=2729920941228344212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2729920941228344212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/2729920941228344212'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/maggie-flattop-and-mooses-tooth.html' title='Maggie, Flattop, and the Moose&apos;s Tooth'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3901039122085721556</id><published>2007-06-06T13:50:00.000-04:00</published><updated>2007-06-06T20:39:34.757-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seward'/><category scheme='http://www.blogger.com/atom/ns#' term='Anchorage'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska Railroad'/><title type='text'>Our day on the Alaska R.R.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/tim.wingfield/RmbzTfJJ8hI/AAAAAAAAAR8/5djjJSbUCHk/IMG_1702.JPG?imgmax=800"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://lh5.google.com/image/tim.wingfield/RmbzTfJJ8hI/AAAAAAAAAR8/5djjJSbUCHk/IMG_1702.JPG?imgmax=800" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Our day started at 4:45 am for our trip on the &lt;a href="http://www.akrr.com/"&gt;Alaska Railroad&lt;/a&gt; to Seward. But, since the sun comes up at 4:30, we had plenty of daylight for our drive to the train depot in Anchorage.&lt;br /&gt;&lt;br /&gt;This was easily some of the best scenery we've seen since we've been here. Our trip to Seward took us out of Anchorage, around Turnagain Arm, past the Chugach mountains, through the Kenai mountains, past Kenai lake, and eventually into Seward on Resurrection Bay. (&lt;a href="http://maps.google.com/maps?f=d&amp;hl=en&amp;amp;saddr=Anchorage,+AK&amp;daddr=Seward,+AK+99664&amp;amp;sll=61.617496,-149.93248&amp;sspn=0.438685,1.128845&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;ie=UTF8&amp;ll=60.812781,-149.655762&amp;amp;spn=1.800333,6.317139&amp;t=h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;z=8&amp;om=1"&gt;Map of our route&lt;/a&gt;. Not the exact route of the railroad, that's the Seward Highway, but that's roughly our travels.)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/tim.wingfield/RmbvUfJJ8VI/AAAAAAAAAQc/YXyWHKLdHM0/IMG_1576.JPG?imgmax=800"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://lh5.google.com/image/tim.wingfield/RmbvUfJJ8VI/AAAAAAAAAQc/YXyWHKLdHM0/IMG_1576.JPG?imgmax=800" alt="" border="0" /&gt;&lt;/a&gt;The train starts out in Anchorage (elev. 38 ft), climbs just over 1,000 feet in the mountains, and then ends up back near sea level in Seward. It varies in speed based on climbing or not and for the scenery outside. It slowed for glaciers and other photo ops, but did about 40 to 45 mph while traveling next to the Turnagain Arm.&lt;br /&gt;&lt;br /&gt;Seward itself isn't a huge destination, it's a pretty typical small coastal Alaska town. Except his one receives a number of cruise ship tourists and is home to the &lt;a href="http://www.alaskasealife.org/"&gt;Alaska Sealife Center&lt;/a&gt;. We walked around the town and visited the Sealife Center, which is well worth the visit. The downer to Seward is that the train stops on one end of town, the Sealife center is on the other. Nana and Brendan decided to walk it, Alex, Wendy, and I decided to wait on the trolley to save Big Al's legs for later. We waited and waited and the trolley never showed...because it only runs on cruise ship visits. So, we got a cab, which took a while to arrive, but got us there for $5. The van was missing a few key parts, one of which was the muffler, but it got the job done.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.google.com/image/tim.wingfield/RmbzjvJJ8iI/AAAAAAAAASE/6BTsftNiG-4/IMG_1709.JPG?imgmax=576"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://lh6.google.com/image/tim.wingfield/RmbzjvJJ8iI/AAAAAAAAASE/6BTsftNiG-4/IMG_1709.JPG?imgmax=576" alt="" border="0" /&gt;&lt;/a&gt;The return trip on the train was just as much fun as the morning trip. We left Seward about 6PM and returned to Anchorage right around 10PM. Plenty of sunshine for photos on the way back, but it was a bit foggy up in the mountains. A couple of the glacier shots make it appear as if the glacier just appears out of the fog. A neat effect, but you miss the upper portion of the glacier.&lt;br /&gt;&lt;br /&gt;All in all a great day. The folks that operate the Alaska Railroad are some of the nicest people we've come across. Each car has their own tour guide, all of which were working for Alex by the time the trip was over. He and Brendan both ended up with AK RR "Security Officer" badges, other small pins, and temporary tattoos. I wouldn't hesitate to take any of the other AK RR trips on a later vacation. (The ONLY downer on the train...the food is expensive and almost mediocre. Everything else was excellent.)&lt;br /&gt;&lt;br /&gt;The Alaska Railroad pictures have been uploaded to our &lt;a href="http://picasaweb.google.com/tim.wingfield/AlaskaTrip?authkey=cPxeehXD6xk"&gt;album&lt;/a&gt;, and there are plenty of them to see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3901039122085721556?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3901039122085721556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3901039122085721556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3901039122085721556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3901039122085721556'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/our-day-on-alaska-rr.html' title='Our day on the Alaska R.R.'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-7845908969936243735</id><published>2007-06-05T01:31:00.000-04:00</published><updated>2007-06-05T01:53:14.161-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anchorage'/><category scheme='http://www.blogger.com/atom/ns#' term='vacation'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska'/><title type='text'>Downtown Anchorage</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.google.com/image/tim.wingfield/RmTGFfJJ8LI/AAAAAAAAAOs/dwTIyAjG9ZA/IMG_1468.JPG?imgmax=576"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://lh3.google.com/image/tim.wingfield/RmTGFfJJ8LI/AAAAAAAAAOs/dwTIyAjG9ZA/IMG_1468.JPG?imgmax=576" alt="" border="0" /&gt;&lt;/a&gt;Today we headed to downtown Anchorage. Mainly to take in the &lt;a href="http://www.anchoragemuseum.org/"&gt;Anchorage Museum of History and Art&lt;/a&gt;, and also to have some lunch. Mom has proceeded to point out a number of really good eateries, but to eat at them all we'd have to stay until late July.&lt;br /&gt;&lt;br /&gt;We parked near the mall and walked everywhere, which wasn't too bad. We ended up covering about 18 blocks in our travels, and it only sprinkled a little bit, so it was a pretty nice walk. There isn't much of a buffer zone between the sidewalk and the street in Anchorage, though, so it can get noisy and a bit tight as double trailered trucks go by 6 feet away.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The museum was really nice. They had some strange contemporary native American art thing going on that was kind of odd, but they had an Alaska exhibit that was very interesting. Thanks to some cruise tour groups, we went through it backwards, but still saw the whole exhibit. They had everything from a full size whaling boat that the Eskimos have used for centuries to a cross section and "pig" from the &lt;a href="http://www.alyeska-pipe.com/default.asp"&gt;Trans-Alaska pipeline&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After the museum, we headed to the &lt;a href="http://www.glacierbrewhouse.com/"&gt;Glacier Brewhouse&lt;/a&gt; for lunch. Mom has had a number of meetings here, and it came highly recommended from her. The food was excellent, and the beer was more excellenter yet. I enjoyed a cask conditioned IPA that was scary smooth. It was 3/4 gone before I realized it. If this place was located in the greater Dublin area, I'd eat there once a week...though I doubt the halibut would be as fresh as it was this afternoon.&lt;br /&gt;&lt;br /&gt;We then strolled back towards the car and did the touristy thing of t-shirt shopping. We also stopped at Town Square Park, which is where the picture of the boys above was taken.&lt;br /&gt;&lt;br /&gt;All in all it was a nice day, and we made it back home in time to watch the Ducks beat the Senators. Nothing like squeezing in Game 3 at 4 in the afternoon, then having dinner.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;oe=utf-8&amp;amp;client=firefox-a&amp;q=town+square+park&amp;amp;amp;amp;near=Anchorage,+AK&amp;fb=1&amp;amp;li=lmd&amp;t=h&amp;amp;hl=en&amp;msa=0&amp;amp;ll=61.217038,-149.890187&amp;spn=0.006943,0.017595&amp;amp;amp;amp;z=16&amp;om=1&amp;amp;msid=101777923852075900439.00000112fa4fb67a6a843"&gt;Map of our travels today.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-7845908969936243735?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/7845908969936243735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=7845908969936243735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7845908969936243735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/7845908969936243735'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/downtown-anchorage.html' title='Downtown Anchorage'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8132468409407752069</id><published>2007-06-04T13:09:00.000-04:00</published><updated>2007-06-04T20:09:11.951-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anchorage'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska'/><category scheme='http://www.blogger.com/atom/ns#' term='Earthquake Park'/><category scheme='http://www.blogger.com/atom/ns#' term='Susitna'/><title type='text'>Sunday in the Land of the 10PM sun</title><content type='html'>Prior to heading up here, a number of people said to me, "Alaska? Now? Won't the sun be up the whole time?" Well, no, that wouldn't be until the first day of summer, and it doesn't happen in Anchorage, anyway. Long days, yes, but not the whole day as Anchorage is too far south.&lt;br /&gt;&lt;br /&gt;Our first full day here was a Sunday, and since mom is a minister, we were required by law to go to church. Mom attends &lt;a href="http://www.turnagainumc.org/"&gt;Turnagain UMC&lt;/a&gt;, which is about 15 minutes from her condo. Once there, we met a number of people there who said, "Oh, Brenda's your mom? I'm so sorry."&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/tim.wingfield/RmRKViWeGHI/AAAAAAAAAM0/EQy0gNrX7dw/IMG_1437.JPG?imgmax=800"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://lh5.google.com/image/tim.wingfield/RmRKViWeGHI/AAAAAAAAAM0/EQy0gNrX7dw/IMG_1437.JPG?imgmax=800" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After church, we had some lunch and headed home to continue recuperating from the previous day's flying. After a good rest, we headed to &lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;amp;msa=0&amp;ll=61.199521,-149.979258&amp;amp;spn=0.013894,0.035191&amp;t=h&amp;amp;amp;amp;amp;amp;amp;amp;amp;z=15&amp;om=1&amp;amp;msid=101777923852075900439.00000112f90395bf8c02b"&gt;Ear&lt;/a&gt;&lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;amp;msa=0&amp;ll=61.199521,-149.979258&amp;amp;spn=0.013894,0.035191&amp;t=h&amp;amp;amp;amp;amp;amp;amp;amp;amp;z=15&amp;om=1&amp;amp;msid=101777923852075900439.00000112f90395bf8c02b"&gt;thquake park&lt;/a&gt; to look over Cook Inlet and see some sights. The picture of the boys looking to the northeast over Cook Inlet as a ship passed. The marker from the link above is roughly where they were standing.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/image/tim.wingfield/RmRJqiWeGGI/AAAAAAAAAMs/vVQ5XtZyDjs/IMG_1435.JPG?imgmax=800"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://lh5.google.com/image/tim.wingfield/RmRJqiWeGGI/AAAAAAAAAMs/vVQ5XtZyDjs/IMG_1435.JPG?imgmax=800" alt="" border="0" /&gt;&lt;/a&gt;To the left of where the boys are is Susitna, which means "Sleeping Lady." Even with my little digital camera, you can see the sleeping lady in the mountain. Her head is to the left, and you can almost see her hair flowing down the hill.&lt;br /&gt;&lt;br /&gt;The airport is near there, as is Lake Hood which is a pretty big float plane base. While we were at Earthquake Park, at least 6 or 8 float planes flew over on their way to somewhere in the middle of Alaska. In contrast, we also watch three 747 cargo jets take off.&lt;br /&gt;&lt;br /&gt;Mom then took us to her favorite tourist place - Fredy Meyer. It's owned by Kroger's so, fairly familiar. I picked up a six pack of &lt;a href="http://www.alaskanbeer.com/"&gt;Alaska Brewing Company's&lt;/a&gt; summer brew, which was quite tasty. We had a traditional Alaska meal of take-and-bake pizza, and then settled in for the evening.&lt;br /&gt;&lt;br /&gt;I put a few photos up from yesterday on Picasa, and will add more as the trip progresses.&lt;br /&gt;&lt;/div&gt;&lt;table style="width: 194px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background: transparent url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat scroll left center; height: 194px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center"&gt;&lt;a href="http://picasaweb.google.com/tim.wingfield/AlaskaTrip?authkey=cPxeehXD6xk"&gt;&lt;img src="http://lh3.google.com/image/tim.wingfield/RmRHASWeGEE/AAAAAAAAANA/Kwx7xUILdUE/s160-c/AlaskaTrip.jpg" style="margin: 1px 0pt 0pt 4px;" height="160" width="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; font-family: arial,sans-serif; font-size: 11px;"&gt;&lt;a href="http://picasaweb.google.com/tim.wingfield/AlaskaTrip?authkey=cPxeehXD6xk" style="color: rgb(77, 77, 77); font-weight: bold; text-decoration: none;"&gt;Alaska Trip&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8132468409407752069?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8132468409407752069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8132468409407752069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8132468409407752069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8132468409407752069'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/sunday-in-land-of-10pm-sun.html' title='Sunday in the Land of the 10PM sun'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-6520402151745762622</id><published>2007-06-04T00:52:00.000-04:00</published><updated>2007-06-04T01:50:41.612-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Anchorage'/><category scheme='http://www.blogger.com/atom/ns#' term='vacation'/><category scheme='http://www.blogger.com/atom/ns#' term='Alaska'/><title type='text'>We made it to the Last Frontier</title><content type='html'>Yesterday was the longest travel day I may have ever been through...literally and figuratively.&lt;br /&gt;&lt;br /&gt;Literally, because a flight from Columbus to Anchorage is 12 hours out of your day when everything is on time. If your plane leaves Columbus an hour late, things seem to get longer. Then when your plane leaves Phoenix late - because in the world according to US Airways Phoenix is between &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Columbus&lt;/span&gt; and Anchorage - things seem to get drawn out even further.&lt;br /&gt;&lt;br /&gt;In reality, we landed in Anchorage 10 minutes later than our original time. The worrying about connections and everything else was for naught, we got here right on time. Right on time was 12:00 am Alaska time...4am EDT for those of you scoring at home. Leaving Columbus at 5:10 for a 11 hour trip means it's gonna be late when you get there.&lt;br /&gt;&lt;br /&gt;Figuratively the longest day because Brendan and Alex were on the trip. Both have flown, but it's been a while, so both were pretty excited about flying on the "big &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;hairplane&lt;/span&gt;." (Alex's words) Their excitement lead to neither of them sitting still the entire trip between Columbus and Phoenix. Not bad, we had a row to ourselves, but only one parent gets to sit in a three seat row with the boys, so no tag teaming them. Unable to tag out until 3:15 minutes into the 4:15 minute flight, dad was worn out...and this was the short leg of the flight.&lt;br /&gt;&lt;br /&gt;Upon arriving in Phoenix, our plane's original departure of 7:20 has been pushed back to 7:45 according to the board at the gate. Cool, we've got 50 minutes before we board another plane for the final leg to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ANC&lt;/span&gt;. Enough time to get a bite to eat and get some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Benedryl&lt;/span&gt; in the boys. Or, so we thought...&lt;br /&gt;&lt;br /&gt;US Airways, front runner as my choice of "Biggest PITA Airline Ever," announces that the plane will board on time. Not a big deal, except Wendy's with the luggage while the boys and I are halfway down the terminal looking for something to eat. (There was a Burger King sign down there, figured that would to the trick.) During negotiations on what to eat - which weren't going well - Wendy comes running up. She's got both pull-carry on bags, my laptop bag, the camera bag, and both the boys backpacks. She was a funky hat short of looking like a Sherpa. I look at her funny and get, "WE'RE BOARDING!! WE'VE GOT TO GO!!" We get her load lightened, and get back to the gate. Needless to say, tensions were running high. We didn't get anything to eat, had no time to settle down from the last flight, and are now being told we need to get on the plane to leave on time. AND the magic of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Benedryl&lt;/span&gt; hadn't been brought out, and without food in him, Brendan wasn't cooperating. "The Incident" then happened...there was yelling, crying, an attempt at force, more yelling, louder crying, more yelling, etc, etc. Somewhere in Phoenix, children's services is probably looking for a man who fits my description.&lt;br /&gt;&lt;br /&gt;Thankfully, the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Benedryl&lt;/span&gt; did it's thing - Brendan eventually took his, in exchange for getting the window seat - so the flight from Phoenix to Anchorage was pretty uneventful. Well, other than being damn near 6 hours long, it was pretty uneventful. I got a movie in, both boys slept, Wendy slept, and we still had three hours to go. Those three hours eventually passed, and we landed in Anchorage just after midnight local time. Mom met us at the bottom of the escalator, and we proceeded to wait on the bags. And wait. And wait. Got the bags, threw them in Mom's car, and Brendan and I went to wait on the shuttle to get to the rental car. And wait. Got on the shuttle, got to the counter and, yup, you guessed it, waited some more. All the waiting was finally over around 2am, and we were in bed by about 2:10.&lt;br /&gt;&lt;br /&gt;Hopefully in the coming days I'll add some more from the trip, hopefully a few pictures. Tuesday we're on a train to Seward, and that should produce some good pictures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-6520402151745762622?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/6520402151745762622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=6520402151745762622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6520402151745762622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/6520402151745762622'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/06/we-made-it-to-last-frontier.html' title='We made it to the Last Frontier'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-3589636260727075792</id><published>2007-05-26T21:45:00.000-04:00</published><updated>2007-05-26T21:55:26.370-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cincinnati Reds'/><title type='text'>Stupid Reds...</title><content type='html'>As all sports fans, I have my ups and downs. Recently I had a couple pretty good ups in watching two of my favorite football teams play for their respective championships as the Buckeyes went to the BCS title game and the Bears to the Super Bowl. Those were obviously followed by two pretty solid lows as both teams failed to win either game...and in the case of the Buckeyes, well, flat out embarrassed. (Of note: If you're favorite team returns the opening kickoff for a touchdown, turn the TV off, it's not going to turn out in your favor.)&lt;br /&gt;&lt;br /&gt;One of my other teams of choice is the Blue Jackets, and their futility is pretty well documented. Every team in the National Hockey League has made the post season except one...guess which one? No biggie, we're six years old, it'll happen, and I'll be there. For each game.&lt;br /&gt;&lt;br /&gt;So, that leads me to the Redlegs. The team I have likely cheered for the longest. My earliest memory of a live sporting event is sitting at Riverfront Stadium with Grandma Betty and Grandad Clyde taking in the Big Red Machine. I have been a Reds fan for as long as I can remember. I've been to World Series games to watch them play. (And win, Tribe Fan, suck on that! Ha!) I've seen them bulldoze Riverfront and build the GAB, neither of which is a bad move. But as of right now they are proud owners of the worst record in baseball.&lt;br /&gt;&lt;br /&gt;Now, SOMEBODY has to have the worst record in baseball, but that somebody has usually been in Kansas City or Detroit or Texas or Tampa...NOT Cincinnati. This is the oldest professional baseball franchise, they're not supposed to be the WORST team in the league!&lt;br /&gt;&lt;br /&gt;So, as with the typical season, I'm not so worried about the playoffs at this point, so just try to win a few games, fellas. And most importantly, take 2 of 3 from the Indians next week. I owe one lunch because of last weekend, already...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-3589636260727075792?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/3589636260727075792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=3589636260727075792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3589636260727075792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/3589636260727075792'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/05/stupid-reds.html' title='Stupid Reds...'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-8080932945383194728</id><published>2007-05-04T21:53:00.000-04:00</published><updated>2007-05-04T22:49:45.831-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='beer'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='Michigan'/><category scheme='http://www.blogger.com/atom/ns#' term='Ann Arbor'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Off to meeeeeshigan...</title><content type='html'>I'm in Plymouth, MI at the moment watching Men in Black and listening to the Sabres and Rangers (currently tied at 1 in the first OT). Originally I was to come up tonight with three of my co-workers to go to &lt;a href="http://www.dayofdotnet.org/"&gt;Day of .Net&lt;/a&gt; in Ann Arbor tomorrow. However, my company has been doing some consulting with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MAIS&lt;/span&gt; department at the University of Michigan, so I came up to bill U of M for 8 hours of consulting today prior to the code camp tomorrow.&lt;br /&gt;&lt;br /&gt;As a drop-out of THE Ohio State University, the irony of consulting at the University of Michigan is not lost on me.  I got a chuckle out of it...especially when adding in my cohort from Quick is a Purdue grad, and one of the lead developers on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;dev&lt;/span&gt; team graduated from Michigan State. I mean, come on Michigan, produce some IT talent already...&lt;br /&gt;&lt;br /&gt;Now comes the part that will make Buckeye Fan shudder...I love Ann Arbor. This is one of the coolest little towns I've been to in a long time. It's basically the U of M surrounded by a few houses, restaurants, and banks, but it's a great little town.&lt;br /&gt;&lt;br /&gt;Highlights of the visit will revolve around the food and beer consumed. For food, we'll start at the top. On the direction of Billy - U of M alum - I headed straight to &lt;a href="http://media.www.michigandaily.com/media/storage/paper851/news/2006/04/13/TheStatement/Best-Burgers.Blimpy.Burger-1847555.shtml"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Blimpy&lt;/span&gt; Burger&lt;/a&gt; for the best burger in Ann Arbor. That wasn't a stretch, it was a great burger. Kind of like the Soup Nazi episode of Seinfeld, you order in a very structured manner (number of patties, bun type, any grilled add-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ons&lt;/span&gt;, and lastly cheese), but the cook coaches you through it. Don't mumble, though, he'll throw something at you. Actually Brian mentioned the Soup Nazi thing, and the cook shot back with, "No, more like a burger Pinochet. Come to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Blimpy&lt;/span&gt;, get a burger and a dictator." The cook was also sporting a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;mohawk&lt;/span&gt;, and making it work...not something everybody can do. But, I digress...the burger, which was more grease than meat, was outstanding. The steak fries that were included, also solid. All in all, it made for a great stomach ache for the afternoon.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;[Hockey Update: Sabres just put away the Rags for the evening...Slugs now up 3-2 in the series.]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Beyond the burgers, we took in two brew pubs, the &lt;a href="http://www.mainstreetannarbor.org/detail.asp?id=111"&gt;Grizzly Peak Brewing Company&lt;/a&gt; and the &lt;a href="http://www.arborbrewing.com/"&gt;Arbor Brewing Company&lt;/a&gt;. They're located about two blocks apart on opposite sides of Main St. The folks at Grizzly get the nod in the food department, the brewers at Arbor do a better job with the beer. Grizzly has a great pulled pork appetizer and I followed it up with a great steak. The steak had some kind of red pepper glaze that was great. The beer at the Arbor Brewing Co...&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;mmmmm&lt;/span&gt;, Mai Bock. End of story.&lt;br /&gt;&lt;br /&gt;Tomorrow is all day code camp...hotel breakfast, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Dominos&lt;/span&gt; pizza for lunch, and hopefully something slightly better than those two combined for dinner...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-8080932945383194728?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/8080932945383194728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=8080932945383194728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8080932945383194728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/8080932945383194728'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/05/off-to-meeeeeshigan.html' title='Off to meeeeeshigan...'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8339867949129086615.post-282042455214514820</id><published>2007-04-30T00:04:00.000-04:00</published><updated>2007-04-30T00:16:12.215-04:00</updated><title type='text'>What's one more blog?</title><content type='html'>I am a glutton for punishment...I barely keep the two blogs I do have current, so what the hell, why not start a third one? (And I'm thinking about a fourth...yikes.)&lt;br /&gt;&lt;br /&gt;Call me kooky, but piling three or four distinct subjects into one massive blog seems like a disservice to those looking for one subject. Which of my nerd buddies cares that I hate Sean Avery with a passion as soon as he puts skates on? Conversely, which hockey reader cares that I bombed a Vista upgrade the other night? (Haven't blogged that one, either...I'm a slacker.) So now I add a third one where anybody that fits in those two groups can now not care about whatever anecdotal stuff my 4 year old produces on a daily basis.&lt;br /&gt;&lt;br /&gt;So, with a nod to the sheer genius that was National Lampoon's Vacation, we title my personal blog. Why Vacation? Well, it was hilarious when I was in the 8th grade for its content, but as I age and pile the kids in my own Family Truckster I view it more as a documentary.&lt;br /&gt;&lt;br /&gt;And with that  we are set down the path of one more blog that I won't update.&lt;br /&gt;&lt;br /&gt;Often.&lt;br /&gt;&lt;br /&gt;Or maybe I will.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8339867949129086615-282042455214514820?l=family-truckster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://family-truckster.blogspot.com/feeds/282042455214514820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8339867949129086615&amp;postID=282042455214514820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/282042455214514820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8339867949129086615/posts/default/282042455214514820'/><link rel='alternate' type='text/html' href='http://family-truckster.blogspot.com/2007/04/whats-one-more-blog.html' title='What&apos;s one more blog?'/><author><name>Tim</name><uri>http://www.blogger.com/profile/11470576015704065027</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><thr:total>0</thr:total></entry></feed>
