<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="http://my.rsscache.com/rsc/rss2.xsl"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:rsscache="http://ns.rsscache.com/1.0"><channel><title>Raible Designs</title><link>http://raibledesigns.com/rd/</link><atom:link rel="self" type="application/rss+xml" href="http://raibledesigns.com/rd/feed/entries/rss" /><description>&lt;a class="linkedin-profileinsider-popup" href="http://www.linkedin.com/in/mraible"&gt;Matt Raible&lt;/a&gt; is a UI Architect specializing in open source web frameworks. &lt;a href="http://raibledesigns.com/contact.jsp"&gt;Contact me&lt;/a&gt; for rates.</description><language>en-us</language><copyright>Copyright 2010</copyright><lastBuildDate>Sun, 29 Aug 2010 14:34:34 -0600</lastBuildDate><generator>Apache Roller (incubating) 4.0 (20071120033321:dave)</generator><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/the_first_day_of_school1</guid><title>The First Day of School</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/the_first_day_of_school1</link><pubDate>Mon, 16 Aug 2010 23:05:19 -0600</pubDate><category>General</category><category>firstday</category><category>jack</category><category>school</category><category>abbie</category><description>Summer isn't over, but my kids' summer vacation is. Today, Abbie and Jack went to their first day of school for the year. I've never seen them more excited, except maybe on Christmas or their birthdays. While taking pictures this morning, I told Jack to smile like he was playing Wii. I was expecting a huge smile, but instead got the pose below. &lt;img src="http://raibledesigns.com/images/smileys/smile.gif" class="smiley" alt=":)" title=":)" /&gt;
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://www.flickr.com/photos/mraible/4899887269/" title="Pretend like you're playing Wii Jack! by mraible, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4121/4899887269_9754511cec.jpg" width="500" height="375" alt="Pretend like you're playing Wii Jack!" style="border: 1px solid black" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I remember loving the first day of school when I was a kid. It's great to see Abbie and Jack doing the same. 
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4120/4900479008_580a191983.jpg" title="Abbie and Jack, entering 1st and 2nd grade" rel="lightbox[firstdayofschool2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4120/4900479008_580a191983_m.jpg" width="240" height="180" alt="Abbie and Jack, entering 1st and 2nd grade" style="border: 1px solid black" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I especially like the thought of the things that follow the beginning of the school year: &lt;a href="http://www.denverbroncos.com/"&gt;Broncos Football&lt;/a&gt;, &lt;a href="http://www.denverpioneers.com/SportSelect.dbml?&amp;amp;DB_OEM_ID=18600&amp;amp;SPID=10862&amp;amp;SPSID=90195"&gt;DU Hockey&lt;/a&gt; and (my favorite) &lt;a href="http://www.winterparkresort.com"&gt;&lt;em&gt;Ski Season&lt;/em&gt;&lt;/a&gt;. It's gonna be a great year.&lt;/p&gt;
&lt;p style="border-top: 1px dotted silver; padding-top: 5px; color: #666"&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href="http://raibledesigns.com/rd/entry/the_first_day_of_school" style="color: #666"&gt;The First Day of School&lt;/a&gt;, 3 years ago.&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=78508954&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=78508954&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=78508954 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/happy_8th_birthday_to_this</guid><title>Happy 8th Birthday to this blog!</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/happy_8th_birthday_to_this</link><pubDate>Sun, 1 Aug 2010 15:48:38 -0600</pubDate><category>Roller</category><category>java</category><category>devoxx2010</category><category>abbie</category><category>blogiversary</category><category>roller</category><category>birthday</category><category>jack</category><category>appfuse</category><description>Eight years ago today, this blog &lt;a href="http://raibledesigns.com/page/rd/20020801"&gt;was born&lt;/a&gt; in the wee hours of the morning. I was inspired to start it after reading &lt;a href="http://onjava.com/pub/a/onjava/2002/04/17/wblogosj2ee.html"&gt;Dave Johnson's article on Roller&lt;/a&gt;. I have to say, it's been a great ride and I remember the early days like they were yesterday. Many of the Java bloggers wrote daily and shared short tips, tricks and snippets on their blogs; much in the same way we do on Twitter today.&lt;/p&gt;
&lt;p&gt;A lot has happened in my life since this blog was started: &lt;a href="http://raibledesigns.com/rd/entry/our_little_girl_has_arrived1"&gt;Abbie was born&lt;/a&gt;, &lt;a href="http://raibledesigns.com/rd/entry/our_little_boy_has_arrived"&gt;Jack was born&lt;/a&gt;, I &lt;a href="http://today.java.net/pub/a/today/2004/07/15/thefuse.html"&gt;started AppFuse&lt;/a&gt;, &lt;a href="http://www.amazon.com/Spring-Primer-Matt-Raible/dp/0974884375"&gt;wrote Spring Live&lt;/a&gt;, had some &lt;a href="http://raibledesigns.com/rd/entry/the_linkedin_journey_continues"&gt;really&lt;/a&gt; &lt;a href="http://raibledesigns.com/rd/entry/enhancing_evite_com_with_gwt"&gt;cool&lt;/a&gt; &lt;a href="http://raibledesigns.com/rd/entry/how_we_hired_a_team"&gt;gigs&lt;/a&gt; and &lt;a href="http://raibledesigns.com/rd/entry/5_years"&gt;gained a whole new perspective on my life&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
For those long time readers, you might've noticed the vacation posts have picked up recently and the technology posts have subsided somewhat. The good news is this indicates I'm having a lot of fun; the bad news is I'm not learning as much as I'd like. Hopefully that'll change soon and I'll be writing about developing apps for the online video space in the near future. There's a good chance the posts about my life and how much fun I'm having will continue, especially as Abbie and Jack continue to grow into world-class skiers. 
&lt;/p&gt;
&lt;p&gt;As usual, I have many ambitions for this fall, including &lt;a href="http://rollerweblogger.org/project/entry/roller_needs_you"&gt;helping Apache Roller&lt;/a&gt;, finishing AppFuse 2.1 and learning how to play the guitar. Along the way, I'll be helping build/release some kick-ass software for a major cable provider, building a sauna in my basement and enjoying the hell out of &lt;a href="http://www.devoxx.com/display/Devoxx2K10/Matt+Raible"&gt;Devoxx 2010&lt;/a&gt;. You can sure I'll be blogging about these along the way, as well as many years into the future.&lt;/p&gt;
&lt;p&gt;Thanks for reading all these years, it's been a fantastic experience. &lt;img src="http://raibledesigns.com/images/smileys/smile.gif" class="smiley" alt=":)" title=":)" /&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=78160190&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=78160190&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=78160190 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/jess_and_lili_s_legendary</guid><title>Jess and Lili's Legendary Wedding on The Lost Coast</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/jess_and_lili_s_legendary</link><pubDate>Thu, 29 Jul 2010 23:54:00 -0600</pubDate><category>General</category><category>wedding</category><category>vacation</category><category>lostcoast</category><category>travel</category><category>friends</category><description>If you're a long-time reader of this blog, you'll know I've been to &lt;a href="http://raibledesigns.com/rd/entry/jason_and_holly_s_wedding"&gt;some&lt;/a&gt; &lt;a href="http://raibledesigns.com/rd/entry/ryan_and_breanne_s_wedding"&gt;great&lt;/a&gt; &lt;a href="http://raibledesigns.com/rd/entry/my_sister_s_fabulous_wedding"&gt;weddings&lt;/a&gt; in the last couple years. This past weekend, I had the pleasure of experiencing yet another fantastic celebration with two old and close friends, Clint and Jess. You might remember Clint from his &lt;a href="http://raibledesigns.com/rd/entry/costa_rica_was_awesome"&gt;wedding in Costa Rica&lt;/a&gt; or when we &lt;a href="http://raibledesigns.com/rd/entry/my_almost_slept_in_a"&gt;almost slept in a snow cave&lt;/a&gt;. I'm happy to report we didn't get in any trouble and everyone survived the weekend without a scratch.
&lt;/p&gt;
&lt;p&gt;My trip to Jess's wedding (on the &lt;a href="http://en.wikipedia.org/wiki/Lost_Coast"&gt;Lost Coast&lt;/a&gt; of Northern California) started with a flight to Portland, Oregon. After arriving, I drove to Clint and Autumn's house in Eugene where we enjoyed some sweet Oregon micros and reminisced about Costa Rica. The next morning, we headed for the wedding; an 8-hour drive. Our road trip was awesome, especially when we started driving through the Redwood Groves on 101.&lt;/p&gt;
&lt;p&gt;We stayed in a &lt;a href="http://www.vrbo.com/30279"&gt;sweet beach house&lt;/a&gt; for the weekend. While it was foggy most of the time, the sun did come out on Saturday. We quickly became surrounded by beautiful views and headed to the beach to relax with Jess.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4152/4837105756_a8c04f820b.jpg" title="Whoo hoo! Sunshine!" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4152/4837105756_a8c04f820b_t.jpg" width="100" height="75" alt="Whoo hoo! Sunshine!" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4147/4837106698_506429dc8c.jpg" title="Taking it all in" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4147/4837106698_506429dc8c_t.jpg" width="100" height="75" alt="Taking it all in" style="margin-left: 10px; border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4152/4836495851_95ef11cf5d.jpg" title="Fog Lifting" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4152/4836495851_95ef11cf5d_t.jpg" width="100" height="75" alt="Fog Lifting" style="margin-left: 10px; border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4089/4836496609_5d5349fe0b.jpg" title="Clint and Jess" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4089/4836496609_5d5349fe0b_t.jpg" width="100" height="75" alt="Clint and Jess" style="margin-left: 10px; border: 1px solid black" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The wedding was on Sunday, a mere block from where we were staying. The ceremony was one of the most heartfelt I've ever heard, especially since the Wedding Official was a friend of the bride's since she was born.&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4127/4837109660_1bf82702c6.jpg" title="Jess and Kai" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4127/4837109660_1bf82702c6_t.jpg" width="100" height="75" alt="Jess and Kai" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4112/4836499239_9fc18dec2f.jpg" title="Smiles all around" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4112/4836499239_9fc18dec2f_t.jpg" width="100" height="75" alt="Smiles all around" style="margin-left: 10px; border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4147/4837113014_b5f0a698f3.jpg" title="Vows" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4147/4837113014_b5f0a698f3_t.jpg" width="100" height="75" alt="Vows" style="margin-left: 10px; border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4148/4837113676_f742506fbc.jpg" title="Aawwwwww" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4148/4837113676_f742506fbc_t.jpg" width="100" height="75" alt="Aawwwwww" style="margin-left: 10px; border: 1px solid black" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The reception afterwards was a truly spectacular party that lasted well into the evening. Clint and I vowed to go to bed early, but we ended up having so much fun we closed the place down. Jess and Lili were an instrumental part in creating a spectacular night, especially with their &lt;a href="http://www.youtube.com/watch?v=zVNYDwQXggI"&gt;wedding dance&lt;/a&gt; and infectious happiness.
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4128/4836504101_199c9821ba.jpg" title="Lili and Jess" rel="lightbox[jessandliliwedding]"&gt;&lt;img src="http://farm5.static.flickr.com/4128/4836504101_199c9821ba_m.jpg" width="240" height="180" alt="Lili and Jess" style="border: 1px solid black" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The next day, we woke up on time, embarked on the 10-hour road trip back to Oregon and enjoyed a quick detour through the &lt;a href="http://avenueofthegiants.net/"&gt;Avenue of the Giants&lt;/a&gt;. I did end up missing my flight home, but it was worth it. Thanks to Lili and Jess (and their families) for showing us such a great time. It was truly spectacular.&lt;p&gt;
&lt;p&gt;
For more pictures, see albums on &lt;a href="http://www.flickr.com/photos/mraible/sets/72157624599819640/"&gt;Flickr&lt;/a&gt;, &lt;a href="http://www.facebook.com/album.php?id=571296711&amp;amp;aid=194884"&gt;Facebook&lt;/a&gt; or the slideshow below.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;object width="400" height="300"&gt; &lt;param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fmraible%2Fsets%2F72157624599819640%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fmraible%2Fsets%2F72157624599819640%2F&amp;set_id=72157624599819640&amp;jump_to="&gt;&lt;/param&gt; &lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fmraible%2Fsets%2F72157624599819640%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fmraible%2Fsets%2F72157624599819640%2F&amp;set_id=72157624599819640&amp;jump_to=" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=78062333&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=78062333&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=78062333 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/scaling_flash_movies_to_match</guid><title>Scaling Flash Movies to match Browser Zoom Levels</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/scaling_flash_movies_to_match</link><pubDate>Tue, 13 Jul 2010 12:18:42 -0600</pubDate><category>The Web</category><category>flash</category><category>javascript</category><category>actionscript</category><category>browsers</category><description>Recently I was tasked with figuring out how to scale the Flash assets in the web application I'm working on. In the app, there's two different Flash assets: a Spotlight (cycles through images) and a Video Player. Before I started working on the issue, our assets would stay the same fixed size no matter what the browser zoom level. You can see this issue in action by going to &lt;a href="http://hulu.com"&gt;Hulu&lt;/a&gt; or &lt;a href="http://fancast.com"&gt;Fancast&lt;/a&gt; and zooming in/out (Command +/- on Mac, Control +/- on Windows). The Flash assets don't scale with the browser's text.
&lt;/p&gt;
&lt;p&gt;I found a &lt;a href="http://delicious.com/mraible/textzoom"&gt;lot of references&lt;/a&gt; for how to trap and handle resizing in JavaScript, so that's the initial path I took. I ended up having issues trapping the resize event in IE, as well as persisting the appropriate zoom level on page reload. Because of this, I ended up using a pure &lt;a href="http://raibledesigns.com/rd/entry/scaling_flash_movies_to_match#actionscript"&gt;ActionScript solution&lt;/a&gt; that works much better. This article shows how I implemented both solutions.
&lt;/p&gt;
&lt;p&gt;
Regardless of implementation, the first change I had to make was to move the height and width from the Flash asset (object/embed/JS) to its surrounding tag (&amp;lt;section&gt; in our app). Then I changed the height/width to 100% on the Flash asset.
&lt;/p&gt;
&lt;p&gt;
&lt;strong id="javascript"&gt;JavaScript Implementation&lt;/strong&gt;&lt;br/&gt;
To allow zooming in ActionScript, I modified our main class to expose a "zoom" method to JavaScript:
&lt;/p&gt;
&lt;pre class="brush: java"&gt;
ExternalInterface.addCallback("zoom", _zoom);

...

private function _zoom(scale:Number):void {
    _view.scaleX = _view.scaleX * scale;
    _view.scaleY = _view.scaleY * scale;
}
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;ActionScript Implementation&lt;/strong&gt;&lt;br/&gt;
In this code, _view refers to the container that holds all the items in the player. To call this method in JavaScript, I added the following code:
&lt;/p&gt;
&lt;pre class="brush: java"&gt;
var windowHeight;
var documentHeight;

$(document).ready(function() { 
    ...
    windowHeight = $(window).height();
    documentHeight = $(document).height();

    $(window).resize(resizeWindow);
}

// Resize Flash assets when page is zoomed
function resizeWindow() {
    var newWindowHeight = $(window).height();
    var newDocumentHeight = $(document).height();
    // if document height hasn't changed, it's a browser window resize
    // event instead of a text zoom - don't change anything
    if (newDocumentHeight === documentHeight) {
        return;
    } else {
        documentHeight = newDocumentHeight;
    }
    var scale = (windowHeight / newWindowHeight); 

    var player = getFlashMovie('playerId');
    if (player &amp;&amp; player.zoom) {
        player.zoom(scale);
    }
    var spotlight = getFlashMovie('spotlightId');
    if (spotlight &amp;&amp; spotlight.zoom) {
        spotlight.zoom(scale);
    }

    windowHeight = newWindowHeight;
}
&lt;/pre&gt;
&lt;p&gt;
This seemed to work well in Firefox, Safari and Opera, but not in IE. I found &lt;a href="http://old.nabble.com/$%28window%29.bind%28%27resize%27,-fn%29-not-working-in-IE-td21447946s27240.html"&gt;this explanation&lt;/a&gt; about why it might not work, but I was unsuccessful in getting IE to recognize a resize/zoom event. 
&lt;/p&gt;
&lt;p&gt;
To fix scaling in our Spotlight asset, I used a similar solution. However, since the Spotlight didn't have all its elements in a container (they were being added directly to the stage), I had to refactor the code to add a SpotlightView (extends Sprite) that contains the bulk of the code.
&lt;/p&gt;
&lt;p&gt;Browsers persist the zoom level you've set for a site. The problem with the solution used here is it only scales up and down properly if you start from scale = 1 and revert to scale = 1 before leaving the site. If you zoom in and close your browser, when you come back the flash movies will be scale = 1 while the rest of the site is zoomed in. To solve this problem, I attempted to save the scale value in a cookie. This worked, and I was able to read the cookie in the *.as files to scale the movie correctly. However, I experienced some issues with this approach and didn't like having to delete cookies when I wanted the Flash assets to scale correctly.
&lt;/p&gt; 
&lt;p&gt;&lt;strong id="actionscript"&gt;ActionScript Implementation&lt;/strong&gt;&lt;br/&gt;
After discovering issues with the JavaScript implementation, I did some research to see if it was possible to listen for the browser resize event in ActionScript. The &lt;a href="http://www.republicofcode.com/tutorials/flash/as3fluidresize/"&gt;Flash Fluid Layouts and Stage Resize in AS3&lt;/a&gt; tutorial clued me in that the stage could listen for a resize event. 
&lt;/p&gt;
&lt;pre class="brush: java; toolbar: false"&gt;
stage.addEventListener(Event.RESIZE, resizeListener); 
&lt;/pre&gt;
&lt;p&gt;After adding the above line in the initialization, I added a resizeListener function that scales based on the default dimensions.
&lt;/p&gt;
&lt;pre class="brush: java"&gt;
private function resizeListener(e:Event):void {
    _view.scaleX = stage.stageWidth / 964;
    _view.scaleY = stage.stageHeight / 586;
}
&lt;/pre&gt;
&lt;p&gt;
For the Spotlight asset, there are a number of different layouts (home, featured and news). The main class has a resizeListener function that scales accordingly to which layout type is being used.
&lt;/p&gt;
&lt;pre class="brush: java"&gt;
private function resizeListener(e:Event):void {
    var type:String = _view.getLayoutType();

    if (type == "featured") { 
        _view.scaleX = stage.stageWidth / 958;
       _view.scaleY = stage.stageHeight / 180;
   } else if (type == "home") { 
        _view.scaleX = stage.stageWidth / 964;
        _view.scaleY = stage.stageHeight / 428;
    } else if (type == "news") {
        _view.scaleX = stage.stageWidth / 964;
        _view.scaleY = stage.stageHeight / 189;
    }
}
&lt;/pre&gt;
&lt;p&gt;Because the layout type isn't set until the XML is loaded, I listen for that event in my URLLoader.
&lt;/p&gt;
&lt;pre class="brush: java; toolbar: false"&gt;
xmlLoader.addEventListener(Event.COMPLETE, resizeListener);
&lt;/pre&gt;
&lt;p&gt;With the pure ActionScript implementation, the zoom level is automatically persisted. The Event.RESIZE event is fired by the Flash plugin when the page first loads if the dimensions are not the default. 
&lt;/p&gt;
&lt;p&gt;
That's it! Special thanks to &lt;a href="http://www.jamesward.com/"&gt;James Ward&lt;/a&gt; for clueing me into &lt;em&gt;scaleX&lt;/em&gt; and &lt;em&gt;scaleY&lt;/em&gt;. Hopefully Hulu and Comcast can use this tutorial to scale their video players too. &lt;img src="http://raibledesigns.com/images/smileys/wink.gif" class="smiley" alt=";-)" title=";-)" /&gt;
&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=77511713&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=77511713&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=77511713 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/my_summer_vacation_in_montana1</guid><title>My Summer Vacation in Montana</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/my_summer_vacation_in_montana1</link><pubDate>Tue, 13 Jul 2010 08:12:02 -0600</pubDate><category>General</category><category>montana</category><category>thecabin</category><category>mom</category><category>jack</category><category>abbie</category><category>dad</category><category>summer</category><description>My favorite time of year is summertime. My favorite place to spend it is in Montana, often called "&lt;a href="http://www.nytimes.com/2008/08/18/us/18trademark.html"&gt;The Last Best Place&lt;/a&gt;" by natives. This year was no different and I spent the last two weeks at my family's cabin celebrating the 4th of July. Shortly after returning from our &lt;a href="http://raibledesigns.com/rd/entry/another_fun_father_s_day"&gt;Father's Day Camping Trip&lt;/a&gt;, my parents packed up Abbie and Jack and headed on a 3-day road trip through Wyoming and Montana, camping and sight-seeing along the way. I followed them a few days later and made the &lt;a href="http://twitter.com/mraible/status/17135468902" title="Made it to The Cabin - woo hoo! 950 miles in 14.25 hours."&gt;950-mile drive in just over 14 hours&lt;/a&gt;. With scenes like the one below, the trip was very enjoyable, despite it being so long.&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4096/4788758981_ea7346ab25.jpg" rel="lightbox[montanavacation2010]" title="Big Sky Country"&gt;&lt;img src="http://farm5.static.flickr.com/4096/4788758981_ea7346ab25_m.jpg" width="240" height="179" alt="Big Sky Country" style="border: 1px solid black"&gt;&lt;/a&gt;
&lt;/p&gt; 
&lt;p&gt;The first week I was there, I worked remotely. It's always fun to tell people &lt;a href="http://raibledesigns.com/rd/entry/the_cabin"&gt;The Cabin&lt;/a&gt; has no electricity or running water, but it does have DSL. To be fair, it &lt;em&gt;does&lt;/em&gt; have electricity, but it's not "on the grid" electricity - it's my Dad's concoction of generators, batteries and inverters. While I worked most of the week, I did manage to get a nice mountain bike ride in along the Foothills Trail to Holland Lake.&lt;/p&gt;
&lt;p&gt;My real vacation began on the 4th of July weekend and we did it up right with the Swan Valley Parade and lots of big fireworks I picked up in Wyoming. The kids dressed up as Woody and Jesse (from &lt;a href="http://disney.go.com/toystory/"&gt;Toy Story&lt;/a&gt;) and walked in the parade all by themselves (first time w/o me). They were especially excited when their &lt;a href="http://farm5.static.flickr.com/4073/4788770319_62ac31485b.jpg" rel="lightbox[montanavacation2010]" title="Abbie and Jack are famous!"&gt;pictures appeared in the local paper&lt;/a&gt; the following week.

&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4077/4788762471_187425438b.jpg" title="Ready for the Parade" rel="lightbox[montanavacation2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4077/4788762471_187425438b_t.jpg" width="100" height="75" alt="Ready for the Parade" style="border: 1px solid black"&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4114/4788762677_2a9bccec92.jpg" title="Tossing Candy in the Parade" rel="lightbox[montanavacation2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4114/4788762677_2a9bccec92_t.jpg" width="100" height="75" alt="Tossing Candy in the Parade" style="margin-left: 10px; border: 1px solid black"&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4096/4789393410_52aa8aa457.jpg" title="Woddy and Jesse in the 4th of July Parade" rel="lightbox[montanavacation2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4096/4789393410_52aa8aa457_t.jpg" width="100" height="75" alt="Woddy and Jesse in the 4th of July Parade" style="margin-left: 10px; border: 1px solid black"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Last week was spent hiking to Glacier Lake in the rain, golfing in Seeley Lake and Columbia Falls and hanging out with my good friend &lt;a href="http://www.facebook.com/oconley1"&gt;Owen Conley&lt;/a&gt; and his family.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4096/4789395818_8eefb50d1e.jpg" title="Made it to Glacier Lake" rel="lightbox[montanavacation2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4096/4789395818_8eefb50d1e_t.jpg" width="100" height="75" alt="Made it to Glacier Lake" style="border: 1px solid black"&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4098/4788767939_d273d4ddf5.jpg" title="Chris Auchenbach" rel="lightbox[montanavacation2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4098/4788767939_d273d4ddf5_t.jpg" width="100" height="75" alt="Chris Auchenbach" style="margin-left: 10px; border: 1px solid black"&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4143/4789398916_a70dd2077e.jpg" title="Meadow Lake Golf Course in Columbia Falls" rel="lightbox[montanavacation2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4143/4789398916_a70dd2077e_t.jpg" width="100" height="75" alt="Meadow Lake Golf Course in Columbia Falls" style="margin-left: 10px; border: 1px solid black"&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4074/4788771667_a5bab64f22.jpg" title="Sunset from The Conley's" rel="lightbox[montanavacation2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4074/4788771667_a5bab64f22_t.jpg" width="100" height="75" alt="Sunset from The Conley's" style="margin-left: 10px; border: 1px solid black"&gt;&lt;/a&gt;
&lt;/p&gt; 
&lt;p&gt;
The kids and I drove home last Sunday and it only took us 15 minutes longer than it did for me solo. I think they're quickly becoming road-tripping professionals. &lt;img src="http://raibledesigns.com/images/smileys/smile.gif" class="smiley" alt=":-)" title=":-)" /&gt;
&lt;/p&gt;
&lt;p&gt;My favorite part of this year's trip to The Cabin was seeing it as a home again. My &lt;a href="http://raibledesigns.com/rd/entry/celebrating_my_mom_s_retirement"&gt;Mom retired in April&lt;/a&gt; and my parents moved back to Montana shortly after. Seeing how happy they are there is truly magical. I especially enjoy the thought of visiting them and all the wonderful folks in the Swan Valley many, many times in the future. 
&lt;/p&gt;
&lt;p&gt;
To see all the pictures I took on this trip, check out the slideshow below. 
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;object width="400" height="300"&gt; &lt;param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fmraible%2Fsets%2F72157624358584447%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fmraible%2Fsets%2F72157624358584447%2F&amp;set_id=72157624358584447&amp;jump_to="&gt;&lt;/param&gt; &lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"&gt;&lt;/param&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fmraible%2Fsets%2F72157624358584447%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fmraible%2Fsets%2F72157624358584447%2F&amp;set_id=72157624358584447&amp;jump_to=" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;&lt;p style="border-top: 1px dotted silver; padding-top: 5px; color: #666"&gt;P.S. An interesting note about &lt;a href="http://www.flickr.com/photos/mraible/sets/72157624358584447/" style="color: #666"&gt;all the pictures I took&lt;/a&gt; - they're all from my iPhone 4. I forgot my camera's battery at home and it seemed like a good experiment.&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=77511712&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=77511712&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=77511712 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/another_fun_father_s_day</guid><title>Another Fun Father's Day at The Great Sand Dunes</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/another_fun_father_s_day</link><pubDate>Fri, 25 Jun 2010 16:22:36 -0600</pubDate><category>General</category><category>mom</category><category>sanddunes</category><category>greatsanddunes</category><category>colorado</category><category>abbie</category><category>fathersday</category><category>dad</category><category>pictures</category><category>jack</category><description>For this year's Father's Day Camping trip, my parents drove down from Montana and we headed to the &lt;a href="http://www.nps.gov/grsa/"&gt;Great Sand Dunes&lt;/a&gt; (like &lt;a href="http://raibledesigns.com/rd/entry/a_fun_father_s_day"&gt;last year&lt;/a&gt;). My friend &lt;a href="http://raibledesigns.com/rd/entry/jason_and_holly_s_wedding"&gt;Jason&lt;/a&gt; and his Dad joined us, as well as my co-worker Noah and his family. The weather was beautiful, the sand was hot and we had a blast flying kites while admiring the &lt;a href="http://www.9news.com/rss/article.aspx?storyid=141346"&gt;Medano Fire&lt;/a&gt;. 
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm2.static.flickr.com/1380/4723000531_06d7eebc83.jpg" title="Friday Breakfast" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1380/4723000531_06d7eebc83_t.jpg" width="100" height="75" alt="Friday Breakfast" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1256/4723654044_983b351d02.jpg" title="Hot, hot, hot!" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1256/4723654044_983b351d02_t.jpg" width="100" height="75" alt="Hot, hot, hot!" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1006/4723007017_97f1bda2af.jpg" title="Aaaahhhhhh!!" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1006/4723007017_97f1bda2af_t.jpg" width="100" height="75" alt="Aaaahhhhhh!!" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1359/4723660690_9313a26d78.jpg" title="Fire in Background, 100 foot tall flames" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1359/4723660690_9313a26d78_t.jpg" width="100" height="75" alt="Fire in Background, 100 foot tall flames" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;br/&gt;&lt;br/&gt;

&lt;a href="http://farm2.static.flickr.com/1434/4723008711_5eb498de86.jpg" title="Nice Grill" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1434/4723008711_5eb498de86_t.jpg" width="100" height="75" alt="Nice Grill" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1092/4723661584_91220319a1.jpg" title="At the Top" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1092/4723661584_91220319a1_t.jpg" width="100" height="75" alt="At the Top" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1052/4723009765_3eb0093a3d.jpg" title="Dillon" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1052/4723009765_3eb0093a3d_t.jpg" width="100" height="75" alt="Dillon" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1329/4723012083_fef73eb7bd.jpg" title="Colors" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1329/4723012083_fef73eb7bd_t.jpg" width="100" height="75" alt="Colors" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;p&gt;On Saturday, we spent several hours on "the beach" watching the kids play, flying kites and sipping on cold ones. A good time was had by all.&lt;/p&gt;

&lt;p style="text-align: center"&gt;
&lt;a href="http://farm2.static.flickr.com/1181/4723013323_edab771a37.jpg" title="Inventing Stuff" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1181/4723013323_edab771a37_t.jpg" width="100" height="75" alt="Inventing Stuff" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1224/4723013695_869f23ea41.jpg" title="Where did Jack go?" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1224/4723013695_869f23ea41_t.jpg" width="100" height="75" alt="Where did Jack go?" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1065/4723667980_5875034965.jpg" title="Push me again!" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1065/4723667980_5875034965_t.jpg" width="100" height="75" alt="Push me again!" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1426/4723016307_9cf9635926.jpg" title="Smile!" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1426/4723016307_9cf9635926_t.jpg" width="100" height="75" alt="Smile!" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;br/&gt;&lt;br/&gt;


&lt;a href="http://farm2.static.flickr.com/1149/4723016879_308bc75d6b.jpg" title="Ela and Jack" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1149/4723016879_308bc75d6b_t.jpg" width="100" height="75" alt="Ela and Jack" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1341/4723017053_5f44f5d811.jpg" title="Abbie and Mimi" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1341/4723017053_5f44f5d811_t.jpg" width="100" height="75" alt="Abbie and Mimi" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1112/4723670454_7bb0af7c93.jpg" title="Sweet" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1112/4723670454_7bb0af7c93_t.jpg" width="100" height="75" alt="Sweet" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1123/4723670592_43e3ae1031.jpg" title="Sunset" rel="lightbox[fathersday2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1123/4723670592_43e3ae1031_t.jpg" width="100" height="75" alt="Sunset" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;To see all the pictures I took on this trip, see my &lt;a href="http://www.flickr.com/photos/mraible/sets/72157624205304687/"&gt;Great Sand Dunes 2010 set on Flickr&lt;/a&gt;.&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=77096592&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=77096592&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=77096592 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/my_incredible_trip_to_ireland</guid><title>My Incredible Trip to Ireland</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/my_incredible_trip_to_ireland</link><pubDate>Mon, 14 Jun 2010 23:42:55 -0600</pubDate><category>Java</category><category>webframeworks</category><category>dublin</category><category>irishsoftwareshow</category><category>johnwillis</category><category>ireland</category><category>java</category><category>iss2010</category><category>jamievandyke</category><category>jameson</category><category>dublinia</category><category>glendalough</category><category>joshlong</category><category>guinness</category><category>kalin</category><description>&lt;em&gt;If you ever get a chance to travel to Ireland, take it!&lt;/em&gt; I don't know when I heard these words, or how they came into my head, but I remembered them clearly when I was first introduced to &lt;a href="http://ie.linkedin.com/in/irishdev"&gt;Barry Alistair&lt;/a&gt; by &lt;a href="http://www.linkedin.com/in/jgenender"&gt;Jeff Genender&lt;/a&gt;. Soon after, I was able to negotiate my way into being a speaker at &lt;a href="http://epicenter.ie/2010.html"&gt;The 2010 Irish Software Show&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The show was last week and I had a blast traveling to Dublin to speak and explore. &lt;a href="http://twitter.com/kraible"&gt;My sister&lt;/a&gt; came me on this trip, but missed a connection in Seattle and had to join me a day late.  I left Denver at noon on Monday and arrived at &lt;a href="http://www.dublinairport.com/"&gt;Dublin Airport&lt;/a&gt; at 7 am. I was on the same flight as &lt;a href="http://www.joshlong.com/"&gt;Josh Long&lt;/a&gt; and thoroughly enjoyed my iPad as a travel companion. When I got off the plane, my battery life was at 60% and I'd been watching movies and listening to music for 6 hours. 
&lt;/p&gt;
&lt;p&gt;I took a cab through the misty, cool morning to &lt;a href="http://en.wikipedia.org/wiki/Trinity_Capital_Hotel"&gt;my hotel&lt;/a&gt;. I grabbed a coffee, cleaned up, and walked a few blocks to &lt;a href="http://www.tcd.ie/"&gt;Trinity College&lt;/a&gt; for the conference. I made it in time for the &lt;a href="http://epicenter.ie/2010.html?zone_id=19&amp;amp;mode=agenda&amp;amp;session=164%23session"&gt;opening keynote&lt;/a&gt; by &lt;a href="http://chrisjhorn.wordpress.com"&gt;Chris Horn&lt;/a&gt;. It was an interesting talk, focusing on what needed to happen to make Ireland the Innovation Hub of Europe. After that, I attended &lt;a href="http://augusttechgroup.com/tim/blog"&gt;Tim Berglund's&lt;/a&gt; session on &lt;a href="http://epicenter.ie/2010.html?zone_id=19&amp;amp;mode=agenda&amp;amp;session=160%23session"&gt;Complexity Theory and Software Development&lt;/a&gt;. After lunch and a few more talks, I teamed up with &lt;a href="http://www.jroller.com/aalmiray/"&gt;Andres Almiray&lt;/a&gt; and Josh Long for a pint at the hotel bar.
&lt;/p&gt;
&lt;p&gt;That evening, we attended &lt;a href="http://www.linkedin.com/in/jgenender"&gt;Jeff Genender's&lt;/a&gt; talk on &lt;a href="http://epicenter.ie/2010.html?zone_id=19&amp;amp;mode=agenda&amp;amp;session=189%23session"&gt;Getting into Open Source&lt;/a&gt;. The free drinks loosened everyone up and Jeff did a great job with a humorous presentation on how to get Committer Status. After Jeff's talk, about 10 of us headed to a Moroccan restaurant for a late dinner. I was in bed around midnight.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm2.static.flickr.com/1297/4699497085_b551c7a58f.jpg" title="Andres Almiray and Josh Long" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1297/4699497085_b551c7a58f_t.jpg" width="100" height="75" alt="Andres Almiray and Josh Long" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4029/4699497659_19812e51bf.jpg" title="The Genenders" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4029/4699497659_19812e51bf_t.jpg" width="100" height="75" alt="The Genenders" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4049/4700126996_f29207d60c.jpg" title="Heading for Indian After Jeff's Talk" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4049/4700126996_f29207d60c_t.jpg" width="100" height="75" alt="Heading for Indian After Jeff's Talk" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4070/4699498241_c076566b11.jpg" title="Streets of Dublin in the early morning" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4070/4699498241_c076566b11_t.jpg" width="100" height="75" alt="Streets of Dublin in the early morning" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
Wednesday morning, my sister arrived in my hotel room at 8 and promptly fell into bed. I set my alarm to sleep an hour and closed the Vegas-style, no-light-allowed curtains. We awoke much later (12:30) than we'd planned (9:00). We quickly got up and headed for some sight-seeing in Dublin. First off, we hit &lt;a href="http://www.dublinia.ie/"&gt;Dublinia&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Christ_Church_Cathedral,_Dublin"&gt;Christ Church Cathedral&lt;/a&gt;. Both sites were spectacular and we both learned a lot about the history of Dublin. From there, we skipped across the bridge to &lt;a href="http://www.jamesonwhiskey.com/Heritage-US/Visitor-Centres/The-Old-Jameson-Distillery-Tour-Info.aspx"&gt;The Old Jameson Distillery&lt;/a&gt; for a tour and a bit of whiskey. &lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4063/4699499527_602302bea9.jpg" title="Runes Exhibit in Dublinia" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4063/4699499527_602302bea9_t.jpg" width="100" height="75" alt="Runes Exhibit in Dublinia" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4070/4700130192_25a9cfcf52.jpg" title="Christ Church Cathedral and Dublinia" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4070/4700130192_25a9cfcf52_t.jpg" width="100" height="75" alt="Christ Church Cathedral and Dublinia" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4022/4699501899_b92347236e.jpg" title="Tasting Whiskey" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4022/4699501899_b92347236e_t.jpg" width="100" height="75" alt="Tasting Whiskey" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1279/4700131426_db95eb5c9b.jpg" title="The 18 Year" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1279/4700131426_db95eb5c9b_t.jpg" width="100" height="75" alt="The 18 Year" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The picture below was taken on the &lt;a href="http://en.wikipedia.org/wiki/Ha%27penny_Bridge"&gt;Ha'penny Bridge&lt;/a&gt; as we were heading back from Jameson. The expression of the girl on the left is priceless. 
&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4033/4700134408_d5f99cb5d0.jpg" title="Kalin on the Half Penny" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4033/4700134408_d5f99cb5d0_m.jpg" width="240" height="180" alt="Kalin on the Half Penny" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;A couple hours later and I was delivering my talk on &lt;a href="http://raibledesigns.com/rd/entry/presentations_from_the_irish_software"&gt;The Future of Web Frameworks&lt;/a&gt;. The crowd was lively; the Guinness I drank while talking was lovely. My session was followed by a Web Framework Experts Panel with &lt;a href="http://www.cacoethes.co.uk/blog/"&gt;Peter Ledbrook&lt;/a&gt; (Grails), &lt;a href="http://www.jamievandyke.com/"&gt;Jamie van Dyke&lt;/a&gt; (Rails), &lt;a href="http://www.ironshay.com/"&gt;Shay Friedman&lt;/a&gt; (ASP.NET MVC), &lt;a href="http://blog.fitzell.ca/"&gt;Julian Fitzell&lt;/a&gt; (Seaside) and myself (Java Frameworks). The debate was good and there was much discussion about the right apps for each framework and how important statelessness is for scalable applications. After 3 hours of talking, my sister and I headed back to the hotel. I was particularly happy about the evening since it was the first time a family member of mine had seen me speak.
&lt;/p&gt;
&lt;p style="font-style: italic; color: #666" class="quote"&gt;Correction from my Dad: This wasn't the first time a family member saw me speak. He attended my talk at &lt;a href="http://raibledesigns.com/rd/entry/what_a_trip_amsterdam_was"&gt;ApacheCon EU 2007&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;A block from the hotel, we spotted a nice looking pub (&lt;a href="http://www.doylesintown.com/"&gt;Doyles&lt;/a&gt;) and stopped in for a pint. As we bellied up to the end of the bar, we recognized Jamie (from the panel) and got introduced to his friend &lt;a href="http://yrobs.blogspot.com/"&gt;Rob&lt;/a&gt;. We quickly got lost in conversation, stories and laughter and were surprised when we discovered it was 2:30am. Since I had a talk first thing in the morning, we ducked out shortly after.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4017/4699506393_3b1fedd531.jpg" title="Web Framework Experts Panel" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4017/4699506393_3b1fedd531_t.jpg" width="100" height="75" alt="Web Framework Experts Panel" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4048/4700135162_f3099a46c4.jpg" title="Barry on Evangelist Night" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4048/4700135162_f3099a46c4_t.jpg" width="100" height="75" alt="Barry on Evangelist Night" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4008/4700135912_6b71bcd50c.jpg" title="The Night we met Jamie and Rob" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4008/4700135912_6b71bcd50c_t.jpg" width="100" height="75" alt="The Night we met Jamie and Rob" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Thursday started with my talk &lt;a href="http://raibledesigns.com/rd/entry/presentations_from_the_irish_software"&gt;Comparing Kick-Ass Web Frameworks&lt;/a&gt;. Then my sister and I did some more site-seeing, starting at the &lt;a href="http://www.guinness-storehouse.com/en/Index.aspx"&gt;Guinness Storehouse&lt;/a&gt;. We met Josh and &lt;a href="http://www.johnmwillis.com/"&gt;John Willis&lt;/a&gt; as they were leaving and they advised we go straight to The Gravity Bar at the top. We took there advise and were getting great views of Dublin and savoring sweet pints of Guinness moments later. The tour facility was freakin' awesome and I loved how it was shaped like a pint glass. 
&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4006/4699508311_77a05c609a.jpg" title="Straight to the top!" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4006/4699508311_77a05c609a_t.jpg" width="100" height="75" alt="Straight to the top!" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4015/4699508737_612d1b1b42.jpg" title="Mmmmm, Guinness" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4015/4699508737_612d1b1b42_t.jpg" width="100" height="75" alt="Mmmmm, Guinness" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4052/4700141820_3943b0dea6.jpg" title="The Storehouse is shaped like a pint glass" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4052/4700141820_3943b0dea6_t.jpg" width="100" height="75" alt="The Storehouse is shaped like a pint glass" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1285/4700143032_120cd3d789.jpg" title="Brainwave" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1285/4700143032_120cd3d789_t.jpg" width="100" height="75" alt="Brainwave" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
We grabbed some gear from the gift shopped and landed (by accident) at &lt;a href="http://www.brazenhead.com/"&gt;The Brazen Head&lt;/a&gt; (Ireland's Oldest Pub, Est. 1198) for a pint of cider and Guinness. Since my sister &lt;a href="http://raibledesigns.com/rd/entry/chelan_hard_cider"&gt;used to be in the cider business&lt;/a&gt;, she was particularly happy there was so much on tap in Ireland.
&lt;/p&gt;
&lt;p&gt;
From the pub, we headed to &lt;a href="http://www.johnmwillis.com/"&gt;John Willis's&lt;/a&gt; session on &lt;a href="http://epicenter.ie/2010.html?zone_id=21&amp;amp;mode=agenda&amp;amp;session=157#session"&gt;The Cambrian Cloud Explosion&lt;/a&gt;. Following John's session, we headed to the Speaker's Dinner for a very fun evening with the hosts and speakers of the conference.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4027/4700144746_2a6f095f07.jpg" title="John Willis and Barry Alistair" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4027/4700144746_2a6f095f07_t.jpg" width="100" height="75" alt="John Willis and Barry Alistair" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4053/4699515883_49068fc757.jpg" title="Speaker's Dinner at Irish Software Show 2010" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4053/4699515883_49068fc757_t.jpg" width="100" height="75" alt="Speaker's Dinner at Irish Software Show 2010" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4039/4700145482_9e809aa875.jpg" title="Speaker's Dinner at Irish Software Show 2010" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4039/4700145482_9e809aa875_t.jpg" width="100" height="75" alt="Speaker's Dinner at Irish Software Show 2010" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4067/4699516499_61333b6e25.jpg" title="Speaker's Dinner at Irish Software Show 2010" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4067/4699516499_61333b6e25_t.jpg" width="100" height="75" alt="Speaker's Dinner at Irish Software Show 2010" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;a href="http://farm5.static.flickr.com/4004/4699516869_9bdda79ac4.jpg" title="Speaker's Dinner at Irish Software Show 2010" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4004/4699516869_9bdda79ac4_t.jpg" width="100" height="75" alt="Speaker's Dinner at Irish Software Show 2010" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4022/4699517415_46575ba674.jpg" title="Speaker's Dinner at Irish Software Show 2010" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4022/4699517415_46575ba674_t.jpg" width="100" height="75" alt="Speaker's Dinner at Irish Software Show 2010" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4016/4700153542_a46fca1c58.jpg" title="Speaker's Dinner at Irish Software Show 2010" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4016/4700153542_a46fca1c58_t.jpg" width="100" height="75" alt="Speaker's Dinner at Irish Software Show 2010" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
On Friday, we woke up in the early afternoon and quickly decided the &lt;a href="http://en.wikipedia.org/wiki/Book_of_Kells"&gt;Book of Kells&lt;/a&gt; was our best chance of getting some site seeing in. After visiting the Book of Kells, my favorite quote of the conference happened in the courtyard. 
&lt;/p&gt;
&lt;p&gt;
Josh looked at Jamie (with his bad hangover) and exclaimed, "My God Man. Your skin is so white it's hurting my eyes!". You probably had to be there (or know Josh) to enjoy the humor, but I wanted to capture the memory in this post so I could laugh whenever I read this in the future. After that, Jamie, Josh, Kalin and I enjoyed a Starbuck's patio talking about living in the South of France for a couple hours. Then we walked 2 blocks to the &lt;a href="http://www.porterhousebrewco.com/"&gt;Porterhouse Brewing Co.&lt;/a&gt; to watch the World Cup and enjoy more interesting conversations. 
&lt;/p&gt;

&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4049/4699526381_b93c7d22a4.jpg" title="The Book of Kells" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4049/4699526381_b93c7d22a4_t.jpg" width="100" height="75" alt="The Book of Kells" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4025/4700168324_26c13c6b46.jpg" title="Jamie with the Wenches" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4025/4700168324_26c13c6b46_t.jpg" width="100" height="75" alt="Jamie with the Wenches" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4066/4700168582_88b49c92c2.jpg" title="Lovely Wenches" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4066/4700168582_88b49c92c2_t.jpg" width="100" height="75" alt="Lovely Wenches" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4006/4699540829_ca5481a452.jpg" title="Jamie and his Lady Drink" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4006/4699540829_ca5481a452_t.jpg" width="100" height="75" alt="Jamie and his Lady Drink" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Jamie left the conference that evening and we joined a whole slew of other speakers for dinner at an excellent Lebanese restaurant near Temple Bar. Good times where had afterwards at a nearby Silent Disco.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4044/4700172766_b7b82c29b5.jpg" title="Kalin and Craig" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4044/4700172766_b7b82c29b5_t.jpg" width="100" height="75" alt="Kalin and Craig" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4071/4699543397_e997b2b8ff.jpg" title="Post Absinthe" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4071/4699543397_e997b2b8ff_t.jpg" width="100" height="75" alt="Post Absinthe" style="border: 1px solid black"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Saturday, we woke up early to catch a tour bus out to &lt;a href="http://en.wikipedia.org/wiki/Glendalough"&gt;Glendalough&lt;/a&gt; with Josh and John. The bus ride was not pleasant, but the destination was spectacular. We hung out there for several hours, exploring the buildings, walking to the lake and humoring each other.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4068/4700176486_aa86563fbf.jpg" title="Glendalough" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4068/4700176486_aa86563fbf_t.jpg" width="100" height="75" alt="Glendalough" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1287/4699547639_3904ddaaf1.jpg" title="Beautiful Views at Glendalough" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1287/4699547639_3904ddaaf1_t.jpg" width="100" height="75" alt="Beautiful Views at Glendalough" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4031/4700178148_23b6c2852a.jpg" title="Glendalough" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4031/4700178148_23b6c2852a_t.jpg" width="100" height="75" alt="Glendalough" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4070/4699549013_40916ab088.jpg" title="Lower Lake at Glendalough" rel="lightbox[ireland2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4070/4699549013_40916ab088_t.jpg" width="100" height="75" alt="Lower Lake at Glendalough" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Our last night in Dublin was an early, relaxing one. As you can tell, I really enjoyed this trip, particularly hanging out with my sister and all the cool people we met. I can easily say that this trip registers as one of my favorite conference experiences to date.
&lt;/p&gt;
&lt;p style="border-top: 1px dotted silver; padding-top: 5px; color: #666"&gt;
To see all the pictures I took on this trip, check out my &lt;a href="http://www.flickr.com/photos/mraible/sets/72157624148828777/" style="color: #555"&gt;Irish Software Show 2010 set on Flickr&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76706514&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76706514&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76706514 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/presentations_from_the_irish_software</guid><title>My Presentations from The Irish Software Show 2010</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/presentations_from_the_irish_software</link><pubDate>Thu, 10 Jun 2010 07:11:35 -0600</pubDate><category>Java</category><category>webframeworks</category><category>gwt</category><category>iss2010</category><category>flex</category><category>rubyonrails</category><category>grails</category><category>rails</category><description>This week I've been enjoying Dublin, Ireland thanks to the 2nd Annual &lt;a href="http://epicenter.ie/2010.html"&gt;Irish Software Show&lt;/a&gt;. On Wednesday night, I spoke about &lt;a href="http://epicenter.ie/2010.html?zone_id=20&amp;amp;mode=agenda&amp;amp;session=152#session"&gt;The Future of Web Frameworks&lt;/a&gt; and  participated in a panel with Grails, Rails, ASP.NET MVC and Seaside developers. It was a fun night with lots of lively discussion. Below is my presentation from this event.&lt;/p&gt;

&lt;p style="text-align: center"&gt;&lt;object id="__sse3271151" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thefutureofwebframeworks-100225012146-phpapp02&amp;amp;stripped_title=the-future-of-web-frameworks" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse3271151" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thefutureofwebframeworks-100225012146-phpapp02&amp;amp;stripped_title=the-future-of-web-frameworks" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;This morning, I delivered my &lt;a href="http://epicenter.ie/2010.html?zone_id=20&amp;amp;mode=agenda&amp;amp;session=151#session"&gt;Comparing Kick-Ass Web Frameworks&lt;/a&gt; talk. This presentation contains updated statistics for various metrics comparing Rails vs. Grails and Flex vs. GWT. 
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;object id="__sse2644393" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=comparingkickasswebframeworks-091203145644-phpapp02&amp;stripped_title=comparing-kick-ass-web-frameworks" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse2644393" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=comparingkickasswebframeworks-091203145644-phpapp02&amp;stripped_title=comparing-kick-ass-web-frameworks" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
Thanks to all who attended my talks this week!
&lt;/p&gt;
&lt;p style="border-top: 1px dotted silver; padding-top: 5px; color: #666"&gt;
P.S. I believe audio was recorded on Wednesday night, but I'm unsure how it turned out. I'm pretty sure no recordings were done on this morning's session. 
&lt;/p&gt;&lt;p&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76620708&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76620708&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76620708 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/a_nice_riding_weekend_before</guid><title>A Nice Riding Weekend before heading to the Emerald Isle</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/a_nice_riding_weekend_before</link><pubDate>Mon, 7 Jun 2010 11:54:07 -0600</pubDate><category>General</category><category>bike</category><category>riding</category><category>iss2010</category><category>biking</category><category>ireland</category><category>mountainbiking</category><category>erock</category><category>bhtm</category><category>redrocks</category><category>elephantrock</category><description>I'm writing this post while waiting to board a flight to the &lt;a href="http://epicenter.ie/2010.html"&gt;Irish Software Show&lt;/a&gt; in Dublin, Ireland. Before I go, I thought I'd let y'all know about the killer weekend I had tooling around on my bike. 
&lt;/p&gt;
&lt;p&gt;
Saturday was Big Head Todd and the Monsters at Red Rocks, so I had the pleasure of joining &lt;a href="http://bsnyderblog.blogspot.com"&gt;Bruce&lt;/a&gt; and The Professor for our &lt;a href="http://raibledesigns.com/rd/entry/2nd_row_at_red_rocks"&gt;annual Ride to Red Rocks&lt;/a&gt;. We were slow getting out there (as usual), but had a great time at the show. 17th row seats and plenty of excellent music. The ride home was dark and fast; arriving at my house at 1:30. After late night &lt;a href="http://www.jerusalemrestaurant.com/"&gt;Jerusalems&lt;/a&gt;, I crawled in bed at 2:30.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4038/4677953358_729c5b539b.jpg" title="Red Rocks in Site" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4038/4677953358_729c5b539b_t.jpg" style="border: 1px solid black" width="100" height="75" alt="Red Rocks in Site" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4009/4677325237_7c02d01ae1.jpg" title="Rainbow at Red Rocks" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4009/4677325237_7c02d01ae1_t.jpg" style="border: 1px solid black; margin-left: 10px" width="100" height="75" alt="Rainbow at Red Rocks" /&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1273/4677954620_bbd019895d.jpg" title="Sunset at Red Rocks" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1273/4677954620_bbd019895d_t.jpg" style="border: 1px solid black; margin-left: 10px" width="100" height="75" alt="Sunset at Red Rocks" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4049/4677955006_cba2bba9e9.jpg" title="Big Head Todd" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4049/4677955006_cba2bba9e9_t.jpg" style="border: 1px solid black; margin-left: 10px" width="100" height="75" alt="Big Head Todd" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Six hours later, I hopped out of bed, jumped in my car and drove down to Castle Rock for &lt;a href="http://www.elephantrockride.com/"&gt;Elephant Rock&lt;/a&gt;. I did the 25-mile off-road ride on my mountain bike. Unfortunately, there was no singletrack, and I'm pretty sure I was the last one to start the race. The ride itself was nice and windy with plenty of sun. When I reached the highway on the backside of Castlewood Canyon, I caught a stellar tailwind and had a blast cruising to the finish line.&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4050/4677955536_469aba1f4f.jpg" title="Elephant Rock 25 mile cruiser" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4050/4677955536_469aba1f4f_t.jpg" style="border: 1px solid black" width="100" height="75" alt="Elephant Rock 25 mile cruiser" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4033/4677956190_d3983f9a6c.jpg" title="Approaching Castlewood Canyon State Park" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4033/4677956190_d3983f9a6c_t.jpg" style="border: 1px solid black; margin-left: 10px" width="100" height="75" alt="Approaching Castlewood Canyon State Park" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4021/4677328429_042d90387b.jpg" title="Leaving Castlewood Canyon" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4021/4677328429_042d90387b_t.jpg" style="border: 1px solid black; margin-left: 10px" width="100" height="75" alt="Leaving Castlewood Canyon" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4002/4677957256_8fd89ba8e8.jpg" title="Sweet Tailwind" rel="lightbox[bhtm2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4002/4677957256_8fd89ba8e8_t.jpg" style="border: 1px solid black; margin-left: 10px" width="100" height="75" alt="Sweet Tailwind" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;If you'd like to see more pictures from my weekend biking adventures, checkout my &lt;a href="http://www.flickr.com/photos/mraible/sets/72157624221044810/"&gt;Big Head Todd and Elephant Rock set&lt;/a&gt; on Flickr.&lt;/p&gt;
&lt;p&gt;If you're going to be at the Irish Software Show this week, be sure to stop by and say hi. I'll be speaking about &lt;a href="http://epicenter.ie/2010.html?zone_id=20&amp;amp;mode=agenda&amp;amp;session=152#session"&gt;The Future of Web Frameworks&lt;/a&gt; on Wednesday at 7:30pm and &lt;a href="http://epicenter.ie/2010.html?zone_id=20&amp;amp;mode=agenda&amp;amp;session=151#session"&gt;Comparing Kick-Ass Web Frameworks&lt;/a&gt; early on Thursday morning.&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76506273&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76506273&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76506273 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/running_selenium_tests_on_sauce</guid><title>Running Selenium Tests on Sauce Labs</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/running_selenium_tests_on_sauce</link><pubDate>Sun, 6 Jun 2010 19:50:20 -0600</pubDate><category>Java</category><category>browsers</category><category>safari</category><category>firefox</category><category>chrome</category><category>java</category><category>selenium</category><category>saucelabs</category><category>hudson</category><category>ie</category><description>Recently I embarked on a mission to configure my team's Selenium testing process to support multiple browsers. We use &lt;a href="http://hudson-ci.org"&gt;Hudson&lt;/a&gt; for our continuous integration server.  Since our Hudson instance runs on Solaris, testing with Firefox on Solaris didn't seem like a good representation of our clients. Our browser support matrix currently looks as follows:
&lt;table class="comparison" width="300"&gt;
&lt;thead&gt;&lt;tr&gt;
&lt;th&gt; Platform &lt;/th&gt;&lt;th&gt; Browser
&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Supported&lt;/b&gt;
&lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Windows &lt;/td&gt;&lt;td&gt; IE7.x and 8.x, Firefox 2.x and 3.x
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; Mac &lt;/td&gt;&lt;td&gt; Safari 3.x, 4.x
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt; &lt;b&gt;Best Effort&lt;/b&gt;
&lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows and Mac &lt;/td&gt;&lt;td&gt; Chrome 4.x
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
At first, I attempted to use Windows VMs to run Selenium tests on IE. This was a solution that didn't work too well. The major reasons it didn't work:
&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;I had issues getting the &lt;a href="http://wiki.hudson-ci.org/display/HUDSON/Selenium+Plugin"&gt;Selenium Plugin for Hudson&lt;/a&gt; working. &lt;a href="http://issues.hudson-ci.org/browse/HUDSON-6207"&gt;Upgrading the plugin to use Selenium RC 1.0.5&lt;/a&gt; may solve this issue.
&lt;/li&gt;&lt;li&gt;We had some unit tests that failed on Windows. I tried using the &lt;a href="http://wiki.hudson-ci.org/display/HUDSON/Cygpath+Plugin"&gt;Cygpath Plugin&lt;/a&gt; for Hudson (which allows you to emulate a Unix environment on Windows), but &lt;a href="http://comments.gmane.org/gmane.comp.java.hudson.user/31049"&gt;failed&lt;/a&gt; to get it to work.
&lt;/li&gt;&lt;li&gt;We quickly realized it might become a maintenance nightmare to keep all the different VMs up-to-date.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Frustrated by these issues, I turned to &lt;a href="http://saucelabs.com/"&gt;Sauce Labs&lt;/a&gt;. They have a cloud-based model that runs Selenium tests on VMs that point back to your application. They also support &lt;a href="http://saucelabs.com/products/docs/sauce-ondemand/browsers"&gt;many different browser/OS combinations&lt;/a&gt;. We asked them about support for OS X and various Windows versions and they indicated that their experience shows browsers are the same across OSes.
&lt;/p&gt;
&lt;p&gt;I'm writing this article to show you how we've configured our build process to support 1) testing locally and 2) testing on Sauce Labs. In a future post, I hope to write about how to run Selenium tests concurrently for faster execution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Running Selenium Tests Locally&lt;/strong&gt;&lt;br/&gt;
We use Maven to build our project and run our Selenium tests. Our configuration is very similar to the poms referenced in &lt;a href="http://raibledesigns.com/rd/entry/integrating_selenium_with_maven_2"&gt;Integrating Selenium with Maven 2&lt;/a&gt;. Basically, we have an "itest" profile that gets invoked when we pass in -Pitest. It downloads/starts Tomcat (using &lt;a href="http://cargo.codehaus.org"&gt;Cargo&lt;/a&gt;), deploys our WAR, starts Selenium RC (using the &lt;a href="http://mojo.codehaus.org/selenium-maven-plugin/"&gt;selenium-maven-plugin&lt;/a&gt;) and executes JUnit-based tests using the &lt;a href="http://maven.apache.org/plugins/maven-surefire-plugin/index.html"&gt;maven-surefire-plugin&lt;/a&gt;. All of this configuration is pretty standard and something I've used on many projects over the past several years.&lt;/p&gt;
&lt;p&gt;Beyond that, we have a custom BlockJUnit4ClassRunner class that takes screenshots and captures the HTML source for tests that fail.&lt;/p&gt;
&lt;pre class="brush: java"&gt;
public class SeleniumJUnitRunner extends BlockJUnit4ClassRunner {
    public SeleniumJUnitRunner(Class&lt;?&gt; klass) throws InitializationError {
        super(klass);
    }

    protected Statement methodInvoker(FrameworkMethod method, Object test) {
        if (!(test instanceof AbstractSeleniumTestCase)) {
            throw new RuntimeException("Only works with AbstractSeleniumTestCase");
        }

        final AbstractSeleniumTestCase stc = ((AbstractSeleniumTestCase) test);
        stc.setDescription(describeChild(method));

        return new InvokeMethod(method, test) {
            @Override
            public void evaluate() throws Throwable {
                try {
                    super.evaluate();
                } catch (Throwable throwable) {
                    stc.takeScreenshot("FAILURE");
                    stc.captureHtmlSource("FAILURE");
                    throw throwable;
                }
            }
        };
    }
}
&lt;/pre&gt;
&lt;p&gt;To use the functionality SeleniumJUnitRunner provides, we have a parent class for all our tests. This class uses the @RunWith annotation as follows:&lt;/p&gt;
&lt;pre class="brush: java"&gt;
@RunWith(SeleniumJUnitRunner.class)
public abstract class AbstractSeleniumTestCase {
    // convenience methods
}
&lt;/pre&gt;
&lt;p&gt;This class looks up the Selenium RC Server, the app location and what browser to use based on system properties. If system properties are not set, it has defaults for running locally.
&lt;/p&gt;
&lt;pre class="brush: java"&gt;
public static String SERVER = System.getProperty("selenium.server");
public static String APP = System.getProperty("selenium.application");
public static String BROWSER = System.getProperty("selenium.browser");

protected Selenium selenium;

@Before
public void setUp() throws Exception {
    if (SERVER == null) {
        SERVER = "localhost";
    }

    if (BROWSER == null) {
        BROWSER = "*firefox3";
    }

    if (APP == null) {
        APP = "http://localhost:9000";
    }

    selenium = new DefaultSelenium(SERVER, 4444, BROWSER, APP);
    selenium.start("captureNetworkTraffic=true");
    selenium.getEval("window.moveTo(1,1); window.resizeTo(1021,737);");
    selenium.setTimeout("60000");
}
&lt;/pre&gt;
&lt;p&gt;The system properties are specified as part of the surefire-plugin's configuration. The reason we default them in the above code is so tests can be run from IDEA as well.&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;artifactId&amp;gt;maven-surefire-plugin&amp;lt;/artifactId&amp;gt;
&amp;lt;version&amp;gt;2.5&amp;lt;/version&amp;gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;systemPropertyVariables&amp;gt;
        &amp;lt;selenium.application&amp;gt;${selenium.application}&amp;lt;/selenium.application&amp;gt;
        &amp;lt;selenium.browser&amp;gt;${selenium.browser}&amp;lt;/selenium.browser&amp;gt;
        &amp;lt;selenium.server&amp;gt;${selenium.server}&amp;lt;/selenium.server&amp;gt;
    &amp;lt;/systemPropertyVariables&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Running Selenium Tests in the Cloud&lt;/strong&gt;&lt;br/&gt;
To run tests in the cloud, you have to do a bit of setup first. 
If you're behind a firewall, you'll need to setup &lt;a href="http://saucelabs.com/products/docs/sauce-ondemand/tunnel"&gt;SSH tunneling&lt;/a&gt; so Sauce Labs can see your machine. You'll also need to setup SSH Tunneling on your Hudson server, but installing/configuring/running locally is usually a good first step. Below are the steps I used to configure Sauce Labs' SSH Tunneling on OS X.
&lt;/p&gt;
&lt;p&gt;1. Install the &lt;a href="http://github.com/saucelabs/saucerest-python"&gt;Python version&lt;/a&gt; in /opt/tools/saucelabs. If you get an error (&lt;span style="color: red"&gt;No local packages or download links found for install&lt;/span&gt;) &lt;a href="http://pypi.python.org/pypi/setuptools#downloads"&gt;download the egg&lt;/a&gt; and run it with:
&lt;/p&gt;
&lt;p style="padding-left: 20px"&gt;&lt;span style="color: green"&gt;sudo sh setuptools-0.6c11-py2.6.egg&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; If you get an error (&lt;span style="color: red"&gt;unable to execute gcc-4.2: No such file or directory&lt;/span&gt;) when installing pycrypto on OS X, you'll need to install the OS X Developer Tools.&lt;/p&gt;
&lt;p&gt;2. Create a /opt/tools/saucelabs/local.sh script with the following in it. You should change the last parameter to use your username (instead of mraible) since Sauce Labs uses unique tunnel names.
&lt;p style="padding-left: 20px"&gt;&lt;span style="color: green"&gt;python tunnel.py {sauce.username} {sauce.key} localhost 9000:80 mraible.local&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;3. Start the tunnel by executing local.sh. You should see output similar to the following.
&lt;/p&gt;
&lt;pre&gt;$ sh local.sh 
/System/../Python.framework/../2.6/../twisted/internet/_sslverify.py:5: DeprecationWarning: the md5 module is deprecated; use hashlib instead
 import itertools, md5
/System/../Python.framework/../2.6/../twisted/conch/ssh/keys.py:13: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
 import sha, md5
Launching tunnel ... 
Status: new
Status: booting
Status: running
Tunnel host: ec2-75-101-216-8.compute-1.amazonaws.com
Tunnel ID: 70f15fb59d2e7ebde55a6274ddfa54dd
&amp;lt;sshtunnel.TunnelTransport instance at 0x10217ad88&amp;gt; created
requesting remote forwarding for tunnel 70f15fb59d2e7ebde55a6274ddfa54dd 80=&amp;gt;localhost:9000
accepted remote forwarding for tunnel 70f15fb59d2e7ebde55a6274ddfa54dd 80=&amp;gt;localhost:9000
&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;After setting up the SSH Tunnel, I modified AbstractSeleniumTestCase's setUp() method to allow running tests on Sauce Labs.&lt;/p&gt;
&lt;pre class="brush: java"&gt;
@Before
public void setUp() throws Exception {
    if (SERVER == null) {
        SERVER = "localhost";
    }

    if (BROWSER == null) {
        BROWSER = "*firefox3";
    } else if (BROWSER.split(":").length == 3) {
        String[] platform = BROWSER.split(":");

        String os = platform[0];
        String browser = platform[1];

        // if Google Chrome, don't use a version #
        String version = (platform[1].equals("googlechrome") ? "" : platform[2]);
        String printableVersion = ((version.length() &gt; 0) ? " " + platform[2].charAt(0) : "");

        String jobName = description.getMethodName() + " [" + browser + printableVersion + "]";

        BROWSER = "{\"username\":\"{your-username}\",\"access-key\":\"{your-access-key}\"," +
                "\"os\":\"" + platform[0] + "\",\"browser\": \"" + platform[1] + "\"," +
                "\"browser-version\":\"" + version + "\"," +
                "\"job-name\":\"" + jobName + "\"}";

        log.debug("Testing with " + browser + printableVersion + " on " + os);
    }

    if (APP == null) {
        APP = "http://localhost:9000";
    }

    selenium = new DefaultSelenium(SERVER, 4444, BROWSER, APP);
    selenium.start("captureNetworkTraffic=true");
    selenium.getEval("window.moveTo(1,1); window.resizeTo(1021,737);");
    selenium.setTimeout("60000");
}
&lt;/pre&gt;
&lt;p&gt;After making this change, I was able to run Selenium tests from IDEA using the following steps:&lt;/p&gt;
&lt;ol style="margin-bottom: 0px"&gt;
&lt;li&gt;Start Jetty on port 9000 (since that's what the tunnel points to). In IDEA's Maven panel, create a run/debug configuration for jetty:run, click the "Runner" tab and enter "-Djetty.port=9000" in the VM Parameters box.&lt;/li&gt;
&lt;li&gt;Right-click on the test to run and create a run/debug configuration. Enter the following in the VM Parameters box. The last two parameters allow skipping the xvfb and Selenium RC startup process.
&lt;div style="color: green; padding: 5px"&gt;-Dselenium.browser="Windows 2003:iexplore:8." -Dselenium.application=mraible.local -Dselenium.server=saucelabs.com -Dxvfb.skip=true -Dselenium.server.skip=true&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These same parameters can be used if you want to run all tests from the command line:
&lt;/p&gt;
&lt;p style="color: green; padding-left: 20px; text-align: left"&gt;mvn install -Pitest -Dselenium.browser="Windows 2003:iexplore:8." -Dselenium.application=mraible.local -Dselenium.server=saucelabs.com -Dxvfb.skip=true -Dselenium.server.skip=true -Dcargo.port=9000&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;To simplify things, we create profiles for the various browsers. For example, below are profiles for IE8 and Firefox 3.6.
&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;profile&amp;gt;
    &amp;lt;id&amp;gt;firefox-win&amp;lt;/id&amp;gt;
    &amp;lt;properties&amp;gt;
        &amp;lt;cargo.port&amp;gt;9000&amp;lt;/cargo.port&amp;gt;
        &amp;lt;selenium.application&amp;gt;http://${user.name}.local&amp;lt;/selenium.application&amp;gt;
        &amp;lt;selenium.browser&amp;gt;Windows 2003:firefox:3.6.&amp;lt;/selenium.browser&amp;gt;
        &amp;lt;selenium.server&amp;gt;saucelabs.com&amp;lt;/selenium.server&amp;gt;
        &amp;lt;selenium.server.skip&amp;gt;true&amp;lt;/selenium.server.skip&amp;gt;
        &amp;lt;xvfb.skip&amp;gt;true&amp;lt;/xvfb.skip&amp;gt;
    &amp;lt;/properties&amp;gt;
&amp;lt;/profile&amp;gt;
&amp;lt;profile&amp;gt;
    &amp;lt;id&amp;gt;ie-win&amp;lt;/id&amp;gt;
    &amp;lt;properties&amp;gt;
        &amp;lt;cargo.port&amp;gt;9000&amp;lt;/cargo.port&amp;gt;
        &amp;lt;selenium.application&amp;gt;http://${user.name}.local&amp;lt;/selenium.application&amp;gt;
        &amp;lt;selenium.browser&amp;gt;Windows 2003:iexplore:8.&amp;lt;/selenium.browser&amp;gt;
        &amp;lt;selenium.server&amp;gt;saucelabs.com&amp;lt;/selenium.server&amp;gt;
        &amp;lt;selenium.server.skip&amp;gt;true&amp;lt;/selenium.server.skip&amp;gt;
        &amp;lt;xvfb.skip&amp;gt;true&amp;lt;/xvfb.skip&amp;gt;
    &amp;lt;/properties&amp;gt;
&amp;lt;/profile&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Issues&lt;/strong&gt;&lt;br/&gt;
Since we've started using Sauce Labs, we've run into a number of issues. Some of these are Selenium-related and some are simply things we learned since we started testing on multiple browsers.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SSH Tunnels Keep Restarting&lt;/strong&gt; This happens on our Hudson server that runs the tunnels as a service. This seems to happen daily and screws up our Hudson results because builds fail.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XPath vs. CSS Selectors&lt;/strong&gt;
One of the first things we noticed was that our IE tests were 2-3 times slower than the same tests on Firefox. We discovered this is because Internet Explorer has a &lt;a href="http://blogs.telerik.com/testing/posts/07-07-16/selenium_ie_performance_issues_tests_optimization.aspx"&gt;very slow XPath engine&lt;/a&gt;. To fix this issue, it's recommended that ids or CSS Selectors be used whenever trying to locate elements. For more information on CSS Selectors and Selenium, see 
&lt;a href="http://saucelabs.com/blog/index.php/2010/01/selenium-totw-css-selectors-in-selenium-demystified/"&gt;CSS Selectors in Selenium Demystified&lt;/a&gt;. To test CSS Selectors, I found &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/11905"&gt;Firefinder&lt;/a&gt; to be a very useful Firefox plugin. Note that many pseudo elements &lt;a href="http://msdn.microsoft.com/en-us/library/cc351024%28VS.85%29.aspx"&gt;won't work in IE&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IE7 fails to initialize on Sauce Labs&lt;/strong&gt; There's no errors in our JUnit reports, so we're not sure what's causing this. It could very well be bugs in our code/configuration, but IE8 works fine.&lt;/li&gt;
&lt;li&gt;The Job Names on Sauce Labs don't get set correctly and often results in duplicate job names. This could certainly be related to my code. Finding videos that show failed tests is difficult when the job names aren't set correctly.&lt;/li&gt;
&lt;li&gt;It would be slick if you could &lt;a href="http://saucelabs.com/forums/viewtopic.php?id=50"&gt;download the video of a failed test&lt;/a&gt;, similar to what we do by taking screenshots.&lt;/li&gt;
&lt;li&gt;Google Chrome works on Sauce Labs, but I'm unable to get it working locally (on Windows or OS X). This seems to be a Selenium issue.&lt;/li&gt;
&lt;li&gt;Safari 4 works, but when it fails, the screenshot shows a &lt;a href="http://twitpic.com/1grjtx"&gt;Safari can't find the file&lt;/a&gt; error. Since there's no real error to debug, it's difficult to figure out why the test fails. Since Safari 4 is not listed on &lt;a href="http://seleniumhq.org/about/platforms.html"&gt;platforms supported by Selenium&lt;/a&gt;, I'm unsure how to fix this.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, Sauce Labs seems to work pretty well. However, in the process of messing with Hudson, build agents and Selenium infrastructure, it's become readily apparent that we need a team member to devote their full-attention to it. Having a developer or two work on it every now-and-then is inefficient, especially when we're still in the process of ironing everything out and making it all stable. 
&lt;/p&gt;
&lt;p&gt;
If you have any tips on how you've solved issues with Sauce Labs (ssh tunnels, IE7) or Selenium (Safari 4, Google Chrome), I'd love to hear them. I'm also interested to hear from anyone with experience running Selenium tests concurrently (locally or in the cloud).&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76404892&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76404892&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76404892 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/versioning_static_assets_with_urlrewritefilter</guid><title>Versioning Static Assets with UrlRewriteFilter</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/versioning_static_assets_with_urlrewritefilter</link><pubDate>Fri, 4 Jun 2010 09:27:42 -0600</pubDate><category>Java</category><category>performance</category><category>webperformance</category><category>maven</category><category>mod_rewrite</category><category>jsp</category><category>apache</category><category>urlrewritefilter</category><category>highperformance</category><category>java</category><description>A few weeks ago, a &lt;a href="http://www.linkedin.com/in/ericmitchell"&gt;co-worker&lt;/a&gt; sent me interesting email after talking with the &lt;a href="http://zoompf.com/"&gt;Zoompf CEO&lt;/a&gt; at &lt;a href="http://jsconf.us/2010/"&gt;JSConf&lt;/a&gt;.&lt;/p&gt;
&lt;p class="quote" style="color: #666"&gt;
One interesting tip mentioned was how we querystring the version on our scripts and css. Apparently this doesn't always cache the way we expected it would (some proxies will never cache an asset if it has a querystring).  The &lt;a href="http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/"&gt;recommendation is to rev the filename itself&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;This article explains how we implemented a "cache busting" system in our application with Maven and the UrlRewriteFilter. We originally used querystring in our implementation, but switched to filenames after reading Souders' recommendation. That part was figured out by my esteemed colleague &lt;a href="http://software.druidhillroad.com/"&gt;Noah Paci&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Our Requirements&lt;/strong&gt;
&lt;ul&gt;&lt;li&gt;Make the URL include a version number for each static asset URL (JS, CSS and SWF) that serves to expire a client's cache of the asset. 
&lt;/li&gt;&lt;li&gt;Insert the version number into the application so the version number can be included in the URL.
&lt;/li&gt;&lt;li&gt;Use a random version number when in development mode (based on running without a packaged war) so that developers will not need to clear their browser cache when making changes to static resources.  The random version number should match the production version number formats which is currently: x.y-SNAPSHOT-revisionNumber
&lt;/li&gt;&lt;li&gt;When running in production, the version number/cachebust is computed once (when a Filter is initialized).  In development, a new cachebust is computed on each request.
&lt;/li&gt;&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;In our app, we're using Maven, Spring and JSP, but the latter two don't really matter for the purposes of this discussion.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Implementation Steps&lt;/strong&gt;
&lt;br/&gt;
1. First we added the &lt;a href="http://mojo.codehaus.org/buildnumber-maven-plugin/"&gt;buildnumber-maven-plugin&lt;/a&gt; to our project's pom.xml so the build number is calculated from SVN.
&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;plugin&amp;gt;
    &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;buildnumber-maven-plugin&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.0-beta-4&amp;lt;/version&amp;gt;
    &amp;lt;executions&amp;gt;
        &amp;lt;execution&amp;gt;
            &amp;lt;phase&amp;gt;validate&amp;lt;/phase&amp;gt;
            &amp;lt;goals&amp;gt;
                &amp;lt;goal&amp;gt;create&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
        &amp;lt;/execution&amp;gt;
    &amp;lt;/executions&amp;gt;
    &amp;lt;configuration&amp;gt;
        &amp;lt;doCheck&amp;gt;false&amp;lt;/doCheck&amp;gt;
        &amp;lt;doUpdate&amp;gt;false&amp;lt;/doUpdate&amp;gt;
        &amp;lt;providerImplementations&amp;gt;
            &amp;lt;svn&amp;gt;javasvn&amp;lt;/svn&amp;gt;
        &amp;lt;/providerImplementations&amp;gt;
    &amp;lt;/configuration&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;p&gt;2. Next we used the maven-war-plugin to add these values to our WAR's MANIFEST.MF file.&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;plugin&amp;gt;
    &amp;lt;artifactId&amp;gt;maven-war-plugin&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;2.0.2&amp;lt;/version&amp;gt;
    &amp;lt;configuration&amp;gt;
        &amp;lt;archive&amp;gt;
            &amp;lt;manifest&amp;gt;
                &amp;lt;addDefaultImplementationEntries&amp;gt;true&amp;lt;/addDefaultImplementationEntries&amp;gt;
            &amp;lt;/manifest&amp;gt;
            &amp;lt;manifestEntries&amp;gt;
                &amp;lt;Implementation-Version&amp;gt;${project.version}&amp;lt;/Implementation-Version&amp;gt;
                &amp;lt;Implementation-Build&amp;gt;${buildNumber}&amp;lt;/Implementation-Build&amp;gt;
                &amp;lt;Implementation-Timestamp&amp;gt;${timestamp}&amp;lt;/Implementation-Timestamp&amp;gt;
            &amp;lt;/manifestEntries&amp;gt;
        &amp;lt;/archive&amp;gt;
    &amp;lt;/configuration&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;p&gt;3. Then we configured a Filter to read the values from this file on startup. If this file doesn't exist, a default version number of "1.0-SNAPSHOT-{random}" is used. Otherwise, the version is calculated as ${project.version}-${buildNumber}.
&lt;/p&gt;
&lt;pre class="brush: java"&gt;
private String buildNumber = null;

...
@Override
public void initFilterBean() throws ServletException {
    try {
        InputStream is = 
            servletContext.getResourceAsStream("/META-INF/MANIFEST.MF");
        if (is == null) {
            log.warn("META-INF/MANIFEST.MF not found.");
        } else {
            Manifest mf = new Manifest();
            mf.read(is);
            Attributes atts = mf.getMainAttributes();
            buildNumber = atts.getValue("Implementation-Version") + "-" + atts.getValue("Implementation-Build");
            log.info("Application version set to: " + buildNumber);
        }
     } catch (IOException e) {
        log.error("I/O Exception reading manifest: " + e.getMessage());
     }
}

...

    // If there was a build number defined in the war, then use it for
    // the cache buster. Otherwise, assume we are in development mode 
    // and use a random cache buster so developers don't have to clear 
    // their browswer cache.
    requestVars.put("cachebust", buildNumber != null ? buildNumber : "1.0-SNAPSHOT-" + new Random().nextInt(100000));
&lt;/pre&gt;
&lt;p&gt;4. We then used the "cachebust" variable and appended it to static asset URLs as indicated below.&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;c:set var="version" scope="request" 
    value="${requestScope.requestConfig.cachebust}"/&gt;
&amp;lt;c:set var="base" scope="request"
    value="${pageContext.request.contextPath}"/&gt;

&amp;lt;link rel="stylesheet" type="text/css" 
    href="${base}/v/${version}/assets/css/style.css" media="all"/&gt;

&amp;lt;script type="text/javascript" 
    src="${base}/v/${version}/compressed/jq.js"&gt;&amp;lt;/script&gt;
&lt;/pre&gt;
&lt;p&gt;
The injection of /v/[CACHEBUSTINGSTRING]/(assets|compressed) eventually has to map back to the actual asset (that does not include the two first elements of the URI). The application must remove these two elements to map back to the actual asset. To do this, we use the &lt;a href="http://tuckey.org/urlrewrite/"&gt;UrlRewriteFilter&lt;/a&gt;. The UrlRewriteFilter is used (instead of Apache's &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html"&gt;mod_rewrite&lt;/a&gt;) so when developers run locally (using &lt;em&gt;mvn jetty:run&lt;/em&gt;) they don't have to configure Apache.
&lt;/p&gt;
&lt;p&gt;5. In our application, "/compressed/" is mapped to &lt;a href="http://code.google.com/p/wro4j/"&gt;wro4j&lt;/a&gt;'s WroFilter. In order to get UrlRewriteFilter and WroFilter to work with this setup, the WroFilter has to accept FORWARD and REQUEST dispatchers.
&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;filter-mapping&amp;gt;
    &amp;lt;filter-name&amp;gt;rewriteFilter&amp;lt;/filter-name&amp;gt;
    &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;
&amp;lt;/filter-mapping&amp;gt;

&amp;lt;filter-mapping&amp;gt;
    &amp;lt;filter-name&amp;gt;WebResourceOptimizer&amp;lt;/filter-name&amp;gt;
    &amp;lt;url-pattern&amp;gt;/compressed/*&amp;lt;/url-pattern&amp;gt;
    &amp;lt;dispatcher&amp;gt;FORWARD&amp;lt;/dispatcher&amp;gt;
    &amp;lt;dispatcher&amp;gt;REQUEST&amp;lt;/dispatcher&amp;gt;
&amp;lt;/filter-mapping&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
Once this was configured, we added the following rules to our urlrewrite.xml to allow rewriting of any assets or compressed resource request back to its "correct" URL.
&lt;/p&gt;
&lt;pre class="brush: xml"&gt;
&amp;lt;rule match-type="regex"&amp;gt;
    &amp;lt;from&amp;gt;^/v/&amp;#91;0-9A-Za-z_.\-&amp;#93;+/assets/(.*)$&amp;lt;/from&amp;gt;
    &amp;lt;to&amp;gt;/assets/$1&amp;lt;/to&amp;gt;
&amp;lt;/rule&amp;gt;
&amp;lt;rule match-type="regex"&amp;gt;
    &amp;lt;from&amp;gt;^/v/&amp;#91;0-9A-Za-z_.\-&amp;#93;+/compressed/(.*)$&amp;lt;/from&amp;gt;
    &amp;lt;to&amp;gt;/compressed/$1&amp;lt;/to&amp;gt;
&amp;lt;/rule&amp;gt;
&amp;lt;rule&amp;gt;
    &amp;lt;from&amp;gt;/compressed/**&amp;lt;/from&amp;gt;
    &amp;lt;to&amp;gt;/compressed/$1&amp;lt;/to&amp;gt;
&amp;lt;/rule&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Of course, you can also do this in Apache. This is what it might look like in your vhost.d file:
&lt;/p&gt;
&lt;pre&gt;
RewriteEngine    on
RewriteLogLevel  0!
RewriteLog       /srv/log/apache22/app_rewrite_log
RewriteRule      ^/v/[.A-Za-z0-9_-]+/assets/(.*) /assets/$1 [PT]
RewriteRule      ^/v/[.A-Za-z0-9_-]+/compressed/(.*) /compressed/$1 [PT]
&lt;/pre&gt;
&lt;p&gt;
Whether it's a good idea to implement this in Apache or using the UrlRewriteFilter is up for debate. If we're able to do this with the UrlRewriteFilter, the benefit of doing this at all in Apache is questionable, especially since it creates a duplicate of code.&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76380015&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76380015&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76380015 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><title>[Ad] Can You Really Make Money Online?</title><link>http://www.rsscache.com/Section/Advertise/click.aspx?a=1202133</link><description>Or is it a scam? We investigate a local Mom that tried it. Read&amp;#133;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/life_without_tv</guid><title>Life without TV</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/life_without_tv</link><pubDate>Thu, 3 Jun 2010 08:06:49 -0600</pubDate><category>General</category><category>tv</category><category>living</category><category>abc</category><category>ipad</category><category>life</category><category>onlinevideo</category><category>hulu</category><description>As a Denver sports enthusiast, April started as a great month. The Nuggets and the Avs both made the playoffs and both appeared like they would do fairly well. Of course, neither of them did and by April 30th, both teams' seasons where over. I watched the final Nuggets game of the season &lt;a href="http://raibledesigns.com/rd/entry/thanks_to_seattle_for_a"&gt;in Seattle&lt;/a&gt; and was so disgusted I decided to &lt;a href="http://twitter.com/mraible/status/13172187335" title="The disappointing playoffs (Avalanche and Nuggets) have inspired me... ditching TV until June 1st. Sorry kids..."&gt;turn off my TV for a month&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;When I first told my kids (who spend 50% of their time at my house), Jack's lower lip started to tremble (mostly because it meant no Wii). Abbie quickly asked "What about the iPad?" I said that was OK and both kids quickly cheered up. I don't generally watch a lot of TV (~10 hours/week), and I &lt;a href="http://raibledesigns.com/rd/entry/the_cabin"&gt;grew up without electricity&lt;/a&gt;, so this wasn't a huge change for me. However, I do have some shows that I've been following this year. Namely, 24, FlashForward, The Office and American Idol.&lt;/p&gt;
&lt;p&gt;For the last 6 months, I've been developing an online video site, so it wasn't long before my brash "no TV" decision turned into a nice opportunity to research other sites offering online video. Here are some observations from my month without TV.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Almost no online video sites work on the iPad because of Flash. I get the feeling that most online video sites aren't doing HTML5 &amp;lt;video&amp;gt; because of DRM and progressive download vs. streaming.&lt;/li&gt;
&lt;li&gt;Netflix is a cool app for the iPad, but most of the streaming content is crap. My kids found plenty to watch, but I never found anything.&lt;/li&gt;
&lt;li&gt;Hulu is the bomb if they have shows you like to watch.&lt;/li&gt;
&lt;li&gt;The ABC app for iPad is great if they have shows you like to watch.&lt;/li&gt;
&lt;li&gt;I watched a lot less movies because I didn't have onDemand and didn't feel like renting/ordering DVDs.&lt;/li&gt;
&lt;li&gt;I found my laptop offered a better viewing experience than the iPad. &lt;/li&gt;
&lt;li&gt;My kids found the iPad offered a better viewing experience than my laptop (easier to hold/share).&lt;/li&gt;
&lt;li&gt;The iPad isn't loud or comfortable enough to replace the modern TV.&lt;/li&gt;
&lt;li&gt;My TV (and surround sound) offers a much better viewing experience than a computer.&lt;/li&gt;
&lt;li&gt;Ads on Hulu are short and sweet (15 seconds) and seem to inspire higher engagement because you're willing to wait for the show to resume.&lt;/li&gt;
&lt;li&gt;My team has developed both a webapp and a native app that work on the iPad, but I was never inspired to use either due to lack of shows I wanted to watch.&lt;/li&gt;
&lt;li&gt;American Idol was difficult to find online. When I did find it, it was very poor quality.&lt;/li&gt;
&lt;li&gt;I did not use BitTorrent because I forgot what a good resource it is.&lt;/li&gt;
&lt;li&gt;I found myself going to bed a lot earlier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Overall, it was a great experience and I recommend others try it. However, with the Stanley Cup Finals, NBA Finals and World Cup this month, I'm glad I turned my TV back on. &lt;img src="http://raibledesigns.com/images/smileys/wink.gif" class="smiley" alt=";-)" title=";-)" /&gt;
&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76313683&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76313683&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76313683 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/mountain_biking_in_moab</guid><title>Mountain Biking in Moab</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/mountain_biking_in_moab</link><pubDate>Wed, 2 Jun 2010 10:31:53 -0600</pubDate><category>General</category><category>klondikebluffs</category><category>porcupinerim</category><category>desertrocks</category><category>singletrack</category><category>slickrock</category><category>mountainbiking</category><category>moab</category><category>epicsingletrack</category><description>Ever since I first learned to ride a bike when I was 5 years old, I've been a huge fan. In grade school, I got into freestyle, BMX and even did a bit of racing. After college, I re-invested myself in biking and started riding to work. Soon after, I got into mountain biking and have loved it ever since. When it's summertime in Colorado, I prefer to be on a bike, riding singletracks with the sweet smell of the Rockies in the air.&lt;/p&gt;
&lt;p&gt;Moab is the &lt;a href="http://www.nytimes.com/2000/11/05/travel/moab-mecca-for-mountain-bikers.html"&gt;Mecca of mountain biking&lt;/a&gt;. It was with much anticipation that I began a journey there last weekend with my good friend Matt Good. Matt was going for &lt;a href="http://www.desertrocks.org/"&gt;the music&lt;/a&gt;, while I was primarily interested in the singletrack. We left Denver on Wednesday evening and stayed the night in Grand Junction. On Thursday, we stopped at a bike shop in Fruita, got some recommendations and headed for Utah. &lt;/p&gt;
&lt;p&gt;Our first trail was &lt;a href="http://www.trails.com/tcatalog_trail.aspx?trailid=BGS061-077"&gt;Klondike Bluffs&lt;/a&gt; to Baby Steps. The trail began with dirt and quickly shifted to riding on bumpy slickrock. At the top, we hiked into &lt;a href="http://www.nps.gov/arch/"&gt;Arches National Park&lt;/a&gt; and enjoyed some spectacular views. From the top of Klondike Bluffs, we hit Baby Steps and cruised along a red singletrack for most of the afternoon.&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4021/4662666980_6b6fc32a36.jpg" title="Klondike Bluffs" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4021/4662666980_6b6fc32a36_t.jpg" width="100" height="75" alt="Klondike Bluffs" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4050/4662667130_d3008e858c.jpg" title="Klondike Bluffs" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4050/4662667130_d3008e858c_t.jpg" width="100" height="75" alt="Klondike Bluffs" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4018/4662045743_c517c49b84.jpg" title="Baby Steps Singletrack" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4018/4662045743_c517c49b84_t.jpg" width="100" height="75" alt="Baby Steps Singletrack" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4026/4662668322_b75bae6865.jpg" title="Baby Steps" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4026/4662668322_b75bae6865_t.jpg" width="100" height="75" alt="Baby Steps" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Our first ride in Moab took us almost 4 hours and we only covered 15 miles. With smiles on our faces, we enjoyed some cold beers and hopped in the car to head to the first night of &lt;a href="http://www.desertrocks.org"&gt;Desert Rocks&lt;/a&gt;. The 4-day concert was held at &lt;a href="http://areabfe.com/"&gt;Area BFE&lt;/a&gt; about 10 miles south of Moab. It was a very cool venue with a couple thousand music fans camping along the cliffs. It was definitely easy-living as far as camping goes. Bands played until dawn each night and you could hear it no matter where you slept.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4019/4662669002_bbcdd0c7ab.jpg" title="Arriving at Desert Rocks" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4019/4662669002_bbcdd0c7ab_t.jpg" width="100" height="75" alt="Arriving at Desert Rocks" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4060/4662046961_bee53761a8.jpg" title="Sunset from first night at Desert Rocks" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4060/4662046961_bee53761a8_t.jpg" width="100" height="75" alt="Sunset from first night at Desert Rocks" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4034/4662669280_b3e4d952ba.jpg" title="Early Arrivers" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4034/4662669280_b3e4d952ba_t.jpg" width="100" height="75" alt="Early Arrivers" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4071/4662047275_281f15e104.jpg" title="In BFE" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4071/4662047275_281f15e104_t.jpg" width="100" height="75" alt="In BFE" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;We pitched our tents as darkness was closing in and walked down to the main stage to enjoy some late night entertainment.

&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm2.static.flickr.com/1265/4662047483_3d9546f86a.jpg" title="Campsite" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1265/4662047483_3d9546f86a_t.jpg" width="100" height="75" alt="Campsite" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4003/4662047729_7b230ef447.jpg" title="Dining Room" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4003/4662047729_7b230ef447_t.jpg" width="100" height="75" alt="Dining Room" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4062/4662670030_06382a7881.jpg" title="View of Desert Rocks from our campsite" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4062/4662670030_06382a7881_t.jpg" width="100" height="75" alt="View of Desert Rocks from our campsite" /style="border: 1px solid black; margin-left: 10px" &gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The next day, we woke up, enjoyed Matt's famous breakfast burritos and headed into Moab to catch a shuttle to &lt;a href="http://en.wikipedia.org/wiki/Porcupine_Rim_Trail"&gt;Porcupine Rim Trail&lt;/a&gt;. It took an hour to get to the Hazard County Trailhead, but soon after we were zooming down the mountain. The UPS and LPS singletracks near the beginning of the trail were some of the most fun and scenic trails I've ever ridden. 
&lt;/p&gt;
&lt;p&gt;
Once we hit Porcupine Rim Trail, I put the pedal to the metal and didn't stop to wait for Matt for a couple hours. Finally, I stopped to make sure he was OK. 30 minutes later, I got a text message from him saying he had a flat, his spare was bad, and he was walking out. Luckily, I had an extra tube and rode back to help him out. I was pretty impressed by iPhone could send/receive text messages out in the middle of nowhere. The Porcupine Rim ride took us 4.5 hours and we tracked 26.75 miles. The several points in the trail with "death on the right" were truly epic.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4046/4662670544_478cb254c5.jpg" title="Hazard County Trail" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4046/4662670544_478cb254c5_t.jpg" width="100" height="75" alt="Hazard County Trail" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4068/4662049049_9761af8d03.jpg" title="Close to The Edge" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4068/4662049049_9761af8d03_t.jpg" width="100" height="75" alt="Close to The Edge" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4038/4662049861_02a837094d.jpg" title="Awesome Singletrack" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4038/4662049861_02a837094d_t.jpg" width="100" height="75" alt="Awesome Singletrack" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4027/4662050007_80627bc86a.jpg" title="Sweet View" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4027/4662050007_80627bc86a_t.jpg" width="100" height="75" alt="Sweet View" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;br/&gt;&lt;br/&gt;
&lt;a href="http://farm5.static.flickr.com/4031/4662672640_26740b4d4a.jpg" title="Porcupine Rim Trail" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4031/4662672640_26740b4d4a_t.jpg" width="100" height="75" alt="Porcupine Rim Trail" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4015/4662672998_ab2b555be6.jpg" title="Flat Tire" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4015/4662672998_ab2b555be6_t.jpg" width="100" height="75" alt="Flat Tire" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4034/4662051017_e262bd53cc.jpg" title="Porcupine Rim" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4034/4662051017_e262bd53cc_t.jpg" width="100" height="75" alt="Porcupine Rim" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4054/4662051179_f04260db3a.jpg" title="Death on the Right" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4054/4662051179_f04260db3a_t.jpg" width="100" height="75" alt="Death on the Right" style="border: 1px solid black; margin-left: 10px"  /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;After another night of great music under the stars, I woke up Saturday and headed for the most famous trail in Moab: &lt;a href="http://en.wikipedia.org/wiki/Slickrock_Trail"&gt;Slickrock&lt;/a&gt;. Matt declined to join me as he was sore from the previous two days. Up to this point, the rides had been pretty easy. Granted, they were long and we were both super-tired after finishing, but I rarely dropped down into my lower chain ring (in front). I was riding my &lt;a href="http://raibledesigns.com/rd/entry/new_bike_gary_fisher_hifi"&gt;full-suspension with disc brakes&lt;/a&gt; while Matt was riding his Homegrown Hardtail.&lt;/p&gt;
&lt;p&gt;Slickrock was even cooler (and harder) than I thought it would be. There were several "hills" that were super-steep and really hard to pedal up. It &lt;em&gt;was&lt;/em&gt; possible to pedal up them, but you had to really crank. I found that standing up helped a lot. The scary part of riding these hills was if you didn't make it, there's a good chance you'd crash all the way back to the bottom. I'm proud to say I made it up all but 4 hills and got away with only a &lt;a href="http://www.facebook.com/photo.php?pid=4611472&amp;l=ae282e08e8&amp;id=571296711" title="War wounds from Slickrock"&gt;minor injury&lt;/a&gt;. 
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4070/4662051651_05be9010f6.jpg" title="Slickrock" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4070/4662051651_05be9010f6_t.jpg" width="100" height="75" alt="Slickrock" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4031/4662051819_aa2c75e107.jpg" title="I love Moab" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4031/4662051819_aa2c75e107_t.jpg" width="100" height="75" alt="I love Moab" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4061/4662052937_d1a77842f5.jpg" title="Heading Back" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4061/4662052937_d1a77842f5_t.jpg" width="100" height="75" alt="Heading Back" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;The remainder of Saturday was spent listening to good music and enjoying the vibe of Desert Rocks. By this time, most people had arrived and smiling faces were everywhere. Sunday, we took the day off from riding, enjoyed more music, took an afternoon nap and watched another beautiful sunset.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4010/4662675144_0e58ccd43e.jpg" title="Sunday Sunset" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4010/4662675144_0e58ccd43e_m.jpg" width="240" height="180" alt="Sunday Sunset" style="border: 1px solid black"/&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;Monday, we packed up and rode Sovereign Singletrack just before noon. We did the relatively easy Garden Mesa 10-mile loop. When we turned off the road onto the singletrack, I heard a crash behind me and looked back to see Matt in the midst of an over-the-handlebars wipeout. Me: "How did that happen?" Matt: "I don't know, but I think I tore my fingernail off." &lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4044/4662675466_73bfe6dbbd.jpg" title="Top o' the hill" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4044/4662675466_73bfe6dbbd_t.jpg" width="100" height="75" alt="Top o' the hill" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4004/4662053555_ac0e6028c3.jpg" title="Sovereign Singletrack" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4004/4662053555_ac0e6028c3_t.jpg" width="100" height="75" alt="Sovereign Singletrack" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm2.static.flickr.com/1287/4662053705_f2c373a93b.jpg" title="Sovereign - up the gulch" rel="lightbox[moab2010]"&gt;&lt;img src="http://farm2.static.flickr.com/1287/4662053705_f2c373a93b_t.jpg" width="100" height="75" alt="Sovereign - up the gulch" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;2 and 1/2 hours later, we were back at the car, packing up to leave Moab. I've never had so much fun riding my bike. The camping and concert was exceptional too. If you ever get a chance to visit Moab for riding or Desert Rocks, I highly recommend it. 
&lt;/p&gt;
&lt;p style="border-top: 1px dotted silver; color: #666; padding-top: 5px"&gt;
All my pictures from this weekend can be found in my &lt;a href="http://www.flickr.com/photos/mraible/sets/72157624186708732/"&gt;Moab and Desert Rocks set on Flickr&lt;/a&gt;. In addition, I tracked all our rides using &lt;a href="http://www.itinitek.com/iWander.html"&gt;iWander&lt;/a&gt; and uploaded them to &lt;a href="http://everytrail.com"&gt;EveryTrail&lt;/a&gt;. You can see the precise routes, times, etc. by clicking on the links below.
&lt;/p&gt;
&lt;ul class="glassList" style="color: #666"&gt;
&lt;li&gt;&lt;a href="http://www.everytrail.com/view_trip.php?trip_id=646332"&gt;Klondike Bluffs to Baby Steps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.everytrail.com/view_trip.php?trip_id=646358"&gt;Porcupine Rim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.everytrail.com/view_trip.php?trip_id=646368"&gt;Slickrock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.everytrail.com/view_trip.php?trip_id=646311"&gt;Sovereign Singletrack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76313682&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76313682&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76313682 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/abbie_and_jack_s_field</guid><title>Abbie and Jack's Field Days</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/abbie_and_jack_s_field</link><pubDate>Wed, 26 May 2010 06:49:39 -0600</pubDate><category>General</category><category>abbie</category><category>jack</category><category>fieldday</category><description>Last week, I had the pleasure of attending my kids' field days. For those who aren't familiar with field days, it's basically a &lt;a href="http://en.wikipedia.org/wiki/Sports_day"&gt;sports day&lt;/a&gt; for elementary schools. The best part of this year's field days was seeing my kids have so much fun with their classmates. Of course, it didn't hurt that their teachers were also smitten with the thought of the school year coming to a close. 
&lt;/p&gt;
&lt;p&gt;
I took a few pictures and shot a bunch of video to remember how much fun they had. I know most readers won't enjoy these as much as I do, but I always like posting fond memories on this blog. Below are a couple videos I compiled and enhanced with appropriate music. 
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;object width="500" height="315"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iPVbMwkkmyY&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hd=1&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/iPVbMwkkmyY&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hd=1&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="315"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;I especially like Jack's friend's dance moves at the end of the video below. &lt;img src="http://raibledesigns.com/images/smileys/wink.gif" class="smiley" alt=";-)" title=";-)" /&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;object width="500" height="315"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NgPQjzNIeiE&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hd=1&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/NgPQjzNIeiE&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;hd=1&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="315"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;&lt;p&gt;If you have trouble viewing either video here, &lt;a href="http://www.youtube.com/mraible"&gt;check them out on my YouTube channel&lt;/a&gt;.&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=76161574&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=76161574&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=76161574 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/volkswagens_on_the_green_2010</guid><title>Volkswagens On The Green 2010 and The Bus Project</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/volkswagens_on_the_green_2010</link><pubDate>Mon, 17 May 2010 21:02:11 -0600</pubDate><category>The Bus</category><category>vw</category><category>vwbus</category><category>colorado</category><category>thebus</category><description>This weekend, I took Abbie and Jack to the &lt;a href="http://www.vwec.org/index.php?option=com_content&amp;view=article&amp;id=53:volkswagens-on-the-green-2010&amp;catid=37:events-calendar&amp;Itemid=37"&gt;16th Annual Volkswagens on the Green&lt;/a&gt;. I was especially inspired to take them because we've been playing a lot of "Slug Bug" lately and I figured the number of opportunities for points would surely overload their senses. Not only was I right, but this was one of the best VW shows I've been to in Colorado. The venue was great, there were lots of cars and everything was easily accessible.
&lt;/p&gt;
&lt;p&gt;Personally, the highlight of the show for me was stumbling upon my bus in the midst of the parking lot. &lt;a href="http://www.motorworksrestorations.com/"&gt;Motorworks Restorations&lt;/a&gt; hauled it up from the Springs to highlight it as one of their project vehicles. The kids loved seeing it and climbed all over it while I had a conversation with Jeremy (owner of Motorworks) about adding a Porsche suspension and brakes to the mix.&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4053/4614385490_1ce32539d1.jpg" rel="lightbox[vwsongreenthe2010]" title="Daddy's Bus"&gt;&lt;img src="http://farm5.static.flickr.com/4053/4614385490_1ce32539d1_m.jpg" width="240" height="180" alt="Daddy's Bus" style="border: 1px solid black"/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
My Bus Restoration Project has been on hold for a couple years and I'm happy to report I'll be starting it again in the next few months. I don't know if we'll finish it this year, but there's a really good chance we'll be driving it to a lot of Colorado VW Shows next year.&lt;/p&gt;
&lt;p&gt;For more pictures, click on the images below or see my &lt;a href="http://www.flickr.com/photos/mraible/sets/72157623952139519/"&gt;VWs on the Green set&lt;/a&gt; on Flickr.&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4069/4614383408_8b1f91a9cd.jpg" title="Shiny" rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4069/4614383408_8b1f91a9cd_t.jpg" width="100" height="75" alt="Shiny" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4019/4613767519_dbf1a40de9.jpg" title="Beer Bus" rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4019/4613767519_dbf1a40de9_t.jpg" width="100" height="75" alt="Beer Bus" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4061/4614385054_e5a45007fa.jpg" title="So Low that Jack is taller" rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4061/4614385054_e5a45007fa_t.jpg" width="100" height="75" alt="So Low that Jack is taller" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm4.static.flickr.com/3377/4613769655_97d016f51e.jpg" title="Sweet Ghia" rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm4.static.flickr.com/3377/4613769655_97d016f51e_t.jpg" width="100" height="75" alt="Sweet Ghia" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;br/&gt;&lt;br/&gt;

&lt;a href="http://farm5.static.flickr.com/4042/4614386574_8d1279c990.jpg" title="Jack's Favorite Car" rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4042/4614386574_8d1279c990_t.jpg" width="100" height="75" alt="Jack's Favorite Car" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm4.static.flickr.com/3349/4613771047_d709ea33c1.jpg" title="Mmmm, Camping..." rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm4.static.flickr.com/3349/4613771047_d709ea33c1_t.jpg" width="100" height="75" alt="Mmmm, Camping..." style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;


&lt;a href="http://farm5.static.flickr.com/4028/4613771647_2a6251d833.jpg" title="Rainbow Slug Bug!" rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4028/4613771647_2a6251d833_t.jpg" width="100" height="75" alt="Rainbow Slug Bug!" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm4.static.flickr.com/3406/4613772581_c632c7ae4c.jpg" title="Similar colors to what I'm planning on." rel="lightbox[vwsongreenthe2010]"&gt;&lt;img src="http://farm4.static.flickr.com/3406/4613772581_c632c7ae4c_t.jpg" width="100" height="75" alt="Similar colors to what I'm planning on." style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=75832979&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=75832979&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=75832979 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/what_s_new_in_maven</guid><title>What's New in Maven 3.0 with Matthew McCullough</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/what_s_new_in_maven</link><pubDate>Thu, 13 May 2010 15:54:21 -0600</pubDate><category>Java</category><category>maven</category><category>denverjug</category><category>matthewmccullough</category><category>maven3</category><category>denver</category><category>polyglot</category><description>Last night, I attended the &lt;a href="http://denverjug.org"&gt;Denver JUG&lt;/a&gt; meeting to hear some excellent talks by &lt;a href="http://ambientideas.com/blog/"&gt;Matthew McCullough&lt;/a&gt; and &lt;a href="http://www.augusttechgroup.com/tim/blog/"&gt;Tim Berglund&lt;/a&gt;. I took notes during Matthew's talk, but my battery ran out before Tim's talk started. Below are my notes.
&lt;/p&gt;
&lt;p style="border-top: 1px dotted silver; padding-top: 5px"&gt;
Matthew started out by described the differences between Maven 2 and Maven 3. As he began, he emphasized it wasn't a beginner talk, but mostly for existing Maven users that understand how to read a pom.xml and such. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The Roadmap&lt;/strong&gt;&lt;br/&gt;
Commits  to Maven 3 have been happening for the last 3 years. Matthew is not an employee of &lt;a href="http://sonatype.com"&gt;Sonatype&lt;/a&gt;, but he mentioned their name quite a bit in his talk. Sonatype has hired several committers (7 that Matthew knows of by name) that now work on Maven 3 full-time. For compatibility with Maven 2, the project has 450 integration tests and they test it against 100s of Maven 2 projects. Maven 3 has plugin classloader partitioning and a &lt;em&gt;legacy simulation&lt;/em&gt; layer for old plugins. 
&lt;/p&gt;
&lt;p&gt;
The main improvement in Maven 3 is &lt;em&gt;speed&lt;/em&gt;. It's been performance tuned to be 50% to 400% faster. Benchmarks (guaranteed by integration tests) include better: Disk I/O, Network I/O, CPU and Memory. Another new feature is extensibility so Maven is a better library rather than just a command-line tool. Now there's a library and APIs that you can use to do the things that Maven does. Plexus has been replaced with Guice and it's now much easier to embed Maven (&lt;a href="http://polyglot.sonatype.org"&gt;Polyglot Maven&lt;/a&gt; and &lt;a href="http://shell.sonatype.org/"&gt;Maven Shell&lt;/a&gt; are examples of this).
&lt;/p&gt;
&lt;p&gt;Below are a number of other changes between Maven 2 and Maven 3.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syntax: pom.xml still uses &amp;lt;modelVersion&gt;4.0.0&amp;lt;/modelVersion&gt; so it can be a drop-in replacement for Maven 2 projects.&lt;/li&gt;
&lt;li&gt;Validations: poms are heavily validated against common mistakes, warns when plugin versions are not specified (use &lt;strong&gt;mvn validate&lt;/strong&gt; to see issues), blocks duplicate dependencies (examined in same POM only, conflict resolution used otherwise).&lt;/li&gt;
&lt;li&gt;Help URLs: wiki page URLs now shown for all error messages. One of the first Apache projects to do this.&lt;/li&gt;
&lt;li&gt;Removals: profiles.xml external file support removed, Maven 1.0 repository support removed &amp;lt;layout&gt;legacy&amp;lt;/layout&gt; (it's been 5 years since any commits to Maven 1).&lt;/li&gt;
&lt;li&gt;Behavior: SNAPSHOTs always deployed with date-stamps, artifact resolution caching has been improved to do less checking (override with &lt;strong&gt;mvn &amp;lt;phase&gt; -U&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Plugins: version auto-selection favors RELEASEs over SNAPSHOTs (opposite for Maven 2), versions cannot be specified as RELEASE or LATEST, plugins only resolved from &amp;lt;pluginRepository&gt; locations.&lt;/li&gt;
&lt;li&gt;See the &lt;a href="https://cwiki.apache.org/MAVEN/maven-3x-plugin-compatibility-matrix.html"&gt;Plugin Compatibility Matrix&lt;/a&gt; to see if your favorite plugins are compatible.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Maven 3 hopes to be a drop-in replacement for Maven 2, but non backwards-compatible changes will be happening in Maven 3.1. It's anticipated release is Q1 of 2011 and will likely contain the following features.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Mixins" for direct dependencies&lt;/li&gt;
&lt;li&gt;Site plugin takes over &amp;lt;reporting&gt;&lt;/li&gt;
&lt;li&gt;Backwards compatibility by &amp;lt;modelVersion&lt;/li&gt;
&lt;li&gt; There's a good chance 3.1 breaks compatibility with legacy POMs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Another new thing in Maven 3 is &lt;strong&gt;Toolchain&lt;/strong&gt;. Toolchain a common way to configure your JDK for multiple plugins. There are only a handful of plugins that are toolchain-enabled. User tool chain definitions are defined in ~/.m2/toolchains.xml. To use different toolchains (JDKs), you specify a vendor and version as part of your plugin configuration. 
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://shell.sonatype.org"&gt;Maven Shell&lt;/a&gt; is a high performance console that's a Maven 3 add-on. It's &lt;a href="http://github.com/sonatype/mvnsh"&gt;hosted at GitHub&lt;/a&gt; to make community contributions easier. It goes on your command line and it offers syntax highlighting and context-sensitive help (by typing ? at the command prompt).
&lt;/p&gt;
&lt;p&gt;
Another major improvement in Maven 3 is &lt;a href="http://polyglot.sonatype.org"&gt;Polyglot Maven&lt;/a&gt;. Tools like Gant and Buildr have made Maven look ancient, but they've also given it a good challenge. Maven 3 is likely to leapfrog these tools because of its ability to use different languages for your build configuration. Currently, 6 languages are supported. Polyglot Maven is a super-set distribution of Maven 3. It's not shipped with Maven 3 core because it contains all the other language implementations and is quite large. Polyglot Maven also contains a &lt;em&gt;translate&lt;/em&gt; tool that allows you to convert any-to-any language. It has a DSL framework with Macros and Lifecycle Hooks. Macros allows for more concise syntax. 
&lt;/p&gt;
&lt;p&gt;After talking about Polyglot Maven a bit, Matthew shows us a demo translating pom.xml to pom.yaml and then running the build. After that, he showed us examples of what a pom looks like when defined in Clojure, Scala and Groovy. Someone asked about file parsing performance and Matthew said different languages would cause a single-digit performance difference as part of your build process. Personally, I can't help but think any non-XML parser would be faster than the XML parser.
&lt;/p&gt;
&lt;p&gt;In regards to &lt;a href="http://m2eclipse.sonatype.org/"&gt;m2eclipse&lt;/a&gt;, a new drop (0.10) occurred a few weeks ago and it's one of the highest quality releases to date. It has major refactoring and many performance improvements.&lt;/p&gt;
&lt;p&gt;For sample Maven projects see &lt;a href="http://github.com/matthewmccullough/maven-training"&gt;Matthew's Maven Samples&lt;/a&gt;.
&lt;/p&gt;
&lt;p style="border-top: 1px dotted silver; padding-top: 10px"&gt;I very much enjoyed Matthew's talk, both because of his presentation techniques and because he had a lot of good information. While I've tried Maven 3 and Shell in the past, I've been newly inspired to start using them again on a daily basis. 
&lt;/p&gt;
&lt;p&gt;Tim's talk on Decision Making was also excellent. The biggest things I learned were that conflict is good (idea-wise, not personal) and things to look out for between teams (fault lines). Hopefully both Tim and Matthew post their slides so I can link to them here. 
&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=75689736&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=75689736&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=75689736 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/thanks_to_seattle_for_a</guid><title>Thanks to Seattle for a Great Weekend</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/thanks_to_seattle_for_a</link><pubDate>Tue, 11 May 2010 07:30:53 -0600</pubDate><category>General</category><category>family</category><category>kalin</category><category>mya</category><category>seattle</category><category>ballard</category><description>One of the things I like the most about my current gig is I get to travel to Seattle every-so-often. I've had a fondness for the Pacific Northwest since I went to high school in Salem, Oregon. That fondness has grown over the years from many visits to family, friends and conferences in the area. A couple weeks ago, I had the pleasure of visiting Seattle once again. While I've been there a few times with colleagues this year, it's been 6 months since I &lt;a href="http://raibledesigns.com/rd/entry/my_sister_s_fabulous_wedding"&gt;hung out in Washington with my sister&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;This trip was mostly work, flying in Wednesday and leaving on Sunday. The work week was very enjoyable: sunny skies everyday, &lt;a href="http://twitter.com/mraible/status/13073635599" title="A beautiful morning for a run along the water."&gt;nice running routes&lt;/a&gt; and we &lt;a href="http://twitter.com/mraible/status/13103244182" title="Successfully got our app working with an HTML5 video player today. #pumped"&gt;accomplished our goal&lt;/a&gt;. Friday afternoon, we finished a bit early and I enjoyed a scenic &lt;a href="http://twitpic.com/1jqopm"&gt;Friday Afternoon Office&lt;/a&gt; at &lt;a href="http://www.edgewaterhotel.com/"&gt;Edgewater Hotel&lt;/a&gt; while waiting for my sister, Kalin, and her wife, Mya.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;Spending the weekend with Kalin and Mya was a blast. They have good friends that live in Ballard (North/Hipster Seattle). They were out of town, so got to enjoy free, hip accommodations for the weekend. On Saturday, we took a &lt;a href="http://www.dailymile.com/people/mraible/entries/1654265"&gt;long stroll&lt;/a&gt; down to the &lt;a href="http://seattle.mariners.mlb.com"&gt;Mariners&lt;/a&gt; game at Safeco Field. A relaxing afternoon of baseball ensued, as well as a very fun evening in downtown Ballard. As evidenced by the pictures in this post, many smiles ensued as we reminisced, caught up and had fun like good friends do.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4009/4585487685_9fba978cd9.jpg" title="Olympic Sculpture Park" rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4009/4585487685_9fba978cd9_t.jpg" width="100" height="75" alt="Olympic Sculpture Park" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4013/4586112976_2618ac4176.jpg" title="Kalin and Mya" rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4013/4586112976_2618ac4176_t.jpg" width="100" height="75" alt="Kalin and Mya" style="border: 1px solid black;margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4025/4586113174_76770ed871.jpg" title="Cool Place to Live" rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4025/4586113174_76770ed871_t.jpg" width="100" height="75" alt="Cool Place to Live" style="border: 1px solid black;margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4055/4585488619_c52ced0fec.jpg" title="We made it! 7.2 miles in 2:24." rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4055/4585488619_c52ced0fec_t.jpg" width="100" height="75" alt="We made it! 7.2 miles in 2:24." style="border: 1px solid black;margin-left: 10px" /&gt;&lt;/a&gt;

&lt;br/&gt;&lt;br/&gt;
&lt;a href="http://farm5.static.flickr.com/4048/4585489353_cfe91a8aec.jpg" title="Sweet Seats at the Mariner's Game" rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4048/4585489353_cfe91a8aec_t.jpg" width="100" height="75" alt="Sweet Seats at the Mariner's Game" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4044/4585489443_6d290c0a7b.jpg" title="Rally Caps!" rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4044/4585489443_6d290c0a7b_t.jpg" width="100" height="75" alt="Rally Caps!" style="border: 1px solid black;margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4012/4585491717_0de23a17b7.jpg" title="Midnight" rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4012/4585491717_0de23a17b7_t.jpg" width="100" height="75" alt="Midnight" style="border: 1px solid black;margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm4.static.flickr.com/3319/4586117300_9bf3d4c6c8.jpg" title="Wheeeeee!!" rel="lightbox[seattle2010]"&gt;&lt;img src="http://farm4.static.flickr.com/3319/4586117300_9bf3d4c6c8_t.jpg" width="100" height="75" alt="Wheeeeee!!" style="border: 1px solid black;margin-left: 10px"/&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;I left Seattle on Sunday with the feeling that its quickly becoming one of my favorite cities. That feeling was likely nurtured by the combination of great weather, an accomplished mission and hanging out with my super-fun family. Regardless, thanks to Seattle and "the girls" for a great weekend!
&lt;/p&gt;
&lt;p&gt;For more pictures from this weekend, see &lt;a href="http://www.flickr.com/photos/mraible/sets/72157623885039353/"&gt;Seattle 2010 on Flickr&lt;/a&gt;.&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=75582789&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=75582789&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=75582789 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/celebrating_my_mom_s_retirement</guid><title>Celebrating My Mom's Retirement</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/celebrating_my_mom_s_retirement</link><pubDate>Fri, 7 May 2010 00:18:24 -0600</pubDate><category>General</category><category>oregon</category><category>jack</category><category>dad</category><category>abbie</category><category>thecabin</category><category>retirement</category><category>mom</category><category>montana</category><category>kids</category><description>A couple of weeks ago, after attending &lt;a href="http://www.youtube.com/watch?v=KifjhtCiP4U"&gt;Abbie's Talent Show&lt;/a&gt;, the kids and I packed up and headed to Oregon for a weekend. This weekend marked a special weekend for my parents. When we arrived, my Mom had a week left of work before she retired from the &lt;a href="http://www.blm.gov"&gt;Bureau of Land Management&lt;/a&gt;. You might've &lt;a href="http://raibledesigns.com/rd/entry/happy_birthday_mom"&gt;read about my Mom&lt;/a&gt; in the past. And you might know that &lt;a href="http://raibledesigns.com/rd/entry/congratulations_on_retiring_dad"&gt;my Dad retired last year&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;My Mom has always enjoyed her career and I like to think I get a
            lot of enthusiasm for my own career from her. She taught me to love what you
            do for a living. When we lived at &lt;a href="http://raibledesigns.com/rd/entry/the_cabin"&gt;The Cabin&lt;/a&gt;, she
            had the drive and ambition to go back to school to get her degree in Forestry. Upon
            graduation, she got a job with the BLM and we moved to Oregon. My parents have lived there since 1990.
&lt;/p&gt;
&lt;p&gt;The weekend we spent in Oregon was somewhat magical. My parent's
            house sold in March after being on the market for only two weeks. They had a week left
            before they packed up and moved back to The Cabin. This meant the
            outside was pristine (because they fixed it up for the new buyers) and
            the inside was mostly packed. It was a sunny 3 days that weekend (which
            is rare in Oregon) and we had a blast at the &lt;a
                    href="http://www.oregongarden.org/Brewfest.htm"&gt;Oregon Garden Brewfest&lt;/a&gt;, enjoyed a
            sunny BBQ with old friends and shared many memories derived from their 20 years in Oregon.  
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm5.static.flickr.com/4039/4583410595_074720572f.jpg" title="Huckleberry Aficionado" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4039/4583410595_074720572f_t.jpg" width="100" height="75" alt="Huckleberry Aficionado" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4046/4583411691_753d16bea8.jpg" title="Jack and Mimi" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4046/4583411691_753d16bea8_t.jpg" width="100" height="75" alt="Jack and Mimi" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4022/4584042224_6b281d4705.jpg" title="The Crew" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4022/4584042224_6b281d4705_t.jpg" width="100" height="75" alt="The Crew" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4035/4583413251_b5bfac47b9.jpg" title="Fountain at The Oregon Garden" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4035/4583413251_b5bfac47b9_t.jpg" width="100" height="75" alt="Fountain at The Oregon Garden" style="border: 1px solid black; margin-left: 10px" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;It was a somewhat bittersweet experience, meeting with all their friends and talking about their move to Montana. Many expressed sadness that they were leaving, but that didn't stop my parents from grinning ear-to-ear. You could see the excitement of moving back &lt;em&gt;home&lt;/em&gt; sparkle in their eyes. 
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://farm4.static.flickr.com/3327/4584043110_78188e39cf.jpg" title="Oregon Garden Brewfest" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm4.static.flickr.com/3327/4584043110_78188e39cf_t.jpg" width="100" height="75" alt="Oregon Garden Brewfest" style="border: 1px solid black" /&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4002/4584043518_074d446180.jpg" title="Happy Beer Drinkers" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4002/4584043518_074d446180_t.jpg" width="100" height="75" alt="Happy Beer Drinkers" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;a href="http://farm5.static.flickr.com/4052/4583418495_8703f271f0.jpg" title="Old Friends" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4052/4583418495_8703f271f0_t.jpg" width="100" height="75" alt="Old Friends" style="border: 1px solid black; margin-left: 10px"/&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
They have a huge challenge ahead of them and it seems they couldn't be happier. They'll be working on The New Cabin many long days and expect it to take a year or two. 
&lt;/p&gt;
&lt;p&gt;
I think my Mom said it best in an email she sent my sister and I a few days ago:
&lt;/p&gt;
&lt;p style="border: 1px solid orange; background: #ffd; padding: 10px"&gt;
It's 9:30 and we are at Quinn's Hot Springs. Your father is snoring, he
didn't last long when his head hit the pillow.  We got here about 3,
had a glass of wine and then soaked in the pools for an hour.  Had a
good dinner (I had buffalo short ribs -- mmm delicious) .  They have a
network, so I'm using my ipod for email.
&lt;br/&gt;&lt;br/&gt;
I was crying when I drove across the state line because it felt so good
to be home!
&lt;br/&gt;&lt;br/&gt;
We are having a very nice drive home!! We love you!!!
&lt;/p&gt;
&lt;p&gt;Congratulations on Retiring Mom! You deserve it more than anyone else I know.&lt;/p&gt;
&lt;p style="text-align: center"&gt;

&lt;a href="http://farm5.static.flickr.com/4009/4584047006_4323c67012.jpg" title="Abbie and Mimi" rel="lightbox[oregon2010]"&gt;&lt;img src="http://farm5.static.flickr.com/4009/4584047006_4323c67012.jpg" width="500" height="375" alt="Abbie and Mimi" style="border: 1px solid black; display: none" /&gt;&lt;/a&gt;

&lt;a href="http://www.flickr.com/photos/mraible/4584047006/in/set-72157623880100469/" title="Abbie and Mimi"&gt;&lt;img src="http://farm5.static.flickr.com/4009/4584047006_4323c67012.jpg" width="500" height="375" alt="Abbie and Mimi" style="border: 1px solid black" /&gt;&lt;/a&gt;
&lt;/p&gt; 
&lt;p style="border-top: 1px dotted silver; color: #666; padding-top: 3px; text-align: right"&gt;Enhanced Version &amp;raquo; My &lt;a href="http://static.raibledesigns.com/repository/text/mothersday2010.html"&gt;Mothers Day Card&lt;/a&gt;
&lt;p&gt;&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=75501877&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=75501877&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=75501877 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/farewell_to_the_2009_2010</guid><title>Farewell to the 2009-2010 Ski Season</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/farewell_to_the_2009_2010</link><pubDate>Sat, 24 Apr 2010 10:49:24 -0600</pubDate><category>General</category><category>travel</category><category>jacksonhole</category><category>winterpark</category><category>steamboat</category><category>skiing</category><category>maryjane</category><description>&lt;a href="http://www.flickr.com/photos/mraible/4414627855" title="Top o' Jackson Hole"&gt;&lt;img src="http://farm5.static.flickr.com/4015/4414627855_f2b8c7c794_t.jpg" width="100" height="75" alt="Top o' Jackson Hole" class="picture"/&gt;&lt;/a&gt;

The 2009-2010 Ski Season ended for me last weekend. This was mostly due to the fact that Winter Park and Copper closed and that's where I have my ski pass at. I'm writing this post to reflect upon what a great ski season it was. I skipped writing a similar post in 2009, mostly because I was basking in the Florida sun at a &lt;a href="http://raibledesigns.com/rd/entry/jason_and_holly_s_wedding"&gt;helluva wedding&lt;/a&gt; on the last ski weekend. &lt;a href="http://raibledesigns.com/rd/entry/the_2007_8_ski_season"&gt;2008's season&lt;/a&gt; was the last one I wrote about, and I managed to get 21 days in that year. 
&lt;/p&gt;
&lt;p&gt;This season, I managed to get in 25 days, my most ever in a season! Not only that, but I got to watch &lt;a href="http://raibledesigns.com/rd/entry/jack_s_skiing_like_a"&gt;Jack ski like a madman&lt;/a&gt;, enjoy a &lt;a href="http://raibledesigns.com/rd/entry/fantastic_fun_in_jackson_hole"&gt;fantastic weekend with friends in Jackson Hole&lt;/a&gt; and perform &lt;a href="http://raibledesigns.com/rd/entry/the_trifecta_3_resorts_in"&gt;The Trifecta&lt;/a&gt;. As a parent, I feel like a lot of hard work and persistence has finally paid off. Jack can now get on and off the lift by himself and Abbie hit her first jump (catching 2-3 feet of air) in the terrain park. Yes, I'm a proud papa.
&lt;/p&gt;
&lt;p style="text-align: center"&gt;
&lt;a href="http://www.flickr.com/photos/mraible/4396836045/" title="Abbie showing Jack how to do bumps"&gt;&lt;img src="http://farm3.static.flickr.com/2678/4396836045_b1f1401d2f_m.jpg" width="240" height="180" alt="Abbie showing Jack how to do bumps" style="border: 1px solid black" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Personally, I was able to complete several top-to-bottom runs (without stopping) at Mary Jane. This was a goal last year that I was never able to accomplishin. This feat requires you to be in good shape and have some eloquence in your skiing style. I thank my good friend Matt Good for his tips on how to ski bumps more smoothly, exerting less energy. The one thing I failed to pull off was a &lt;a href="http://www.ehow.com/how_16066_helicopter-skiing.html"&gt;helicopter&lt;/a&gt;, even though I tried twice. Oh well, I'll get it next year.&lt;/p&gt;
&lt;p&gt;Thanks to all my skiing friends for the good times and to Winter Park, Mary Jane, Copper Mountain, Steamboat and Jackson Hole for the wonderful slopes. Can't wait to do it again next year.&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=75051700&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=75051700&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=75051700 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><item><guid isPermaLink="true">http://raibledesigns.com/rd/entry/my_ipad_review</guid><title>My iPad Review</title><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Raible</dc:creator><link>http://raibledesigns.com/rd/entry/my_ipad_review</link><pubDate>Tue, 6 Apr 2010 22:51:22 -0600</pubDate><category>Mac OS X</category><category>macbookpro</category><category>ipad</category><category>iphone</category><category>mac</category><category>macpro</category><category>review</category><category>apple</category><description>&lt;a href="http://www.apple.com/ipad/" title="Wi-Fi iPad"&gt;&lt;img src="http://farm5.static.flickr.com/4064/4496382404_25232a63b2_o.png" width="130" height="84" alt="Wi-Fi iPad" style="border: 0" class="picture"/&gt;&lt;/a&gt;
One week before my &lt;a href="http://raibledesigns.com/rd/entry/17_macbook_pro_stolen_from" title="17-inch MacBook Pro Stolen from Living Room"&gt;home computer was stolen from my living room&lt;/a&gt;, the &lt;a href="http://en.wikipedia.org/wiki/IPad"&gt;iPad was announced&lt;/a&gt;. After watching the initial video, I figured I &lt;a href="http://twitter.com/mraible/status/8354032922" title="After watching the iPad video - http://www.apple.com/ipad/ - I can see one in my future. My kids love my iPhone; will surely love the iPad."&gt;might want to get one&lt;/a&gt;. Fast forward to iPad release day. I was skiing with a friend in Winter Park as I was scratching my head trying to come up with good Easter presents for my kids. Then it hit me: &lt;em&gt;An iPad would be an excellent Easter gift for my kids.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I called the Cherry Creek Apple store and asked if they had any left. They said they did, but they'd likely be sold out before the end of the day. I arrived back in Denver around 3 and was 2nd in line at the Apple Store at 3:30. 5 minutes later, I walked out with an iPad. They were sold out of 32GB models, so I went with the 64GB.&lt;/p&gt;
&lt;p&gt;CNET has a good about the &lt;a href="http://cnettv.cnet.com/reasons-get-apple-ipad/9742-1_53-50085472.html"&gt;5 Reasons NOT to get an iPad&lt;/a&gt;. There #1 reason is great: &lt;strong&gt;because you don't need one&lt;/strong&gt;. They're absolutely right, I didn't need an iPad. I wanted a new home computer so I don't have to pack my MacBook Pro back and forth to the office. However, I realized that most of the time I'm at home, I'm not doing much hard-core computing. Most of the time, I'm checking e-mail, reading Twitter or reading articles. So I bought it because it was cheaper than a new home computer, but I also realize it's not a computer replacement.&lt;/p&gt;
&lt;p&gt;It's really just a big iPhone.&lt;/p&gt;
&lt;p&gt;In every aspect, it's a larger iPhone. Abbie's first words when she opened it on Easter Sunday were "It's a big phone!" It &lt;em&gt;is&lt;/em&gt; a big iPhone, but it's much more pleasant for reading articles and e-mail. Beyond that, it seems good for games, but it's certainly not super-duper fantastico. It's a bit heavy; too heavy to read as you would a book. After holding it for an hour or two last night, my left hand started to get sore. Also, it's keyboard sucks. Maybe I'll get used to it in the long run, but without the tactile feedback of keys, it can be difficult to type without looking. The other  things I don't like about it are:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are very few good apps (iPhone apps work, but they're small).
&lt;li&gt;The screen gets dirty quickly and it looks kinda gross when it's not lit up.&lt;/li&gt;
&lt;li&gt;The Photos app doesn't work at all for me. It says "Updating Library" when I open it, then crashes several seconds later. Maybe I have too many pictures (12.5K items, 28.5 GB).&lt;/li&gt;
&lt;li&gt;When it's synching with my laptop, it constantly connects and reconnects and makes a loud noise each time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;I took the iPad to work on Monday and received some &lt;a href="http://twitter.com/mraible/status/11648880490" title="iPad first impression from co-worker: It's too heavy to hold up as a book and too awkward to use as a computer."&gt;interesting&lt;/a&gt; &lt;a href="http://twitter.com/mraible/status/11649124657" title="Another first impression of iPad: It's already dirty as hell. I'm gonna have to carry a cloth with me to clean the bitch up all the time."&gt;feedback&lt;/a&gt; from &lt;a href="http://twitter.com/mraible/status/11649375723" title="Consensus among co-workers: The iPad is perfect for the shitter."&gt;co-workers&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;There are some good things about it. First of all, it's wicked fast. Apps *pop* and load their data very quickly. Way faster than my iPhone and faster than both my MacBook Pro and the powerhouse Mac Pro I use at work. 
&lt;/p&gt;
&lt;p&gt;
I really like the newspaper apps for reading the latest news articles. I'm not much of a news person, but there's a good chance I read more of it because the apps are so pleasing to the eye. Also, the Netflix app sucked me in as soon as I started reading about it. I've bought my kids several movies on iTunes, but there's still not a huge selection to choose from. With Netflix and its live streaming, we have seemingly &lt;em&gt;thousands&lt;/em&gt; of movies to choose from and they're all a touch away. The Mail app is also pleasant to use, possibly moreso than Mail.app on OS X and Gmail in any ol' browser.
&lt;/p&gt;
&lt;p&gt;There's a good bit of me that's underwhelmed with the device, but I think it has a lot of potential when more apps start appearing. It also seems to need some accessories right away: namely a case to carry it in and a shield to keep clean. I could also see getting a stand for it to enhance its digital picture frame feature. If I could plug it into my HD TV, it might even eliminate my need for OnDemand Movies and DVDs. 
&lt;/p&gt;
&lt;p&gt;I think the biggest potential for the iPad is kids, baby boomers and couples. There's a good chance all of these demographics have a &lt;em&gt;real&lt;/em&gt; computer in their home, but the head of household doesn't want to spring for two. Take my mom for instance, she wants an iPad for e-mail because my dad always hogs &lt;a href="http://raibledesigns.com/rd/entry/my_entire_family_is_now"&gt;their iMac&lt;/a&gt;. My kids aren't that enthralled with it, but it took them awhile to appreciate the Wii and iPhone. With the Wii, it was the Super Mario Bros. game that reeled them in. Same story with my iPhone; they love the games.
&lt;/p&gt;
&lt;p&gt;
My guess is the real attraction of the iPad will be the apps that are built for it. I can't wait to see what developers come up with.&lt;p&gt;&lt;a href=http://nimbb.com&gt;&lt;span style=&amp;quote;text-decoration:none; font-family: Verdana, Arial;&amp;quote;&gt;&lt;img src="http://service.nimbb.com/Images/logo.png" border=0&gt; Webcam video recording in your browser!&lt;/span&gt;&lt;/a&gt; &lt;p&gt;&lt;a href=http://www.rsscache.com/Section/Advertise/click.aspx?n=74496013&gt;&lt;img src="http://www.rsscache.com/Section/Advertise/ads.aspx?n=74496013&amp;f=133" border=0&gt;&lt;/a&gt;&lt;p&gt;&lt;div style="font-size: 8pt;"&gt;&lt;img align=left src=http://www.rsscache.com/Section/Stats/logo.aspx?n=74496013 border=0&gt; Bandwidth saved by &lt;a href=http://www.rsscache.com&gt;RSScache.com&lt;/a&gt;&lt;/div&gt;</description></item><rsscache:id>133</rsscache:id></channel></rss>