<?xml version="1.0" encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="https://raibledesigns.com/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" 
      xmlns:app="http://www.w3.org/2007/app"
      xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">

    <title type="html">Search for [play] in weblog rd</title>
    <subtitle type="html">Search results for [play] within weblog Raible Designs</subtitle>
    <id>https://raibledesigns.com/rd/feed/entries/atom?q=play</id>

    <link rel="self" type="application/atom+xml" 
        href="https://raibledesigns.com/rd/feed/entries/atom?q=play" />

    <link rel="alternate" type="text/html" 
        href="https://raibledesigns.com/rd/search?q=play" />

    <link rel="search" type="application/opensearchdescription+xml" 
        href="https://raibledesigns.com/roller-services/opensearch/rd" />
    <opensearch:Query role="request" searchTerms="play" startPage="1" />

    <link rel="first" type="application/atom+xml" href="https://raibledesigns.com/rd/feed/entries/atom?q=play" />
    <link rel="next" type="application/atom+xml" href="https://raibledesigns.com/rd/feed/entries/atom?q=play&amp;page=1" />
    <updated>2026-05-09T04:29:55-06:00</updated>
    <generator uri="http://roller.apache.org" version="5.0.3 (1388864191739:dave)">Apache Roller</generator>

        <entry>
        <id>https://raibledesigns.com/rd/entry/2025_a_year_in_review</id>
        <title type="html">2025 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2025_a_year_in_review"/>
        <published>2025-12-31T16:15:01-07:00</published>
        <updated>2026-01-02T11:04:21-07:00</updated> 
        <category term="/General" label="General" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2025" scheme="http://roller.apache.org/ns/tags/" />
        <category term="crowdstrike" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stoutthesyncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;What a year 2025 has been! From Trish&apos;s continuing recovery to Abbie&apos;s graduation and Jack&apos;s 21st birthday, from epic summer travels to family gatherings across the country, this year has been filled with gratitude, growth, and gorgeous moments.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2024_a_year_in_review&quot;&gt;last year&apos;s review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
I have only one goal for 2025: &lt;strong&gt;be grateful&lt;/strong&gt;.
&lt;/blockquote&gt;

&lt;p&gt;This goal felt crucial given Trish&apos;s injuries at the end of 2024. Her wrist and ankle healed gradually, and by spring she was back to skiing and living life to the fullest. Watching her resilience and determination reminded me to be grateful for our health.&lt;/p&gt;

&lt;p&gt;I&apos;m gonna review 2025 using the following perspectives:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#hefe-and-stout&quot;&gt;Hefe the Bus and Stout the Syncro&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#2026&quot;&gt;2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
        <content type="html">&lt;p&gt;What a year 2025 has been! From Trish&apos;s continuing recovery to Abbie&apos;s graduation and Jack&apos;s 21st birthday, from epic summer travels to family gatherings across the country, this year has been filled with gratitude, growth, and gorgeous moments.&lt;/p&gt;

&lt;p&gt;From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2024_a_year_in_review&quot;&gt;last year&apos;s review&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
I have only one goal for 2025: &lt;strong&gt;be grateful&lt;/strong&gt;.
&lt;/blockquote&gt;

&lt;p&gt;This goal felt crucial given Trish&apos;s injuries at the end of 2024. Her wrist and ankle healed gradually, and by spring she was back to skiing and living life to the fullest. Watching her resilience and determination reminded me to be grateful for our health.&lt;/p&gt;

&lt;p&gt;I&apos;m gonna review 2025 using the following perspectives:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#hefe-and-stout&quot;&gt;Hefe the Bus and Stout the Syncro&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/2025_a_year_in_review#2026&quot;&gt;2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;

&lt;p&gt;We kicked off 2025 with an incredible family trip to Puerto Rico in early January. Trish went to high school there and had been wanting to take me for years. Abbie, Jack, and my parents all joined us for the adventure. We celebrated my mom&apos;s 75th birthday before we left. She&apos;s a queen!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54358724913_0d1265ba18_c.jpg&quot; title=&quot;Mimi&apos;s a Queen!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54358724913/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54358724913_0d1265ba18_m.jpg&quot; width=&quot;240&quot; alt=&quot;Mimi&apos;s a Queen!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54358725328_7ff12115c1_c.jpg&quot; title=&quot;We made it to Puerto Rico!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54358725328&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54358725328_7ff12115c1_m.jpg&quot; width=&quot;240&quot; alt=&quot;We made it to Puerto Rico!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The island was everything Trish promised and more. We explored Old San Juan and El Morro, hiked through the El Yunque rainforest (the only tropical rainforest in the U.S. National Forest System!), and kayaked through bioluminescent waters in Fajardo. The trip was paradise, and Trish reconnected with her roots. You can read more in my &lt;a href=&quot;https://raibledesigns.com/rd/entry/paradise_in_puerto_rico&quot;&gt;Paradise in Puerto Rico&lt;/a&gt; blog post.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54358906885_4c475ae70a_c.jpg&quot; title=&quot;The Raible Clan at El Morro&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54358906885/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54358906885_4c475ae70a_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Raible Clan at El Morro&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54358507636_c28175ecd5_c.jpg&quot; title=&quot;The rainforest is refreshing!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54358507636&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54358507636_c28175ecd5_m.jpg&quot; width=&quot;240&quot; alt=&quot;The rainforest is refreshing!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54358911820_449df90a98_c.jpg&quot; title=&quot;Kayaking to Laguna Grande Bio Bay&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54358911820/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54358911820_449df90a98.jpg&quot; width=&quot;500&quot; alt=&quot;Kayaking to Laguna Grande Bio Bay&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;The 2024-2025 Ski Season&lt;/h3&gt;

&lt;p&gt;The ski season started slowly due to Trish&apos;s injuries and a lack of snow. I didn&apos;t get out for cross-country until mid-January after we returned from Puerto Rico. My stats for the year: 10 days of cross-country and only 7 days downhill. Not my best season, but every day on the snow contributes to my happiness.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54476581108_a909c46720_c.jpg&quot; title=&quot;First day of ski season is in the books!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54476581108/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54476581108_a909c46720_m.jpg&quot; width=&quot;240&quot; alt=&quot;First day of ski season is in the books!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54476495039_a92857d808_c.jpg&quot; title=&quot;First day on the slopes with Fesser!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54476495039/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54476495039_a92857d808_m.jpg&quot; width=&quot;240&quot; alt=&quot;First day on the slopes with Fesser!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;My first day on the slopes wasn&apos;t until February 8th, when I skied with my good friend, Matt Good (aka the Professor), at Winter Park. In March, our nephew James visited for spring break, and we hit the slopes together.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54476660315_b1d86538cf_c.jpg&quot; title=&quot;Cross Country on Fraser River Trail with James&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54476660315/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54476660315_b1d86538cf.jpg&quot; width=&quot;500&quot; alt=&quot;Cross Country on Fraser River Trail with James&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    You can read more in my &lt;a href=&quot;https://raibledesigns.com/rd/entry/farewell_to_the_2024_2025&quot;&gt;Farewell to the 2024-2025 Ski Season&lt;/a&gt; post.
&lt;/p&gt;

&lt;h3&gt;21 Years with Hefe the Bus&lt;/h3&gt;

&lt;p&gt;April marked a special milestone. Twenty-one years ago, I bought a 21-window VW Bus minutes after DU Hockey won a national title. Hefe has been part of countless adventures since then.&lt;/p&gt;

&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Today, 21 years ago, I bought a 21-window VW Bus minutes after &lt;a href=&quot;https://twitter.com/DU_Hockey?ref_src=twsrc%5Etfw&quot;&gt;@DU_Hockey&lt;/a&gt; won a national title. I&amp;#39;m pumped they&amp;#39;re trying for another one this weekend! &lt;a href=&quot;https://t.co/X2emVbkoN8&quot;&gt;https://t.co/X2emVbkoN8&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/GoDU?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#GoDU&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/VWBus?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#VWBus&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/HefeTheBus?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#HefeTheBus&lt;/a&gt; &lt;a href=&quot;https://t.co/9OPwjZeGPw&quot;&gt;pic.twitter.com/9OPwjZeGPw&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1910345931230159324?ref_src=twsrc%5Etfw&quot;&gt;April 10, 2025&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;h3&gt;Jack&apos;s Internship Search&lt;/h3&gt;

&lt;p&gt;In April, I shared Jack&apos;s search for a summer internship on LinkedIn. The response was overwhelming and heartwarming. Jack is a junior at CU majoring in &lt;a href=&quot;https://www.colorado.edu/cmdi/infoscience&quot;&gt;information science&lt;/a&gt;. He just got a job scouting college basketball teams and gathering stats. He&apos;s really excited for the opportunity!&lt;/p&gt;

&lt;div style=&quot;margin: 0 auto; max-width: 504px&quot;&gt;
&lt;iframe src=&quot;https://www.linkedin.com/embed/feed/update/urn:li:ugcPost:7318689060741435394&quot; height=&quot;609&quot; width=&quot;504&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; title=&quot;Embedded post&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3&gt;Nuggets Playoff Game&lt;/h3&gt;

&lt;p&gt;In early May, we had a blast at a Nuggets playoff game with the family. Game night was so much fun!&lt;/p&gt;

&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Game night with the family was soooo much fun!! &amp;#x1F929; &lt;a href=&quot;https://twitter.com/hashtag/GoNuggets?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#GoNuggets&lt;/a&gt; &lt;a href=&quot;https://t.co/U4jmLad6Tu&quot;&gt;pic.twitter.com/U4jmLad6Tu&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1919062136627609679?ref_src=twsrc%5Etfw&quot;&gt;May 4, 2025&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;h3&gt;Abbie Graduates!&lt;/h3&gt;

&lt;p&gt;In May, Abbie graduated from the University of Colorado with her degree! We couldn&apos;t be prouder of her accomplishments. She had already secured a job as a Product Analyst at Spectrum after an amazing summer internship in 2024. The future is bright for our girl!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54524658935_240b777c63_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54524658935/in/album-72177720326162761&quot; title=&quot;Congratulations! &amp;#x1F389;&quot; rel=&quot;lightbox[yearinreview2025]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54524658935_240b777c63.jpg&quot; width=&quot;500&quot; alt=&quot;Congratulations! &amp;#x1F389;&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54524657765_5a7d3fd4a2_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54524657765/in/album-72177720326162761&quot; title=&quot;Abigail Grace Raible, College Graduate - so proud!&quot; rel=&quot;lightbox[yearinreview2025]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54524657765_5a7d3fd4a2.jpg&quot; width=&quot;500&quot; alt=&quot;Abigail Grace Raible, College Graduate - so proud!&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Abbie moved back in with us after graduation, bringing her adorable pup Gracie along. Having both of them home has been wonderful, even if Gracie does wake me up every morning for walks!&lt;/p&gt;

&lt;h3&gt;The Summer of Travel&lt;/h3&gt;

&lt;p&gt;This summer was absolutely epic. We were only home three weekends between Father&apos;s Day and the last day of summer! I wrote a whole blog post about it called &lt;a href=&quot;https://raibledesigns.com/rd/entry/the_summer_of_travel_2025&quot;&gt;The Summer of Travel (2025 Edition)&lt;/a&gt;, so I&apos;ll hit the highlights here.&lt;/p&gt;

&lt;p&gt;I moved up to Fraser for the entire month of June with the zoo (two dogs and a cat), enjoying the Fraser River Trail daily. Those Fraser sunsets never get old.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54879369870_117007f3a8_c.jpg&quot; title=&quot;Gorgeous views along Fraser River Trail&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879369870/in/album-72177720329917024&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879369870_117007f3a8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Gorgeous views along Fraser River Trail&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879292633_de7371bc7f_c.jpg&quot; title=&quot;I love mountain sunsets&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879292633/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879292633_de7371bc7f_m.jpg&quot; width=&quot;240&quot; alt=&quot;I love mountain sunsets&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Father&apos;s Day brought the fam together for gorgeous golf at Pole Creek. The kids got me a &quot;Best Dad Ever&quot; t-shirt that made me a little emotional.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879265843_1b43b6889a_c.jpg&quot; title=&quot;Pole Creek golf for Father&apos;s Day!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879265843/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879265843_1b43b6889a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Pole Creek golf for Father&apos;s Day!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54878213602_ecd6bfec8e_c.jpg&quot; title=&quot;Gift from kids: Best Dad Ever t-shirt&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54878213602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54878213602_ecd6bfec8e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Gift from kids: Best Dad Ever t-shirt&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;We rafted Ruby Horsethief Canyon (it took us 8 hours to go 8 miles on day two - next time I&apos;m bringing a motor!), enjoyed Blues From The Top in Winter Park, and loaded up our Suburban for the entire month of July in Montana. My parents&apos; place hosted 15 people for the 4th of July celebration!&lt;/p&gt;

&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;We moved to The Last Best Place for the month of July! ??&lt;a href=&quot;https://twitter.com/hashtag/Montana?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Montana&lt;/a&gt; &lt;a href=&quot;https://t.co/KQri4NSuT9&quot;&gt;pic.twitter.com/KQri4NSuT9&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1940170719469703657?ref_src=twsrc%5Etfw&quot;&gt;July 1, 2025&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879330245_b9d55741ef_c.jpg&quot; title=&quot;We had 15 people celebrating the 4th!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879330245/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879330245_b9d55741ef_m.jpg&quot; width=&quot;240&quot; alt=&quot;We had 15 people celebrating the 4th!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879332890_b16b7619f5_c.jpg&quot; title=&quot;The Swan Mountains from Holland Lake&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879332890/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879332890_b16b7619f5_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Swan Mountains from Holland Lake&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54879080581_4a6493dbc3_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879080581/in/album-72177720329917024/&quot; title=&quot;Golfing with my parents on my birthday!&quot; rel=&quot;lightbox[yearinreview2025]&quot; &gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879080581_4a6493dbc3.jpg&quot; width=&quot;500&quot; alt=&quot;Golfing with my parents on my birthday!&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The annual Pirates at the Pumphouse rafting trip on the Colorado River never disappoints. Captain Trish commanded Pepples through the rapids like a pro.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54879037641_0a16f2712b_c.jpg&quot; title=&quot;Lots of pirates in our crew&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879037641/in/album-72177720329917024&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879037641_0a16f2712b.jpg&quot; width=&quot;500&quot; alt=&quot;Lots of pirates in our crew&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Stout the Syncro made it to Del Norte for Rhythms on the Rio and BusCamp. Ed, Karen, Bridget, and the Professor joined us for the weekend of VWs and music.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879297194_1fbabc60ba_c.jpg&quot; title=&quot;Lots of sweet VWs&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879297194/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879297194_1fbabc60ba_m.jpg&quot; width=&quot;240&quot; alt=&quot;Lots of sweet VWs&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879297938_6a03f59896_c.jpg&quot; title=&quot;Good times with Ed and Karen!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879297938/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879297938_6a03f59896_m.jpg&quot; width=&quot;240&quot; alt=&quot;Good times with Ed and Karen!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Next, we headed to Cape Cod, where Trish was in her happy place with family. We celebrated Joe&apos;s birthday at New Seabury and enjoyed happy hours on the Spit. Then we moved on to Little Sebago Lake in Maine to visit with Kidder and Norm, my pledge class brothers from 1992!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54879376540_6fd559f6d7_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879376540/in/album-72177720329917024/&quot; title=&quot;Celebrating Joe&amp;#x27;s birthday&quot; rel=&quot;lightbox[yearinreview2025]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879376540_6fd559f6d7.jpg&quot; width=&quot;500&quot; alt=&quot;Celebrating Joe&amp;#x27;s birthday&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879338685_97a13487cc_c.jpg&quot; title=&quot;New Seabury Sunset&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879338685/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879338685_97a13487cc_m.jpg&quot; width=&quot;240&quot; alt=&quot;New Seabury Sunset&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879298339_e63e575171_c.jpg&quot; title=&quot;Kidder and Norm! We&apos;ve known each other since 92!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879298339/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879298339_e63e575171_m.jpg&quot; width=&quot;240&quot; alt=&quot;Kidder and Norm! We&apos;ve known each other since 92!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The highlight of the summer was a five-day raft trip through Desolation Canyon on the Green River in Utah. Dawn, Erik, Chris, Brice, and the whole gang made it unforgettable. We had a wet start but the weather turned gorgeous. This is the kind of trip that reminds you what really matters: time with loved ones, connection with nature, and nights spent under the eternal stars.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54879304223_982dfe7466_c.jpg&quot; title=&quot;Captain Chris&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879304223/in/album-72177720329917024&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879304223_982dfe7466_m.jpg&quot; width=&quot;240&quot; alt=&quot;Captain Chris&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/54879295514_dba56c5593_c.jpg&quot; title=&quot;Morning on the Green River&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879295514/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879295514_dba56c5593_m.jpg&quot; width=&quot;240&quot; alt=&quot;Morning on the Green River&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879283069_f6cb0d7760_c.jpg&quot; title=&quot;Yacht Rock was the theme on costume night&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879283069/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879283069_f6cb0d7760.jpg&quot; width=&quot;500&quot; alt=&quot;Yacht Rock was the theme on costume night&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;We returned from rafting and went straight to Red Rocks the next night for Billy Idol. Trish and Jen are huge fans!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879282659_cb8fa07cd5_c.jpg&quot; title=&quot;We returned from rafting and went to Billy Idol the next night at Red Rocks. These two are big fans!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879282659/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879282659_cb8fa07cd5.jpg&quot; width=&quot;500&quot; alt=&quot;We returned from rafting and went to Billy Idol the next night at Red Rocks. These two are big fans!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;Jack Turns 21!&lt;/h3&gt;

&lt;p&gt;We headed to Vegas in late August to celebrate &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_jack14&quot;&gt;Jack&apos;s 21st birthday&lt;/a&gt; in style. We gifted him five laps in a Lamborghini at &lt;a href=&quot;https://www.dreamracing.com/&quot;&gt;Dream Racing&lt;/a&gt; on the Las Vegas Motor Speedway. Watching Jack drive that Lambo around the track was pure joy.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54878173447_c4cc146abb_c.jpg&quot; title=&quot;Trish in a sweet 911&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54878173447/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54878173447_c4cc146abb_m.jpg&quot; width=&quot;240&quot; alt=&quot;Trish in a sweet 911&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879270588_d03f8d1610_c.jpg&quot; title=&quot;Jack driving a Lamborghini&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879270588/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879270588_d03f8d1610_m.jpg&quot; width=&quot;240&quot; alt=&quot;Jack driving a Lamborghini&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879298089_712de48a39_c.jpg&quot; title=&quot;Las Vegas Birthday Crew&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879298089/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879298089_712de48a39.jpg&quot; width=&quot;500&quot; alt=&quot;Las Vegas Birthday Crew&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The Professor and Dr. Laura joined us for &lt;a href=&quot;https://www.smalltowngathering.com/&quot;&gt;Smalltown for the Cause&lt;/a&gt; in Salida afterward. We enjoyed excellent bluegrass music. As summer wound down, we made it back to Fraser to catch the fall colors.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54878176027_d097a7d87f_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54878176027/in/album-72177720329917024/&quot; rel=&quot;lightbox[yearinreview2025]&quot; title=&quot;The Fessor joins us once again!&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54878176027_d097a7d87f.jpg&quot; width=&quot;500&quot; alt=&quot;The Fessor joins us once again!&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879379935_7b75f576ae_c.jpg&quot; title=&quot;Abbie and Trish lookin&apos; good&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879379935/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879379935_7b75f576ae_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Trish lookin&apos; good&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879036291_87fe325b2f_c.jpg&quot; title=&quot;Fall colors in Winter Park&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879036291/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879036291_87fe325b2f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Fall colors in Winter Park&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879254603_79e0920e9b_c.jpg&quot; title=&quot;First album just dropped&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879254603/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879254603_79e0920e9b.jpg&quot; width=&quot;375&quot; alt=&quot;First album just dropped&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Jack even got a job working Broncos games for ESPN, and we spotted him on TV!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879282554_8e1cb24957_c.jpg&quot; title=&quot;Jack working Broncos games on ESPN!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879282554/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879282554_8e1cb24957.jpg&quot; width=&quot;500&quot; alt=&quot;Jack working Broncos games on ESPN!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;Abbie&apos;s 23rd Birthday&lt;/h3&gt;

&lt;p&gt;In November, we celebrated &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie19&quot;&gt;Abbie turning 23&lt;/a&gt;. She&apos;s adjusting to life as a young urban professional and bringing joy into our lives every day. Her company has been treating her well, from yoga on Tuesday mornings to golf lessons on Wednesday afternoons. She even got to play in a tournament at &lt;a href=&quot;https://www.arrowheadcolorado.com/&quot;&gt;Arrowhead Golf Club&lt;/a&gt;!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54879328085_1c5b6cd94a_c.jpg&quot; title=&quot;Abbie golfing at Arrowhead&quot;
       rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879328085/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/54879328085_1c5b6cd94a.jpg&quot; width=&quot;240&quot;
            alt=&quot;Abbie golfing at Arrowhead&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/55016371871_81693f62d7_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/55016371871/&quot; rel=&quot;lightbox[yearinreview2025]&quot;
       title=&quot;Abbie and Gracie&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55016371871_81693f62d7.jpg&quot; width=&quot;240&quot;
                                     alt=&quot;Abbie and Gracie&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;Thanksgiving in Montana&lt;/h3&gt;

&lt;p&gt;For Thanksgiving, we flew to Montana for quality time with my family. My parents hosted, and we spent the week visiting with great friends, cooking, enjoying the sauna, playing pool at Mike and Mai&apos;s, relaxing, visiting local shops, and soaking up mountain time together. My Dad had heart surgery the week before Thanksgiving to put in a cow valve in his heart. He sometimes moos now. &amp;#x1F42E;&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014850763_6230810851_c.jpg&quot; title=&quot;Alpenglow on the Swan Range&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014850763/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014850763_6230810851_z.jpg&quot; width=&quot;480&quot; alt=&quot;Alpenglow on the Swan Range&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014934939_5babe974b5_c.jpg&quot; title=&quot;Happy Hour with Sue Cushman&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014934939/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014934939_5babe974b5.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Hour with Sue Cushman&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014681911_51575fb043_c.jpg&quot; title=&quot;Barb&apos;s Bistro!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014681911/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014681911_51575fb043_m.jpg&quot; width=&quot;240&quot; alt=&quot;Barb&apos;s Bistro!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014681036_06bcc96665_c.jpg&quot; title=&quot;Happy customers at Joe&apos;s Sports Bar&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014681036/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014681036_06bcc96665_m.jpg&quot; width=&quot;240&quot; alt=&quot;Happy customers at Joe&apos;s Sports Bar&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;December Skiing and Winter Fun&lt;/h3&gt;

&lt;p&gt;December brought snow to Colorado and family time on the slopes at Winter Park. We like to embrace fun, and Abbie joined us by buying a onesie too!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55013792077_1f7077eaa3_c.jpg&quot; title=&quot;Lots of color for Trish&apos;s birthday weekend&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55013792077/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55013792077_1f7077eaa3.jpg&quot; width=&quot;500&quot; alt=&quot;Lots of color for Trish&apos;s birthday weekend&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;Christmas in Naples with Trish&apos;s Family&lt;/h3&gt;

&lt;p&gt;We wrapped up the year by heading to Naples, Florida to spend Christmas with Trish&apos;s family. After all the mountain time, the beach was a welcome change of scenery. The weather was perfect. Sunny and 75 degrees. Our kids got golf clubs for Christmas, so we played golf a lot. We also visited the &lt;a href=&quot;https://revsinstitute.org/&quot;&gt;Revs Institute&lt;/a&gt; (an incredible automotive museum), enjoyed many spectacular sunsets, and had quality time with the whole McGinity Clan. All 15 of us, plus three dogs!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014681331_5452bdd617_c.jpg&quot; title=&quot;Family Golf at the Naples Country Club!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014681331/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014681331_5452bdd617_m.jpg&quot; width=&quot;240&quot; alt=&quot;Family Golf at the Naples Country Club!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014986625_05c70b9892_c.jpg&quot; title=&quot;The Revs Institute is awesome!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014986625/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014986625_05c70b9892_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Revs Institute is awesome!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55013791217_f5d410ccfa_c.jpg&quot; title=&quot;Sunset Lovin&apos; Siblings&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55013791217/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55013791217_f5d410ccfa.jpg&quot; width=&quot;500&quot; alt=&quot;Sunset Lovin&apos; Siblings&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014935269_1570f54f03_c.jpg&quot; title=&quot;Happy Birthday, Shira! &amp;#x1F382;&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014935269/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014935269_1570f54f03.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Birthday, Shira! &amp;#x1F382;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can see more photos from our Thanksgiving in Montana, December skiing at Winter Park, and Christmas in Naples in the &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72177720331219684/&quot;&gt;Winter Begins 2025 album on Flickr&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3 id=&quot;hefe-and-stout&quot;&gt;Hefe the Bus and Stout the Syncro&lt;/h3&gt;

&lt;p&gt;Our beloved VWs continued to bring adventure and joy this year. In April, Stout the Syncro saved my life on the way up to Winter Park. I was cruising along in 2WD when the rear wheels started slipping on black ice. We started drifting at 70 mph, first to the left, then to the right, and eventually sideways. As we headed toward the guardrail, I thought, &quot;Oh my, this is going to hurt!&quot; That&apos;s when we hit ice again and the back end flipped around. We went down into the ditch backwards and landed with no harm done. The dogs barely noticed.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54476583943_14a0f00365_c.jpg&quot; title=&quot;Stout the Syncro saved my life!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54476583943/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54476583943_14a0f00365.jpg&quot; width=&quot;500&quot; alt=&quot;Stout the Syncro saved my life!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Stout also loved camping on the Colorado River for Pirates and posing for photos under the spectacular starry night.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/54879283124_b4a4fc692b_c.jpg&quot; title=&quot;Stout by Night&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879283124/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879283124_b4a4fc692b.jpg&quot; width=&quot;500&quot; alt=&quot;Stout by Night&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Stout made the trip to Del Norte for Rhythms on the Rio and BusCamp, looking magnificent against the Colorado backdrop. The VW community came out in force, and it reminded us why we love these vehicles so much.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54879257768_a4e63a56cd_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879257768/&quot; title=&quot;We made it to Bus Camp in Del Norte&quot; rel=&quot;lightbox[yearinreview2025]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879257768_a4e63a56cd.jpg&quot; width=&quot;500&quot; alt=&quot;We made it to Bus Camp in Del Norte&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Hefe the Bus had a quieter year after his clutch went out at the end of 2024. I wasn&apos;t able to get him into the shop until just before we left for Montana in June, and didn&apos;t get him back until late September. By then, we&apos;d missed most of the summer shows. But he&apos;s back on the road now and ready for adventures in 2026!&lt;/p&gt;

&lt;p&gt;The year ended on a high note when Hefe was featured in the Readers&apos; Showcase of the February 2026 issue of &lt;a href=&quot;https://hotvws.com/&quot;&gt;Hot VWs magazine&lt;/a&gt;! It&apos;s an honor to have him recognized by the VW community in one of the most respected magazines in the scene.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/55014973569_ced7ee6235_c.jpg&quot; title=&quot;Hefe is featured in the Readers&apos; Showcase of Hot VWs February 2026!&quot; rel=&quot;lightbox[yearinreview2025]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/55014973569/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014973569_ced7ee6235.jpg&quot; width=&quot;500&quot; alt=&quot;Hefe is featured in the Readers&apos; Showcase of Hot VWs February 2026!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;

&lt;p&gt;Professionally, 2025 was my first full year at CrowdStrike. I continued to work on &lt;a href=&quot;https://developer.crowdstrike.com&quot;&gt;developer.crowdstrike.com&lt;/a&gt;, creating blog posts, sample apps, and improving documentation about Falcon Foundry, Fusion SOAR, and Next-Gen SIEM. I got the opportunity to speak at Fal.Con 2025 in Las Vegas, which was nicely timed with Jack&apos;s birthday celebration.&lt;/p&gt;

&lt;div style=&quot;margin: 0 auto; max-width: 504px&quot;&gt;
&lt;iframe src=&quot;https://www.linkedin.com/embed/feed/update/urn:li:share:7350939400878350336?collapsed=1&quot; height=&quot;531&quot; width=&quot;504&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; title=&quot;Embedded post&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;The work has been rewarding, helping developers understand how to leverage CrowdStrike&apos;s APIs and SDKs. I&apos;ve learned a tremendous amount about cybersecurity, Python, and the Falcon platform. I appreciate the opportunity to work with such talented people at one of the top cybersecurity companies in the world.&lt;/p&gt;

&lt;h3 id=&quot;community&quot;&gt;Community&lt;/h3&gt;

&lt;p&gt;I continued my role as co-lead of &lt;a href=&quot;https://www.jhipster.tech/&quot;&gt;JHipster&lt;/a&gt;, helping shepherd the project through several releases throughout the year. We shipped JHipster v8.10.0 in March, v8.11.0 in May, and ended the year with the &lt;a href=&quot;https://www.jhipster.tech/2025/12/05/jhipster-release-9.0.0-beta.0.html&quot;&gt;v9.0.0-beta.0 release&lt;/a&gt; in December. The community remains strong with consistent downloads and active contributions.&lt;/p&gt;

&lt;div style=&quot;margin: 0 auto; max-width: 504px&quot;&gt;
&lt;iframe src=&quot;https://www.linkedin.com/embed/feed/update/urn:li:share:7402908594222116864&quot; height=&quot;927&quot; width=&quot;504&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; title=&quot;Embedded post&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;On &lt;a href=&quot;https://github.com/mraible&quot;&gt;GitHub&lt;/a&gt;, I had 2,935 contributions in 2025, with 44% dedicated to code review, 42% to commits, 13% to pull requests, and 1% to issues. I contributed to &lt;a href=&quot;https://developer.crowdstrike.com/docs/samples/&quot;&gt;CrowdStrike&apos;s Foundry sample repositories&lt;/a&gt; and 73 other open source projects. It&apos;s gratifying to see JHipster continue to thrive after all these years. &amp;#x1F913;&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://git-wrapped.com/profiles/mraible&quot; title=&quot;GitHub Wrapped 2025&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/55014503248_6d1eabce48.jpg&quot; width=&quot;500&quot; alt=&quot;GitHub Wrapped 2025&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://www.meetup.com/denverjavausersgroup/&quot;&gt;Denver JUG&lt;/a&gt; meetings continued regularly, providing a space for Java developers in the Denver area to connect and learn. Even though I wasn&apos;t traveling to conferences as much, staying connected to the local community remained important.&lt;/p&gt;

&lt;h2 id=&quot;2026&quot;&gt;2026&lt;/h2&gt;

&lt;p&gt;Looking ahead to 2026, I&apos;m excited about what&apos;s to come. Professionally, I want to push deeper into the Falcon platform&apos;s capabilities and help developers solve harder problems. Getting back on stage at Fal.Con and a few other conferences would be the icing on the cake.&lt;/p&gt;

&lt;p&gt;Personally, we&apos;re looking forward to more adventures. We hope to visit the Ski Chalet frequently throughout the winter and spend the summer riding, rafting, and visiting friends and family in our favorite places. We&apos;re heading to the second weekend of &lt;a href=&quot;https://www.nojazzfest.com/&quot;&gt;Jazz Fest&lt;/a&gt; in New Orleans in the spring!&lt;/p&gt;

&lt;p&gt;I have only one goal for 2026: &lt;strong&gt;live fully&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Living fully means showing up for every moment, whether it&apos;s a powder day at Winter Park, a raft trip on the Colorado, seeing live music, or a fun evening at home cheering for the Nuggets with Trish. It means saying yes to adventures, absolutely to friends, and investing in community relationships by showing up. At this stage of life, with the kids building their own paths and our freedom to explore, I want to squeeze every bit of joy and meaning out of each day. Yes, Trish, it&#8217;s time for your RV dreams to come true. &lt;/p&gt;

&lt;p&gt;I&apos;m grateful Trish is back in the game. Proud of Abbie for launching her career and Jack for chasing his passion. Thankful for family time in Montana and Florida, for gorgeous Colorado and our mountain retreat, and for friends who join us on the slopes, rivers, and at concerts.&lt;/p&gt;

&lt;p&gt;If you&apos;d like to stay in touch, please &lt;a href=&quot;https://www.linkedin.com/in/mraible/&quot;&gt;connect with me on LinkedIn&lt;/a&gt; or &lt;a href=&quot;https://www.flickr.com/photos/mraible/&quot;&gt;follow me on Flickr&lt;/a&gt; where I share photos from our adventures.&lt;/p&gt;

&lt;p&gt;Here&apos;s to 2026! &amp;#x1F942;&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/happy_birthday_abbie19</id>
        <title type="html">Happy Birthday, Abbie!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/happy_birthday_abbie19"/>
        <published>2025-11-07T15:57:57-07:00</published>
        <updated>2025-11-07T16:20:36-07:00</updated> 
        <category term="/General" label="General" />
        <category term="birthday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="happybirthday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;https://live.staticflickr.com/65535/54879328085_1c5b6cd94a_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879328085/&quot; rel=&quot;lightbox[abbie23]&quot; title=&quot;Abbie golfing at Arrowhead Golf Course and it&amp;#x27;s a work event!&quot;&gt;&lt;img class=&quot;picture&quot; src=&quot;https://live.staticflickr.com/65535/54879328085_1c5b6cd94a_q.jpg&quot; width=&quot;150&quot; alt=&quot;Abbie golfing at Arrowhead Golf Course and it&amp;#x27;s a work event!&quot; style=&quot;border: 1px solid black&quot;/&gt;&lt;/a&gt;
&lt;p&gt;Abbie turned 23 this week and is adjusting to life as a young urban professional. She moved back in with us to save on rent, which means we got two new roommates: our daughter and her dog. They both bring a lot of joy into our lives.&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/54879254603_79e0920e9b_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54879254603/in/dateposted-public/&quot; rel=&quot;lightbox[abbie23]&quot;  title=&quot;First album just dropped&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54879254603_79e0920e9b_t.jpg&quot; width=&quot;75&quot; class=&quot;picture&quot; style=&quot;float: left; border: 1px solid black; margin-right: 10px&quot; alt=&quot;First album just dropped&quot;/&gt;&lt;/a&gt;
Gracie likes to wake me up with a lick on the face at 6 a.m. sharp. She barks at me when I don&#8217;t walk her by 8. It&#8217;s been good for my mornings, but it can be rough on the weekends. 
&lt;p&gt;
Abbie&apos;s company has been treating her well, from learning opportunities to yoga on Tuesday mornings, to Rockies games with her team, to golf lessons on Wednesday afternoons. She even got to play in a tournament at &lt;a href=&quot;https://www.arrowheadcolorado.com/&quot;&gt;Arrowhead Golf Club&lt;/a&gt; as part of a work event!&lt;/p&gt;
&lt;p&gt;
This week, we celebrated with a family dinner at &lt;a href=&quot;https://theperfectlanding.com/&quot;&gt;A Perfect Landing&lt;/a&gt; on Wednesday, then capped it off with the Broncos game last night.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/54907741922_8e9fc8c5a1_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54907741922/&quot; rel=&quot;lightbox[abbie23]&quot; title=&quot;Broncos vs Raiders on Thursday Night!&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54907741922_8e9fc8c5a1.jpg&quot; width=&quot;500&quot; alt=&quot;Broncos vs Raiders on Thursday Night!&quot; style=&quot;border: 1px solid black&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Happy Birthday, Abbie! I&#8217;m looking forward to shredding the slopes with you this winter! &amp;#x26F7;&amp;#xFE0F;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/life_update_new_job_same</id>
        <title type="html">Life Update: New Job, Same House, and Same Awesome Family!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/life_update_new_job_same"/>
        <published>2024-11-16T09:31:40-07:00</published>
        <updated>2025-01-19T13:21:29-07:00</updated> 
        <category term="/General" label="General" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <category term="career" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="summer2024" scheme="http://roller.apache.org/ns/tags/" />
        <category term="crowdstrike" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="horse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="life" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    It&apos;s been over eight years since I wrote a &lt;a href=&quot;https://raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;life update blog post&lt;/a&gt;. At that time (2016), we&apos;d just moved into the &quot;Raible Ranch&quot;, the bus was finished, and the kids were in high school. I&apos;d just started one of my few-and-far-between full-time jobs at Stormpath.
&lt;/p&gt;
&lt;p&gt;
    Fast-forward to today. Our kids are in college at the University of Colorado during the Coach Prime Era, we&apos;re empty nesters with an affection for live music, and our pet zoo is cuter than ever.
&lt;/p&gt;
&lt;p&gt;
    You probably know me. But in case you don&apos;t, my name is Matt Raible, and I&apos;m married to a fabulous woman named Trish McGinity. She&apos;s been a hero in my life ever since I met her in 2010. She dazzled me so much, I asked her to marry me at Versailles in 2011. We married in my hometown (Condon, Montana) in 2013, on the most beautiful lake you&apos;ve ever seen.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/7442/9627648458_38de03b06a_c.jpg&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mcginityphoto/9627648458/in/album-72157635299136347&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7442/9627648458_38de03b06a.jpg&quot; width=&quot;500&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    When I met Trish, I was an independent consultant, and she was in cybersecurity sales. On a fateful night in 2010, on a friend Jarvis&apos;s birthday, I asked her what she had done for a living. She said, &quot;Have you ever heard of OWASP?&quot;
&lt;/p&gt;
&lt;p&gt;
    My heart lifted and I felt a moment of joy. This woman was speaking my language! 14 years later and &lt;em&gt;Oh My!&lt;/em&gt;, Trish has had an incredible influence on my life and career.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
    It&apos;s been over eight years since I wrote a &lt;a href=&quot;https://raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;life update blog post&lt;/a&gt;. At that time (2016), we&apos;d just moved into the &quot;Raible Ranch&quot;, the bus was finished, and the kids were in high school. I&apos;d just started one of my few-and-far-between full-time jobs at Stormpath.
&lt;/p&gt;
&lt;p&gt;
    Fast-forward to today. Our kids are in college at the University of Colorado during the Coach Prime Era, we&apos;re empty nesters with an affection for live music, and our pet zoo is cuter than ever.
&lt;/p&gt;
&lt;p&gt;
    You probably know me. But in case you don&apos;t, my name is Matt Raible, and I&apos;m married to a fabulous woman named Trish McGinity. She&apos;s been a hero in my life ever since I met her in 2010. She dazzled me so much, I asked her to marry me at Versailles in 2011. We married in my hometown (Condon, Montana) in 2013, on the most beautiful lake you&apos;ve ever seen.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/7442/9627648458_38de03b06a_c.jpg&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mcginityphoto/9627648458/in/album-72157635299136347&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7442/9627648458_38de03b06a.jpg&quot; width=&quot;500&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    When I met Trish, I was an independent consultant, and she was in cybersecurity sales. On a fateful night in 2010, on a friend Jarvis&apos;s birthday, I asked her what she had done for a living. She said, &quot;Have you ever heard of OWASP?&quot;
&lt;/p&gt;
&lt;p&gt;
    My heart lifted and I felt a moment of joy. This woman was speaking my language! 14 years later and &lt;em&gt;Oh My!&lt;/em&gt;, Trish has had an incredible influence on my life and career.
&lt;/p&gt;
&lt;p&gt;
    You might think of me as the AppFuse guy, the JHipster promoter, or some dude who talked about Okta a lot. I&apos;m cool with that, but it&apos;s irrefutable to say that Trish hasn&apos;t influenced my career. She encouraged me to &lt;em&gt;lean&lt;/em&gt; into cybersecurity and constantly said I was &quot;doing it wrong&quot; with my carefree attitude toward security.
&lt;/p&gt;
&lt;p&gt;
    These days, I&apos;m a Senior Cloud Engineer at &lt;a href=&quot;https://www.crowdstrike.com/&quot;&gt;CrowdStrike&lt;/a&gt;, the foremost cybersecurity company in the world.  My previous gig was with Okta, where I spent seven years educating developers about OAuth and OpenID Connect.
&lt;/p&gt;
&lt;p&gt;
    I&apos;ll admit, I had a lot of anxiety about joining CrowdStrike. In late June, after enjoying &lt;a href=&quot;https://raibledesigns.com/rd/entry/funemployment_2024&quot;&gt;funemployment&lt;/a&gt;, I had three excellent offers from FusionAuth, Yugabyte, and CrowdStrike. It&apos;s the first time in my life that I&apos;ve had more than one offer at the same time.
&lt;/p&gt;
&lt;p&gt;
    The first two opportunities were excellent. But, both had &lt;em&gt;maybe equity&lt;/em&gt;. As an old fogey in the twilight of my career, I thought &lt;em&gt;guaranteed equity&lt;/em&gt; was a better opportunity. I chose the company trajectory over my passion for open source and Java. I accepted the CrowdStrike offer on July 3rd as we were departing for a 4th of July trip to Montana.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53844138485_916ae753a4_c.jpg&quot; title=&quot;The Fam&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53844138485/in/album-72177720318595725&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53844138485_916ae753a4_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Fam&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53843962478_a9734b21e6_c.jpg&quot; title=&quot;Joy &amp;#x2764;&amp;#xFE0F;&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53843962478/in/album-72177720318595725&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53843962478_a9734b21e6_m.jpg&quot; width=&quot;240&quot; alt=&quot;Joy &amp;#x2764;&amp;#xFE0F;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53843965048_435217e98d_c.jpg&quot; title=&quot;Happy 4th of July from the last best place on Earth! &amp;#x1F389; #Montana&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53843965048/in/album-72177720318595725&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53843965048_435217e98d.jpg&quot; width=&quot;500&quot; alt=&quot;Happy 4th of July from the last best place on Earth! &amp;#x1F389; #Montana&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    At that time, I felt totally confident about my decision. I was taking the path less traveled and abandoning all my Java celebrityism for a skyrocketing company that was kicking ass and taking names. You&apos;re supposed to do things outside your comfort zone, &lt;em&gt;right?&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
    Take the road less traveled.
&lt;/p&gt;
&lt;p&gt;
    I was a little worried about the equity though. After all, CrowdStrike&apos;s stock price was at an all-time high.
&lt;/p&gt;
&lt;p&gt;
    I turned 50 on July 16th. We hosted a backyard party at the ranch the weekend before (July 13th), complete with a local Grateful Dead band. &lt;a href=&quot;http://shakedownstreetband.com.phtemp.com/&quot;&gt;Shakedown Street&lt;/a&gt; was excellent and everyone had a good time.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141270635_7284615540_c.jpg&quot; title=&quot;Matt, Trish, Chris, and Eva - so many awesome people in one photo! &amp;#x2764;&amp;#xFE0F;&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141270635/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141270635_7284615540_m.jpg&quot; width=&quot;240&quot; alt=&quot;Matt, Trish, Chris, and Eva - so many awesome people in one photo! &amp;#x2764;&amp;#xFE0F;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141089283_4af90859b1_c.jpg&quot; title=&quot;&amp;#x201C;We don&#8217;t grow older, we grow riper.&amp;#x201D; &#8211; Pablo Picasso&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141089283/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141089283_4af90859b1_m.jpg&quot; width=&quot;240&quot; alt=&quot;&amp;#x201C;We don&#8217;t grow older, we grow riper.&amp;#x201D; &#8211; Pablo Picasso&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54140782936_b1a25fe7b0_c.jpg&quot; title=&quot;Shakedown Street&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54140782936/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54140782936_b1a25fe7b0_m.jpg&quot; width=&quot;240&quot; alt=&quot;Shakedown Street&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a rel=&quot;lightbox[lifeupdate2024]&quot; href=&quot;https://live.staticflickr.com/65535/54139926042_a1fd54ed67_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54139926042/in/album-72177720321954143&quot; title=&quot;Eva, Chris, Dawn&#233;, and Trish &amp;#x1F970;&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54139926042_a1fd54ed67_m.jpg&quot; width=&quot;240&quot; alt=&quot;Eva, Chris, Dawn&#233;, and Trish &amp;#x1F970;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141239200_36e461b594_c.jpg&quot; title=&quot;The Chi Phi Brothers! &amp;#x2764;&amp;#xFE0F; &amp;#x1F37B;&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141239200/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141239200_36e461b594.jpg&quot; width=&quot;500&quot; alt=&quot;The Chi Phi Brothers! &amp;#x2764;&amp;#xFE0F; &amp;#x1F37B;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;The Incident&lt;/h3&gt;
&lt;p&gt;
    On my birthday, while blowing out candles, I wished for CrowdStrike&apos;s stock price to drop.
&lt;/p&gt;
&lt;p&gt;
    On Friday (July 19th), I woke up to more unread texts than I received on my milestone birthday. A lot of friends were aware that I&apos;d accepted a new job at CrowdStrike and were texting me about an incident.
&lt;/p&gt;
&lt;p&gt;
    Apparently, CrowdStrike had just caused a worldwide computer outage. If you were flying that day, you were probably affected. I received more text messages that morning than on my birthday.
&lt;/p&gt;
&lt;p&gt;
    My response was positive: this situation will be very good for my equity grant&apos;s strike price!
&lt;/p&gt;
&lt;p&gt;
    I quickly realized that CrowdStrike was way bigger than I originally thought. There were computer issues at the golf club I ventured into that morning. Their systems were down and they apologized. I smirked, apologized back, and mentioned I recently accepted a job offer from CrowdStrike.
&lt;/p&gt;
&lt;p&gt;
    I started working for CrowdStrike on July 29th. 10 days after &lt;em&gt;the incident&lt;/em&gt;. I quickly realized that making developers &lt;em&gt;aware&lt;/em&gt; of CrowdStrike wouldn&apos;t be a problem. Everyone knew about us because of July 19th. In a sense, it was a blessing in my DevRel journey at CrowdStrike.
&lt;/p&gt;
&lt;p&gt;
    I worked at Okta for seven years and there were a couple of incidents. CrowdStrike&apos;s response was &lt;em&gt;waayyyy&lt;/em&gt; different than Okta&apos;s.
&lt;/p&gt;
&lt;p&gt;
    First of all, CrowdStrike&apos;s incident wasn&apos;t a breach. It was a bug that they shipped. It was &lt;em&gt;totally&lt;/em&gt; their fault. Okta had a full-on breach that they didn&apos;t disclose for a month. Regardless of the incident details, as a tech worker for said company, it&apos;s a severe morale hit when it happens to you.
&lt;/p&gt;
&lt;p&gt;
    That&apos;s been one of my biggest struggles. I was extremely proud to join CrowdStrike as a Senior Engineer. Heck, I passed the coding test using Java, and they were a Go shop! When this all happened in June, I was so proud of my non-traditional path to excellence in the tech industry.
&lt;/p&gt;
&lt;p&gt;
    I wasn&apos;t hired as a senior engineer who cranks out code, maintains functionality, and implements new features. Instead, I was hired as a &quot;Senior Engineer - Cloud&quot; that&apos;s focused on DevRel. I&apos;m still a developer advocate, but my title indicates I can still sling some code.
&lt;/p&gt;
&lt;p&gt;
    I&apos;ve been coming up to speed on Go and Python as fast as I can. I&apos;ve also been doing a lot of CrowdStrike Foundry tutorials, finding/fixing issues, and improving our learning materials as fast as I can. I even published my first CrowdStrike blog post!
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.crowdstrike.com/blog/get-started-with-falcon-foundry/&quot;&gt;Get Started with Falcon Foundry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
    Now that I&apos;ve filled you in on the life of Matt Raible, I feel like I&apos;ve ignored the best parts of my life: Trish, Abbie, and Jack.
&lt;/p&gt;

&lt;p&gt;
    Trish continues to excel as the Head of Cybersecurity Communications at &lt;a href=&quot;https://www.empower.com/&quot;&gt;Empower&lt;/a&gt;. Yes, &lt;em&gt;the&lt;/em&gt; Empower that has the naming rights to the Empower Field at Mile High where the Denver Broncos play. We haven&apos;t experienced box seats yet, but we&apos;re still hopeful. Trish is the star of her team, and it&apos;s her favorite job, &lt;strong&gt;ever&lt;/strong&gt;. She&apos;s delighted at the fact that I&apos;m asking her if SIEM and SOAR are acronyms or just fancy industry terms.
&lt;/p&gt;
&lt;p&gt;
    You&apos;re probably wondering if we&apos;re evil parents at this point. You&apos;ve learned about Trish and me, but what about the kids, the pets, and our parents? I mean, this is a life update after all!
&lt;/p&gt;
&lt;p&gt;
    The kids are doing great. As a casual blogger, I still managed to post about both of their birthdays this year. &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_jack13&quot;&gt;Jack&lt;/a&gt; and &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie18&quot;&gt;Abbie&lt;/a&gt; are thriving! 
&lt;/p&gt;
&lt;p&gt;They&apos;re still in school at CU Boulder and enjoying the Coach Prime Era. Abbie&apos;s a senior and &lt;a href=&quot;https://www.linkedin.com/posts/abigail-raible_spectrum-success-internship-activity-7231712846441541633-kPrb&quot;&gt;already has a job&lt;/a&gt;. That&apos;s quite an accomplishment, and we&apos;re very impressed!
&lt;/p&gt;
&lt;p&gt;
    Jack&apos;s thinking about dating. He didn&apos;t try out for the CU basketball team, but he&apos;s still interested in making it happen.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54142861804_2d6b45fede_c.jpg&quot; title=&quot;Fall Birthday Celebration&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54142861804/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54142861804_2d6b45fede.jpg&quot; width=&quot;500&quot; alt=&quot;Fall Birthday Celebration&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    The pets are currently spoiled. Trish&apos;s best friend, Caroline, has moved in. She takes the two dogs (Daisy and Kai) on daily walks. I tend to like the same activity, and they&apos;re very good at pretending it&apos;s their first walk of the day with both of us!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/54139906827_58f2562759_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54139906827/in/album-72177720321954143&quot; title=&quot;Gracie and Kai &amp;#x1F63B;&quot; rel=&quot;lightbox[lifeupdate2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54139906827_58f2562759_q.jpg&quot; width=&quot;150&quot; alt=&quot;Gracie and Kai &amp;#x1F63B;&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/54141222015_39750a6a5a_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141222015/in/album-72177720321954143&quot; title=&quot;My summer walking crew&quot; rel=&quot;lightbox[lifeupdate2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141222015_39750a6a5a_q.jpg&quot; width=&quot;150&quot; alt=&quot;My summer walking crew&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/54120350913_ee9f5d87d4_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54120350913/&quot; title=&quot;Strike a pose&quot; rel=&quot;lightbox[lifeupdate2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54120350913_ee9f5d87d4_q.jpg&quot; width=&quot;150&quot; alt=&quot;Strike a pose&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Our parents are thriving too! I recently attended Trish&apos;s Dad&apos;s 85th birthday celebration. He&apos;s doing splendid and likes to swim and play tennis daily.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141084639_137cf2cddc_c.jpg&quot; title=&quot;Beautiful family at sunset&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141084639/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141084639_137cf2cddc.jpg&quot; width=&quot;500&quot; alt=&quot;Beautiful family at sunset&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141034108_519541e79f_c.jpg&quot; title=&quot;Sunset on the Spit&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141034108/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141034108_519541e79f.jpg&quot; width=&quot;500&quot; alt=&quot;Sunset on the Spit&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    My parents are still loving life in Montana. A friend of theirs has a photo trap set up for wildlife on the homestead. He captures some amazing photos! Check out &lt;a href=&quot;https://www.marcelhuijserphotography.com/&quot;&gt;his website&lt;/a&gt; for more fabulous shots.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141220470_d67217aa5a_c.jpg&quot; title=&quot;Meanwhile, at the homestead in Montana...&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141220470/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141220470_d67217aa5a.jpg&quot; width=&quot;500&quot; alt=&quot;Meanwhile, at the homestead in Montana...&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141035163_525b6a1039_c.jpg&quot; title=&quot;Back at the homestead, a deer emerges&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141035163/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141035163_525b6a1039.jpg&quot; width=&quot;500&quot; alt=&quot;Back at the homestead, a deer emerges&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Trish has more to her story. She&apos;s experienced some of the most extreme ups and downs of her life. In July, shortly after we celebrated my birthday, we spent a week in Estes Park. The reason was simple: she wanted to compete in a horse show and I wanted to support her, explore the nearby trails, and visit the local breweries.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141228485_b95064cec2_c.jpg&quot; title=&quot;Happy Trish in Estes Park&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141228485/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141228485_b95064cec2_m.jpg&quot; width=&quot;240&quot; alt=&quot;Happy Trish in Estes Park&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54139914827_1bbed3f29e_c.jpg&quot; title=&quot;The Morning Crew&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54139914827/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54139914827_1bbed3f29e_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Morning Crew&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54139912477_6a3a08e7a9_c.jpg&quot; title=&quot;What a beautiful world! &amp;#x2764;&amp;#xFE0F;&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54139912477/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54139912477_6a3a08e7a9.jpg&quot; width=&quot;500&quot; alt=&quot;What a beautiful world! &amp;#x2764;&amp;#xFE0F;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54139911547_098aeae28c_c.jpg&quot; title=&quot;Last day of Funemployment.&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54139911547/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54139911547_098aeae28c_q.jpg&quot; width=&quot;150&quot; alt=&quot;Last day of Funemployment.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54140764661_5bccdd1469_c.jpg&quot; title=&quot;Happy Anniversary! &amp;#x1F495;&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54140764661/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54140764661_5bccdd1469_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Anniversary! &amp;#x1F495;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54139910182_d5826a21ec_c.jpg&quot; title=&quot;Trish in her happy place!&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54139910182/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54139910182_d5826a21ec_q.jpg&quot; width=&quot;150&quot; alt=&quot;Trish in her happy place!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We decided to make her lifelong dreams come true and leased the most kick-ass horse she could find. His name is Athos, and he was the horse she competed with in Estes Park. He&apos;s 18.2 hands tall, which means he&apos;s 6&apos; at the saddle. Trish is only 5&apos;1&quot;. They won Reserve Champion on their first collaboration!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141223880_9a7f76d179_c.jpg&quot; title=&quot;Look at all those ribbons!&quot; rel=&quot;lightbox[lifeupdate2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/54141223880/in/album-72177720321954143&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141223880_9a7f76d179.jpg&quot; width=&quot;500&quot; alt=&quot;Look at all those ribbons!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Trish and Athos were a match made in heaven. Until they weren&apos;t.
&lt;/p&gt;
&lt;p&gt;
    A month ago, Trish fell off Athos after a jump in a training lesson. It was a tack failure while demoing a new saddle, and the stirrup strap slid right off. She almost saved it, but proceeded to fall and injure herself badly in the process. When I met her at the ER (Emergency Room), her pain level was 9.5/10 for her wrist and 3/10 for her ankle. She broke both her wrist and her ankle in the same accident. It wasn&apos;t Athos&apos; fault, but rather a faulty stirrup bar.
&lt;/p&gt;
&lt;p&gt;
    Since this happened, we&apos;ve learned I&apos;m a terribly grumpy caregiver, she&apos;s had her wrist surgically repaired, and her ankle had surgery a week later.
&lt;/p&gt;
&lt;p&gt;
    Breaking two bones at the same time really limits your mobility. I wouldn&apos;t wish it upon anyone. Trish is optimistic that she&apos;ll compete with horses in the future, but she&apos;s also realizing it gets harder as you get older.
&lt;/p&gt;
&lt;h3&gt;What&apos;s Next?&lt;/h3&gt;
&lt;p&gt;
    Trish, Jack, and I have all had midlife crises this year. Trish cranked things up a notch to be a world-class eventer with horses, then got hurt. Jack was going to be an aeronautics engineer, then took a helicopter flight over Glacier National Park and changed his mind. I abandoned all my Java experience and chose CrowdStrike, a Go and Python shop.
&lt;/p&gt;
&lt;p&gt;
    Abbie&apos;s a senior in college and already has a job. I think she&apos;s winning the family badass contest!
&lt;/p&gt;
&lt;p&gt;
    We have no idea what&apos;s next. But we&apos;re proud of Abbie for securing her first job.
&lt;/p&gt;
&lt;p&gt;
    As for the rest of us? We&apos;ll figure it out. Raibles and McGinitys are known for thriving in the face of adversity. &amp;#x1F4AA;&amp;#x1F603;
&lt;/p&gt;
&lt;p style=&quot;font-size: .9em&quot;&gt;For a photo and video experience of our summer adventures, see my &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72177720321954143/&quot;&gt;Summer Adventures 2024&lt;/a&gt; album on Flickr.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/happy_birthday_jack13</id>
        <title type="html">Happy Birthday, Jack!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/happy_birthday_jack13"/>
        <published>2024-08-28T22:23:57-06:00</published>
        <updated>2024-08-28T22:24:13-06:00</updated> 
        <category term="/General" label="General" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="birthday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="happybirthday" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
    Jack is growing up fast and today marks his 20th birthday. He&apos;s a sophomore at CU and &lt;em&gt;loves&lt;/em&gt; to play basketball. In early July, we &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72177720318595725/&quot;&gt;made a trip to Montana&lt;/a&gt; where he learned how to wakeboard and took a helicopter ride with Abbie and Baba (my dad).
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-href=&quot;https://www.flickr.com/photos/mraible/53843697691/in/album-72177720318595725&quot; href=&quot;https://live.staticflickr.com/65535/53843697691_b500c03fc7_c.jpg&quot; title=&quot;Apparently, one handed is easier&quot; rel=&quot;lightbox[jack20]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53843697691_b500c03fc7.jpg&quot; width=&quot;500&quot; alt=&quot;Apparently, one handed is easier&quot; style=&quot;border: 1px solid black&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-href=&quot;https://www.flickr.com/photos/mraible/53844047839/in/album-72177720318595725&quot; href=&quot;https://live.staticflickr.com/65535/53844047839_d515a97649_c.jpg&quot; title=&quot;Helicopter Glacier Viewing Tour with Red Eagle Aviation&quot; rel=&quot;lightbox[jack20]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53844047839_d515a97649.jpg&quot; width=&quot;500&quot; alt=&quot;Helicopter Glacier Viewing Tour with Red Eagle Aviation&quot; style=&quot;border: 1px solid black&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;He amazed us with his perseverance on the basketball court and at the gym this summer. He frequently exercised six hours a day!
    This could be one of the defining years of his life if he walks on to the CU basketball team. Either way, his dedication to the craft is awe-inspiring. He&apos;s in the best shape of his life. I&apos;m impressed!
&lt;/p&gt;

&lt;p&gt;We believe in you, Jack. Happy Birthday, awesome one! &amp;#x1F5A4;&amp;#x1F49B;&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/happy_birthday_jack12</id>
        <title type="html">Happy Birthday, Jack!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/happy_birthday_jack12"/>
        <published>2023-08-28T12:06:33-06:00</published>
        <updated>2023-08-28T18:37:36-06:00</updated> 
        <category term="/General" label="General" />
        <category term="birthday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="happybirthday" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Today is a monumental day in the life of Jack Raible. Not only is today his 19th birthday, but it&apos;s also his first day of classes at the University of Colorado. He moved in last week and had a week to settle into his new surroundings. 
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/53148431459_05cc82ba5f_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53148431459&quot; title=&quot;All moved in at CU!&quot; rel=&quot;lightbox[happy20abbie]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53148431459_05cc82ba5f.jpg&quot; width=&quot;500&quot; alt=&quot;All moved in at CU!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;He&apos;s been playing hoops for 1-2 hours a day on our basketball court for the last six months. We recently asked him why he was playing so much, and he mentioned he wanted to play on CU&apos;s team before he graduates. I love it when someone dreams big! We&apos;ll be rooting for your success, Jack!
&lt;/p&gt;

&lt;p&gt;The whole family traveled to Boulder yesterday afternoon to celebrate his birthday. Today, both kids sent a picture before their first day of classes began.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/53148223791_5c32da2d6a_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53148223791&quot; title=&quot;First day of school 2023&quot; rel=&quot;lightbox[happy20abbie]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53148223791_5c32da2d6a.jpg&quot; width=&quot;500&quot; alt=&quot;First day of school 2023&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;We&apos;re so proud of you, Jack, and hope you have a wonderful college experience. Happy Birthday, buddy! &amp;#x1F973;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/january_jaunts_to_new_orleans</id>
        <title type="html">January Jaunts to New Orleans and Jackson Hole</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/january_jaunts_to_new_orleans"/>
        <published>2020-03-03T22:47:39-07:00</published>
        <updated>2020-03-06T06:52:59-07:00</updated> 
        <category term="/General" label="General" />
        <category term="skiing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="neworleans" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jacksonhole" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jaunts" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;Trish and I started 2020 with a fun trip to New Orleans to meet up with my family. My parents wanted to get out of the snowy cold of Montana, as did Kalin and Mya from Washington state. My Aunt Mary from New York joined us, and we brought the kids. Trish even executed a trip to the Saints vs. Vikings NFL playoff game!&lt;/p&gt;
&lt;p&gt;We celebrated &quot;the superiors&quot; birthdays, listened to lots of good music, hung out with our friends Jill and Brian, savored many excellent meals, and enjoyed each others company.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49550470316_7c157f5f71_c.jpg&quot; title=&quot;Happy Birthday Mimi!&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49550470316/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49550470316_7c157f5f71.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Birthday Mimi!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;Trish and I started 2020 with a fun trip to New Orleans to meet up with our family. My parents wanted to get out of the snowy cold of Montana, as did Kalin and Mya from Washington state. My Aunt Mary from New York joined us, and we brought the kids. Trish even executed a trip to the Saints vs. Vikings NFL playoff game!&lt;/p&gt;
&lt;p&gt;We celebrated &quot;the superiors&quot; birthdays, listened to lots of good music, hung out with our friends Jill and Brian, and savored many excellent meals.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49550470316_7c157f5f71_c.jpg&quot; title=&quot;Happy Birthday Mimi!&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49550470316/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49550470316_7c157f5f71.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Birthday Mimi!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49549969528_581b2b2786_c.jpg&quot; title=&quot;Awesome Aunt Mary&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49549969528/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49549969528_581b2b2786_m.jpg&quot; width=&quot;240&quot; alt=&quot;Awesome Aunt Mary&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49549971128_34d674fb55_c.jpg&quot; title=&quot;The Tuesday Afternoon Club&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49549971128/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49549971128_34d674fb55_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Tuesday Afternoon Club&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49550477221_a04786c180_c.jpg&quot; title=&quot;The Wednesday Night Crew&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49550477221/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49550477221_a04786c180_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Wednesday Night Crew&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49549982878_b2d34f7d28_c.jpg&quot; title=&quot;Party Crew &amp;#x1F389;&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49549982878/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49549982878_b2d34f7d28_q.jpg&quot; width=&quot;150&quot; alt=&quot;Party Crew &amp;#x1F389;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49549983793_3d10a97424_c.jpg&quot; title=&quot;My awesome folks&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49549983793/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49549983793_3d10a97424_q.jpg&quot; width=&quot;150&quot; alt=&quot;My awesome folks&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49550502736_675a91e111_c.jpg&quot; title=&quot;The New Orleans Crew&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49550502736/in/album-72157713153239727/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49550502736_675a91e111.jpg&quot; width=&quot;500&quot; alt=&quot;The New Orleans Crew&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div style=&quot;font-size: .9em;font-style: italic;text-align: right;margin-top: -15px !important;width: 500px;margin: 0 auto;&quot;&gt;For more photos see &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157713153239727&quot;&gt;The Superiors Birthdays in New Orleans&lt;/a&gt;.&lt;/div&gt;
&lt;p&gt;
    We returned to Denver in mid-January and Trish flew down to visit her folks in Naples, Florida. They spent a joyous week together before she flew back to start a new job.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49616057253_bdf77c2779_c.jpg&quot; title=&quot;Mau, Trish, and Joe!&quot; rel=&quot;lightbox[january2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49616057253/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49616057253_bdf77c2779.jpg&quot; width=&quot;500&quot; alt=&quot;Mau, Trish, and Joe!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;While Trish was golfing with her Dad, I prepared for another trip: a 5-day ski weekend in Jackson Hole. My awesome friends Chris and Ben arranged it all; my friend Joe and I just had to show up and have a good time. We met Jersey Dave and Patriot Tom once we arrived. There were six skiers in total, and we enjoyed some of the &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157713234485218&quot;&gt;best powder days of the year&lt;/a&gt;. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/49576945198_88f08a0a9d_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49576945198/in/album-72157713234485218/&quot; title=&quot;Powder Hounds&quot; rel=&quot;lightbox[january2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49576945198_88f08a0a9d.jpg&quot; width=&quot;500&quot; alt=&quot;Powder Hounds&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I made a video of our adventures with an AC/DC soundtrack. The reason for the music is because we saw &lt;a href=&quot;https://www.hellsbelles.info/&quot;&gt;Hell&apos;s Belles&lt;/a&gt; play at the Mangy Moose (footage included) and they were AWESOME! I smile every time I watch it. &amp;#x1F60A;
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
    &lt;iframe src=&quot;https://player.vimeo.com/video/394852094&quot; width=&quot;640&quot; height=&quot;360&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; fullscreen&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Yes, January was awesome. We got some good family time in warmer weather and I experienced Jackson Hole with lots of powder for the first time. Yeehaw! &amp;#x1F920;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2019_a_year_in_review</id>
        <title type="html">2019 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2019_a_year_in_review"/>
        <published>2020-02-09T20:56:56-07:00</published>
        <updated>2020-06-30T18:03:21-06:00</updated> 
        <category term="/General" label="General" />
        <category term="syncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2019" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="porschebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stoutthesyncro" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;It&apos;s time for my year-in-review post! This post sets the record for being the most delayed, ever. Usually, I&apos;m able to get it published by the end of January. Oh well, I hope you enjoy it!&lt;/p&gt;
&lt;p&gt;In 2019, I did my best to work hard, play often, and travel to interesting places. I took my Dad to Hawaii, drove through the worst blizzard of my life, traveled to India for the first time, did a UK + Ireland JUG Tour, and indulged in several fun vacations with my family.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473157308_9d34a3fb86_c.jpg&quot; title=&quot;Spring Skiing in Steamboat&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473157308/in/album-72157712929838236/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473157308_9d34a3fb86.jpg&quot; width=&quot;500&quot; alt=&quot;Spring Skiing in Steamboat&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We bought some additional rafts for whitewater, rafted in Montana and Colorado, and celebrated a family reunion in Cape Cod. Our classic VWs continued to perform well, and Hefe won his class once again at the 2019 VWs on the Green show. We did have to replace a clutch in Stout the Syncro, but I&apos;m OK with that since he safely transported me through the most treacherous driving conditions of my life.
&lt;/p&gt;

&lt;p&gt;I&apos;m going to look back on 2019 using the following categories.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#stout-and-hefe&quot;&gt;Stout the Syncro and Hefe the Bus&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#2020&quot;&gt;2020&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</summary>
        <content type="html">&lt;p&gt;It&apos;s time for my year-in-review post! This post sets the record for being the most delayed, ever. Usually, I&apos;m able to get it published by the end of January. Oh well, I hope you enjoy it!&lt;/p&gt;
&lt;p&gt;In 2019, I did my best to work hard, play often, and travel to interesting places. I took my Dad to Hawaii, drove through the worst blizzard of my life, traveled to India for the first time, did a UK + Ireland JUG Tour, and indulged in several fun vacations with my family.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473157308_9d34a3fb86_c.jpg&quot; title=&quot;Spring Skiing in Steamboat&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473157308/in/album-72157712929838236/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473157308_9d34a3fb86.jpg&quot; width=&quot;500&quot; alt=&quot;Spring Skiing in Steamboat&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We bought some additional rafts for whitewater, rafted in Montana and Colorado, and celebrated a family reunion in Cape Cod. Our classic VWs continued to perform well, and Hefe won his class once again at the 2019 VWs on the Green show. We did have to replace a clutch in Stout the Syncro, but I&apos;m OK with that since he safely transported me through the most treacherous driving conditions of my life.
&lt;/p&gt;

&lt;p&gt;I&apos;m going to look back on 2019 using the following categories.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#stout-and-hefe&quot;&gt;Stout the Syncro and Hefe the Bus&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2019_a_year_in_review#2020&quot;&gt;2020&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;For those stumbling upon this post with no context, I&apos;m an open source developer that works at &lt;a href=&quot;https://okta.com&quot;&gt;Okta&lt;/a&gt;. My title is officially &quot;Developer Advocate&quot;, but all the code and words I write are distributed as open source.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
    This year I started trying to produce more YouTube videos in addition to blog posts. My team discovered our YouTube subscriber count increases a lot faster than our Twitter followers, so that provided our motivation. I published 13 videos on the &lt;a href=&quot;https://youtube.com/c/oktadev&quot;&gt;OktaDev YouTube Channel&lt;/a&gt;. My most popular one was &lt;a href=&quot;https://youtu.be/rH-FnPC_xCA&quot;&gt;Java Microservices in 20 Minutes with Spring Boot and Spring Cloud&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;iframe width=&quot;700&quot; height=&quot;394&quot; style=&quot;max-width: 100%&quot; src=&quot;https://www.youtube.com/embed/rH-FnPC_xCA&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;I upped my videographer skills by learning how to record meetups. I copied Aaron Parecki&apos;s &lt;a href=&quot;https://aaronparecki.com/2018/10/15/4/portable-wireless-live-video&quot;&gt;portable wireless video setup&lt;/a&gt; and started recording Denver JUG and Denver Open Source User Group meetups. We posted the first couple to the OktaDev channel, then decided it&apos;d be better to have the meetups start their own channels. We published 6 to the DJUG channel and 3 to the DOSUG channel. I recommend subscribing if you&apos;re into Java or Open Source.
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCbekUcgWZJC4sSMk1Tr68Jw&quot;&gt;Denver JUG YouTube Channel&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCO8KSzxg75tuzcn3M4fyWJw&quot;&gt;Denver Open Source Users Group YouTube Channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I taught Abbie and Jack how to work the video kit and they&apos;ve been recording these meetups when I&apos;m out of town. &lt;em&gt;Thanks kids!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
    I wrote 22 blog posts throughout the year on &lt;a href=&quot;https://developer.okta.com/blog&quot;&gt;the Okta developer blog&lt;/a&gt;. &lt;!-- If you count 7 on raibledesigns.com and 0 on jhipster-book.com, that&apos;s 29! For those counting, that&apos;s 14 less than I wrote in 2018. --&gt; We publish two types of blog posts: thought leadership and conversion. Thought leadership posts tend to be about a hot topic while conversion posts are usually tutorials. My main topics for the year included Angular, Schematics, JHipster, microservices, and mobile development with Ionic 4 and React Native. Here are some that seemed to be popular.
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/05/13/angular-8-spring-boot-2&quot;&gt;Angular 8 + Spring Boot 2.2: Build a CRUD App Today!&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/02/13/angular-schematics&quot;&gt;Use Angular Schematics to Simplify Your Life&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/04/04/java-11-java-12-jhipster-oidc&quot;&gt;Better, Faster, Lighter Java with Java 12 and JHipster 6&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/05/22/java-microservices-spring-boot-spring-cloud&quot;&gt;Java Microservices with Spring Boot and Spring Cloud&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/05/23/java-microservices-spring-cloud-config&quot;&gt;Java Microservices with Spring Cloud Config and JHipster&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/08/28/reactive-microservices-spring-cloud-gateway&quot;&gt;Secure Reactive Microservices with Spring Cloud Gateway&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/06/20/ionic-4-tutorial-user-authentication-and-registration&quot;&gt;Tutorial: User Login and Registration in Ionic 4&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/11/14/react-native-login&quot;&gt;Create a React Native App with Login in 10 Minutes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I wrote a few thought leadership posts too:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/01/16/which-java-sdk&quot;&gt;Which Java SDK Should You Use?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/01/28/developer-relations-pro-tips&quot;&gt;Pro Tips for Developer Relations&lt;/a&gt; (+ &lt;a href=&quot;https://developer.okta.com/blog/2019/04/30/developer-relations-pro-tips-2&quot;&gt;Part 2&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/07/15/java-myths-2019&quot;&gt;10 Myths About Java in 2019&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/08/08/micro-frontends-for-microservices&quot;&gt;How to Win at UI Development in the World of Microservices&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2019/12/16/semantic-versioning&quot;&gt;Semantic Versioning Sucks! Long Live Semantic Versioning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;
    According to TripIt, I took 22 trips, to 41 cities, in 12 countries. That&apos;s four fewer trips than 2018, and I had 129 days on the road (+10 from 2018). I visited twice as many countries in 2019 as I did in 2018.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49477931058_53fdc13535_c.jpg&quot; title=&quot;2019 Conferences&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49477931058/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49477931058_53fdc13535.jpg&quot; width=&quot;500&quot; alt=&quot;2019 Conferences&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://speakerdeck.com/mraible&quot;&gt;My Speaker Deck profile&lt;/a&gt; shows 39 presentations at 24 events.
&lt;/p&gt;
&lt;table style=&quot;margin-top: -10px; margin-bottom: -10px&quot;&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;ol&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/DenverJavaUsersGroup/&quot;&gt;Denver JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://devnexus.com&quot;&gt;Devnexus&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.snowfroc.com/&quot;&gt;SnowFROC&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.developersummit.com/&quot;&gt;Great International Developer Summit: GIDS&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/DenverMicroservices/&quot;&gt;Denver Microservices&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.jbcnconf.com/&quot;&gt;JBCNConf&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://thesecuredeveloper.com&quot;&gt;The Secure Developer&lt;/a&gt; (now MyDevSecOps)&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Angular-SF/&quot;&gt;Angular SF&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://jhipster-conf.github.io/&quot;&gt;JHipsterConf&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.kcdc.info/&quot;&gt;KCDC&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://javasig.org/&quot;&gt;ACGNJ Java Users Group&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/JavaSIG/&quot;&gt;JavaSIG (New York, NY)&lt;/a&gt;&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/td&gt;
        &lt;td&gt;
            &lt;ol start=&quot;13&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.thatconference.com/wi&quot;&gt;That Conference&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://developdenver.org/&quot;&gt;Develop Denver&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Londonjavacommunity/&quot;&gt;London Java Community&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/South-West-Java/&quot;&gt;South West Java &amp;amp; JVM User Group&lt;/a&gt; (Bristol, UK)&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://wm-jug.org/&quot;&gt;West Midlands Java User Group&lt;/a&gt; (Birmingham, UK)&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/BelfastJUG/&quot;&gt;Belfast JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/JHipsterDublin/&quot;&gt;JHipster Dublin&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.dubjug.org/&quot;&gt;Dublin JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/corkjug/&quot;&gt;Cork JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://devoxx.be/&quot;&gt;Devoxx Belgium&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://devoxx.ma/&quot;&gt;Devoxx Morocco&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://progressivewebexperience.io/&quot;&gt;The Progressive Web Experience&lt;/a&gt;&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I also attended &lt;a href=&quot;https://twitter.com/LavaOneConf&quot;&gt;LavaOne&lt;/a&gt; (now &lt;a href=&quot;https://twitter.com/UnVoxxedHawaii&quot;&gt;UnVoxxed Hawaii&lt;/a&gt;) with my Dad. It was during his birthday week, so &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157712746376916&quot;&gt;we played some golf and toured Pearl Harbor&lt;/a&gt; after the conference.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49412013078_ee22f4fbbb_c.jpg&quot; title=&quot;At LavaOne with my dad&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49412013078/in/album-72157712746376916/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49412013078_ee22f4fbbb.jpg&quot; width=&quot;500&quot; alt=&quot;At LavaOne with my dad&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;GIDS 2019 was &lt;a href=&quot;https://raibledesigns.com/rd/entry/gids_2019_adventures_in_india&quot;&gt;incredibly fun with my sister&lt;/a&gt;. We hung out with many usual suspects and had a fabulous experience.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/47753007051_a6acb06bdb_c.jpg&quot; title=&quot;I picked up a travel buddy in Seattle. My awesome sister, Kalin, is coming with me!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://live.staticflickr.com/65535/47753007051_a6acb06bdb_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47753007051_a6acb06bdb.jpg&quot; width=&quot;500&quot; alt=&quot;I picked up a travel buddy in Seattle. My awesome sister, Kalin, is coming with me!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
    I learned how to present without an internet connection and found much joy in serious selfies.&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Monday closing crew at &lt;a href=&quot;https://twitter.com/hashtag/gids19?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#gids19&lt;/a&gt;! ???? &lt;a href=&quot;https://t.co/Axp5uRYqql&quot;&gt;pic.twitter.com/Axp5uRYqql&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1120397254416846852?ref_src=twsrc%5Etfw&quot;&gt;April 22, 2019&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I published pictures from &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157712930811443&quot;&gt;Devnexus&lt;/a&gt;,&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473509121_4f5bd2efe1_c.jpg&quot; title=&quot;Java Legends&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473509121/in/album-72157712930811443/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473509121_4f5bd2efe1_q.jpg&quot; width=&quot;150&quot; alt=&quot;Java Legends&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473725527_713f3b57c7_c.jpg&quot; title=&quot;OSS R3 JAM&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473725527/in/album-72157712930811443/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473725527_713f3b57c7_q.jpg&quot; width=&quot;150&quot; alt=&quot;OSS R3 JAM&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473726392_4364eaa222_c.jpg&quot; title=&quot;Awesome keynote with @reverentgeek&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473726392/in/album-72157712930811443/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473726392_4364eaa222_q.jpg&quot; width=&quot;150&quot; alt=&quot;Awesome keynote with @reverentgeek&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;my &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157710830433193&quot;&gt;UK + Ireland JUG Tour&lt;/a&gt;,&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48729350392_333c78644d_c.jpg&quot; title=&quot;Second stop: Bristol&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48729350392/in/album-72157710830433193/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48729350392_333c78644d_q.jpg&quot; width=&quot;150&quot; alt=&quot;Second stop: Bristol&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48729175991_fbd492fe5c_c.jpg&quot; title=&quot;Third stop: Birmingham&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48729175991/in/album-72157710830433193/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48729175991_fbd492fe5c_q.jpg&quot; width=&quot;150&quot; alt=&quot;Third stop: Birmingham&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48729177256_c68ef87f57_c.jpg&quot; title=&quot;Forth stop: Belfast&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48729177256/in/album-72157710830433193/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48729177256_c68ef87f57_q.jpg&quot; width=&quot;150&quot; alt=&quot;Forth stop: Belfast&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48729348667_4dd6652043_c.jpg&quot; title=&quot;The JHipster Dublin Crew!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48729348667/in/album-72157710830433193/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48729348667_4dd6652043_q.jpg&quot; width=&quot;150&quot; alt=&quot;The JHipster Dublin Crew!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48729348417_4cd4b05b2a_c.jpg&quot; title=&quot;@DubJug is in the house!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48729348417/in/album-72157710830433193/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48729348417_4cd4b05b2a_q.jpg&quot; width=&quot;150&quot; alt=&quot;@DubJug is in the house!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48729173811_1d70aa9a9f_c.jpg&quot; title=&quot;Final stop: Cork&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48729173811/in/album-72157710830433193/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48729173811_1d70aa9a9f_q.jpg&quot; width=&quot;150&quot; alt=&quot;Final stop: Cork&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157712930644037&quot;&gt;SpringOne&lt;/a&gt;,&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49474134372_69e4df1962_c.jpg&quot; title=&quot;SpringOne Closing Crew&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49474134372/in/album-72157712930644037/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49474134372_69e4df1962.jpg&quot; width=&quot;500&quot; alt=&quot;SpringOne Closing Crew&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;and &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157712932648143&quot;&gt;Devoxx Belgium/Morocco&lt;/a&gt;.
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473595483_43ebde56c7_c.jpg&quot; title=&quot;Big Crowd for 10 Excellent Ways to Secure Your Spring Boot Applications&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473595483/in/album-72157712932648143/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473595483_43ebde56c7_q.jpg&quot; width=&quot;150&quot; alt=&quot;Big Crowd for 10 Excellent Ways to Secure Your Spring Boot Applications&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473593463_434f24ee78_c.jpg&quot; title=&quot;Hello, Morocco!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473593463/in/album-72157712932648143/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473593463_434f24ee78_q.jpg&quot; width=&quot;150&quot; alt=&quot;Hello, Morocco!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473596578_a2bcf4340c_c.jpg&quot; title=&quot;Another gorgeous sunset&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473596578/in/album-72157712932648143/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473596578_a2bcf4340c_q.jpg&quot; width=&quot;150&quot; alt=&quot;Another gorgeous sunset&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;At SpringOne, I did a talk with &lt;a href=&quot;https://twitter.com/starbuxman&quot;&gt;Josh Long&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/_JamesWard&quot;&gt;James Ward&lt;/a&gt;. I&apos;ve never had so much fun on stage. &amp;#x1F606;&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I got to do a talk with two of my best friends and favorite technologists, &lt;a href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; &#8216;s &lt;a href=&quot;https://twitter.com/mraible?ref_src=twsrc%5Etfw&quot;&gt;@mraible&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/Google?ref_src=twsrc%5Etfw&quot;&gt;@google&lt;/a&gt; &#8216;s &lt;a href=&quot;https://twitter.com/_JamesWard?ref_src=twsrc%5Etfw&quot;&gt;@_JamesWard&lt;/a&gt;. &lt;br&gt;&lt;br&gt;Thanks for making this happen &lt;a href=&quot;https://twitter.com/s1p?ref_src=twsrc%5Etfw&quot;&gt;@s1p&lt;/a&gt; ! &lt;a href=&quot;https://t.co/VCB7X7G8v4&quot;&gt;pic.twitter.com/VCB7X7G8v4&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Long (???, ???, ???? ????, ??? ????) (@starbuxman) &lt;a href=&quot;https://twitter.com/starbuxman/status/1182366031764951040?ref_src=twsrc%5Etfw&quot;&gt;October 10, 2019&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;A recording of our talk was &lt;a href=&quot;https://youtu.be/p1sernXyPHY&quot;&gt;published to YouTube&lt;/a&gt;.
&lt;div style=&quot;text-align: center; margin-bottom: 10px&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; style=&quot;max-width: 100%&quot; src=&quot;https://www.youtube.com/embed/p1sernXyPHY&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h3 id=&quot;community&quot;&gt;Community&lt;/h3&gt;
&lt;p&gt;I was involved in many community activities in 2019. I&apos;m proud to say that &lt;a href=&quot;https://blogs.oracle.com/java/2019-dukes-choice-award-winners&quot;&gt;Denver JUG won a Duke&apos;s Choice Award&lt;/a&gt; this year! I flew out to CodeOne for a night to accept the award and celebrate with Java friends.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Wahoo! &lt;a href=&quot;https://twitter.com/denverjug?ref_src=twsrc%5Etfw&quot;&gt;@denverjug&lt;/a&gt; wins a Duke&amp;#39;s Choice Award at &lt;a href=&quot;https://twitter.com/hashtag/CodeOne?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#CodeOne&lt;/a&gt;!! ???? &lt;a href=&quot;https://t.co/4f7wo9FTPF&quot;&gt;https://t.co/4f7wo9FTPF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1173753912324583424?ref_src=twsrc%5Etfw&quot;&gt;September 17, 2019&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;We only had two &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; workshops in 2019:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/262330629/&quot;&gt;Gotta Catch &#8216;Em All! Raspberry Pi and Java Pokemon Training&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/265404289/&quot;&gt;Learn How to Build a Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first one was taught by Abbie and Jack. I taught the second one. It seems I need to do a better job recruiting speakers. In reality, I think it&apos;s time to offer the leadership of the group to someone who has more time.&lt;/p&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;I developed and released a new open source project in 2019: &lt;a href=&quot;https://github.com/oktadeveloper/schematics&quot;&gt;OktaDev Schematics&lt;/a&gt;. It provides a way to add Okta for authentication to Angular, React, Vue, Ionic, and React Native projects. I developed it mostly to make my demos easier. It had 12 releases throughout the year.&lt;/p&gt;
&lt;p&gt;My other projects are mostly around JHipster. I support its OAuth 2.0 and OIDC support as best I can, and &lt;a href=&quot;https://github.com/oktadeveloper/generator-jhipster-ionic/releases&quot;&gt;released seven versions of its Ionic module&lt;/a&gt;. Upgrading to Ionic 4 was a big task and I wrote about &lt;a href=&quot;https://developer.okta.com/blog/2019/06/24/ionic-4-angular-spring-boot-jhipster&quot;&gt;how to use Ionic 4 with JHipster 6&lt;/a&gt;. I recorded a screencast showing
    &lt;a href=&quot;https://youtu.be/uQqlO3IGpTU&quot;&gt;how to get started with JHipster 6&lt;/a&gt; and &lt;a href=&quot;https://raibledesigns.com/rd/entry/my_journey_to_jhipster_conf&quot;&gt;traveled to JHipster Conf&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
    &lt;iframe width=&quot;700&quot; height=&quot;394&quot; style=&quot;max-width: 100%&quot; src=&quot;https://www.youtube.com/embed/uQqlO3IGpTU&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I did not work on the JHipster Mini-Book in 2019, but I hope to update it for JHipster 7 this year.&lt;/p&gt;
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;
&lt;p&gt;Trish and I journeyed to &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157712931825848&quot;&gt;Jazz Fest in New Orleans&lt;/a&gt;. It was my first time and it might become a yearly tradition. &lt;em&gt;So fun!&lt;/em&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49474031062_881042ec28_c.jpg&quot; title=&quot;Matt&apos;s First Jazz Fest!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49474031062/in/album-72157712931825848/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49474031062_881042ec28_q.jpg&quot; width=&quot;150&quot; alt=&quot;Matt&apos;s First Jazz Fest!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49474038287_562533b545_c.jpg&quot; title=&quot;Jazz Fest 50&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49474038287/in/album-72157712931825848/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49474038287_562533b545_q.jpg&quot; width=&quot;150&quot; alt=&quot;Jazz Fest 50&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473813246_23d59c4786_c.jpg&quot; title=&quot;Gorgeous weather in New Orleans&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473813246/in/album-72157712931825848/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473813246_23d59c4786_q.jpg&quot; width=&quot;150&quot; alt=&quot;Gorgeous weather in New Orleans&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I was fortunate enough to bring family along with me a few times when traveling for work. Highlights include:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Taking my whole family to &lt;a href=&quot;https://raibledesigns.com/rd/entry/a_beautiful_adventure_to_jbcnconf&quot;&gt;JBCNConf in Barcelona&lt;/a&gt;. They all speak Spanish, so I knew it&apos;d be a fun adventure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/48142488716_55ca185d18_c.jpg&quot; title=&quot;Trish and Abbie at Montserrat&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48142488716/in/album-72157709287954566/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48142488716_55ca185d18.jpg&quot; width=&quot;500&quot; alt=&quot;Trish and Abbie at Montserrat&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;That Conference with Jack and my nephew, Michael. It was at a water park so the boys had a blast.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/48625172732_c550127544_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48625172732/in/album-72157710555144233/&quot; title=&quot;Phew - we made it to THAT Conference&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48625172732_c550127544.jpg&quot; width=&quot;500&quot; alt=&quot;Phew - we made it to THAT Conference&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Trish and my parents meeting me during my Ireland JUG Tour.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473585207_bd4bf99af5_c.jpg&quot; title=&quot;My fabulous parents and wife&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473585207/in/album-72157710830433193/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473585207_bd4bf99af5.jpg&quot; width=&quot;500&quot; alt=&quot;My fabulous parents and wife&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I regret leaving in the middle of a family reunion for KCDC. The location in Cape Cod was fantastic.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48625209527_228a15bbf1_c.jpg&quot; title=&quot;Wowee!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48625209527/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48625209527_228a15bbf1.jpg&quot; width=&quot;500&quot; alt=&quot;Wowee!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Jack got his learners permit to drive in August. He was a little rusty at first, but he&apos;s come a long way since. He drives several times a week for practice when he&apos;s at our house.
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie13&quot;&gt;Abbie is now 17&lt;/a&gt; and &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_jack8&quot;&gt;Jack is 15&lt;/a&gt;. They grow a lot when they become teenagers. Jack is the tallest one in our house!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49020698497_88738a8fb5_c.jpg&quot; title=&quot;Abbie Raible 2019&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49020698497/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49020698497_88738a8fb5_m.jpg&quot; width=&quot;194&quot; alt=&quot;Abbie Raible 2019&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49019972783_fe5cc989bd_c.jpg&quot; title=&quot;Jack Raible 2019&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49019972783/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49019972783_fe5cc989bd_m.jpg&quot; width=&quot;194&quot; alt=&quot;Jack Raible 2019&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We had a ball with Trish&apos;s brother&apos;s family and parents in Turks and Caicos. It was part of a double-header Spring Break that started with skiing in Steamboat.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473659481_58a1eafb44_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473659481/in/album-72157712929838236/&quot; title=&quot;Riding the lift at Steamboat&quot; &gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473659481_58a1eafb44.jpg&quot; width=&quot;500&quot; style=&quot;border: 1px solid black;&quot; alt=&quot;Riding the lift at Steamboat&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473657086_cde67fcfac_c.jpg&quot; title=&quot;Turks and Caicos!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473657086/in/album-72157712929838236/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473657086_cde67fcfac_m.jpg&quot; width=&quot;240&quot; alt=&quot;Turks and Caicos!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473871917_32376fcc3b_c.jpg&quot; title=&quot;Trish and Morgan&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473871917/in/album-72157712929838236/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473871917_32376fcc3b_m.jpg&quot; width=&quot;240&quot; alt=&quot;Trish and Morgan&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://raibledesigns.com/rd/entry/farewell_to_the_2018_19&quot;&gt;2018-19&lt;/a&gt; ski season was fabulous and Stout was quite the hero during our first Bomb Cyclone!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/47927615997_7ab2798f62_c.jpg&quot; title=&quot;Stout at Wolf Creek&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://live.staticflickr.com/65535/47927615997_7ab2798f62_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927615997_7ab2798f62_m.jpg&quot; width=&quot;240&quot; alt=&quot;Stout at Wolf Creek&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/47927638718_3507a2e695_c.jpg&quot; title=&quot;The Van after Bomb Cyclone #1&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://live.staticflickr.com/65535/47927638718_3507a2e695_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927638718_3507a2e695_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Van after Bomb Cyclone #1&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We added two duckies to our rafting fleet so we can take more friends on the river in June. Father&apos;s Day on the Upper Colorado was fun with friends, but Chris Morse and the Fesser did have to float through a cold and dangerous class IV rapid. You could say they&apos;re were not fans of our duckies.
&lt;/p&gt;
&lt;p&gt;My Dad made me proud with his cameo in the &lt;a href=&quot;https://twitter.com/okta/status/1140317270998048768&quot;&gt;&quot;What is Okta?&quot; Father&apos;s Day video&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We took Abbie&apos;s boyfriend, Joseph, with us to Montana for the 4th of July. My Dad and I road-tripped up in our Westfalia Vanagon. We decorated a float for the parade, enjoyed a couple days on the river, and spent some quality time with Owen and Dana. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48624779968_5090a14ed7_c.jpg&quot; title=&quot;Night two in Grand Tetons National Park&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48624779968/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48624779968_5090a14ed7_q.jpg&quot; width=&quot;150&quot; alt=&quot;Night two in Grand Tetons National Park&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48624779343_688d082c2f_c.jpg&quot; title=&quot;Sunset at Grand Teton National Park&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48624779343/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48624779343_688d082c2f_q.jpg&quot; width=&quot;150&quot; alt=&quot;Sunset at Grand Teton National Park&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48625126491_701e95d8bd_c.jpg&quot; title=&quot;#VanLife&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48625126491/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48625126491_701e95d8bd_q.jpg&quot; width=&quot;150&quot; alt=&quot;#VanLife&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48624762833_4178e3ddef_c.jpg&quot; title=&quot;Ready for the 4th of July Parade!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48624762833/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48624762833_4178e3ddef.jpg&quot; width=&quot;500&quot; alt=&quot;Ready for the 4th of July Parade!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48625097816_2206456bf5_c.jpg&quot; title=&quot;Family Day on the Blackfoot!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48625097816/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48625097816_2206456bf5_m.jpg&quot; width=&quot;240&quot; alt=&quot;Family Day on the Blackfoot!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48625234197_67a4ed2862_c.jpg&quot; title=&quot;Duckie Fun&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48625234197/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48625234197_67a4ed2862_m.jpg&quot; width=&quot;240&quot; alt=&quot;Duckie Fun&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48624735243_e1abfa8bd4_c.jpg&quot; title=&quot;Rig to flip!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48624735243/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48624735243_e1abfa8bd4_m.jpg&quot; width=&quot;240&quot; alt=&quot;Rig to flip!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48625235337_ece0755cd2_c.jpg&quot; title=&quot;With Owen and Dana!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48625235337/in/album-72157710555144233/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48625235337_ece0755cd2_m.jpg&quot; width=&quot;240&quot; alt=&quot;With Owen and Dana!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Trish and I celebrated our 6th anniversary in Estes Park.&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Happy Anniversary to us!! &lt;a href=&quot;https://twitter.com/hashtag/6years?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#6years&lt;/a&gt; &amp;#x2764;&amp;#xFE0F;&amp;#x1F389;&amp;#x1F970;&amp;#x1F483;&amp;#x1F57A; &lt;a href=&quot;https://t.co/JnzhenOIzI&quot;&gt;pic.twitter.com/JnzhenOIzI&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1155222535027347456?ref_src=twsrc%5Etfw&quot;&gt;July 27, 2019&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;We stayed at the Stanley Hotel in the &quot;Kissing Cowboy&quot; room. &amp;#x1F631;&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/48625041576_c8288b110c_c.jpg&quot; title=&quot;Beautiful View from the Stanley Hotel&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/48625041576/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/48625041576_c8288b110c.jpg&quot; width=&quot;500&quot; alt=&quot;Beautiful View from the Stanley Hotel&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Trish went big in September and added her own cataraft to our fleet!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473935241_c8678107c4_c.jpg&quot; title=&quot;Introducing, Trish&apos;s cataraft!&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473935241/in/album-72157712930704457/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473935241_c8678107c4_m.jpg&quot; width=&quot;240&quot; alt=&quot;Introducing, Trish&apos;s cataraft!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49474152842_c68cefe4c3_c.jpg&quot; title=&quot;The Good Life&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49474152842/in/album-72157712930704457/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49474152842_c68cefe4c3_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Good Life&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We visited Trish&apos;s family on the east coast for Thanksgiving.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
   &lt;a href=&quot;https://live.staticflickr.com/65535/49513779748_359e6475d6_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49513779748/&quot; title=&quot;McGinity Thanksgiving 2019&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49513779748_359e6475d6.jpg&quot; width=&quot;500&quot; alt=&quot;McGinity Thanksgiving 2019&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Christmas at my parent&apos;s house in Montana was warm and cozy.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49473716588_12a9894a5b_c.jpg&quot; title=&quot;The beautiful barn that my dad built in the 80s&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49473716588/in/album-72157712933118423/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49473716588_12a9894a5b.jpg&quot; width=&quot;500&quot; alt=&quot;The beautiful barn that my dad built in the 80s&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&quot;stout-and-hefe&quot;&gt;Stout the Syncro and Hefe the Bus&lt;/h3&gt;
&lt;p&gt;Our classic VWs are surviving and thriving. Hefe won best in class at VWs on the Green for the fourth time. Stout ran well on several road trips and now has a new clutch.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/47927546642_b5f9fd663f_c.jpg&quot; title=&quot;VWs on the Green&quot; rel=&quot;lightbox[2019yearinreview]&quot; data-href=&quot;https://live.staticflickr.com/65535/47927546642_b5f9fd663f_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927546642_b5f9fd663f.jpg&quot; width=&quot;500&quot; alt=&quot;VWs on the Green&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I hope to write a &quot;Story of Hefe&quot; book in 2020 from the pictures and posts on this blog.&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
    &lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned data-instgrm-permalink=&quot;https://www.instagram.com/p/B2-Lra-lBIN/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;12&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/B2-Lra-lBIN/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt; View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt; &lt;p style=&quot; margin:8px 0 0 0; padding:0 4px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/B2-Lra-lBIN/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;&quot; target=&quot;_blank&quot;&gt;All shined up and ready for a cruise down Colfax tomorrow! #vw #vwbus #vwcolorado #hefethebus #vwec #21windows&lt;/a&gt;&lt;/p&gt; &lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;A post shared by &lt;a href=&quot;https://www.instagram.com/vwsforlife/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px;&quot; target=&quot;_blank&quot;&gt; Matt Raible&lt;/a&gt; (@vwsforlife) on &lt;time style=&quot; font-family:Arial,sans-serif; font-size:14px; line-height:17px;&quot; datetime=&quot;2019-09-28T22:26:29+00:00&quot;&gt;Sep 28, 2019 at 3:26pm PDT&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;h2 id=&quot;2020&quot;&gt;2020&lt;/h2&gt;
&lt;p&gt;
    Professionally, I&apos;ll be hitting some new exotic locations. Voxxed Days Z&#252;rich and JavaLand in Germany are on my list. JavaLand happens during Spring Break, so we&apos;ll be spending a few days skiing in the Swiss Alps afterward.
&lt;/p&gt;
&lt;p&gt;I plan to speak at Devoxx UK (London), Spring I/O (Barcelona), and Voxxed Days Singapore. I hope to visit with the Java community in Japan as well. If you&apos;re interested in seeing where the &lt;a href=&quot;https://twitter.com/oktadev&quot;&gt;@oktadev team&lt;/a&gt; will be in 2020, check out &lt;a href=&quot;https://oktadev.events&quot;&gt;oktadev.events&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;I&apos;ll be on vacation the whole month of July. I&apos;ve always wanted to live like a European and Okta&apos;s unlimited vacation policy makes this possible.
&lt;/p&gt;
&lt;p&gt;
    I&apos;m going to stop traveling in August for a year. Abbie will be a high school senior and I want to be around for her last year at home.
&lt;/p&gt;
&lt;p&gt;In 2020, I&apos;ll be skiing, biking, and rafting a lot more. I started &lt;a href=&quot;http://skiday.dev/&quot;&gt;Developer Ski Days&lt;/a&gt; to help with the first. I&apos;m excited that &lt;a href=&quot;https://www.thriveworkplace.com/&quot;&gt;Thrive Workplace&lt;/a&gt; has a new DTC location (at Innovation Pavilions). I&apos;ll be renting a desk from them and start bike-commuting soon. Our rafting family just applied for several week-long rafting permits. Spending a week on the river is one of our favorite activities!
&lt;/p&gt;
&lt;p&gt;
    Last year, I &lt;a href=&quot;https://raibledesigns.com/rd/entry/2018_a_year_in_review#personal-goals&quot;&gt;had a bunch of goals with numbers&lt;/a&gt;. This year I&apos;m going to try and get more headspace, spend more time with friends, and enjoy being home.
&lt;/p&gt;
&lt;p&gt;
    I believe less travel in 2020 will be very rewarding. I might even get Nuggets season tickets. They&apos;re pretty good these days.
&lt;/p&gt;
&lt;p&gt;
    If you want to follow along on my adventures, please &lt;a href=&quot;https://twitter.com/mraible&quot;&gt;follow me on Twitter&lt;/a&gt;. I also post pictures of my favorite moments &lt;a href=&quot;https://www.instagram.com/vwsforlife&quot;&gt;to Instagram&lt;/a&gt; and whole albums &lt;a href=&quot;https://www.flickr.com/photos/mraible&quot;&gt;on Flickr&lt;/a&gt;.
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2018_a_year_in_review</id>
        <title type="html">2018 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2018_a_year_in_review"/>
        <published>2019-01-29T13:25:24-07:00</published>
        <updated>2024-05-21T21:21:22-06:00</updated> 
        <category term="/General" label="General" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="syncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="porschebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stoutthesyncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2018" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;In 2018, I spoke at several fantastic meetups, traveled a bit overseas, and enjoyed some fun family vacations. We had the time of our lives driving Hefe in the Denver St. Paddy&apos;s Day Parade!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://farm5.staticflickr.com/4782/40902535612_9fcc94e853_c.jpg&quot; title=&quot;Bubbles&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40902535612/in/album-72157689027458320/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4782/40902535612_9fcc94e853.jpg&quot; width=&quot;500&quot; alt=&quot;Bubbles&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We traveled to Crete for JCrete and had a blast with the Java community. We journeyed to Ireland with my folks, and I thoroughly enjoyed a speaking tour of Ireland JUGs and the Dublin JHipster Meetup. Our classic VWs had a great year with only minor repairs needed.
&lt;/p&gt;

&lt;p&gt;I&apos;m going to look back on 2018 using the following categories.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
        &lt;!--ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#stout-and-hefe&quot;&gt;Stout and Hefe&lt;/a&gt;&lt;/li&gt;
        &lt;/ul--&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#2019&quot;&gt;2019&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;For those stumbling upon this post with no context, I&apos;m a veteran open source developer that works at &lt;a href=&quot;https://okta.com&quot;&gt;Okta&lt;/a&gt; as a developer advocate.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
This year I focused on blogging more than speaking. I still spoke a fair bit, but I tried to focus on meetups more than conferences. The DevEx Team at Okta released a slew of SDKs at the end of 2017, so I had plenty to write about. Over the year, I found more and more developers had heard of Okta during my talks. I even found users in most audiences! This was quite a change from 2017, so it seems my team&apos;s advocacy efforts might be working.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;In 2018, I spoke at several fantastic meetups, traveled a bit overseas, and enjoyed some fun family vacations. We had the time of our lives driving Hefe in the Denver St. Paddy&apos;s Day Parade!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://farm5.staticflickr.com/4782/40902535612_9fcc94e853_c.jpg&quot; title=&quot;Bubbles&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40902535612/in/album-72157689027458320/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4782/40902535612_9fcc94e853.jpg&quot; width=&quot;500&quot; alt=&quot;Bubbles&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We traveled to Crete for JCrete and had a blast with the Java community. We journeyed to Ireland with my folks, and I thoroughly enjoyed a speaking tour of Ireland JUGs and the Dublin JHipster Meetup. Our classic VWs had a great year with only minor repairs needed.
&lt;/p&gt;

&lt;p&gt;I&apos;m going to look back on 2018 using the following categories.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#community&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
        &lt;!--ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#stout-and-hefe&quot;&gt;Stout and Hefe&lt;/a&gt;&lt;/li&gt;
        &lt;/ul--&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2018_a_year_in_review#2019&quot;&gt;2019&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;For those stumbling upon this post with no context, I&apos;m a veteran open source developer that works at &lt;a href=&quot;https://okta.com&quot;&gt;Okta&lt;/a&gt; as a developer advocate.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
This year I focused on blogging more than speaking. I still spoke a fair bit, but I tried to focus on meetups more than conferences. The DevEx Team at Okta released a slew of SDKs at the end of 2017, so I had plenty to write about. Over the year, I found more and more developers had heard of Okta during my talks. I even found users in most audiences! This was quite a change from 2017, so it seems my team&apos;s advocacy efforts might be working.
&lt;/p&gt;
&lt;p&gt;
    I wrote 29 blog posts throughout the year on &lt;a href=&quot;https://developer.okta.com/blog&quot;&gt;the Okta developer blog&lt;/a&gt;. &lt;!-- If you count nine on raibledesigns.com and five on jhipster-book.com, that&apos;s 43! --&gt; We publish two types of blog posts: thought leadership and conversion. Thought leadership posts tend to be about a hot topic while conversion posts are generally tutorials. I wrote a series of posts on PWAs with Ionic + Angular and Spring Boot. The series started in January and ended in July.
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/01/18/cryptocurrency-pwa-secured-by-okta&quot;&gt;Protect Your Cryptocurrency Wealth Tracking PWA with Okta&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/01/23/replace-local-storage-with-okta-profile-attributes&quot;&gt;Use Okta (Instead of Local Storage) to Store Your User&apos;s Data Securely&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/05/02/testing-spring-boot-angular-components&quot;&gt;The Hitchhiker&apos;s Guide to Testing Spring Boot APIs and Angular Components with WireMock, Jest, Protractor, and Travis CI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/06/18/spring-boot-angular-auth-code-flow&quot;&gt;Deploy Your Secure Spring Boot + Angular PWA as a Single Artifact&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/07/11/ci-cd-spring-boot-jenkins-x-kubernetes&quot;&gt;Add CI/CD to Your Spring Boot App with Jenkins X and Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also wrote a number of posts on &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt;, starting with &lt;a href=&quot;https://developer.okta.com/blog/2018/01/30/jhipster-ionic-with-oidc-authentication&quot;&gt;Ionic for JHipster&lt;/a&gt;. Then I transitioned to microservices and showed &lt;a href=&quot;https://developer.okta.com/blog/2018/02/13/secure-spring-microservices-with-oauth&quot;&gt;how to build a Spring microservices architecture with Spring Security and OAuth 2.0&lt;/a&gt;. I felt this was important, as it&apos;s the same basic architecture that JHipster uses.&lt;/p&gt;
&lt;p&gt;
    I published &lt;a href=&quot;https://developer.okta.com/blog/2018/03/01/develop-microservices-jhipster-oauth&quot;&gt;Develop a Microservices Architecture with OAuth 2.0 and JHipster&lt;/a&gt;, and had two more JHipster posts about its React and React Native support.
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/06/25/react-spring-boot-photo-gallery-pwa&quot;&gt;Build a Photo Gallery PWA with React, Spring Boot, and JHipster&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/10/10/react-native-spring-boot-mobile-app&quot;&gt;Build a Mobile App with React Native and Spring Boot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I learned about React and React Native from research I did while writing previous posts.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/03/16/build-react-native-authentication-oauth-2&quot;&gt;Build a React Native Application and Authenticate with OAuth 2.0&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/07/19/simple-crud-react-and-spring-boot&quot;&gt;Use React and Spring Boot to Build a Simple CRUD App&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I stayed current on the latest releases of Angular and Spring Boot because I &amp;#x2764; them both!
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/05/09/upgrade-to-angular-6&quot;&gt;Angular 6: What&apos;s New, and Why Upgrade
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/11/26/spring-boot-2-dot-1-oidc-oauth2-reactive-apis&quot;&gt;Spring Boot 2.1: Outstanding OIDC, OAuth 2.0, and Reactive API Support&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/12/04/angular-7-oidc-oauth2-pkce&quot;&gt;Angular 7: What&apos;s New and Noteworthy + OIDC Goodness&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/08/22/basic-crud-angular-7-and-spring-boot-2&quot;&gt;Build a Basic CRUD App with Angular 7.0 and Spring Boot 2.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I heard from several developers that they wanted to use Okta with their Java apps, but they weren&apos;t using Spring. Or they were using Spring MVC, but not Spring Boot. I wrote &lt;a href=&quot;https://developer.okta.com/blog/2018/09/12/secure-java-ee-rest-api&quot;&gt;Build a Java REST API with Java EE and OIDC&lt;/a&gt; to show a few authn/authz techniques: JWT validation, using Spring Security, and using Pac4j.
&lt;/p&gt;
&lt;p&gt;I had a blast in August and September collaborating with Josh Long about going &lt;a href=&quot;https://youtu.be/1xpwYe154Ys&quot;&gt;Full Stack Reactive with Spring WebFlux and React&lt;/a&gt;. Josh authored his parts with AsciiDoc and forced me to integrate &lt;a href=&quot;https://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt; support in our blog. It took awhile, but I was thrilled with the result. Now I get to author all my blog posts with AsciiDoc! &amp;#x1F389;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/09/21/reactive-programming-with-spring&quot;&gt;Get Started with Reactive Programming in Spring&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/09/24/reactive-apis-with-spring-webflux&quot;&gt;Build Reactive APIs with Spring WebFlux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/09/25/spring-webflux-websockets-react&quot;&gt;Full Stack Reactive with Spring WebFlux, WebSockets, and React&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I played with other new technologies in 2018, namely &lt;a href=&quot;https://developer.okta.com/blog/2018/07/11/build-react-graphql-api-user-authentication&quot;&gt;GraphQL and TypeORM&lt;/a&gt;, &lt;a href=&quot;https://developer.okta.com/blog/2018/09/17/desktop-app-electron-authentication&quot;&gt;Electron&lt;/a&gt;, and &lt;a href=&quot;https://developer.okta.com/blog/2018/12/03/bootiful-spring-boot-java-vue-typescript&quot;&gt;Vue with TypeScript&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;The Super Epic Advocacy Battle!&lt;/h3&gt;
&lt;p&gt;
    I was super motivated to write a bunch of blog posts in June and July because I was having a &quot;most views&quot; contest with &lt;a href=&quot;https://twitter.com/rdegges&quot;&gt;Randall Degges&lt;/a&gt;. The contest started after I mouthed off that I thought I could outperform him in the waning hours of our Oktane 2018 conference. He accepted my challenge and we competed for two months. He wrote mostly thought leadership posts, I wrote mostly tutorials. Long story short: he won. I had to wear gold pants the week of CodeOne for my lack of winning.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Hanging out at Oracle Code One conf with my buddy &lt;a href=&quot;https://twitter.com/mraible?ref_src=twsrc%5Etfw&quot;&gt;@mraible&lt;/a&gt; and his amazing MC Hammer pants.&lt;br&gt;&lt;br&gt;I wonder why he&amp;#39;s wearing them? :D&lt;br&gt;&lt;br&gt;He&amp;#39;s about to get onstage to talk about micro services &amp;lt;33333 &lt;a href=&quot;https://t.co/syoiIeSDMc&quot;&gt;pic.twitter.com/syoiIeSDMc&lt;/a&gt;&lt;/p&gt;&amp;mdash; Randall Degges (@rdegges) &lt;a href=&quot;https://twitter.com/rdegges/status/1054452785725358080?ref_src=twsrc%5Etfw&quot;&gt;October 22, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;
If only I&apos;d published &lt;a href=&quot;https://developer.okta.com/blog/2018/07/30/10-ways-to-secure-spring-boot&quot;&gt;10 Excellent Ways to Secure Your Spring Boot Application&lt;/a&gt; earlier in our contest. I collaborated on it with &lt;a href=&quot;https://twitter.com/sjmaple&quot;&gt;Simon Maple&lt;/a&gt;, and it seemed to be popular.
&lt;/p&gt;
&lt;p&gt;
I wrote a few other thought leadership posts throughout 2018:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/03/19/how-to-be-productive-at-work&quot;&gt;How to Achieve Massive Productivity at Work&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/11/20/three-developer-tools-im-thankful-for&quot;&gt;Three Developer Tools I&apos;m Thankful For&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/12/11/learning-java-first-language&quot;&gt;Learning Java as a First Language&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;
    According to TripIt, I took 26 trips, to 37 cities, in 6 countries. That&apos;s three fewer trips than 2017, and I only had 119 days on the road (versus 141). By my count, I spoke at 20 events.
&lt;/p&gt;
&lt;table&gt;
    &lt;tr&gt;
        &lt;td&gt;
            &lt;ol&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/DOSUG1&quot;&gt;Denver Open Source Users Group&lt;/a&gt; (DOSUG)&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://ujug.org/&quot;&gt;Utah JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://seajug.org/&quot;&gt;Seattle JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Google-Developer-Group-Boulder/&quot;&gt;GDG Boulder&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Richmond-Java-Users-Group/&quot;&gt;Richmond JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.okta.com/oktane18/&quot;&gt;Oktane&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://jhipster-conf.github.io/&quot;&gt;JHipsterConf&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://uberconf.com/conference/denver/2018/07/home&quot;&gt;UberConf&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/boston-java/&quot;&gt;Boston JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/BelfastJUG/&quot;&gt;Belfast JUG&lt;/a&gt;&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/td&gt;
        &lt;td&gt;
            &lt;ol start=&quot;11&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;http://www.dubjug.org/&quot;&gt;Dublin JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/JHipsterDublin/&quot;&gt;JHipster Dublin&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;Denver Okta User Group&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://springoneplatform.io/&quot;&gt;SpringOne Platform&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;Salt Lake City Okta User Group&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Denver-Cloud-Security-Alliance-Meetup/&quot;&gt;Denver CSA Meetup&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://connect.tech/&quot;&gt;Connect.Tech&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.oracle.com/code-one/&quot;&gt;CodeOne&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/ChicagoJUG/&quot;&gt;Chicago JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://therichwebexperience.com/conference/clearwater/2018/12/home&quot;&gt;The Rich Web Experience&lt;/a&gt;&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/jhipsterconf_2018_summer_solstice_in&quot;&gt;JHipsterConf was especially fun&lt;/a&gt; because I took my son, Jack, with me. &lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I had a wonderful time this week in Paris and at &lt;a href=&quot;https://twitter.com/jhipsterconf?ref_src=twsrc%5Etfw&quot;&gt;@jhipsterconf&lt;/a&gt;. Many thanks to the &lt;a href=&quot;https://twitter.com/java_hipster?ref_src=twsrc%5Etfw&quot;&gt;@java_hipster&lt;/a&gt; developers, community, &lt;a href=&quot;https://twitter.com/juliendubois?ref_src=twsrc%5Etfw&quot;&gt;@juliendubois&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/deepu105?ref_src=twsrc%5Etfw&quot;&gt;@deepu105&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/ippontech?ref_src=twsrc%5Etfw&quot;&gt;@ippontech&lt;/a&gt; for making it all possible! &lt;a href=&quot;https://twitter.com/hashtag/JHipsterConf?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#JHipsterConf&lt;/a&gt; &lt;a href=&quot;https://t.co/61ZfRZxg8G&quot;&gt;pic.twitter.com/61ZfRZxg8G&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1010477663943909377?ref_src=twsrc%5Etfw&quot;&gt;June 23, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
    I also attended a few conferences that I did not speak at: &lt;a href=&quot;https://www.iterateconf.io/&quot;&gt;Iterate&lt;/a&gt;, &lt;a href=&quot;http://www.jcrete.org/&quot;&gt;JCrete&lt;/a&gt;, and &lt;a href=&quot;https://monktoberfest.com/&quot;&gt;Monktoberfest&lt;/a&gt;. All of these were special in their own ways. JCrete was an unconference in an exotic location (Crete, Greece) and was a fantastic experience. I learned that 1) it&apos;s important to rent a car if you bring your family and 2) an unconference is what you make of it. Put a lot into it, and you&apos;ll get a lot out of it. As a speaker, I think it&apos;s a fantastic conference format because it&apos;s an excellent networking atmosphere. You can also learn a lot if there are peers with expertise in the topic you&apos;re interested in. Monktoberfest also provided next-level networking.
&lt;/p&gt;

&lt;h3 id=&quot;community&quot;&gt;Community&lt;/h3&gt;
&lt;p&gt;I was involved in many community activities in 2018: &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt;,
    &lt;a href=&quot;https://www.meetup.com/DenverJavaUsersGroup/&quot;&gt;Denver JUG&lt;/a&gt;, &lt;a href=&quot;https://www.meetup.com/DenverMicroservices/&quot;&gt;Denver Microservices Meetup&lt;/a&gt;, and I attended a few &lt;a href=&quot;https://www.meetup.com/DOSUG1/&quot;&gt;DOSUG&lt;/a&gt; meetups too.&lt;/p&gt;
&lt;p&gt;We had three Devoxx4Kids Denver workshops in 2018:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/247280135/&quot;&gt;Create 3D Models and Animations with Blender&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/249912127/&quot;&gt;Building Games With Unity&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/256271996/&quot;&gt;Gotta Catch &#8216;Em All! Raspberry Pi and Java Pokemon Training&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    Thanks to &lt;a href=&quot;https://twitter.com/elgatodekaitlyn&quot;&gt;Kaitlyn Hornbuckle&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/in/james-sablatura-9235b350/&quot;&gt;James Sablatura&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/tingsterchin&quot;&gt;Cassandra Chin&lt;/a&gt; for teaching these classes.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Finished training Denver Pok&#233;mon Trainers at &lt;a href=&quot;https://twitter.com/hashtag/Devoxx4Kids?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Devoxx4Kids&lt;/a&gt;.  Gotta catch them all!  &lt;a href=&quot;https://twitter.com/mraible?ref_src=twsrc%5Etfw&quot;&gt;@mraible&lt;/a&gt; &lt;a href=&quot;https://twitter.com/melissajmckay?ref_src=twsrc%5Etfw&quot;&gt;@melissajmckay&lt;/a&gt; &lt;a href=&quot;https://t.co/zQSbIdH7Zb&quot;&gt;pic.twitter.com/zQSbIdH7Zb&lt;/a&gt;&lt;/p&gt;&amp;mdash; Cassandra Chin (@tingsterchin) &lt;a href=&quot;https://twitter.com/tingsterchin/status/1071827255653949440?ref_src=twsrc%5Etfw&quot;&gt;December 9, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
    We announced the &lt;strong&gt;2018 Denver JUG Rock Stars&lt;/strong&gt; at our December meetup. Venkat, David, and Jeff were voted as the group&apos;s favorite speakers. Y&apos;all were excellent! Thanks for adding DJUG to your schedules.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;At this week&amp;#39;s &lt;a href=&quot;https://twitter.com/denverjug?ref_src=twsrc%5Etfw&quot;&gt;@denverjug&lt;/a&gt;, we announced the Denver JUG Rock Stars of 2018. If you want to be entertained, intrigued, &amp;amp; educated: &lt;a href=&quot;https://twitter.com/venkat_s?ref_src=twsrc%5Etfw&quot;&gt;@venkat_s&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/dblevins?ref_src=twsrc%5Etfw&quot;&gt;@dblevins&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/jeffscottbrown?ref_src=twsrc%5Etfw&quot;&gt;@jeffscottbrown&lt;/a&gt; are three of our favorite speakers. &lt;a href=&quot;https://twitter.com/hashtag/denverjug?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#denverjug&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/rockstars?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#rockstars&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/java?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#java&lt;/a&gt;&lt;br&gt;&lt;br&gt;Thanks to &lt;a href=&quot;https://twitter.com/oktadev?ref_src=twsrc%5Etfw&quot;&gt;@oktadev&lt;/a&gt; for sponsoring trophies! &lt;a href=&quot;https://t.co/uTNcDZVCFi&quot;&gt;pic.twitter.com/uTNcDZVCFi&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1073687604741181440?ref_src=twsrc%5Etfw&quot;&gt;December 14, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;My projects these days are mostly around JHipster. I supported its OAuth 2.0 and OIDC support as best I could, and &lt;a href=&quot;https://github.com/oktadeveloper/generator-jhipster-ionic/releases&quot;&gt;released five versions of its Ionic module&lt;/a&gt;. I wrote about &lt;a href=&quot;https://developer.okta.com/blog/2018/01/30/jhipster-ionic-with-oidc-authentication&quot;&gt;how to use Ionic with JHipster&lt;/a&gt; in late January. I recorded a screencast showing
    &lt;a href=&quot;https://youtu.be/-VQ_SVkaXbs&quot;&gt;how to get started with JHipster 5&lt;/a&gt; in June.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/-VQ_SVkaXbs&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;We released the JHipster Mini-Book &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-v4x-released&quot;&gt;version 4.5 in April&lt;/a&gt; and &lt;a href=&quot;https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v5&quot;&gt;version 5.0 in November&lt;/a&gt;. I published a Pluralsight course on &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/pluralsight-developing-microservices-and-mobile-apps-with-jhipster-play-by-play&quot;&gt;developing microservices and mobile apps with JHipster&lt;/a&gt; in April and released &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/21-points-v5-has-been-released&quot;&gt;21-Points Health 5.0&lt;/a&gt; in October.&lt;/p&gt;

&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;

&lt;p&gt;
    This year was a mix of work your ass off and try to have fun at the same time. There were many times when we wished we were home, but the times on the road were grand. I suspect this will be a constant battle for Trish and I. We love to be home, but we love to explore new places. If old friends gather with us at home or in new places, it&apos;s bound to be a fantastic evening!
&lt;/p&gt;
&lt;p&gt;
    The biggest change was Abbie became a &lt;em&gt;driver&lt;/em&gt;. For those parents with kids that have to chaperone endlessly throughout the weeks and weekends, you know this is a BFD! As of December 27, 2018, Abbie&apos;s now the captain of the ranch-to-school ship. She even drove in the blowing snow yesterday!
&lt;/p&gt;
&lt;p&gt;There were many highlights in 2019. My early favorite (that makes me tear up as I write this) is &lt;a href=&quot;//raibledesigns.com/rd/entry/hefe_3_5_has_been&quot;&gt;Hefe 3.5&lt;/a&gt;.
&lt;/p&gt;
    &lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
        &lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;My daughter observed the other day that most people are frowning when they&#8217;re driving. I&#8217;m not one of this people. In fact, I have to wear sunglasses to hide my tears of joy! &amp;#x1F923; &lt;a href=&quot;https://twitter.com/hashtag/HefeTheBus?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#HefeTheBus&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/21windows?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#21windows&lt;/a&gt; &lt;a href=&quot;https://t.co/0LWaQkjZlx&quot;&gt;pic.twitter.com/0LWaQkjZlx&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/973996844052180992?ref_src=twsrc%5Etfw&quot;&gt;March 14, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;We had a blast with Trish&apos;s parents &lt;a href=&quot;https://raibledesigns.com/rd/entry/spring_break_2018_sun_fun&quot;&gt;during Spring Break in Florida&lt;/a&gt; and squeezed in a day trip to Disney World.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/810/26408506757_ba6e81542e_c.jpg&quot; title=&quot;Disney Fireworks!&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26408506757/in/album-72157667508590818/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/810/26408506757_ba6e81542e.jpg&quot; width=&quot;500&quot; alt=&quot;Disney Fireworks!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://raibledesigns.com/rd/entry/farewell_to_the_2017_18&quot;&gt;2017-18&lt;/a&gt; ski season didn&apos;t bring a lot of snow, but our ski trip to Utah was wonderful!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/970/41365298975_1c2a604378_c.jpg&quot; title=&quot;Alta!&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/41365298975/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/970/41365298975_1c2a604378.jpg&quot; width=&quot;500&quot; alt=&quot;Alta!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Trish and I celebrated our 5th anniversary at JCrete. I hope the next five years are as adventurous as the last five!&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Happy Friday! We&#8217;re having a blast celebrating our 5th anniversary in Greece. &amp;#x1F603 &lt;a href=&quot;https://twitter.com/hashtag/JCrete?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#JCrete&lt;/a&gt; &lt;a href=&quot;https://t.co/yMzphpNhnj&quot;&gt;pic.twitter.com/yMzphpNhnj&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1022829794151395328?ref_src=twsrc%5Etfw&quot;&gt;July 27, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;Jack &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_jack7&quot;&gt;turned 14&lt;/a&gt;, and Abbie &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie12&quot;&gt;turned 16&lt;/a&gt;. I&apos;m proud to say they&apos;re both fabulous humans. &amp;#x1F60A&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-href=&quot;https://www.flickr.com/photos/mraible/43441216425/&quot; href=&quot;https://farm2.staticflickr.com/1894/43441216425_7e456c4b73_c.jpg&quot; title=&quot;Jack at Versailles&quot; rel=&quot;lightbox[2018yearinreview]&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1894/43441216425_7e456c4b73_m.jpg&quot; width=&quot;240&quot; alt=&quot;Jack at Versailles&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a data-href=&quot;https://www.flickr.com/photos/mraible/45018903354&quot; href=&quot;https://farm5.staticflickr.com/4912/45018903354_2d4ff98729_c.jpg&quot; title=&quot;Abbie in Crete&quot; rel=&quot;lightbox[2018yearinreview]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4912/45018903354_2d4ff98729_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie in Crete&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;If you want a glimpse of my backwoods childhood (without electricity) in Montana, see my &lt;a href=&quot;https://raibledesigns.com/rd/entry/life_update_thanksgiving_in_montana&quot;&gt;Life Update: Thanksgiving in Montana, RWX2018, Devoxx4Kids, DJUG, and Trish&apos;s Birthday&lt;/a&gt; post.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;https://farm5.staticflickr.com/4914/31450743277_6741c5de04_c.jpg&quot; title=&quot;The Cabin&apos;s dining room&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450743277/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4914/31450743277_6741c5de04_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Cabin&apos;s dining room&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4820/45666897694_449e38462f_c.jpg&quot; title=&quot;The stove! My dad used to love sitting on the oven door every morning.&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/45666897694/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4820/45666897694_449e38462f_m.jpg&quot; width=&quot;240&quot; alt=&quot;The stove! My dad used to love sitting on the oven door every morning.&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4837/32518041268_d3d696a280_c.jpg&quot; title=&quot;It&apos;s a guest room now, but I think my sister (Kalin) was born in this corner.&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32518041268/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4837/32518041268_d3d696a280_m.jpg&quot; width=&quot;240&quot; alt=&quot;It&apos;s a guest room now, but I think my sister (Kalin) was born in this corner.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4821/45666893624_e6d3d5a8a7_c.jpg&quot; title=&quot;I was born in this corner.&quot; rel=&quot;lightbox[2018yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/45666893624/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4821/45666893624_e6d3d5a8a7_m.jpg&quot; width=&quot;240&quot; alt=&quot;I was born in this corner.&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;h2 id=&quot;2019&quot;&gt;2019&lt;/h2&gt;
&lt;p&gt;
    Professionally, I&apos;m planning to travel a bit more to exotic locations. Atlanta, San Francisco, Paris, Bangalore, Barcelona, and Kansas City are on my list (before August). The &lt;a href=&quot;https://twitter.com/oktadev&quot;&gt;Developer Relations team&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/okta&quot;&gt;Okta&lt;/a&gt; is a fantastic place to be. As many of y&apos;all know, the best thing about a job is often your boss. Mine is &lt;a href=&quot;https://twitter.com/rdegges&quot;&gt;Randall Degges&lt;/a&gt;. He&apos;s a legitimate badass hacker. Don&apos;t try to win a popularity contest with him. There&apos;s a good chance I&apos;ll be at Okta as long as he&apos;s my boss.
&lt;/p&gt;
&lt;p&gt;On the developer relations team, we set our own schedules, plan our own interests, schedule our own conference appearances, and sponsor our favorite local events. Being a developer advocate is a gratifying job. You can write about your favorite open source frameworks, attend/sponsor local meetups, and learn new things every day! If you happen to be #devrel folk (or a like-minded awesomeperson), you might like my &lt;a href=&quot;https://developer.okta.com/blog/2019/01/28/developer-relations-pro-tips&quot;&gt;Pro Tips for Developer Relations&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Personally, I&apos;d like to ski, raft, bike, and have a good time in 2019 a lot more! Y&apos;all know I won&apos;t have any problem with the last one, but its predecessors are the ones that really make me smile. Skiing down a chute, rafting through a class IV, and biking in Moab are some of the most exhilarating activities I&apos;ve ever experienced. I&apos;m getting a bit older (44) these days, but I still love playing in the outdoors. Luckily, I married a magical woman that loves the outdoors as much as I do. Even better, &lt;a href=&quot;https://www.mcginityphoto.com/&quot;&gt;she photographs its excellence&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Abbie is the school-commute driver, but Jack will be 15 in August, and he&apos;s determined to get his learners permit as soon as he can. That means he&apos;ll need a family member in the car that&apos;s 21+. If he wants to drive, the 20-minute-each-way commute is back on in the fall. For those of you with children of similar ages, you know that this is a precious time in our lives. I don&apos;t have a &lt;em&gt;work&lt;/em&gt; commute. Driving my kids to school takes an hour round-trip. If it were a commute to work, I&apos;d hate it. However, it&apos;s precious time with my kids, and it&apos;s really quite fabulous. Even if they&apos;re staring at their phones, you have their full attention. Ask questions and enjoy their responses.&lt;/p&gt;
&lt;p&gt;
Last year, I &lt;a href=&quot;https://raibledesigns.com/rd/entry/2017_a_year_in_review#personal&quot;&gt;said&lt;/a&gt; one of my goals was to simply be content. This year, I&apos;m taking it up a notch. If you don&apos;t have goals, how can you measure how you improved your life? I&apos;m a big believer in self-improvement, so here goes (in order of priority):
&lt;/p&gt;
&lt;h3 id=&quot;personal-goals&quot;&gt;Personal&lt;/h3&gt;
&lt;ul&gt;
    &lt;li&gt;Good Blood Pressure&lt;/li&gt;
    &lt;li&gt;More 2 and 3 point days&lt;/li&gt;
    &lt;li&gt;Ride/ski/hoops 4x week&lt;/li&gt;
    &lt;li&gt;Walk daily (preferably at home with Sagan and Daisy)&lt;/li&gt;
    &lt;li&gt;More salads, less red meat&lt;/li&gt;
    &lt;li&gt;Love is a verb, embrace 1:1 time with everyone (Trish, kids, parents, friends)&lt;/li&gt;
    &lt;li&gt;20 days camping&lt;/li&gt;
    &lt;li&gt;25 days skiing&lt;/li&gt;
    &lt;li&gt;15 days rafting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&apos;m a big fan of the last three. Those activities typically involve a break from technology, the great outdoors, and exquisite views. &lt;a href=&quot;https://www.instagram.com/vwsforlife/&quot;&gt;Follow me on Instagram&lt;/a&gt; if you want a highlight reel.&lt;/p&gt;
&lt;p&gt;I have some work-related goals too, because metrics seem to motivate me.&lt;/p&gt;
&lt;h3 id=&quot;work&quot;&gt;Work&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Author/publish two blog posts per month&lt;/li&gt;
    &lt;li&gt;Review/mentor four blog posts per month&lt;/li&gt;
    &lt;li&gt;Record/publish two videos per month&lt;/li&gt;
    &lt;li&gt;One performance/speaking gig per month&lt;/li&gt;
    &lt;li&gt;Three &quot;no travel&quot; months&lt;/li&gt;
    &lt;li&gt;Stand more while working&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I believe 2019 will be fabulous, and I hope to reflect my favorite moments on this blog. If you&apos;re a long-time follower, you&apos;ll notice I&apos;m mostly active &lt;a href=&quot;https://twitter.com/mraible&quot;&gt;@mraible&lt;/a&gt;. Y&apos;all use Twitter, right? That&apos;s my modern day notification channel. When I&apos;m super giddy, I&apos;ll post pictures of my favorite moments &lt;a href=&quot;https://www.instagram.com/vwsforlife&quot;&gt;on Instagram&lt;/a&gt;. When I want to save them forever, I publish them to &lt;a href=&quot;https://www.flickr.com/photos/mraible&quot;&gt;Flickr&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;I hope to see you at a conference or meetup in 2019!&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
    &lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned data-instgrm-permalink=&quot;https://www.instagram.com/p/BdoMtTilm2M/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; data-instgrm-version=&quot;12&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:16px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/BdoMtTilm2M/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; style=&quot; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&quot; target=&quot;_blank&quot;&gt; &lt;div style=&quot; display: flex; flex-direction: row; align-items: center;&quot;&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 19% 0;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;display:block; height:50px; margin:0 auto 12px; width:50px;&quot;&gt;&lt;svg width=&quot;50px&quot; height=&quot;50px&quot; viewBox=&quot;0 0 60 60&quot; version=&quot;1.1&quot; xmlns=&quot;https://www.w3.org/2000/svg&quot; xmlns&lt;img src=&quot;https://raibledesigns.com/images/smileys/love.gif&quot; class=&quot;smiley&quot; alt=&quot;:x&quot; title=&quot;:x&quot; /&gt;link=&quot;https://www.w3.org/1999/xlink&quot;&gt;&lt;g stroke=&quot;none&quot; stroke-width=&quot;1&quot; fill=&quot;none&quot; fill-rule=&quot;evenodd&quot;&gt;&lt;g transform=&quot;translate(-511.000000, -20.000000)&quot; fill=&quot;#000000&quot;&gt;&lt;g&gt;&lt;path d=&quot;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&quot;padding-top: 8px;&quot;&gt; &lt;div style=&quot; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&quot;&gt; View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;padding: 12.5% 0;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&quot;&gt;&lt;div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 8px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: auto;&quot;&gt; &lt;div style=&quot; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&quot;&gt;&lt;/div&gt; &lt;div style=&quot; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt; &lt;p style=&quot; margin:8px 0 0 0; padding:0 4px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/BdoMtTilm2M/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; style=&quot; color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;&quot; target=&quot;_blank&quot;&gt;Fun family photo in Crested Butte. #lastbestskitown&lt;/a&gt;&lt;/p&gt; &lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;A post shared by &lt;a href=&quot;https://www.instagram.com/vwsforlife/?utm_source=ig_embed&amp;amp;utm_medium=loading&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px;&quot; target=&quot;_blank&quot;&gt; Matt Raible&lt;/a&gt; (@vwsforlife) on &lt;time style=&quot; font-family:Arial,sans-serif; font-size:14px; line-height:17px;&quot; datetime=&quot;2018-01-07T00:27:20+00:00&quot;&gt;Jan 6, 2018 at 4:27pm PST&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/happy_birthday_jack7</id>
        <title type="html">Happy Birthday, Jack!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/happy_birthday_jack7"/>
        <published>2018-08-28T21:35:00-06:00</published>
        <updated>2018-08-29T17:03:33-06:00</updated> 
        <category term="/General" label="General" />
        <category term="birthday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="happybirthday" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
&lt;a data-href=&quot;https://www.flickr.com/photos/mraible/43441216425/&quot; href=&quot;https://farm2.staticflickr.com/1894/43441216425_7e456c4b73_c.jpg&quot; title=&quot;Jack at Versailles&quot; rel=&quot;lightbox[happy14thjack]&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1894/43441216425_7e456c4b73_q.jpg&quot; width=&quot;150&quot; alt=&quot;Jack at Versailles&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

Jack turned 14 today. Last weekend we celebrated with his friends at our local Topgolf. I&apos;d never been before, so I was eager to go, and we all had a great time.&lt;/p&gt;
&lt;p&gt;However, the real highlight happened when we were cruising home in our &apos;66 VW Bus amongst a gaggle of Lamborghinis. We had all his friends in the bus when four Lambos and a Bently pulled up alongside us. We cruised with them for a couple miles, grinning from ear to ear. 
&lt;/p&gt;
&lt;p&gt;Jack&apos;s favorite thing to do these days is to play video games with his buddies, specifically Fortnite (a.k.a. &quot;fork knife&quot;). He&apos;s got some basketball skills too but doesn&apos;t play on a team. He excels at skiing because we make him go all the time and he&apos;s only a centimeter or two shorter than me. He&apos;s sure to be taller than me soon!&lt;/p&gt;
&lt;p&gt;Jack is in 8th grade this year. This was the first year he traveled across the pond to visit Europe. He&apos;s getting in some miles: Paris in June, Crete in July, and we&apos;re heading to Ireland next week. 
&lt;/p&gt;
&lt;p&gt;Happy 14th Birthday, Jack!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/spring_break_2018_sun_fun</id>
        <title type="html">Spring Break 2018: Sun, Fun, and Disney World!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/spring_break_2018_sun_fun"/>
        <published>2018-04-06T15:04:31-06:00</published>
        <updated>2018-04-06T21:20:45-06:00</updated> 
        <category term="/General" label="General" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springbreak" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster-mini-book" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="disneyworld" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;I love Spring break. Who doesn&apos;t?! When I was a student, it was a nice break between quarters and led to many adventures with friends in college. As an adult, I love taking a Spring break holiday and spending it with my family. In a recent blog post on the &lt;a href=&quot;https://twitter.com&quot;&gt;@oktadev&lt;/a&gt; blog, I wrote:
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;I work hard, and I play hard. My family loves to do ski weekends, road trips, and whitewater raft trips. I&#8217;m lucky to work at a company like Okta that has an unlimited vacation policy. I&#8217;ve heard that most unlimited vacation policies don&#8217;t work for people because they tend to work more, and take fewer vacations.&lt;/p&gt;
    &lt;p&gt;
        I take full advantage of our unlimited vacation policy and make sure to take a week of vacation during every other six-week plan.
    &lt;/p&gt;
    &lt;p style=&quot;text-align: right; font-style: italic; margin-bottom: 0&quot;&gt;
        &amp;mdash; &lt;a href=&quot;https://developer.okta.com/blog/2018/03/19/how-to-be-productive-at-work&quot;&gt;How to Achieve Massive Productivity at Work&lt;/a&gt;
    &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Last week, my family and I spent Spring break 2018 with Trish&apos;s parents in Naples, Florida. We saw some incredible cars, enjoyed a day at Magic Kingdom in Disney World, played some golf, took in a couple of sunsets, and relaxed a bunch. I think some pictures describe it best.&lt;/p&gt;

&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
    &lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned=&quot;&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/Bg1ZhR3lbtY/&quot; data-instgrm-version=&quot;8&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:8px;&quot;&gt; &lt;div style=&quot; background:#F8F8F8; line-height:0; margin-top:40px; padding:50% 0; text-align:center; width:100%;&quot;&gt; &lt;div style=&quot; background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;&quot;&gt;&lt;/div&gt;&lt;/div&gt; &lt;p style=&quot; margin:8px 0 0 0; padding:0 4px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/Bg1ZhR3lbtY/&quot; style=&quot; color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;&quot; target=&quot;_blank&quot;&gt;Wow! Most impressive car collection I&#8217;ve ever seen. Many of them have won races and are virtually priceless! #springbreak #vacation #revsinstitute&lt;/a&gt;&lt;/p&gt; &lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;A post shared by &lt;a href=&quot;https://www.instagram.com/vwsforlife/&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px;&quot; target=&quot;_blank&quot;&gt; Matt Raible&lt;/a&gt; (@vwsforlife) on &lt;time style=&quot; font-family:Arial,sans-serif; font-size:14px; line-height:17px;&quot; datetime=&quot;2018-03-27T17:03:36+00:00&quot;&gt;Mar 27, 2018 at 10:03am PDT&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async=&quot;&quot; defer=&quot;&quot; src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/891/40381326675_3059ab257f_c.jpg&quot; title=&quot;An hour into the two hour wait for #splashmountain.&quot; rel=&quot;lightbox[springbreak2018]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40381326675/in/album-72157667508590818/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/891/40381326675_3059ab257f_m.jpg&quot; width=&quot;240&quot; alt=&quot;An hour into the two hour wait for #splashmountain.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/818/40381338155_d1afdcd9cf_c.jpg&quot; title=&quot;Watch out - Jack is driving!&quot; rel=&quot;lightbox[springbreak2018]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40381338155/in/album-72157667508590818/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/818/40381338155_d1afdcd9cf_m.jpg&quot; width=&quot;240&quot; alt=&quot;Watch out - Jack is driving!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/810/26408506757_ba6e81542e_c.jpg&quot; title=&quot;Disney Fireworks!&quot; rel=&quot;lightbox[springbreak2018]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26408506757/in/album-72157667508590818/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/810/26408506757_ba6e81542e.jpg&quot; width=&quot;500&quot; alt=&quot;Disney Fireworks!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/815/27405293318_7541861bcd_c.jpg&quot; title=&quot;Naples Sunset&quot; rel=&quot;lightbox[springbreak2018]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27405293318/in/album-72157667508590818/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/815/27405293318_7541861bcd.jpg&quot; width=&quot;500&quot; alt=&quot;Naples Sunset&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/799/39468310990_c0a6bd505d_c.jpg&quot; title=&quot;Awww, they really do ?? each other!&quot; rel=&quot;lightbox[springbreak2018]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/39468310990/in/album-72157667508590818/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/799/39468310990_c0a6bd505d.jpg&quot; width=&quot;500&quot; alt=&quot;Awww, they really do ?? each other!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/816/41234414162_1546d972de_c.jpg&quot; title=&quot;Happy Easter!&quot; rel=&quot;lightbox[springbreak2018]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/41234414162/in/album-72157667508590818/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/816/41234414162_1546d972de.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Easter!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; text-align: right; margin-top: -10px; max-width: 500px; font-size: .9em&quot;&gt;
    More on Flickr &amp;rarr; &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157667508590818&quot;&gt;Spring Break 2018&lt;/a&gt;
&lt;/div&gt;

&lt;h3&gt;Q1 Technical Blog Posts&lt;/h3&gt;
&lt;p&gt;In case you&apos;re here looking for technical blog posts, I&apos;m still writing about Java, Spring Boot, Angular, React, and JHipster quite a bit. However, I&apos;m doing it mostly on the &lt;a href=&quot;https://developer.okta.com/blog&quot;&gt;Okta Developer Blog&lt;/a&gt;. Here&apos;s a list of my blog posts from Q1 2018:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/01/18/cryptocurrency-pwa-secured-by-okta&quot;&gt;Protect Your Cryptocurrency Wealth Tracking PWA with Okta&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/01/23/replace-local-storage-with-okta-profile-attributes&quot;&gt;Use Okta (Instead of Local Storage) to Store Your User&#8217;s Data Securely&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/01/30/jhipster-ionic-with-oidc-authentication&quot;&gt;Use Ionic for JHipster to Create Mobile Apps with OIDC Authentication&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/02/13/secure-spring-microservices-with-oauth&quot;&gt;Secure a Spring Microservices Architecture with Spring Security and OAuth 2.0&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/03/01/develop-microservices-jhipster-oauth&quot;&gt;Develop a Microservices Architecture with OAuth 2.0 and JHipster&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/03/06/okta-open-source-samples-and-quickstarts&quot;&gt;Open Source Framework Samples and Quickstarts for Okta&apos;s Developer APIs&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/03/16/build-react-native-authentication-oauth-2.0&quot;&gt;Build a React Native Application and Authenticate with OAuth 2.0&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2018/03/19/how-to-be-productive-at-work&quot;&gt;How to Achieve Massive Productivity at Work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;JHipster Mini-Book v4.5 Released!&lt;/h3&gt;
&lt;p&gt;
    In related writing news, &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-v4x-released&quot;&gt;version 4.5 of the JHipster Mini-Book is now available&lt;/a&gt;! Please let me know if you find any issues, or would like clarification on any topics.
&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
    &lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Version 4.5 of the &lt;a href=&quot;https://twitter.com/java_hipster?ref_src=twsrc%5Etfw&quot;&gt;@java_hipster&lt;/a&gt; mini-book is now available! ??&lt;br&gt;&lt;br&gt;This version has a brand new chapter on building microservices and deploying them to &lt;a href=&quot;https://twitter.com/heroku?ref_src=twsrc%5Etfw&quot;&gt;@heroku&lt;/a&gt;. Learn more on the book&#8217;s blog: &lt;a href=&quot;https://t.co/nTv6nqvzBH&quot;&gt;https://t.co/nTv6nqvzBH&lt;/a&gt;&lt;br&gt;&lt;br&gt;You can ?? it for free from &lt;a href=&quot;https://twitter.com/InfoQ?ref_src=twsrc%5Etfw&quot;&gt;@InfoQ&lt;/a&gt; ? &lt;a href=&quot;https://t.co/YVnIhUFRV5&quot;&gt;https://t.co/YVnIhUFRV5&lt;/a&gt; &lt;a href=&quot;https://t.co/fbLygNDeWp&quot;&gt;pic.twitter.com/fbLygNDeWp&lt;/a&gt;&lt;/p&gt;&#8212; JHipster Book (@jhipster_book) &lt;a href=&quot;https://twitter.com/jhipster_book/status/982345289112535040?ref_src=twsrc%5Etfw&quot;&gt;April 6, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/hefe_3_5_has_been</id>
        <title type="html">Hefe 3.5 Has Been Released! &amp;#x1F389;</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/hefe_3_5_has_been"/>
        <published>2018-03-21T14:21:41-06:00</published>
        <updated>2019-01-27T18:08:15-07:00</updated> 
        <category term="/The Bus" label="The Bus" />
        <category term="hefe" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vwbus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="dreamcometrue" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stpaddysday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="21windows" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;&quot;Open up the champagne, pop! &amp;#x1F37E;&quot; -- Flo Rida, &lt;a href=&quot;https://www.youtube.com/watch?v=uo35R9zQsAI&quot;&gt;My House&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
I&#8217;m thrilled to announce that Hefe, my 1966 21-Window VW Bus, is finally finished!
&lt;/p&gt;
&lt;p&gt;
It only took 4,342 days, starting on &lt;a href=&quot;//raibledesigns.com/rd/entry/off_to_the_shop&quot;&gt;April 17, 2006&lt;/a&gt; and ending just a couple weeks ago (March 7, 2018).
&lt;/p&gt;
&lt;p&gt;
When I &lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#stout-and-hefe&quot;&gt;last wrote about Hefe&lt;/a&gt;, I mentioned he was in the shop getting a better stereo.
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;For Hefe&apos;s stereo, I tried going phone-only for a controller. This turned out to be a bad idea, mostly due to bit Play HD and its terrible mobile app. Also, Hefe is lowered and a bit bumpy in the front, so trying to use a touch screen while driving doesn&apos;t work very well. He&apos;s in the shop now getting a new deck installed.&lt;/blockquote&gt;
&lt;p&gt;
My dad and I visited &lt;a href=&quot;https://www.elevatedaudioinc.com/&quot;&gt;Elevated Audio&lt;/a&gt; to pick him up two weeks ago today. I&#8217;ve known the owner, Andrew, ever since I hired him to install a sweet system in Stout the Syncro in 2013. Back then, his business was named Andrew&#8217;s Installs. Fast forward five years and his business is thriving. For a good reason too, his team and their attention to detail is magnificent.
&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned data-instgrm-permalink=&quot;https://www.instagram.com/p/BgEJVJCFY6m/&quot; data-instgrm-version=&quot;8&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:8px;&quot;&gt; &lt;div style=&quot; background:#F8F8F8; line-height:0; margin-top:40px; padding:50.0% 0; text-align:center; width:100%;&quot;&gt; &lt;div style=&quot; background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;&quot;&gt;&lt;/div&gt;&lt;/div&gt; &lt;p style=&quot; margin:8px 0 0 0; padding:0 4px;&quot;&gt; &lt;a href=&quot;https://www.instagram.com/p/BgEJVJCFY6m/&quot; style=&quot; color:#000; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none; word-wrap:break-word;&quot; target=&quot;_blank&quot;&gt;The ol&#8217; bus in for a new stereo, adding another amplifier and retune! So pretty! Enjoy your commute, Colorado&lt;/a&gt;&lt;/p&gt; &lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;A post shared by &lt;a href=&quot;https://www.instagram.com/elevatedaudio/&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px;&quot; target=&quot;_blank&quot;&gt; Elevated Audio&lt;/a&gt; (@elevatedaudio) on &lt;time style=&quot; font-family:Arial,sans-serif; font-size:14px; line-height:17px;&quot; datetime=&quot;2018-03-08T13:59:21+00:00&quot;&gt;Mar 8, 2018 at 5:59am PST&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async defer src=&quot;//www.instagram.com/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;
It sounds fucking incredible. 
&lt;/p&gt;
&lt;p&gt;
Having Hefe finished sometimes makes me misty eyed when I drive him.
&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;My daughter observed the other day that most people are frowning when they&#8217;re driving. I&#8217;m not one of this people. In fact, I have to wear sunglasses to hide my tears of joy! &amp;#x1F923; &lt;a href=&quot;https://twitter.com/hashtag/HefeTheBus?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#HefeTheBus&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/21windows?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#21windows&lt;/a&gt; &lt;a href=&quot;https://t.co/0LWaQkjZlx&quot;&gt;pic.twitter.com/0LWaQkjZlx&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/973996844052180992?ref_src=twsrc%5Etfw&quot;&gt;March 14, 2018&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;
I was especially pumped to get Hefe back because we&#8217;d signed him up to be in &lt;a href=&quot;http://www.denverstpatricksdayparade.com/&quot;&gt;Denver&#8217;s St. Patrick&#8217;s Day Parade&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
That&#8217;s where the untold story begins. 
&lt;/p&gt;
&lt;p&gt;
Last Friday evening, I washed and polished him to get ready. While cleaning him, I accidentally sprayed a bunch of water on the engine. It&#8217;s a no-no to drench a car&#8217;s engine when it&#8217;s not running. I&#8217;d done this to our Syncro six months after we got it and it might&#8217;ve contributed to our engine&#8217;s untimely death.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
   &lt;a href=&quot;https://farm1.staticflickr.com/803/40050054075_f767c36cc5_c.jpg&quot; title=&quot;Hefe&apos;s all dressed up and ready for Denver&#226;s St. Paddy&apos;s Parade tomorrow.&quot; rel=&quot;lightbox[hefe-3.5]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40050054075/in/album-72157689027458320/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/803/40050054075_f767c36cc5_n.jpg&quot; width=&quot;320&quot; alt=&quot;Hefe&apos;s all dressed up and ready for Denver&#226;s St. Paddy&apos;s Parade tomorrow.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
   &lt;a href=&quot;https://farm1.staticflickr.com/810/27073142198_f208104cb0_c.jpg&quot; title=&quot;Hope to see you there! &amp;#x1F60D;&amp;#x1F44C;&amp;#x1F389;&quot; rel=&quot;lightbox[hefe-3.5]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27073142198/in/album-72157689027458320/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/810/27073142198_f208104cb0_n.jpg&quot; width=&quot;320&quot; alt=&quot;Hope to see you there! &amp;#x1F60D;&amp;#x1F44C;&amp;#x1F389;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
After I finished, I tried to start Hefe. The engine turned over just fine, but it&#8217;d barely fire and never catch. I pumped the gas pedal a bunch and eventually gave up thinking I&apos;d flooded the engine. I told myself to revisit the problem in an hour; maybe things would dry out by then.
&lt;/p&gt;
&lt;p&gt;
I didn&#8217;t tell Trish about the problem until I&#8217;d tried (and failed) to start him an hour later. I took off the distributor cap and dried things out. I wiggled and re-routed some wires. Moving wires around made the spark plugs fire but in the wrong order. I reverted my changes and told Trish the bad news. 
&lt;/p&gt;
&lt;p&gt;
We couldn&#8217;t be in the parade without a running bus.
&lt;/p&gt;
&lt;p&gt;
I cursed, loudly. 
&lt;/p&gt;
&lt;p&gt;
Trish&#8217;s high-school friend was flying in from NYC with her family that night. Trish left for the airport to pick them up, suggesting &#8220;we could go skiing instead&#8221; as she left.
&lt;/p&gt;
&lt;p&gt;
Shortly after, I recognized my lousy attitude and vowed to turn things around. 
&lt;/p&gt;
&lt;p&gt;
&#8220;Now it&#8217;s flooded,&#8221; I thought. I knew the wires were correct. 
&lt;/p&gt;
&lt;p&gt;
I threw on my University of Denver hockey jersey and went to my living room to finish watching them in a playoff game. They beat the Minnesota Duluth Bulldogs 3-2, and I celebrated with a cold Guinness.
&lt;/p&gt;
&lt;p&gt;
Then I strolled outside, sat in Hefe, told him he could do it and started him right up. &amp;#x1F4A5;
&lt;/p&gt;
&lt;p&gt;
Wahoo! He recovered!! 
&lt;/p&gt;
&lt;p&gt;
The parade was epic.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://farm5.staticflickr.com/4781/40902529282_efe5636e24_c.jpg&quot; title=&quot;Lined up and ready for Denver&#8217;s #stpaddysday parade! &amp;#x1F340;&quot; rel=&quot;lightbox[hefe-3.5]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40902529282/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4781/40902529282_efe5636e24.jpg&quot; width=&quot;500&quot; alt=&quot;Lined up and ready for Denver&#8217;s #stpaddysday parade! &amp;#x1F340;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We all felt glorious; cranking the stereo, blowing bubbles out the top, dancing up a storm, and basking in the happiness that is downtown Denver on St. Paddy&#8217;s Day. &amp;#x1F340;&amp;#x1F917;
&lt;/p&gt;

&lt;div style=&quot;position:relative;height:0;padding-bottom:56.25%&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/8a_lrJNRle4&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; style=&quot;position:absolute;width:100%;height:100%;left:0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://farm1.staticflickr.com/810/40902533952_e0f8e2e093_c.jpg&quot; title=&quot;Party&apos;s all around&quot; rel=&quot;lightbox[hefe-3.5]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40902533952/in/album-72157689027458320/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/810/40902533952_e0f8e2e093_n.jpg&quot; width=&quot;320&quot; alt=&quot;Party&apos;s all around&quot; style=&quot;border: 1px solid black; margin-right: 15px&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4782/40902535612_9fcc94e853_c.jpg&quot; title=&quot;Bubbles&quot; rel=&quot;lightbox[hefe-3.5]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40902535612/in/album-72157689027458320/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4782/40902535612_9fcc94e853_n.jpg&quot; width=&quot;320&quot; alt=&quot;Bubbles&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div style=&quot;position:relative;height:0;padding-bottom:56.25%&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/r5fZCeJiz10?ecver=2&quot; width=&quot;640&quot; height=&quot;360&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; style=&quot;position:absolute;width:100%;height:100%;left:0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Yes, there will likely be more to do to Hefe in the coming years. That&#8217;s OK. He inspires smiles every time I drive him and providing joy to people is a beautiful experience. 
&lt;/p&gt;
&lt;p&gt;
Kudos to all seven Colorado shops that made Hefe possible. I won&#8217;t say he&#8217;s worth every penny, but he&#8217;s pretty darn close! &amp;#x1F60D;
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2017_a_year_in_review</id>
        <title type="html">2017 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2017_a_year_in_review"/>
        <published>2018-01-31T16:16:39-07:00</published>
        <updated>2019-01-26T22:42:28-07:00</updated> 
        <category term="/Roller" label="Roller" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="porschebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="syncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2017" scheme="http://roller.apache.org/ns/tags/" />
        <category term="pets" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stoutthesyncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;2017 was a year with many changes. We changed presidents, Stormpath joined forces with Okta, our daughter started high school, and we lost two of our precious pets. On the upside, I traveled to many beautiful places, talked to developers around the world, and became a Devoxx Champion. Not only that, but our two classic VWs ran like champs the whole year. We put upwards of 10K adventure miles on our Syncro, and another couple thousand on Hefe the Bus.&lt;/p&gt;

&lt;p&gt;I&apos;m going to look back on 2017 using the following categories.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#devoxx4kids&quot;&gt;Devoxx4Kids&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#stout_and_hefe&quot;&gt;Stout and Hefe&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#2018&quot;&gt;2018&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;2017 was the first year I started with a full-time job in January since the turn of the century. I&apos;d been an independent consultant for most of my career. Stormpath enticed me enough with their people and vision that I &lt;a
        href=&quot;//raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;became a full-time employee with them in
    September 2016&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;January started slow, but I started to hit my stride in February when I &lt;a
        href=&quot;//raibledesigns.com/rd/entry/a_jolly_good_time_at&quot;&gt;traveled to Sweden for Jfokus and skiing&lt;/a&gt;.
    Coincidentally, it was shortly after the conference that I found myself negotiating with &lt;a
            href=&quot;https://www.linkedin.com/in/epberg&quot;&gt;Eric Berg&lt;/a&gt; about joining forces with &lt;a
            href=&quot;https://www.okta.com&quot;&gt;Okta&lt;/a&gt;. I remember it well: I was sitting in the hotel lobby, with James Ward and Ray Tsang, when it all happened. Shortly after, we were sitting in the back of the bus on our way to a skiing
    adventure.&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;2017 was a year with many changes. We changed presidents, Stormpath joined forces with Okta, our daughter started high school, and we lost two of our precious pets. On the upside, I traveled to many beautiful places, talked to developers around the world, and became a Devoxx Champion. Not only that, but our two classic VWs ran like champs the whole year. We put upwards of 10K adventure miles on our Syncro, and another couple thousand on Hefe the Bus.&lt;/p&gt;

&lt;p&gt;I&apos;m going to look back on 2017 using the following categories.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#devoxx4kids&quot;&gt;Devoxx4Kids&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#stout-and-hefe&quot;&gt;Stout and Hefe&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2017_a_year_in_review#2018&quot;&gt;2018&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;2017 was the first year I started with a full-time job in January since the turn of the century. I&apos;d been an independent consultant for most of my career. Stormpath enticed me enough with their people and vision that I &lt;a
    href=&quot;//raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;became a full-time employee with them in
  September 2016&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;January started slow, but I started to hit my stride in February when I &lt;a
    href=&quot;//raibledesigns.com/rd/entry/a_jolly_good_time_at&quot;&gt;traveled to Sweden for Jfokus and skiing&lt;/a&gt;.
  Coincidentally, it was shortly after the conference that I found myself negotiating with &lt;a
      href=&quot;https://www.linkedin.com/in/epberg&quot;&gt;Eric Berg&lt;/a&gt; about joining forces with &lt;a
      href=&quot;https://www.okta.com&quot;&gt;Okta&lt;/a&gt;. I remember it well: I was sitting in the hotel lobby, with James Ward and Ray Tsang, when it all happened. Shortly after, we were sitting in the back of the bus on our way to a skiing
  adventure.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://c1.staticflickr.com/3/2212/32098286464_d3d55d7192_c.jpg&quot; title=&quot;Sunrise at Storhogna&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32098286464/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/3/2212/32098286464_d3d55d7192_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sunrise at Storhogna&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://c1.staticflickr.com/4/3869/32788113292_c7d359d8f2_c.jpg&quot; title=&quot;It was a beautiful day for skiing at Kl&#246;vsj&#246;!&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32788113292/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/4/3869/32788113292_c7d359d8f2_m.jpg&quot; width=&quot;240&quot; alt=&quot;It was a beautiful day for skiing at Kl&#246;vsj&#246;!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;A week later, I was back in the states and the deal with Okta was happening. Throughout January, I thought the possibility was 20%. When I returned home from Jfokus, it was full-on happening. In fact, I was one of the last ones to sign the deal, causing panic and a few phone calls in the process. Most of the folks at Stormpath became Okta employees on February 27. &lt;/p&gt;
&lt;p&gt;The awkward part was we knew about the deal when we traveled to Devnexus. We had a Stormpath booth there, and we were
  unable to tell everyone there would be no more signups after Friday, February 24.&lt;/p&gt;
&lt;p&gt;The following week, we had a massive onboarding with everyone. There was excitement in the room and many high spirits, so it was a fun day. Shortly after, we entered into a 90-day quiet period for Okta&apos;s IPO. It was strange to
  start a new job with a new company and not be able to talk about it.&lt;/p&gt;
&lt;p&gt;Okta didn&apos;t have much for SDKs when we started writing blog posts in March. However, it supports standards like SAML and
  OAuth, so I was able to put together some posts using Spring Security.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/03/16/spring-boot-saml&quot;&gt;Get Started with Spring Boot, SAML, and
    Okta&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/03/21/spring-boot-oauth&quot;&gt;Get Started with Spring Boot, OAuth 2.0,
    and Okta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I wrote about my anticipation for &lt;a href=&quot;//raibledesigns.com/rd/entry/let_the_okta_and_devoxx&quot;&gt;Devoxx US and
  France&lt;/a&gt; in mid-March.
&lt;p&gt;
  Towards the end of March and early April, I had some luck integrating with Angular, both with Okta&apos;s &lt;a
    href=&quot;https://developer.okta.com/blog/2017/03/27/angular-okta-sign-in-widget&quot;&gt;Sign-In Widget&lt;/a&gt; and &lt;a
    href=&quot;https://developer.okta.com/blog/2017/04/17/angular-authentication-with-oidc&quot;&gt;OpenID Connect&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;In early April, I hosted an &lt;a
    href=&quot;https://speakerdeck.com/mraible/the-ultimate-getting-started-with-angular-workshop-devoxx-france-2017&quot;&gt;Angular
  Workshop&lt;/a&gt; and spoke about &lt;a href=&quot;//raibledesigns.com/rd/entry/angular_and_cloud_native_pwas&quot;&gt;Cloud Native
  Progressive Web Apps&lt;/a&gt; with &lt;a href=&quot;https://twitter.com/starbuxman&quot;&gt;Josh Long&lt;/a&gt; at Devoxx France.&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
  &lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;We&amp;#39;re about to kick off the part deux of our Cloud Native Apps series with &lt;a href=&quot;https://twitter.com/mraible&quot;&gt;@mraible&lt;/a&gt; &lt;a href=&quot;https://twitter.com/DevoxxFR&quot;&gt;@DevoxxFR&lt;/a&gt; &lt;a href=&quot;https://t.co/0GCSAiUgs4&quot;&gt;pic.twitter.com/0GCSAiUgs4&lt;/a&gt;&lt;/p&gt;&amp;mdash; Josh Long (???, ???) (@starbuxman) &lt;a href=&quot;https://twitter.com/starbuxman/status/850002466783584257&quot;&gt;April 6, 2017&lt;/a&gt;&lt;/blockquote&gt;
  &lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
On my flight home from that
trip &amp;mdash; on April 7 &amp;mdash; Okta had its IPO. Things started trucking along after the IPO. I wrote a plethora of blogs posts in April and published them over the spring and summer months.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/04/26/bootiful-development-with-spring-boot-and-angular&quot;&gt;Bootiful
    Development with Spring Boot and Angular&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/05/09/progressive-web-applications-with-angular-and-spring-boot&quot;&gt;Build
    Your First Progressive Web Application with Angular and Spring Boot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/05/17/develop-a-mobile-app-with-ionic-and-spring-boot&quot;&gt;Tutorial:
    Develop a Mobile App With Ionic and Spring Boot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/06/13/add-authentication-angular-pwa&quot;&gt;Add Authentication to Your
    Angular PWA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/06/15/build-microservices-architecture-spring-boot&quot;&gt;Build a
    Microservices Architecture for Microbrews with Spring Boot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/06/20/develop-microservices-with-jhipster&quot;&gt;Develop and Deploy
    Microservices with JHipster&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/06/21/what-the-heck-is-oauth&quot;&gt;What the Heck is OAuth?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/07/20/the-ultimate-guide-to-progressive-web-applications&quot;&gt;The
    Ultimate Guide to Progressive Web Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;This year, speaking became a part of my job, so I spoke frequently. According to &lt;a href=&quot;https://www.tripit.com&quot;&gt;TripIt&lt;/a&gt;, I took 29 trips, to 41 cities, and 14 countries. I traveled 115,456 miles and spent &lt;a
    href=&quot;http://cem.re/year-in-review/55145c02b97d22c568e9f7668cf0eb65f2652779.html&quot;&gt;most of my time on
  United&lt;/a&gt;. By my count, I spoke at 22 events.&lt;/p&gt;
&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;a href=&quot;http://www.jfokus.se/jfokus/&quot;&gt;Jfokus&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://devnexus.com/&quot;&gt;Devnexus&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/kc-spring/&quot;&gt;Kansas City Spring User Group&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://devoxx.us/&quot;&gt;Devoxx US&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://devoxx.fr/&quot;&gt;Devoxx France&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://jspring.nl/&quot;&gt;J-Spring&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.devoxx.co.uk/&quot;&gt;Devoxx UK&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://geecon.org/&quot;&gt;GeeCON&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://2018.springio.net/&quot;&gt;Spring I/O&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://devoxx.pl/&quot;&gt;Devoxx Poland&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://uberconf.com/conference/denver/2018/07/home&quot;&gt;UberConf&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/td&gt;
    &lt;td&gt;
      &lt;ol start=&quot;12&quot;&gt;
        &lt;li&gt;&lt;a href=&quot;https://virtualjug.com/&quot;&gt;Virtual JUG&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.okta.com/oktane17/&quot;&gt;Oktane17&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://connect.tech/&quot;&gt;Connect.Tech&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.denverstartupweek.org/&quot;&gt;Denver Startup Week&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.oracle.com/javaone/index.html&quot;&gt;JavaOne&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://2017.java2days.com/&quot;&gt;Java2Days&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://virtualjug.com/vjug24/&quot;&gt;vJUG24&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://devoxx.be/&quot;&gt;Devoxx Belgium&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://devoxx.ma/&quot;&gt;Devoxx Morocco&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://springoneplatform.io/&quot;&gt;SpringOne&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://therichwebexperience.com/conference/clearwater/2017/12/home&quot;&gt;The Rich Web Experience&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;I wrote about my experiences at &lt;a href=&quot;//raibledesigns.com/rd/entry/speaking_adventures_at_j_spring&quot;&gt;J-Spring,
  Devoxx UK, GeeCON, and Spring I/O&lt;/a&gt; in May, and &lt;a
    href=&quot;//raibledesigns.com/rd/entry/devoxx_poland_a_huge_conference&quot;&gt;Devoxx Poland&lt;/a&gt; in June. Spring I/O was especially fun because Trish met me in Barcelona.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://c1.staticflickr.com/5/4204/34056220883_3b09f9692f_c.jpg&quot; title=&quot;Amazing Architecture in Barcelona&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/34056220883/in/album-72157682270620100/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4204/34056220883_3b09f9692f_n.jpg&quot; width=&quot;240&quot; alt=&quot;Amazing Architecture in Barcelona&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4195/34826706046_ef7ecf690e_c.jpg&quot; title=&quot;Barcelona&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/34826706046/in/album-72157682270620100/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4195/34826706046_ef7ecf690e_n.jpg&quot; width=&quot;240&quot; alt=&quot;Barcelona&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;I was featured on the main Okta blog in late September in &lt;a href=&quot;https://www.okta.com/blog/2017/09/developer-dna-a-day-in-the-life-of-matt-raible/&quot;&gt;Developer DNA: A Day in the Life of Matt Raible&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4547/37491517464_14d37e8eda_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37491517464/&quot; title=&quot;Matt the Hipster&quot; rel=&quot;lightbox[2017yearinreview]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4547/37491517464_14d37e8eda.jpg&quot; width=&quot;500&quot; alt=&quot;Matt the Hipster&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;As the year was waning, I wrote about &lt;a href=&quot;//raibledesigns.com/rd/entry/life_as_an_open_source1&quot;&gt;life as an open
  source developer&lt;/a&gt; and &lt;a href=&quot;//raibledesigns.com/rd/entry/a_stressful_but_rewarding_trip&quot;&gt;my adventures to Devoxx
  Belgium and Devoxx Morocco&lt;/a&gt;.

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4543/26811844159_1b82a326bf_c.jpg&quot; title=&quot;Angular vs React Smackdown with Deepu&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26811844159/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4543/26811844159_1b82a326bf.jpg&quot; width=&quot;500&quot; alt=&quot;Angular vs React Smackdown with Deepu&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4562/37700212995_9b7bf52f74_c.jpg&quot; title=&quot;Devoxx Champion!&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700212995/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4562/37700212995_9b7bf52f74_n.jpg&quot; width=&quot;240&quot; alt=&quot;Devoxx Champion!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4528/26811841249_2cf6c7ab1b_c.jpg&quot; title=&quot;Devoxx Champions!&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26811841249/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4528/26811841249_2cf6c7ab1b_n.jpg&quot; width=&quot;240&quot; alt=&quot;Devoxx Champions!&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;In my blog post about &lt;a href=&quot;//raibledesigns.com/rd/entry/springone_the_rich_web_experience&quot;&gt;SpringOne
  and The Rich Web Experience&lt;/a&gt;, I included a picture of my 2017 conference lanyard collection.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4634/38516035974_9910bd1df0_c.jpg&quot; title=&quot;2017 Conferences&quot;
     rel=&quot;lightbox[2017yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/38516035974/in/datetaken-public/&quot;&gt;&lt;img
      src=&quot;https://farm5.staticflickr.com/4634/38516035974_9910bd1df0.jpg&quot; alt=&quot;2017 Conferences&quot;
      style=&quot;border: 1px solid black;&quot; width=&quot;500&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;To end the year, I published some popular posts on the Okta Developer blog:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/12/04/basic-crud-angular-and-spring-boot&quot;&gt;Build a Basic CRUD App with Angular 5.0 and Spring Boot 2.0&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/12/06/bootiful-development-with-spring-boot-and-react&quot;&gt;Bootiful Development with Spring Boot and React&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2017/12/18/spring-security-5-oidc&quot;&gt;Get Started with Spring Security 5.0 and OIDC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;devoxx4kids&quot;&gt;Devoxx4Kids&lt;/h3&gt;
&lt;p&gt;We held two &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; workshops in 2017: &lt;a
    href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/239523578/&quot;&gt;MIT App Inventor - Anyone Can Build Apps&lt;/a&gt;
  and &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/245437411/&quot;&gt;Fruit Ninja with Scratch&lt;/a&gt;. These
  classes were taught by &lt;a href=&quot;https://twitter.com/rpeyfuss&quot;&gt;Regina Peyfuss&lt;/a&gt; and &lt;a
      href=&quot;https://twitter.com/melissajmckay&quot;&gt;Melissa McKay&lt;/a&gt;, respectively. I&apos;m happy to announce they&apos;ve both
  since joined the board for Devoxx4Kids Denver and have been doing a great deal to help organize things.
&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
  &lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I ?? the smell of learning in the morning. &lt;a href=&quot;https://twitter.com/hashtag/Devoxx4Kids?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Devoxx4Kids&lt;/a&gt; Denver in full swing w/ &lt;a href=&quot;https://twitter.com/rpeyfuss?ref_src=twsrc%5Etfw&quot;&gt;@rpeyfuss&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/ThriveWorkplace?ref_src=twsrc%5Etfw&quot;&gt;@ThriveWorkplace&lt;/a&gt;. Awesome space and instructor! &lt;a href=&quot;https://t.co/a6Ac1qAJh0&quot;&gt;pic.twitter.com/a6Ac1qAJh0&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/871025101994565633?ref_src=twsrc%5Etfw&quot;&gt;June 3, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;Our &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/247280135/&quot;&gt;next meetup will be on March 10&lt;/a&gt; and
  will be taught by Melissa&apos;s daughter, Kaitlyn! I think it&apos;s pretty cool we have an opportunity to have kids teaching kids.
  I&apos;ve also been working with Jay Zimmerman and &lt;a href=&quot;https://uberconf.com/conference/denver/2018/07/home&quot;&gt;UberConf&lt;/a&gt;
  to have an UberKids this summer.
&lt;/p&gt;

&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;AppFuse &lt;a href=&quot;//raibledesigns.com/rd/entry/moving_appfuse_into_the_attic&quot;&gt;is no more&lt;/a&gt;, so I primarily work on &lt;a href=&quot;http://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt; and the &lt;a href=&quot;https://www.infoq.com/minibooks/jhipster-2-mini-book&quot;&gt;JHipster-Mini Book&lt;/a&gt; these days. I refactored JHipster&apos;s OAuth authentication in September to use an external identity provider (e.g., Keycloak or Okta) instead of an embedded one. I wrote about how to &lt;a href=&quot;https://developer.okta.com/blog/2017/10/20/oidc-with-jhipster&quot;&gt;use OpenID Connect with JHipster&lt;/a&gt; on the Okta Developer blog in October.
&lt;/p&gt;
&lt;p&gt;With the help of InfoQ, &lt;a href=&quot;//raibledesigns.com/rd/entry/the_jhipster_mini_book_v4&quot;&gt;we released v4.0 of the JHipster Mini-Book&lt;/a&gt; on September 22nd. It&apos;s hard to believe, but it&apos;s &lt;em&gt;still&lt;/em&gt; up-to-date!&lt;/p&gt;

&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;

&lt;p&gt;I wrote down my goal at the beginning of 2017: to drive Hefe up the California coast. In July, &lt;a href=&quot;http://raibledesigns.com/rd/entry/driving_rafting_hiking_and_enjoying&quot;&gt;I wrote about why that goal got moved to my bucket list&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
  I wanted to spend our summer vacation driving our VWs up the California coast, on a mammoth 3500-mile road trip over two weeks. However, when &lt;a href=&quot;https://www.nytimes.com/2017/05/24/us/big-sur-landslide-coastal-highway.html&quot;&gt;a landslide happened near Big Sur&lt;/a&gt;, I knew it was probably best to move this road trip from my yearly goals to my bucket list. Instead, we opted to drive to Montana and spend a couple of weeks vacationing in my childhood playground.
&lt;/blockquote&gt;
&lt;p&gt;We had a blast road-tripping, hiking, and rafting in Montana. A highlight for me was hiking to Rumble Lake, somewhere I hadn&apos;t been to since I was a kid.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4318/35414905693_1ea174b49a_c.jpg&quot; title=&quot;Worth the hike&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/35414905693/in/album-72157686877599325/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4318/35414905693_1ea174b49a_z.jpg&quot; width=&quot;500&quot; alt=&quot;Worth the hike&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The drive home through Jackson Hole and the Flaming Gorge was pretty nice as well!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4305/35387297204_b5086cb17a_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/35387297204/in/album-72157686877599325/&quot; title=&quot;Pretty nice views to wake up to this morning! #carpediem #working #vanlife&quot; rel=&quot;lightbox[2017yearinreview]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4305/35387297204_b5086cb17a_n.jpg&quot; width=&quot;240&quot; style=&quot;border: 1px solid black&quot; alt=&quot;Pretty nice views to wake up to this morning! #carpediem #working #vanlife&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4316/36086428211_c7a2fcf727_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/36086428211/in/album-72157686877599325/&quot; title=&quot;We name it Flaming Gorge&amp;quot; &#8212; John Wesley Powell&quot; rel=&quot;lightbox[2017yearinreview]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4316/36086428211_c7a2fcf727_n.jpg&quot; width=&quot;240&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot; alt=&quot;We name it Flaming Gorge &#8212; John Wesley Powell&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;My only other personal post in the first half of 2017 was &lt;a href=&quot;//raibledesigns.com/rd/entry/farewell_to_the_2016_17&quot;&gt;Farewell to the 2016-17 Ski Season&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://c1.staticflickr.com/5/4198/34026949363_7ffeccd5e3_c.jpg&quot; title=&quot;On top of the world!&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/34026949363/in/album-72157684160000955/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4198/34026949363_7ffeccd5e3.jpg&quot; width=&quot;500&quot; alt=&quot;On top of the world!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I had a blast skiing in Winter Park, Copper, Crested Butte, Sweden, Steamboat, Tahoe, and Montana.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; data-header=&quot;true&quot; data-footer=&quot;true&quot; href=&quot;https://www.flickr.com/photos/mraible/albums/72157684160000955&quot; title=&quot;Ski Season 2016-17&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4223/34836701955_fd02d1beb5.jpg&quot; width=&quot;500&quot; alt=&quot;Ski Season 2016-17&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;&lt;script async src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;The highlight of the season was skiing at Big Sky Resort in Montana. We&apos;re super pumped that &lt;a href=&quot;https://www.ikonpass.com/&quot;&gt;next year&apos;s ski pass&lt;/a&gt; includes Big Sky!&lt;/p&gt;
&lt;p&gt;In early August, we &lt;a href=&quot;http://raibledesigns.com/rd/entry/rafting_the_salmon_river_in&quot;&gt;rafted the Salmon River in Idaho&lt;/a&gt; with our rafting family and had an epic trip.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://farm5.staticflickr.com/4402/36200202894_3a5c7ecdc1_c.jpg&quot; title=&quot;Salmon River Posse&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mcginityphoto/36200202894/in/dateposted/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4402/36200202894_3a5c7ecdc1.jpg&quot; width=&quot;500&quot; alt=&quot;Salmon River Posse&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
  Jack &lt;a href=&quot;//raibledesigns.com/rd/entry/happy_birthday_jack6&quot;&gt;turned 13&lt;/a&gt; in late August and we had a splendid weekend with my folks in town.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4365/36481847010_3e66370b62_c.jpg&quot; title=&quot;Family photo on Jack&apos;s 13th Birthday&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/36481847010/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4365/36481847010_3e66370b62.jpg&quot; width=&quot;500&quot; alt=&quot;Family photo on Jack&apos;s 13th Birthday&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Abbie and Tucker won their division at the SummerFest Horse Show in September!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://farm5.staticflickr.com/4364/36239170203_efb7b6261f_c.jpg&quot; title=&quot;Abbie and Tucker&quot; rel=&quot;lightbox[2017yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/36239170203&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4364/36239170203_efb7b6261f.jpg&quot; width=&quot;500&quot; alt=&quot;Abbie and Tucker&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Abbie didn&apos;t want a birthday party this year, so &lt;a href=&quot;//raibledesigns.com/rd/entry/happy_birthday_abbie11&quot;&gt;we surprised her with one instead&lt;/a&gt;. It&apos;s hard to believe she&apos;s a freshman in high school. She&apos;s even driving us around with her learner&apos;s permit these days! Her
  birthday was a bittersweet celebration since we had to &lt;a href=&quot;//raibledesigns.com/rd/entry/goodbye_sir_jake&quot;&gt;say goodbye to Jake&lt;/a&gt; earlier that day.
&lt;/p&gt;
&lt;p&gt;We welcomed a new Australian Shepperd-Border Collie mix puppy into our home in December. Her name is Daisy.&lt;/p&gt;
&lt;div style=&quot;max-width:500px; margin: 0 auto&quot;&gt;
  &lt;blockquote class=&quot;instagram-media&quot; data-instgrm-permalink=&quot;https://www.instagram.com/p/BcN9o-zly7T/&quot; data-instgrm-version=&quot;8&quot; style=&quot; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&quot;&gt;&lt;div style=&quot;padding:8px;&quot;&gt; &lt;div style=&quot; background:#F8F8F8; line-height:0; margin-top:40px; padding:49.76851851851852% 0; text-align:center; width:100%;&quot;&gt; &lt;div style=&quot; background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAMAAAApWqozAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAMUExURczMzPf399fX1+bm5mzY9AMAAADiSURBVDjLvZXbEsMgCES5/P8/t9FuRVCRmU73JWlzosgSIIZURCjo/ad+EQJJB4Hv8BFt+IDpQoCx1wjOSBFhh2XssxEIYn3ulI/6MNReE07UIWJEv8UEOWDS88LY97kqyTliJKKtuYBbruAyVh5wOHiXmpi5we58Ek028czwyuQdLKPG1Bkb4NnM+VeAnfHqn1k4+GPT6uGQcvu2h2OVuIf/gWUFyy8OWEpdyZSa3aVCqpVoVvzZZ2VTnn2wU8qzVjDDetO90GSy9mVLqtgYSy231MxrY6I2gGqjrTY0L8fxCxfCBbhWrsYYAAAAAElFTkSuQmCC); display:block; height:44px; margin:0 auto -44px; position:relative; top:-22px; width:44px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&quot;&gt;&lt;a href=&quot;https://www.instagram.com/p/BcN9o-zly7T/&quot; style=&quot; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by Matt Raible (@vwsforlife)&lt;/a&gt; on &lt;time style=&quot; font-family:Arial,sans-serif; font-size:14px; line-height:17px;&quot; datetime=&quot;2017-12-02T23:24:02+00:00&quot;&gt;Dec 2, 2017 at 3:24pm PST&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async defer src=&quot;//platform.instagram.com/en_US/embeds.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;h3 id=&quot;stout-and-hefe&quot;&gt;Stout and Hefe&lt;/h3&gt;
&lt;p&gt;Stout 5.0 and Hefe 3.0 were released in early May. Stout had his hood painted and Hefe got a kick-ass stereo system installed.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4178/34451049790_5a20227d4d_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/34451049790/in/album-72157681042076004/&quot; title=&quot;Stout 5.0 and Hefe 3.0!&quot; rel=&quot;lightbox[2017yearinreview]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4178/34451049790_5a20227d4d.jpg&quot; width=&quot;500&quot; alt=&quot;Stout 5.0 and Hefe 3.0!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;For Hefe&apos;s stereo, I tried going phone-only for a controller. This turned out to be a bad idea, mostly due to &lt;a href=&quot;http://www.audison.eu/products/bit-play-hd/&quot;&gt;bit Play HD&lt;/a&gt; and its terrible mobile app. Also, Hefe is lowered and a bit bumpy in the front, so trying to use a touch screen while driving doesn&apos;t work very well. He&apos;s in the shop now getting a &lt;a href=&quot;http://www.kenwood.com/usa/car/excelon/kdc-x702/&quot;&gt;new deck&lt;/a&gt; installed. &lt;/p&gt;
&lt;p&gt;We drove Stout over 5000 miles this summer and he&apos;s been super dependable. Now that he&apos;s reliable, we often marvel that he really is &lt;a href=&quot;https://www.outsideonline.com/1915261/greatest-car-ever-built&quot;&gt;the greatest car ever built&lt;/a&gt;. &lt;/p&gt;

&lt;h2 id=&quot;2018&quot;&gt;2018&lt;/h2&gt;

&lt;p&gt;Professionally, I&apos;ll be speaking at a lot of Java User Groups in 2018. The Developer Relations team at Okta is focusing on large US cities this year, so you won&apos;t see me overseas as much. This is nice because it means I get to spend more time with my family. I have received offers to speak in other countries where they&apos;ll pay for all my expenses. If expenses are covered, Okta will allow me to travel overseas. However, I&apos;ve been telling people I&apos;m only willing to speak if they&apos;ll pay for a family member&apos;s flight too. It seems to be a win-win so far: most conferences have declined, and I don&apos;t have to travel as much. If I find a conference that is willing pay, I&apos;ll get to travel with someone from my awesome family!&lt;/p&gt;
&lt;p&gt;
  I&apos;ll be coding loads of example apps and writing heaps of tutorials for the &lt;a href=&quot;https://developer.okta.com/blog&quot;&gt;Okta Developer blog&lt;/a&gt; and I&apos;m super excited about our &lt;a href=&quot;https://iterateconf.com&quot;&gt;Iterate Conference&lt;/a&gt; next month. I&apos;ll also continue to help organize DJUG and Devoxx4Kids Denver.
&lt;/p&gt;
&lt;p&gt;
  Romantically, Trish and I hope to &lt;a href=&quot;https://lifehacker.com/never-stop-dating-your-significant-other-with-the-2-2-2-1700410479&quot;&gt;never stop dating with the 2-2-2 rule&lt;/a&gt;. I look forward to a year with running VWs, long dog walks, and disconnecting to connect. As for goals, I&apos;ll go for the ol&apos; standby: to be happy and content with what I have. &amp;#128522;&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4654/28231771799_ab652f6db3_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/28231771799/&quot; title=&quot;Hefe at Parker Days Parade&quot; rel=&quot;lightbox[2017yearinreview]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4654/28231771799_ab652f6db3.jpg&quot; width=&quot;500&quot; alt=&quot;Hefe at Parker Days Parade&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/a_delightful_trip_to_devoxx</id>
        <title type="html">A Delightful Trip to Devoxx UK and GeekOut 2016</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/a_delightful_trip_to_devoxx"/>
        <published>2016-06-12T11:13:17-06:00</published>
        <updated>2016-06-20T22:26:30-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="london" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxuk" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tallinn" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mom" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="geekoutee" scheme="http://roller.apache.org/ns/tags/" />
        <category term="speaking" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    &lt;a data-href=&quot;https://www.flickr.com/photos/mraible/27617751605/in/album-72157666992992284/&quot; class=&quot;picture&quot; href=&quot;https://c2.staticflickr.com/8/7396/27617746825_9ff773434e_c.jpg&quot; title=&quot;We found a pub!&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot;&gt;&lt;img src=&quot;https://c2.staticflickr.com/8/7396/27617746825_9ff773434e_t.jpg&quot; width=&quot;100&quot; alt=&quot;We found a pub!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    I had the pleasure of traveling to London, England and Tallin, Estonia this past week. In London, I spoke at
    &lt;a href=&quot;http://www.devoxx.co.uk/&quot;&gt;Devoxx UK&lt;/a&gt;. In Tallin, I spoke at &lt;a href=&quot;http://2016.geekout.ee/&quot;&gt;GeekOut&lt;/a&gt;.
    I took my mom (or mum, if you
    prefer)
    and we explored the sights, enjoyed local cuisines and savored a few beverages. Our trip started with a direct
    flight from Denver to London. We arrived on Tuesday, June 7, around noon.
&lt;/p&gt;
&lt;p&gt;We were only in London for two nights, but it was enough time for us to savor excellent Indian food, fancy a walk
    through
    London, and order a bow tie. I forgot the bow tie for my &lt;a href=&quot;http://jhipster.github.io&quot;&gt;JHipster&lt;/a&gt; outfit. Luckily, I found &lt;a href=&quot;http://www.dobell.co.uk/heritage-blue-knitted-bow-tie/&quot;&gt;
        a good replacement&lt;/a&gt; and was able to order it for next-day delivery. I had to order it by 5pm and the site
    declined both my credit cards with time running out. I ended up using PayPal and got my order placed in the nick of
    time: 16:59:51.
&lt;/p&gt;

&lt;p&gt;The big news announced at Devoxx UK is that Devoxx is &lt;a href=&quot;https://devoxx.us&quot;&gt;coming to the United States in
    2017&lt;/a&gt;! I&apos;m on the program committee for this conference, so I look forward to helping make it spectacular.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c6.staticflickr.com/8/7402/27617748525_d75d56ec06_c.jpg&quot; title=&quot;Devoxx coming to US in 2017!&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27617748525/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c6.staticflickr.com/8/7402/27617748525_d75d56ec06.jpg&quot; width=&quot;500&quot; alt=&quot;Devoxx coming to US in 2017!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px;&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;The first ever &lt;a href=&quot;https://twitter.com/hashtag/DevoxxUS?src=hash&quot;&gt;#DevoxxUS&lt;/a&gt; is happening March 21-23, 2017 in San Jose, CA!
    &lt;a href=&quot;https://t.co/jtQe95LNOL&quot;&gt;https://t.co/jtQe95LNOL&lt;/a&gt;&lt;/p&gt;&#8212; Devoxx US (@devoxxus) &lt;a href=&quot;https://twitter.com/devoxxus/status/740466417703616512&quot;&gt;June 8, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;</summary>
        <content type="html">&lt;p&gt;
    &lt;a data-href=&quot;https://www.flickr.com/photos/mraible/27617751605/in/album-72157666992992284/&quot; class=&quot;picture&quot; href=&quot;https://c2.staticflickr.com/8/7396/27617746825_9ff773434e_c.jpg&quot; title=&quot;We found a pub!&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot;&gt;&lt;img src=&quot;https://c2.staticflickr.com/8/7396/27617746825_9ff773434e_t.jpg&quot; width=&quot;100&quot; alt=&quot;We found a pub!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    I had the pleasure of traveling to London, England and Tallin, Estonia this past week. In London, I spoke at
    &lt;a href=&quot;http://www.devoxx.co.uk/&quot;&gt;Devoxx UK&lt;/a&gt;. In Tallin, I spoke at &lt;a href=&quot;http://2016.geekout.ee/&quot;&gt;GeekOut&lt;/a&gt;.
    I took my mom (or mum, if you
    prefer)
    and we explored the sights, enjoyed local cuisines and savored a few beverages. Our trip started with a direct
    flight from Denver to London. We arrived on Tuesday, June 7, around noon.
&lt;/p&gt;
&lt;p&gt;We were only in London for two nights, but it was enough time for us to savor excellent Indian food, fancy a walk
    through
    London, and order a bow tie. I forgot the bow tie for my &lt;a href=&quot;http://jhipster.github.io&quot;&gt;JHipster&lt;/a&gt; outfit. Luckily, I found &lt;a href=&quot;http://www.dobell.co.uk/heritage-blue-knitted-bow-tie/&quot;&gt;
        a good replacement&lt;/a&gt; and was able to order it for next-day delivery. I had to order it by 5pm and the site
    declined both my credit cards with time running out. I ended up using PayPal and got my order placed in the nick of
    time:
    16:59:51.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
        &lt;a href=&quot;https://c2.staticflickr.com/8/7725/27617750865_1e2f064928_c.jpg&quot; title=&quot;St. Paul&apos;s Cathedral&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27617750865/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c2.staticflickr.com/8/7725/27617750865_1e2f064928.jpg&quot; width=&quot;500&quot; alt=&quot;St. Paul&apos;s Cathedral&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c6.staticflickr.com/8/7455/27617751605_8f634559e4_c.jpg&quot; title=&quot;River Thames&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27617751605/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c6.staticflickr.com/8/7455/27617751605_8f634559e4_m.jpg&quot; width=&quot;240&quot; alt=&quot;River Thames&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;


    &lt;a href=&quot;https://c2.staticflickr.com/8/7311/27008343553_edcb7f6ea9_c.jpg&quot; title=&quot;Sphynx&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27008343553/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c2.staticflickr.com/8/7311/27008343553_edcb7f6ea9_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sphynx&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;The big news announced at Devoxx UK is that Devoxx is &lt;a href=&quot;https://devoxx.us&quot;&gt;coming to the United States in
    2017&lt;/a&gt;! I&apos;m on the program committee for this conference, so I look forward to helping make it spectacular.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c6.staticflickr.com/8/7402/27617748525_d75d56ec06_c.jpg&quot; title=&quot;Devoxx coming to US in 2017!&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27617748525/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c6.staticflickr.com/8/7402/27617748525_d75d56ec06.jpg&quot; width=&quot;500&quot; alt=&quot;Devoxx coming to US in 2017!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px;&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;The first ever &lt;a href=&quot;https://twitter.com/hashtag/DevoxxUS?src=hash&quot;&gt;#DevoxxUS&lt;/a&gt; is happening March 21-23, 2017 in San Jose, CA!
    &lt;a href=&quot;https://t.co/jtQe95LNOL&quot;&gt;https://t.co/jtQe95LNOL&lt;/a&gt;&lt;/p&gt;&#8212; Devoxx US (@devoxxus) &lt;a href=&quot;https://twitter.com/devoxxus/status/740466417703616512&quot;&gt;June 8, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I thought both my talks went well, but I did have some issues during my Angular 2 talk. I used
    &lt;a href=&quot;https://github.com/angular/angular-cli&quot;&gt;Angular CLI&lt;/a&gt; to do the demo and IDEA kept indexing,
    which caused my live templates to fail. I later learned from an attendee (thanks!) that excluding the
    &lt;code&gt;dist&lt;/code&gt; and &lt;code&gt;tmp&lt;/code&gt;
    directories helps prevents this. You can find the &lt;a href=&quot;https://github.com/mraible/ng2-demo&quot;&gt;source code for my
        demo on GitHub&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;You can &lt;a href=&quot;www.slideshare.net/mraible/the-art-of-angular-in-2016-devoxx-uk-2016&quot;&gt;view my &quot;Art of Angular in 2016&quot; presentation on SlideShare&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=T4zsanOnKtk&quot;&gt;watch it on YouTube&lt;/a&gt;, or just click through it below.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
    &lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/4Axcf5U5cJiJev&quot; width=&quot;595&quot; height=&quot;373&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
    I also did a &lt;a href=&quot;http://www.slideshare.net/mraible/get-hip-with-jhipster-spring-boot-angularjs-bootstrap-devoxx-uk-2016&quot;&gt;presentation
    on JHipster&lt;/a&gt;, leveraging &lt;a href=&quot;https://jhipster.github.io/jdl-studio/&quot;&gt;JDL Studio&lt;/a&gt; heavily. You can
    &lt;a href=&quot;https://gist.github.com/mraible/8640fa406f32cb0f18e1aa7d73ab8022&quot;&gt;click here to see the JDL&lt;/a&gt; I used
    for my blog demo. A &lt;a href=&quot;https://www.youtube.com/watch?v=UKMn5UNaUM4&quot;&gt;video of this session is on YouTube&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
    &lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/ztvafuoJSA4y9t&quot; width=&quot;595&quot; height=&quot;373&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;We closed out our visit to London with a fun speaker&apos;s dinner and an early morning flight to Helsinki, then Tallinn.
&lt;/p&gt;
&lt;p&gt;
    In Tallinn, we wandered through its Old Town, had some great meals and marveled at how late the sun set. We stopped
    in at the GeekOut conference&apos;s party on Thursday night. The &lt;a href=&quot;https://zeroturnaround.com/&quot;&gt;ZeroTurnaround&lt;/a&gt;
    guys did a heckuva job planning this conference.
    I loved how both the party and the conference were in large, industrial-but-modern buildings with great sound
    systems.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c5.staticflickr.com/8/7387/27340321980_2438e8585b_c.jpg&quot; title=&quot;Tallin, Estonia&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27340321980/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c5.staticflickr.com/8/7387/27340321980_2438e8585b.jpg&quot; width=&quot;500&quot; alt=&quot;Tallin, Estonia&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c7.staticflickr.com/8/7285/27340323510_94f77f5374_c.jpg&quot; title=&quot;GeekOut Party&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27340323510/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c7.staticflickr.com/8/7285/27340323510_94f77f5374_m.jpg&quot; width=&quot;240&quot; alt=&quot;GeekOut Party&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://c3.staticflickr.com/8/7366/27518144042_3335da602d_c.jpg&quot; title=&quot;Tallin Sunset&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/27518144042/in/album-72157666992992284/&quot;&gt;&lt;img src=&quot;https://c3.staticflickr.com/8/7366/27518144042_3335da602d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Tallin Sunset&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    My JHipster talk went well on Friday (&lt;a href=&quot;http://www.slideshare.net/mraible/get-hip-with-jhipster-geekout-2016&quot;&gt;slides here&lt;/a&gt;)
    and my mom and I celebrated at &lt;a href=&quot;http://rataskaevu16.ee/&quot;&gt;Rataskaevu 16&lt;/a&gt; that
    evening. Then we shared laughs and
    learned how to play &lt;a href=&quot;http://jackbox.tv/&quot;&gt;jackbox.tv&lt;/a&gt; at ZeroTurnaround&apos;s post-conference party.
&lt;/p&gt;
&lt;p&gt;
    Our last night was spent in Helsinki, a 20-minute flight from Tallinn. Since my grandparents are Finnish, my mom
    delighted in hearing words from her youth along the streets. We both took advantage and relaxed in our hotel&apos;s roof
    top saunas too. We indulged in a food/wine-paired dinner over three hours that evening.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-href=&quot;https://www.flickr.com/photos/mraible/27518153982/in/album-72157666992992284/&quot; href=&quot;//c7.staticflickr.com/8/7342/27518153982_3ae4a9f774_c.jpg&quot; title=&quot;Homeward bound with a stop for a sauna and dinner in Helsinki&quot; rel=&quot;lightbox[devoxxuk-geekout-2016]&quot;&gt;&lt;img src=&quot;//c7.staticflickr.com/8/7342/27518153982_3ae4a9f774_n.jpg&quot; width=&quot;320&quot; alt=&quot;Homeward bound with a stop for a sauna and dinner in Helsinki&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Thanks to the organizers and good friends from Devoxx UK and GeekOut. We had a great time and are still smiling about
    &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157666992992284&quot;&gt;all our new memories&lt;/a&gt;.&lt;/p&gt;
&lt;/p&gt;&lt;strong&gt;Update on June 20, 2016:&lt;/strong&gt; Devoxx UK has posted &lt;a href=&quot;https://www.youtube.com/channel/UCxIamwHotqAAdmecaKT9WpA&quot;&gt;a channel on YouTube&lt;/a&gt; with all of its sessions. You can view my &lt;a href=&quot;https://www.youtube.com/watch?v=T4zsanOnKtk&quot;&gt;Art of Angular&lt;/a&gt; talk or &lt;a href=&quot;https://www.youtube.com/watch?v=UKMn5UNaUM4&quot;&gt;Get Hip with JHipster&lt;/a&gt;.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_jhipster_mini_book_how</id>
        <title type="html">The JHipster Mini-Book: How We Did It and What&apos;s Next</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_jhipster_mini_book_how"/>
        <published>2015-11-03T10:13:40-07:00</published>
        <updated>2015-11-03T18:28:01-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="html5" scheme="http://roller.apache.org/ns/tags/" />
        <category term="infoq" scheme="http://roller.apache.org/ns/tags/" />
        <category term="epub" scheme="http://roller.apache.org/ns/tags/" />
        <category term="book" scheme="http://roller.apache.org/ns/tags/" />
        <category term="pdf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="asciidoctor" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gradle" scheme="http://roller.apache.org/ns/tags/" />
        <category term="browsersync" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mobi" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
&lt;a href=&quot;http://www.infoq.com/minibooks/jhipster-mini-book&quot;&gt;
&lt;img src=&quot;http://www.infoq.com/resource/minibooks/jhipster-mini-book/en/cover/Cover.jpg&quot; alt=&quot;The JHipster Mini-Book&quot; width=&quot;150&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
Last Friday, the &lt;a href=&quot;http://www.infoq.com/minibooks/jhipster-mini-book&quot;&gt;JHipster Mini-Book was published on
    InfoQ&lt;/a&gt;. I wrote about this milestone on the &lt;a
    href=&quot;http://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-released&quot;&gt;book&apos;s blog&lt;/a&gt;. I&apos;m
    pumped to see this release happen, and I&apos;d like to give you a behind-the-scenes peak at how it went from idea to production.
&lt;/p&gt;
&lt;p id=&quot;the-idea&quot;&gt;&lt;strong&gt;The Idea&lt;/strong&gt;&lt;br&gt;
    At the end of last year, I wrote down my goals for 2015:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;21 Point Fitness App&lt;/li&gt;
    &lt;li&gt;JHipster Mini Book (InfoQ)&lt;/li&gt;
    &lt;li&gt;Finish Bus&lt;/li&gt;
    &lt;li&gt;New House&lt;/li&gt;
    &lt;li&gt;Good Blood Pressure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My reason for wanting to write a JHipster Mini-Book was simple: I knew AngularJS, Bootstrap and Spring Boot quite
    well. I&apos;d used them on several projects and I really liked how &lt;a href=&quot;http://jhipster.org&quot;&gt;JHipster&lt;/a&gt; married them all together. I often ran into
    people that used these technologies, but hadn&apos;t heard of JHipster. I was hoping to make more people aware of the
    project and market my development skills at the same time.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
&lt;a href=&quot;http://www.infoq.com/minibooks/jhipster-mini-book&quot;&gt;
&lt;img src=&quot;http://www.infoq.com/resource/minibooks/jhipster-mini-book/en/cover/Cover.jpg&quot; alt=&quot;The JHipster Mini-Book&quot; width=&quot;150&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
Last Friday, the &lt;a href=&quot;http://www.infoq.com/minibooks/jhipster-mini-book&quot;&gt;JHipster Mini-Book was published on
    InfoQ&lt;/a&gt;. I wrote about this milestone on the &lt;a
    href=&quot;http://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-released&quot;&gt;book&apos;s blog&lt;/a&gt;. I&apos;m
    pumped to see this release happen, and I&apos;d like to give you a behind-the-scenes peak at how it went from idea to production.
&lt;/p&gt;
&lt;p id=&quot;the-idea&quot;&gt;&lt;strong&gt;The Idea&lt;/strong&gt;&lt;br&gt;
    At the end of last year, I wrote down my goals for 2015:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;21 Point Fitness App&lt;/li&gt;
    &lt;li&gt;JHipster Mini Book (InfoQ)&lt;/li&gt;
    &lt;li&gt;Finish Bus&lt;/li&gt;
    &lt;li&gt;New House&lt;/li&gt;
    &lt;li&gt;Good Blood Pressure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My reason for wanting to write a JHipster Mini-Book was simple: I knew AngularJS, Bootstrap and Spring Boot quite
    well. I&apos;d used them on several projects and I really liked how &lt;a href=&quot;http://jhipster.org&quot;&gt;JHipster&lt;/a&gt; married them all together. I often ran into
    people that used these technologies, but hadn&apos;t heard of JHipster. I was hoping to make more people aware of the
    project and market my development skills at the same time.
&lt;/p&gt;
&lt;p&gt;The first step to accomplishing a goal is writing it down. After writing it down and sharing with friends, I sent
    an email to &lt;a href=&quot;http://www.infoq.com/author/Charles-Humble&quot;&gt;Charles Humble&lt;/a&gt;, InfoQ&apos;s Head of Editorial, in
    early January. Charles directed me to InfoQ&apos;s internal mini-book guide and recommended I create an outline and talk to the
    project owners. It took me six weeks before I created an outline and sent it to
    &lt;a href=&quot;http://www.julien-dubois.com/&quot;&gt;Julien Dubois&lt;/a&gt;. We went back-and-forth on the outline for a while and
    finalized it around the beginning of April.
&lt;/p&gt;
&lt;p&gt;
    On April 8, I delivered a &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_hip_with_jhipster_at&quot;&gt;talk on JHipster&lt;/a&gt;
    at Denver&apos;s Java Users Group and announced I was writing the book.
&lt;/p&gt;

&lt;p id=&quot;asciidoctor&quot;&gt;&lt;strong&gt;The Development Process&lt;/strong&gt;&lt;br&gt;
    Early on, I&apos;d decided I wanted to write the book with AsciiDoc and build it with &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt;.
    I did receive some slight push back (to use Google Docs) from InfoQ, but they were mostly supportive. Their biggest
    concern was getting it into a desktop publishing program and formatting it to fit their style. I have an email that
    says &quot;this is going to be the most expensive book we&#8217;ve ever produced!&quot;.
&lt;/p&gt;
&lt;p&gt;
    I chose Asciidoctor because I wanted to run the book development and publishing process like an open source project.
    I also found its ability to import source code quite handy. I used the &lt;a href=&quot;https://github.com/asciidoctor/asciidoctor-gradle-examples&quot;&gt;
    asciidoctor-gradle-examples project&lt;/a&gt; as a starting point, specifically the &lt;a href=&quot;https://github.com/asciidoctor/asciidoctor-gradle-examples/tree/master/asciidoc-to-all-example&quot;&gt;
    asciidoctor-to-all-example&lt;/a&gt;. I hadn&apos;t used Gradle on a project before, so I was motivated to learn it. Now that I think of it,
    I never even bothered to research how to use Asciidoctor with Maven. &lt;/p&gt;
&lt;p&gt;
    I used JIRA in the cloud ($20/month) to create tasks, organize sprints and track my progress. I broke things down by chapter,
    starting with the &lt;em&gt;UI components&lt;/em&gt; section, followed by &lt;em&gt;Building an app&lt;/em&gt;, and &lt;em&gt;API building blocks&lt;/em&gt;.
    I used the outline of the book to create my tasks. I gave myself a couple weeks for each chapter, but it ended up
    taking about a month each. I wrote the preface, introduction and everything else after the main content had been
    tech edited and was being copy edited.
&lt;/p&gt;
&lt;p&gt;
    I created a private repository on &lt;a href=&quot;https://bitbucket.org/&quot;&gt;Bitbucket&lt;/a&gt; to host the book&apos;s source control in Git.
    The only reason I chose Bitbucket over GitHub was because Bitbucket offers free private repositories. It&apos;s a shame
    they have &lt;a href=&quot;https://bitbucket.org/site/master/issues/7132/render-asciidoc-files-bb-1913#comment-22554834&quot;&gt;
    no plans to build a custom renderer for AsciiDoc&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    I wrote the book using IntelliJ IDEA and used a combination of &lt;code&gt;./gradlew watch&lt;/code&gt; and Grunt with
    &lt;a href=&quot;http://browsersync.io&quot;&gt;Browsersync&lt;/a&gt; to refresh my browser when changes were made.
&lt;/p&gt;
&lt;p id=&quot;tech-editing&quot;&gt;&lt;strong&gt;Tech Editing&lt;/strong&gt;&lt;br&gt;
    I sent my tech editors, &lt;a href=&quot;https://twitter.com/sharpedennis&quot;&gt;Dennis Sharpe&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/kileniklawski&quot;&gt;Kile Niklawski&lt;/a&gt;,
    emails when I finished with a chapter. I gave them access to the book&apos;s repo, as well as the sample application&apos;s repo, and
    detailed how to access them. I made sure and documented how to build both projects in their README files. I asked
    Dennis and Kile to enter issues, or create branches and pull requests when they found problems. They entered a few issues on the first
    chapter, but responded via email after that. They didn&apos;t find many issues, so this process was good enough for me.
&lt;/p&gt;

&lt;p id=&quot;copy-editing&quot;&gt;&lt;strong&gt;Copy Editing&lt;/strong&gt;&lt;br&gt;
    Lawrence Nyveen copy-edited the book and was gracious enough to try my recommended process:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Checkout the source code of the book from Git.&lt;/li&gt;
    &lt;li&gt;Create a branch, make changes.&lt;/li&gt;
    &lt;li&gt;Publish the branch, create a pull request.&lt;/li&gt;
    &lt;li&gt;Have a conversation about the changes on the pull request, make more changes, merge pull request.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
This process seemed to work very well and Laurie quickly learned how to work with Git. We both
used &lt;a href=&quot;http://asciidocfx.com/&quot;&gt;AsciidocFX&lt;/a&gt; to edit and make changes. We used comments in the book&apos;s
code to ask questions to each other. AsciidocFX worked quite well, though we did find we needed to add
&lt;code&gt;:imagesdir: images&lt;/code&gt; to chapter headers to get them to render images. Having problems with image
rendering was not new, I had to create a symlink in the &lt;em&gt;chapters&lt;/em&gt; directory to the images directory
above it to get images to render in EPUB.
&lt;/p&gt;
&lt;p&gt;From the time Laurie started copy editing until he was finished was only a couple weeks.
&lt;/p&gt;

&lt;p id=&quot;publishing&quot;&gt;&lt;strong&gt;Publishing&lt;/strong&gt;&lt;br&gt;
    As I mentioned earlier, making the output look like InfoQ&apos;s mini-books was one of the biggest concerns with this book.
    InfoQ wanted to take the HTML (or PDF) version of the book, feed it into their desktop publishing program, and
    publish from there. I expressed my concerns in an email:
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
    The JHipster project moves pretty fast, so it&apos;ll probably be a lot of work to pump out releases as quickly as they do. 
    It&apos;s probably better to do a release per quarter with updated material. If you&apos;re going to reformat it every time we do a
    release, that could create a lot of work.
&lt;/blockquote&gt;
&lt;p&gt;They agreed and mentioned the output from Asciidoctor was looking pretty good. They asked if I could make it match
the standard InfoQ look and feel. I did some research, found out it
    &lt;a href=&quot;//raibledesigns.com/rd/entry/customizing_an_asciidoctor_pdf_so&quot;&gt;might be possible&lt;/a&gt;, and
    &lt;a href=&quot;//raibledesigns.com/rd/entry/re_customizing_an_asciidoctor_pdf&quot;&gt;went to work&lt;/a&gt;. It took me a week of
    research and a week of trial-and-error to produce the &lt;a href=&quot;http://www.infoq.com/minibooks/jhipster-mini-book&quot;&gt;
    final product&lt;/a&gt;.
&lt;/p&gt;

&lt;p id=&quot;next&quot;&gt;&lt;strong&gt;What&apos;s Next?&lt;/strong&gt;&lt;br&gt;
    The good news is the first (1.0) version of the book is in production. I have not published
    &lt;a href=&quot;http://www.21-points.com/&quot;&gt;21-Points Health&lt;/a&gt; (the example application
    for the book) as an open source project, but I may in the future. For now, I hope to do my best to keep the book (and the app) 
    up-to-date with JHipster releases. That may prove difficult, but we&apos;ll see.
&lt;/p&gt;
&lt;p&gt;
    One of the things I recommend in the book is to follow &lt;a href=&quot;https://github.com/johnpapa/angular-styleguide&quot;&gt;John Papa&apos;s Angular Style Guide&lt;/a&gt;.
    A recent &lt;a href=&quot;https://github.com/jhipster/generator-jhipster/pull/2256&quot;&gt;pull request&lt;/a&gt; does this for JHipster. I think this is an
    excellent enhancement, but it&apos;d also require me to rewrite many of the JavaScript sections of the book. It sounds like a daunting task,
    but at least it&apos;s a mini-book!
&lt;/p&gt;
&lt;p&gt;
    If you have any questions, comments or suggestions about writing with Asciidoctor or publishing with InfoQ, send them my way.
    My fastest responses will likely come from Twitter (&lt;a href=&quot;https://twitter.com/jhipster-book&quot;&gt;@jhipster_book&lt;/a&gt; or
    &lt;a href=&quot;https://twitter.com/mraible&quot;&gt;@mraible&lt;/a&gt;). You can also leave a comment here, on &lt;a href=&quot;http://www.jhipster-book.com&quot;&gt;jhipster-book.com&lt;/a&gt;,
    or post a question on Stack Overflow with the &quot;jhipster-mini-book&quot; tag.
&lt;/p&gt;
&lt;p&gt;P.S. If you live in Denver, there&apos;s a &lt;a href=&quot;http://www.meetup.com/DOSUG1/events/221213046/&quot;&gt;presentation on Asciidoctor&lt;/a&gt; by
    &lt;a href=&quot;https://twitter.com/tlberglund&quot;&gt;Tim Berglund&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/cojorado&quot;&gt;Cara Jo Miller&lt;/a&gt; tonight. I&apos;ll also be talking about
    &lt;a href=&quot;http://cfp.devoxx.be/2015/talk/KGX-5093/Get_Hip_with_JHipster:_Spring_Boot_+_AngularJS_+_Bootstrap&quot;&gt;JHipster at Devoxx&lt;/a&gt; next Wednesday.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/springone_2gx_2015_my_presentations</id>
        <title type="html">SpringOne 2GX 2015: My Presentations on Comparing Hot JavaScript Frameworks and NoXML </title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/springone_2gx_2015_my_presentations"/>
        <published>2015-09-20T12:29:00-06:00</published>
        <updated>2015-09-20T18:40:33-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="xml" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="s2gx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="emberjs" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angularjs" scheme="http://roller.apache.org/ns/tags/" />
        <category term="noxml" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springone2gx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="reactjs" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Last week, I had the pleasure of traveling to Washington, DC to speak at the annual &lt;a href=&quot;http://www.springone2gx.com/&quot;&gt;SpringOne 2GX conference&lt;/a&gt;. I was pretty stressed for the last few weeks because I had to create two new presentations from scratch, and both had to be 90 minutes long. I was also hoping to finish the JHipster Book before the conference started. I was able to finish both presentations in the nick of time, but did not find the time to write the last chapter in the JHipster Book.&lt;/p&gt;
&lt;p&gt;The first presentation was titled &lt;a href=&quot;https://2015.event.springone2gx.com/schedule/sessions/comparing_hot_javascript_frameworks_angularjs_ember_js_and_react_js.html&quot;&gt;Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js&lt;/a&gt;. I started by revisiting the &lt;a href=&quot;//raibledesigns.com/rd/entry/comparing_jvm_web_frameworks_at&quot;&gt;Comparing JVM Web Frameworks talk I did at vJUG&lt;/a&gt; last February. I explained how I think traditional web frameworks are no longer relevant in 2015, but I do believe server-side rendering is still &lt;em&gt;very&lt;/em&gt; relevant. From there, I used &lt;a href=&quot;http://www.ybrikman.com/&quot;&gt;Yevgeniy Brikman&#8217;s&lt;/a&gt; framework scorecard (from his &lt;a href=&quot;http://www.slideshare.net/brikis98/nodejs-vs-play-framework&quot;&gt;Node.js vs. Play Framework presentation&lt;/a&gt;) to rank each framework by a number of different criteria. You can see the final results on &lt;a href=&quot;http://www.slideshare.net/mraible/comparing-hot-javascript-frameworks-angularjs-emberjs-and-reactjs-springone-2gx-2015/160&quot;&gt;slide 160&lt;/a&gt;. Since the scores were so close, I believe you could tweak some scores a bit (or add weights to the different criteria) and make any of the frameworks come out on top.
&lt;/p&gt;
&lt;p&gt;
You can click through the presentation below, download it from &lt;a href=&quot;//raibledesigns.com/rd/page/publications&quot;&gt;my presentations page&lt;/a&gt;, or &lt;a href=&quot;//www.slideshare.net/mraible/comparing-hot-javascript-frameworks-angularjs-emberjs-and-reactjs-springone-2gx-2015&quot;&gt;see it on SlideShare&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/NGLRPcZiLF0pBo&quot; width=&quot;512&quot; height=&quot;325&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen&gt; &lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I started writing the second presentation a week before I had to deliver it. On Thursday, September 10th, I stayed up late, trying to figure out how to create a good presentation on NoXML &lt;em&gt;and&lt;/em&gt; finish the last part of the JHipster Book. Then it came to me, I needed to &lt;em&gt;parallelize&lt;/em&gt; and do them both at the same time. I decided to compare AppFuse (which is similar to a legacy Spring application with lots of XML) to JHipster (which hardly contains any XML). 
&lt;/p&gt;
&lt;p&gt;
I wrote a 10-page Google Doc on how I planned to do this, then went rafting and camping with my family for the weekend. I finished most of the presentation on Monday night, but then realized the presentation wouldn&apos;t be long enough to fill 90 minutes. So I hunkered down at midnight, created a new AppFuse application and removed a bunch of its XML. This took me until 3:30am, and I was able to accomplish the following tasks:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spring XML to Java&lt;/li&gt;
&lt;li&gt;Spring Security Configuration to Java&lt;/li&gt;
&lt;li&gt;web.xml to WebApplicationInitializer&lt;/li&gt;
&lt;li&gt;Spring MVC to Java&lt;/li&gt;
&lt;li&gt;Migrated to Spring Boot&lt;/li&gt;
&lt;li&gt;Maven to Groovy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;p&gt;I was pretty pumped when I completed my final goal: converting to Spring Boot and getting a test to pass. I made commits to an &lt;a href=&quot;https://github.com/mraible/appfuse-noxml/commits/master&quot;&gt;appfuse-noxml project on GitHub&lt;/a&gt; as I accomplished each step. You can see all the changes in &lt;a href=&quot;https://github.com/mraible/appfuse-noxml/commits/master&quot;&gt;the project&apos;s commit log&lt;/a&gt;. While I&apos;d figured everything out, I still needed to complete the presentation. Luckily, I found time to do this the night before, the morning of, and in the final hour before I had to deliver the talk. You can imagine my relief when I was done delivering both talks. 
&lt;/p&gt;
&lt;p&gt;
You can click through the presentation below, download it from &lt;a href=&quot;//raibledesigns.com/rd/page/publications&quot;&gt;my presentations page&lt;/a&gt;, or &lt;a href=&quot;//www.slideshare.net/mraible/noxml-eliminating-xml-in-spring-projects-springone-2gx-2015&quot;&gt;view it on SlideShare&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/4V9V7NSsNC2rd7&quot; width=&quot;512&quot; height=&quot;325&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen&gt; &lt;/iframe&gt; 
&lt;/div&gt;
&lt;p&gt;While I didn&apos;t get to spend much time at the conference, I did have a lot of fun while I was there. I got to meet some new folks, reconnect with old friends, and enjoy beers and dinner with a smiling crew on Thursday night. The Broncos victory late that night was the icing on the cake. &lt;img src=&quot;//raibledesigns.com/images/smileys/smile.gif&quot; class=&quot;smiley&quot; alt=&quot;:)&quot; title=&quot;:)&quot;&gt;&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/setting_up_a_minecraft_server</id>
        <title type="html">Setting up a Minecraft Server in the Cloud</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/setting_up_a_minecraft_server"/>
        <published>2015-08-05T15:03:00-06:00</published>
        <updated>2015-08-05T21:07:52-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="minecraft" scheme="http://roller.apache.org/ns/tags/" />
        <category term="minecraftserver" scheme="http://roller.apache.org/ns/tags/" />
        <category term="amazon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="aws" scheme="http://roller.apache.org/ns/tags/" />
        <category term="linux" scheme="http://roller.apache.org/ns/tags/" />
        <category term="cloud" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
&lt;a href=&quot;https://minecraft.net&quot;&gt;&lt;img src=&quot;//raibledesigns.com/repository/images/minecraft-logo.png&quot; alt=&quot;Minecraft&quot; width=&quot;300&quot; class=&quot;picture&quot; style=&quot;margin-top: -10px&quot;&gt;&lt;/a&gt;
My 10-year-old son, Jack, is a huge fan of &lt;a href=&quot;https://minecraft.net/&quot;&gt;Minecraft&lt;/a&gt;. If you let him,
    he&apos;d play all day, skipping meals and having a blast. It&apos;s most fun to hear him playing with his sister or
    his best friend. I&apos;m amazed it&apos;s captured his attention for so long; well over two years. Both my kids loved it when
    Scott Davis taught a &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; class on
    &lt;a href=&quot;//raibledesigns.com/rd/entry/first_devoxx4kids_in_denver_a&quot;&gt;Server-side Minecraft programming&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;We haven&apos;t had any &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; workshops this year,
    but that&apos;s about to change. First of all, I&apos;m happy to announce we&apos;re working with the
    &lt;a href=&quot;http://rmoug.com&quot;&gt;Rocky Mountain Oracle Users Group&lt;/a&gt; to have a
    &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/messages/boards/thread/49148693&quot;&gt;Day of Family Coding Fun at
        Elitch Gardens&lt;/a&gt; this Friday. There will be a workshop on Raspberry Pi and I&apos;ll be doing a demonstration
    on how to setup a Minecraft Server in the cloud. Next weekend, we&apos;ll be doing a more in-depth Minecraft Workshop at Devoxx4Kids Denver. If you&apos;d like to join us &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/events/224431746/&quot;&gt;please RSVP&lt;/a&gt;.

Since having your own Minecraft Server is a fun thing for kids,
    and useful for parents, I figured I&apos;d document how to do it here.&lt;/p&gt;

&lt;p&gt;
    First of all, let me say that I&apos;m standing on the shoulders of giants. When I first setup a Minecraft server, I used
    Ben Garton&apos;s &lt;a href=&quot;http://www.blog.gartonhill.com/setting-up-a-free-minecraft-server-in-the-cloud-part-1/&quot;&gt;
    Setting up a free Minecraft server in the cloud - part 1&lt;/a&gt; as well as
    &lt;a href=&quot;http://www.blog.gartonhill.com/setting-up-a-free-minecraft-server-in-the-cloud-part-2/&quot;&gt;
        part 2&lt;/a&gt; and &lt;a href=&quot;http://www.blog.gartonhill.com/upgrading-your-minecraft-ec2-cloud-server-and-save-money/&quot;&gt;3&lt;/a&gt;.
    I also found Aaron Bell&apos;s &lt;a href=&quot;http://www.aaronbell.com/how-to-run-a-minecraft-server-on-amazon-ec2/&quot;&gt;
    How to run a Minecraft server on Amazon EC2&lt;/a&gt; to be quite useful.
&lt;/p&gt;
&lt;p&gt;Without further ado, here&apos;s you how to setup a Minecraft Server on Amazon Web Services (AWS) in 2015!&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
&lt;a href=&quot;https://minecraft.net&quot;&gt;&lt;img src=&quot;//raibledesigns.com/repository/images/minecraft-logo.png&quot; alt=&quot;Minecraft&quot; width=&quot;300&quot; class=&quot;picture&quot; style=&quot;margin-top: -10px&quot;&gt;&lt;/a&gt;
My 10-year-old son, Jack, is a huge fan of &lt;a href=&quot;https://minecraft.net/&quot;&gt;Minecraft&lt;/a&gt;. If you let him,
    he&apos;d play all day, skipping meals and having a blast. It&apos;s most fun to hear him playing with his sister or
    his best friend. I&apos;m amazed it&apos;s captured his attention for so long; well over two years. Both my kids loved it when
    Scott Davis taught a &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; class on
    &lt;a href=&quot;//raibledesigns.com/rd/entry/first_devoxx4kids_in_denver_a&quot;&gt;Server-side Minecraft programming&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;We haven&apos;t had any &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; workshops this year,
    but that&apos;s about to change. First of all, I&apos;m happy to announce we&apos;re working with the
    &lt;a href=&quot;http://rmoug.com&quot;&gt;Rocky Mountain Oracle Users Group&lt;/a&gt; to have a
    &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/messages/boards/thread/49148693&quot;&gt;Day of Family Coding Fun at
        Elitch Gardens&lt;/a&gt; this Friday. There will be a workshop on Raspberry Pi and I&apos;ll be doing a demonstration
    on how to setup a Minecraft Server in the cloud. Next weekend, we&apos;ll be doing a more in-depth Minecraft Workshop at Devoxx4Kids Denver. If you&apos;d like to join us &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/events/224431746/&quot;&gt;please RSVP&lt;/a&gt;.

Since having your own Minecraft Server is a fun thing for kids,
    and useful for parents, I figured I&apos;d document how to do it here.&lt;/p&gt;

&lt;p&gt;
    First of all, let me say that I&apos;m standing on the shoulders of giants. When I first setup a Minecraft server, I used
    Ben Garton&apos;s &lt;a href=&quot;http://www.blog.gartonhill.com/setting-up-a-free-minecraft-server-in-the-cloud-part-1/&quot;&gt;
    Setting up a free Minecraft server in the cloud - part 1&lt;/a&gt; as well as
    &lt;a href=&quot;http://www.blog.gartonhill.com/setting-up-a-free-minecraft-server-in-the-cloud-part-2/&quot;&gt;
        part 2&lt;/a&gt; and &lt;a href=&quot;http://www.blog.gartonhill.com/upgrading-your-minecraft-ec2-cloud-server-and-save-money/&quot;&gt;3&lt;/a&gt;.
    I also found Aaron Bell&apos;s &lt;a href=&quot;http://www.aaronbell.com/how-to-run-a-minecraft-server-on-amazon-ec2/&quot;&gt;
    How to run a Minecraft server on Amazon EC2&lt;/a&gt; to be quite useful.
&lt;/p&gt;
&lt;p&gt;Without further ado, here&apos;s you how to setup a Minecraft Server on Amazon Web Services (AWS) in 2015!&lt;/p&gt;
&lt;div id=&quot;step1&quot;&gt;
    &lt;p&gt;&lt;strong&gt;Step 1: Signup for AWS and Create an Instance&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
        &lt;li&gt;Navigate to &lt;a href=&quot;http://aws.amazon.com/&quot;&gt;http://aws.amazon.com/&lt;/a&gt;,
            and click &quot;Sign In to the Console&quot; using your Amazon account. If you don&apos;t have an AWS account, you&apos;ll
            need to create one and specify a payment method.
        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;
            Click on &lt;strong&gt;EC2&lt;/strong&gt; in the top left corner, then &lt;strong&gt;Launch Instance&lt;/strong&gt; on the following
            screen.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm4.staticflickr.com/3682/20289881856_1b99053e79_c.jpg&quot; title=&quot;AWS Console&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20289881856/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm4.staticflickr.com/3682/20289881856_1b99053e79.jpg&quot; width=&quot;500&quot; height=&quot;377&quot; alt=&quot;AWS Console&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;
            &lt;p&gt;Select &lt;strong&gt;Amazon Linux&lt;/strong&gt;.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/332/20307710822_569d21cc0e_c.jpg&quot; title=&quot;Select Amazon Linux&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20307710822/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/332/20307710822_569d21cc0e.jpg&quot; width=&quot;500&quot; height=&quot;377&quot; alt=&quot;Select Amazon Linux&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;
            &lt;p&gt;Choose an Instance Type of &lt;strong&gt;t2.micro&lt;/strong&gt;, then click &lt;strong&gt;Next: Configure Instance
                Details&lt;/strong&gt;.
            &lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/468/20316123115_e69046be65_c.jpg&quot; title=&quot;Instance Type&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20316123115/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/468/20316123115_e69046be65.jpg&quot; width=&quot;500&quot; height=&quot;364&quot; alt=&quot;Instance Type&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;You don&apos;t need to configure anything on the next screen, so click &lt;strong&gt;Next: Add Storage&lt;/strong&gt;.
            Storage
            settings don&apos;t need to be changed either, so click &lt;strong&gt;Next: Tag Instance&lt;/strong&gt;.
        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;On the Tag Instance screen, assign a name to your server. I chose &quot;Minecraft Server&quot;. Click
            &lt;strong&gt;Next: Configure Security Group&lt;/strong&gt; to continue.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm4.staticflickr.com/3776/20307710592_de1e0d32a6_c.jpg&quot; title=&quot;Tag Instance&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20307710592/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm4.staticflickr.com/3776/20307710592_de1e0d32a6.jpg&quot; width=&quot;500&quot; height=&quot;280&quot; alt=&quot;Tag Instance&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;This step is important because it opens a Minecraft port that allows players to connect. Create a new
            security
            group with name &lt;strong&gt;Minecraft&lt;/strong&gt; and description &lt;strong&gt;Ports for Minecraft&lt;/strong&gt;. Click
            &lt;strong&gt;
                Add Rule&lt;/strong&gt;, specify &lt;strong&gt;Custom TCP Rule&lt;/strong&gt;, Port Range &lt;strong&gt;25565&lt;/strong&gt; and
            Source
            &lt;strong&gt;Anywhere&lt;/strong&gt;. Note that you can also lock down your instance so only certain IPs can connect.
            Click
            &lt;strong&gt;Review and Launch&lt;/strong&gt; to continue.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/256/20289881646_ec758dec01_c.jpg&quot; title=&quot;Security Group Configuration&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20289881646/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/256/20289881646_ec758dec01.jpg&quot; width=&quot;500&quot; height=&quot;365&quot; alt=&quot;Security Group Configuration&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;You&apos;ll be warned about allowing any IP address on the following screen. Click &lt;strong&gt;Launch&lt;/strong&gt; to
            continue.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/405/20289882136_a894265e8d_c.jpg&quot; title=&quot;Review Instance&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20289882136/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/405/20289882136_a894265e8d.jpg&quot; width=&quot;500&quot; height=&quot;365&quot; alt=&quot;Review Instance&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;

        &lt;/li&gt;
        &lt;li&gt;
            &lt;p&gt;You&apos;ll be prompted to create a new keypair. I chose &quot;minecraft&quot; for my key pair name. Click &lt;strong&gt;Download&lt;/strong&gt; to download your key pair.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/338/20128101798_aec2deac2d_c.jpg&quot; title=&quot;Create Key Pair&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20128101798/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/338/20128101798_aec2deac2d.jpg&quot; width=&quot;500&quot; height=&quot;365&quot; alt=&quot;Create Key Pair&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
            &lt;p&gt;I executed the following commands to move this key to a location on my hard drive and locked it down so
                the
                public can&apos;t view it.&lt;/p&gt;
&lt;pre class=&quot;brush: bash; gutter: false&quot;&gt;mv ~/Downloads/minecraft.pem ~/.ssh/.
chmod 400 .ssh/minecraft.pem
&lt;/pre&gt;
            &lt;p&gt;Click &lt;strong&gt;Launch Instances&lt;/strong&gt; to continue. You should see something like the following screen.
            &lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/439/20128088610_1512c30ddf_c.jpg&quot; title=&quot;Launch Status&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20128088610/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/439/20128088610_1512c30ddf.jpg&quot; width=&quot;500&quot; height=&quot;385&quot; alt=&quot;Launch Status&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;
            &lt;p&gt;Click on the instance name and copy/paste the Public IP. You&apos;ll want to write down this IP address since
                you&apos;ll need it later, and you&apos;ll also want to send it to friends so they can join.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/385/20322138311_7f65ca260c_c.jpg&quot; title=&quot;Public IP Address&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20322138311/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/385/20322138311_7f65ca260c.jpg&quot; width=&quot;500&quot; height=&quot;385&quot; alt=&quot;Public IP Address&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
            &lt;p&gt;Execute the following command with this IP to connect
                to your server. Type &lt;strong&gt;yes&lt;/strong&gt; when prompted to continue connecting.&lt;/p&gt;
&lt;pre class=&quot;brush: bash; gutter: false&quot;&gt;ssh -i .ssh/minecraft.pem ec2-user@your-public-ip
&lt;/pre&gt;
            &lt;p&gt;You&apos;ll likely be told there&apos;s a number of updates to install; run &lt;strong&gt;sudo yum update&lt;/strong&gt; to
                install them.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/257/20316121795_fd2a052dc9_c.jpg&quot; title=&quot;SSH&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20316121795/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/257/20316121795_fd2a052dc9.jpg&quot; width=&quot;500&quot; height=&quot;210&quot; alt=&quot;SSH&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;

&lt;div id=&quot;step2&quot;&gt;
    &lt;p&gt;&lt;strong&gt;Step 2: Install a Minecraft Server&lt;/strong&gt;&lt;/p&gt;
    &lt;ol&gt;
        &lt;li&gt;&lt;p&gt;From your Linux prompt, type the following commands to create a folder and copy the latest version* of
            the
            Minecraft server into it.&lt;/p&gt;
&lt;pre class=&quot;brush: bash; gutter: false&quot;&gt;mkdir MinecraftServer
cd MinecraftServer
wget https://s3.amazonaws.com/Minecraft.Download/versions/1.8.8/minecraft_server.1.8.8.jar
&lt;/pre&gt;
            &lt;p&gt;* Check &lt;a href=&quot;http://www.minecraft.net/download&quot;&gt;http://www.minecraft.net/download&lt;/a&gt; to find out the
                latest
                version number and change the above command appropriately.&lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;Create a symlink to the downloaded JAR so you can keep the same launch command, regardless of version.
&lt;pre class=&quot;brush: bash; gutter: false&quot;&gt;ln -s minecraft_server.1.8.8.jar minecraft_server.jar
&lt;/pre&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;Launch your server using the following command:&lt;/p&gt;
&lt;pre class=&quot;brush: bash; gutter: false&quot;&gt;sudo java -Xmx1G -Xms1G -jar minecraft_server.jar nogui
&lt;/pre&gt;
            &lt;p&gt;You should see ouput like the screenshot below, prompting you to agree to the EULA.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/510/20322137791_1ba0d416a0_c.jpg&quot; title=&quot;EULA Warning&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20322137791/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/510/20322137791_1ba0d416a0.jpg&quot; width=&quot;500&quot; height=&quot;167&quot; alt=&quot;EULA Warning&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;

        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;Edit &lt;code&gt;eula.txt&lt;/code&gt; by running &lt;strong&gt;sudo vi eula.txt&lt;/strong&gt; and changing &quot;eula=false&quot; to
            &quot;eula=true&quot;.
            If you&apos;re unfamiliar with vi, the following instructions will help you edit this file after you&apos;ve opened
            it.&lt;/p&gt;
            &lt;ul&gt;
                &lt;li&gt;Type &quot;/false&quot; followed by [Return]&lt;/li&gt;
                &lt;li&gt;Type &quot;xxxxx&quot; to delete &quot;false&quot;&lt;/li&gt;
                &lt;li&gt;[Shift+A] to go to the end of the line&lt;/li&gt;
                &lt;li&gt;Type &quot;true&quot;&lt;/li&gt;
                &lt;li&gt;Hit [Esc], then type &quot;:wq&quot; to save the file&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;Run the &lt;strong&gt;sudo java&lt;/strong&gt; command again (hitting up arrow twice will retrieve this command from
            your history). This time,
            the server should start, albeit with a few warnings about missing files.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/482/20307710482_c0edde8f8b_b.jpg&quot; title=&quot;Server launches successfully!&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20307710482/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/482/20307710482_c0edde8f8b_z.jpg&quot; width=&quot;511&quot; height=&quot;640&quot; alt=&quot;Server launches successfully!&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
    &lt;/ol&gt;
&lt;/div&gt;

&lt;div id=&quot;step3&quot;&gt;&lt;strong&gt;Step 3: Connect to Your Server and Play!&lt;/strong&gt;

    &lt;p&gt;This is the easiest step of all, and possibly one that your kids are familiar with.&lt;/p&gt;
    &lt;ol&gt;
        &lt;li&gt;&lt;p&gt;Launch Minecraft. Make sure the profile uses the same version as your server. Copy the IP address
            of your server to your clipboard and click &lt;strong&gt;Play&lt;/strong&gt;.&lt;/p&gt;

            &lt;p style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm1.staticflickr.com/474/20128098228_d1b60e6fc5_c.jpg&quot; title=&quot;Minecraft Launcher&quot; rel=&quot;lightbox[minecraftserveraws]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/20128098228/in/album-72157654487678494/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/474/20128098228_d1b60e6fc5.jpg&quot; width=&quot;500&quot; height=&quot;342&quot; alt=&quot;Minecraft Launcher&quot;&gt;&lt;/a&gt;

            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Multiplayer&lt;/strong&gt;, followed by &lt;strong&gt;Add Server&lt;/strong&gt;. Give it a name you&apos;ll
            remember
            and paste the IP address into the &lt;strong&gt;Server Address&lt;/strong&gt;. Click &lt;strong&gt;Done&lt;/strong&gt;, followed by
            &lt;strong&gt;Join Server&lt;/strong&gt;.&lt;/p&gt;

            &lt;p&gt;Note: if you want to toggle fullscreen mode, you can do this with F11. If you don&apos;t have F11 on your
                keyboard,
                go to Options &amp;gt; Video Settings and click &lt;strong&gt;Fullscreen&lt;/strong&gt; to toggle it.
            &lt;/p&gt;
        &lt;/li&gt;

    &lt;/ol&gt;
    &lt;p&gt;Congratulations! You just setup a Minecraft server in the cloud. Now you can send the IP address to friends and
        invite them to play!
    &lt;/p&gt;

    &lt;p&gt;
        One of the issues that this setup has is that your server will shut down as soon as you logout of your SSH
        session.
        You can run the Minecraft server and leave it running using the following command.&lt;/p&gt;
&lt;pre class=&quot;brush: bash; gutter: false&quot;&gt;nohup sudo java -Xmx1G -Xms1G -jar minecraft_server.jar nogui &amp;gt; minecraft.log 2&amp;gt;&amp;amp;1 &amp;amp;
&lt;/pre&gt;
    &lt;p&gt;
        This will keep everything running in the background, even after you logout. It also spits out a process id you
        can use to stop the server.
    &lt;/p&gt;&lt;pre class=&quot;brush: bash; gutter: false&quot;&gt;kill -9 processId&lt;/pre&gt;
    &lt;p&gt;If you lose this number, you can find the process id by running &lt;code&gt;ps aux | grep java&lt;/code&gt;. You can also
        shutdown all Java processes with
        &lt;code&gt;sudo killall java&lt;/code&gt;.
    &lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;If you have any tips or tricks for improving this tutorial, I&apos;d love to hear about them in the comments.&lt;/p&gt;

&lt;p id=&quot;next-steps&quot;&gt;&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;br&gt;
    When I first setup a Minecraft server on AWS earlier this year, I never bothered to shut it down. The result was it
    cost me around $15 the first month. From then on, I simply started it whenever my son asked me to, then shut it down when he went to bed.
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;http://www.blog.gartonhill.com/upgrading-your-minecraft-ec2-cloud-server-and-save-money/&quot;&gt;Ben Garton has a good tutorial&lt;/a&gt; on
    how to setup a cron job to shutdown the instance at midnight. He also shows how to start the server using a Desktop shortcut on Windows. If
    you&apos;ve done something similar for Mac/Linux, I&apos;d love to hear about it. Allowing your kid to fire up their own Minecraft server on demand (and
    shutting it down automatically) seems to be the most economical way to run things.
&lt;/p&gt;

&lt;p id=&quot;devoxx4kids&quot;&gt;&lt;strong&gt;Devoxx4Kids Denver Workshop Next Week&lt;/strong&gt;&lt;br&gt;
    If you&apos;d like to learn more about Minecraft, developing mods and setting up your own server, you should join us at
    the &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/events/224431746/&quot;&gt;Devoxx4Kids Denver Meetup next week&lt;/a&gt; (Saturday, August 15th at 9:30am). We&apos;ll be tuning in live to
    Arun and Aditya Gupta&apos;s vJUG
    session
    on &lt;a href=&quot;http://www.meetup.com/virtualJUG/events/224283882/&quot;&gt;Getting Started with Minecraft Modding&lt;/a&gt;. In the
    second hour,
    I&apos;ll show how to setup your own server on AWS and configure it to have the mods we&apos;ve developed while watching the
    vJUG session. Thanks to our venue sponsor &lt;a href=&quot;http://www.tuliva.com/&quot;&gt;Tuliva&lt;/a&gt;, you don&apos;t even need to bring
    a machine! They have computers available for the kids to use and a sweet location too. &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/events/224431746/&quot;&gt;RSVP today&lt;/a&gt;!
&lt;/p&gt;

&lt;p&gt;Related: It seems you can also run a Minecraft server on Heroku using &lt;a href=&quot;https://github.com/jacobwgillespie/heroku-minecraft&quot;&gt;heroku-minecraft&lt;/a&gt;.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/best_practices_for_using_foundation</id>
        <title type="html">Best Practices for using Foundation with AngularJS</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/best_practices_for_using_foundation"/>
        <published>2015-02-05T09:21:50-07:00</published>
        <updated>2015-02-05T15:21:50-07:00</updated> 
        <category term="/The Web" label="The Web" />
        <category term="foundation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="css" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angularjs" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
&lt;a href=&quot;http://www.htmlxprs.com/post/46/what-you-need-to-know-about-zurb-foundation-for-apps&quot;&gt;&lt;img src=&quot;/repository/images/foundation-for-apps-angularjs.jpg&quot; width=&quot;200&quot; alt=&quot;What You Need To Know About Zurb Foundation for Apps&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;
I was recently tasked with doing some research to figure out the best way to use &lt;a
    href=&quot;http://foundation.zurb.com/&quot;&gt;Foundation&lt;/a&gt; with &lt;a href=&quot;https://angularjs.org/&quot;&gt;AngularJS&lt;/a&gt;. Goals for
    this research included:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Identify use cases of Foundation for Sites vs Foundation for Apps and recommend when to use each.&lt;/li&gt;
    &lt;li&gt;Look at pros and cons of using AngularJS with Foundation for Sites.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&apos;m writing this blog post to get feedback from you, fellow web developers, on your experience with Foundation. Have
    you tried using Foundation for Sites with AngularJS? If so, did you experience any pain?&lt;/p&gt;
&lt;p&gt;From what I can tell, it looks like Foundation for Apps (FA) was created because folks had issues making AngularJS
    and Foundation 5 play nicely together. &lt;a href=&quot;http://zurb.com/article/1312/the-next-foundation&quot;&gt;The Next
        Foundation&lt;/a&gt; explains why FA was created. Reddit&apos;s web_design zone has quite a few &lt;a
        href=&quot;http://www.reddit.com/r/web_design/comments/26btc4/zurb_the_next_foundation_foundation_built_with/&quot;&gt;comments
        related to this article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From there, I found a few ZURB blog posts that describe FA&apos;s three main advantages over Foundation for Sites
    (FS):&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;http://zurb.com/article/1333/foundation-a-new-grid&quot;&gt;A New Grid&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://zurb.com/article/1340/foundation-for-apps-motion-ui-is-the-new-&quot;&gt;Motion UI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://zurb.com/article/1345/design-amazing-single-page-apps-with-the-&quot;&gt;AngularJS Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://foundation.zurb.com/forum/posts/21134-foundation-5-and-foundation-apps-differences&quot;&gt;This thread
    on the Foundation forums&lt;/a&gt; seems to indicate that FA would be good for developing applications while FS would be
    good for an intranet built on WordPress (since it&apos;s more of a website than a webapp). &lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
&lt;a href=&quot;http://www.htmlxprs.com/post/46/what-you-need-to-know-about-zurb-foundation-for-apps&quot;&gt;&lt;img src=&quot;/repository/images/foundation-for-apps-angularjs.jpg&quot; width=&quot;200&quot; alt=&quot;What You Need To Know About Zurb Foundation for Apps&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;
I was recently tasked with doing some research to figure out the best way to use &lt;a
    href=&quot;http://foundation.zurb.com/&quot;&gt;Foundation&lt;/a&gt; with &lt;a href=&quot;https://angularjs.org/&quot;&gt;AngularJS&lt;/a&gt;. Goals for
    this research included:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Identify use cases of Foundation for Sites vs Foundation for Apps and recommend when to use each.&lt;/li&gt;
    &lt;li&gt;Look at pros and cons of using AngularJS with Foundation for Sites.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&apos;m writing this blog post to get feedback from you, fellow web developers, on your experience with Foundation. Have
    you tried using Foundation for Sites with AngularJS? If so, did you experience any pain?&lt;/p&gt;
&lt;p&gt;From what I can tell, it looks like Foundation for Apps (FA) was created because folks had issues making AngularJS
    and Foundation 5 play nicely together. &lt;a href=&quot;http://zurb.com/article/1312/the-next-foundation&quot;&gt;The Next
        Foundation&lt;/a&gt; explains why FA was created. Reddit&apos;s web_design zone has quite a few &lt;a
        href=&quot;http://www.reddit.com/r/web_design/comments/26btc4/zurb_the_next_foundation_foundation_built_with/&quot;&gt;comments
        related to this article&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From there, I found a few ZURB blog posts that describe FA&apos;s three main advantages over Foundation for Sites
    (FS):&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;http://zurb.com/article/1333/foundation-a-new-grid&quot;&gt;A New Grid&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://zurb.com/article/1340/foundation-for-apps-motion-ui-is-the-new-&quot;&gt;Motion UI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://zurb.com/article/1345/design-amazing-single-page-apps-with-the-&quot;&gt;AngularJS Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://foundation.zurb.com/forum/posts/21134-foundation-5-and-foundation-apps-differences&quot;&gt;This thread
    on the Foundation forums&lt;/a&gt; seems to indicate that FA would be good for developing applications while FS would be
    good for an intranet built on WordPress (since it&apos;s more of a website than a webapp). &lt;/p&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
    Foundation for apps is for making responsive web apps vs responsive web sites. The difference is in the structure
    of an app. They usually take up the screen and instead of the page scrolling, content in the app scrolls. Apps
    employ stateful views, so a view can change without reloading the app, creating a better user experience.
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;http://foundation.zurb.com/forum/posts/16594-foundation-for-sites-to-foundation-for-apps-preparation&quot;&gt;This
    other thread&lt;/a&gt; backs up that notion.&lt;/p&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;Foundation for Apps will be an additional version of Foundation - not a replacement.&lt;/p&gt;

    &lt;p&gt;This means Foundation for Sites will continue on along side the new Apps version. Ink will be Foundation for
        Emails.&lt;/p&gt;

    &lt;p&gt;Having said that, choosing which one to use simply depends on the type of site you need to build. The Apps grid
        is better suited to make web apps or apps that can be wrapped for native.&lt;/p&gt;

    &lt;p&gt;The syntax is different (on purpose) and we are taking great care to make it easy to get.&lt;/p&gt;

    &lt;p style=&quot;margin-bottom: 0&quot;&gt;You should continue using Foundation for sites as long as you need traditional scrolling websites. We don&apos;t
        expect people to convert an existing site to an app unless they need to re-do their site anyways.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I also found &lt;a href=&quot;https://github.com/pineconellc/angular-foundation&quot;&gt;Angular Foundation&lt;/a&gt; which is a &quot;a port of
    the AngularUI team&apos;s excellent angular-bootstrap project for use in the Foundation framework&quot;.&lt;/p&gt;

&lt;p&gt;The problem I see with using Angular Foundation over Foundation for Apps is that it&apos;s maintained by folks that aren&apos;t
    developing Foundation. It&apos;s more of a &quot;here&apos;s some Bootstrap widgets as Foundation widgets&quot;.&lt;/p&gt;

&lt;p&gt;It could also come down to IE support. Angular Foundation &lt;a href=&quot;http://foundation.zurb.com/docs/compatibility.html&quot;&gt;supports IE9+&lt;/a&gt; while Foundation for Apps is IE10+. From &lt;a
    href=&quot;http://www.htmlxprs.com/post/46/what-you-need-to-know-about-zurb-foundation-for-apps&quot;&gt;What You Need To Know
    About Zurb Foundation for Apps&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;Foundation for Apps works with all of the modern browsers including Internet Explorer 10. It doesn&apos;t support IE9
        and other older browsers because of the new CSS3 features and issues of AngularJS in older browsers. Below is
        the snapshot of the compatibility list grabbed from Zurb website.&lt;/p&gt;

    &lt;p style=&quot;margin-bottom: 0&quot;&gt;&lt;img src=&quot;//raibledesigns.com/repository/images/compatibility-foundation-for-apps.jpg&quot; alt=&quot;Foundation for Apps compatibility&quot; width=&quot;100%&quot;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wrote this article in order to publish my research findings about Foundation for Apps vs. Foundation for Sites. It
seems like the natural thing to do is to use FA for any webapps we create and FS for any websites (e.g. WordPress sites). Do you agree with these findings?
Any other &lt;em&gt;recommended practices&lt;/em&gt; for integrating Foundation with AngularJS?
&lt;/p&gt;
&lt;p class=&quot;alert alert-info&quot;&gt;&lt;strong&gt;Sidenote&lt;/strong&gt;: For the project I&apos;m working on, we haven&apos;t chose a backend framework yet. We&apos;ve chosen &lt;a href=&quot;https://www.heroku.com/&quot;&gt;Heroku&lt;/a&gt; as our deployment
    platform, so there&apos;s a plethora of languages and frameworks to choose from.
    It&apos;s too bad &lt;a href=&quot;https://github.com/jhipster/generator-jhipster/issues/1039&quot;&gt;JHipster doesn&apos;t support
    Foundation&lt;/a&gt;. I could probably sell the team on Java + Spring Boot pretty easily if it did.&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/appfuse_reduced</id>
        <title type="html">AppFuse, Reduced</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/appfuse_reduced"/>
        <published>2014-12-16T06:03:31-07:00</published>
        <updated>2014-12-17T16:39:14-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maintenance" scheme="http://roller.apache.org/ns/tags/" />
        <category term="lessxml" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
In November, I had some time off between clients. To occupy my time, I exercised my body and brain a bit. I spent a couple hours a day exercising and a few hours a day working on
&lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt;. AppFuse isn&apos;t used to start projects nearly as much as it once was. This makes sense since there&apos;s been a ton of innovation on the JVM and there&apos;s lots of
&lt;em&gt;get-started-quickly&lt;/em&gt; frameworks now. Among my favorites are Spring Boot, JHipster, Grails and Play.
&lt;p&gt;
    You can see that AppFuse&apos;s community activity has decreased quite a bit over the years by looking at its mailing list
    traffic.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://appfuse.markmail.org/&quot;
       title=&quot;AppFuse Mailing List Traffic, December 2014 by Matt Raible, on Flickr&quot;&gt;&lt;img
        src=&quot;https://farm8.staticflickr.com/7525/15825430580_0531875e59.jpg&quot; width=&quot;500&quot; 
        alt=&quot;AppFuse Mailing List Traffic, December 2014&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Even though there&apos;s not a lot of users talking on the mailing list, it still seems to get quite a few downloads from
    Maven Central.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://www.flickr.com/photos/mraible/16011987392&quot;
       title=&quot;AppFuse Maven Central Stats, November 2014 by Matt Raible, on Flickr&quot;&gt;&lt;img
        src=&quot;https://farm8.staticflickr.com/7534/16011987392_442236433b.jpg&quot; width=&quot;500&quot; 
        alt=&quot;AppFuse Maven Central Stats, November 2014&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I think the biggest value that AppFuse provides now is a learning tool for those who work on it. Also, it&apos;s a good place to
    show other developers how they can evolve with open source frameworks (e.g. Spring, Hibernate, JSF, Tapestry, Struts) over several years. Showing how
    we migrated to Spring MVC Test, for example, might be useful. The upcoming move to Spring Data instead of our
    Generic DAO solution might be interesting as well. 
&lt;/p&gt;
&lt;p&gt;
    Regardless of whether AppFuse is used a lot or not, it should be easy to maintain. Over the several weeks, I made some
    opinionated changes and achieved some pretty good progress on simplifying things and making the project easier to
    maintain. The previous structure has a lot of duplicate versions, properties and plugin configurations between
    different projects. I was able to leverage Maven&apos;s inheritance model to make a number of improvements:
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
In November, I had some time off between clients. To occupy my time, I exercised my body and brain a bit. I spent a couple hours a day exercising and a few hours a day working on
&lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt;. AppFuse isn&apos;t used to start projects nearly as much as it once was. This makes sense since there&apos;s been a ton of innovation on the JVM and there&apos;s lots of
&lt;em&gt;get-started-quickly&lt;/em&gt; frameworks now. Among my favorites are Spring Boot, JHipster, Grails and Play.
&lt;p&gt;
    You can see that AppFuse&apos;s community activity has decreased quite a bit over the years by looking at its mailing list
    traffic.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://appfuse.markmail.org/&quot;
       title=&quot;AppFuse Mailing List Traffic, December 2014 by Matt Raible, on Flickr&quot;&gt;&lt;img
        src=&quot;https://farm8.staticflickr.com/7525/15825430580_0531875e59.jpg&quot; width=&quot;500&quot; 
        alt=&quot;AppFuse Mailing List Traffic, December 2014&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Even though there&apos;s not a lot of users talking on the mailing list, it still seems to get quite a few downloads from
    Maven Central.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://www.flickr.com/photos/mraible/16011987392&quot;
       title=&quot;AppFuse Maven Central Stats, November 2014 by Matt Raible, on Flickr&quot;&gt;&lt;img
        src=&quot;https://farm8.staticflickr.com/7534/16011987392_442236433b.jpg&quot; width=&quot;500&quot; 
        alt=&quot;AppFuse Maven Central Stats, November 2014&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I think the biggest value that AppFuse provides now is a learning tool for those who work on it. Also, it&apos;s a good place to
    show other developers how they can evolve with open source frameworks (e.g. Spring, Hibernate, JSF, Tapestry, Struts) over several years. Showing how
    we migrated to Spring MVC Test, for example, might be useful. The upcoming move to Spring Data instead of our
    Generic DAO solution might be interesting as well. 
&lt;/p&gt;
&lt;p&gt;
    Regardless of whether AppFuse is used a lot or not, it should be easy to maintain. Over the several weeks, I made some
    opinionated changes and achieved some pretty good progress on simplifying things and making the project easier to
    maintain. The previous structure has a lot of duplicate versions, properties and plugin configurations between
    different projects. I was able to leverage Maven&apos;s inheritance model to make a number of improvements:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Changed AppFuse&apos;s parent to be based on the &lt;a
        href=&quot;http://www.infoq.com/news/2014/07/springio-platform&quot;&gt;Spring IO Platform&lt;/a&gt;. This project
        is a dependency manager that defines version numbers for open source projects that work well with Spring.
    &lt;/li&gt;
    &lt;li&gt;Defined plugins, their versions and configurations in &lt;code&gt;&amp;lt;pluginManagement&gt;&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Defined dependencies, their versions and exclusions in &lt;code&gt;&amp;lt;dependencyManagement&gt;&lt;/code&gt;.&lt;/li&gt;
    &lt;li&gt;Simplified archetypes so new projects have minimal dependencies. For example, here&apos;s a basic project&apos;s &lt;code&gt;pom.xml&lt;/code&gt;:
    &lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&amp;gt;

    &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
    &amp;lt;groupId&amp;gt;com.company&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;springmvc-project&amp;lt;/artifactId&amp;gt;
    &amp;lt;packaging&amp;gt;war&amp;lt;/packaging&amp;gt;
    &amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;
    &amp;lt;name&amp;gt;AppFuse Spring MVC Application&amp;lt;/name&amp;gt;

    &amp;lt;parent&amp;gt;
        &amp;lt;groupId&amp;gt;org.appfuse&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;appfuse-web&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;3.5.0-SNAPSHOT&amp;lt;/version&amp;gt;
    &amp;lt;/parent&amp;gt;

    &amp;lt;build&amp;gt;
        &amp;lt;plugins&amp;gt;
            &amp;lt;plugin&amp;gt;
                &amp;lt;groupId&amp;gt;de.juplo&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;hibernate4-maven-plugin&amp;lt;/artifactId&amp;gt;
            &amp;lt;/plugin&amp;gt;
            &amp;lt;plugin&amp;gt;
                &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;dbunit-maven-plugin&amp;lt;/artifactId&amp;gt;
            &amp;lt;/plugin&amp;gt;
            &amp;lt;plugin&amp;gt;
                &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;build-helper-maven-plugin&amp;lt;/artifactId&amp;gt;
            &amp;lt;/plugin&amp;gt;
        &amp;lt;/plugins&amp;gt;
    &amp;lt;/build&amp;gt;

    &amp;lt;dependencies&amp;gt;
        &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;org.appfuse&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;appfuse-${web.framework}&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;${appfuse.version}&amp;lt;/version&amp;gt;
            &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;
        &amp;lt;/dependency&amp;gt;
    &amp;lt;/dependencies&amp;gt;

    &amp;lt;properties&amp;gt;
        &amp;lt;amp.genericCore&amp;gt;true&amp;lt;/amp.genericCore&amp;gt;
        &amp;lt;amp.fullSource&amp;gt;false&amp;lt;/amp.fullSource&amp;gt;
        &amp;lt;dao.framework&amp;gt;hibernate&amp;lt;/dao.framework&amp;gt;
        &amp;lt;db.name&amp;gt;mydatabase&amp;lt;/db.name&amp;gt;
        &amp;lt;web.framework&amp;gt;spring&amp;lt;/web.framework&amp;gt;

        &amp;lt;!-- Framework/Plugin versions --&amp;gt;
        &amp;lt;appfuse.version&amp;gt;3.5.0-SNAPSHOT&amp;lt;/appfuse.version&amp;gt;
        &amp;lt;java.version&amp;gt;1.7&amp;lt;/java.version&amp;gt;
    &amp;lt;/properties&amp;gt;

    &amp;lt;profiles&amp;gt;
        &amp;lt;profile&amp;gt;
            &amp;lt;id&amp;gt;itest&amp;lt;/id&amp;gt;
            &amp;lt;build&amp;gt;
                &amp;lt;plugins&amp;gt;
                    &amp;lt;plugin&amp;gt;
                        &amp;lt;groupId&amp;gt;org.codehaus.cargo&amp;lt;/groupId&amp;gt;
                        &amp;lt;artifactId&amp;gt;cargo-maven2-plugin&amp;lt;/artifactId&amp;gt;
                    &amp;lt;/plugin&amp;gt;
                    &amp;lt;plugin&amp;gt;
                        &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
                        &amp;lt;artifactId&amp;gt;webtest-maven-plugin&amp;lt;/artifactId&amp;gt;
                    &amp;lt;/plugin&amp;gt;
                &amp;lt;/plugins&amp;gt;
            &amp;lt;/build&amp;gt;
        &amp;lt;/profile&amp;gt;
    &amp;lt;/profiles&amp;gt;

    &amp;lt;reporting&amp;gt;
        &amp;lt;plugins&amp;gt;
            &amp;lt;plugin&amp;gt;
                &amp;lt;groupId&amp;gt;org.codehaus.mojo&amp;lt;/groupId&amp;gt;
                &amp;lt;artifactId&amp;gt;webtest-maven-plugin&amp;lt;/artifactId&amp;gt;
            &amp;lt;/plugin&amp;gt;
        &amp;lt;/plugins&amp;gt;
    &amp;lt;/reporting&amp;gt;
&amp;lt;/project&amp;gt;
&lt;/pre&gt;
&lt;style type=&quot;text/css&quot;&gt;
    span.diffstat {
        white-space: nowrap;
        text-align: right;
        font-family: Helvetica, arial, freesans, clean, sans-serif, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;
        color: #666;
        font-weight: bold;
        font-size: 12px;
        cursor: default;
    }

    span.diffstat .lines-added, span.diffstat .lines-deleted {
        display: inline-block;
        margin-left: 3px;
        font-weight: bold;
    }
&lt;/style&gt;
&lt;p&gt;
    The pull request for these changes says it all:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/appfuse/appfuse/pull/20&quot;&gt;AppFuse&lt;/a&gt; &lt;span class=&quot;diffstat&quot;&gt;
          &lt;span class=&quot;lines-added&quot; style=&quot;color: #55a532&quot;&gt;
            &lt;span class=&quot;diffstat-icon&quot;&gt;+&lt;/span&gt;4,822
          &lt;/span&gt;
          &lt;span class=&quot;lines-deleted&quot; style=&quot;color: #bd2c00&quot;&gt;
            &lt;span class=&quot;diffstat-icon&quot;&gt;-&lt;/span&gt;14,369
          &lt;/span&gt;
        &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/appfuse/appfuse-light/pull/1&quot;&gt;AppFuse Light&lt;/a&gt; &lt;span class=&quot;diffstat&quot;&gt;
              &lt;span class=&quot;lines-added&quot; style=&quot;color: #55a532&quot;&gt;
                &lt;span class=&quot;diffstat-icon&quot;&gt;+&lt;/span&gt;776
              &lt;/span&gt;
              &lt;span class=&quot;lines-deleted&quot; style=&quot;color: #bd2c00&quot;&gt;
                &lt;span class=&quot;diffstat-icon&quot;&gt;-&lt;/span&gt;4,687
              &lt;/span&gt;

            &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&apos;s right, I was able to eliminate a good chunk of code without affecting any of AppFuse&apos;s functionality&lt;sup&gt;&lt;a
    href=&quot;http://raibledesigns.com/rd/entry/appfuse_reduced#footnote1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.
    I think we can all agree that less code == easier maintenance. This theme will continue as we work on future
    releases.
&lt;/p&gt;

&lt;p&gt;Other improvements include migrating all tests to use JUnit4, integrating Spring MVC Test, and configuring the
    surefire plugin to run tests in parallel. I also The &lt;a href=&quot;http://mojo.codehaus.org/build-helper-maven-plugin/&quot;&gt;build-helper-maven-plugin&lt;/a&gt;
    is now used to find open ports for Cargo to run and a lot of testing was done to ensure you can build/test multiple
    AppFuse-derived projects at the same time. Finally, I migrated to the &lt;a href=&quot;http://juplo.de/hibernate4-maven-plugin/&quot;&gt;hibernate4-maven-plugin&lt;/a&gt; and upgraded to Tapestry 5.4.&lt;/p&gt;

&lt;p&gt;In the next version of AppFuse, I plan to remove as
    much XML as possible - moving all of the configuration to Spring&apos;s JavaConfig. We&apos;ll also be moving to Java 8 as a
    minimum. I&apos;m even considering getting rid of all the pom.xml files in favor of another build language that requires
    less code. &lt;/p&gt;
&lt;p&gt;In other words, the upcoming 3.5 release will be the last release that supports Java 7 and uses Spring&apos;s XML for configuration. AppFuse 4.0 will strive for #NoXML.
   &lt;a href=&quot;http://appfuse.org/display/APF/Roadmap&quot;&gt;The project&apos;s roadmap&lt;/a&gt; has more details on additional
    hopes and dreams.&lt;/p&gt;

&lt;p&gt;We&apos;d love to hear your feedback on these change. Do you like the simplification theme? Are you OK with having AppFuse
    as a parent in your projects?
&lt;/p&gt;
&lt;p class=&quot;footnotes&quot; style=&quot;border-top: 1px dotted silver; padding-top: 5px; font-size: .9em&quot;&gt;
    &lt;a name=&quot;footnote1&quot;&gt;&lt;/a&gt;1. For project
    and code stats, see &lt;a href=&quot;https://www.openhub.net/p/appfuse/analyses/latest/languages_summary&quot;&gt;AppFuse on Open
    Hub&lt;/a&gt;.
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/developing_services_with_apache_camel</id>
        <title type="html">Developing Services with Apache Camel - Part I: The Inspiration</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/developing_services_with_apache_camel"/>
        <published>2014-09-23T10:58:25-06:00</published>
        <updated>2014-09-30T16:06:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="apachecamel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="camel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="soap" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="microservices" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ibmmessagebroker" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    In early May, my client asked me to work on a project migrating from IBM Message Broker 6.1 to an open source
    solution. Their reason was simple, the IBM solution was end of life and outdated. To prove how out of date it was,
    the Windows version required Windows XP to run. IBM WebSphere Message Broker
    has been replaced by &lt;a href=&quot;http://www-03.ibm.com/software/products/en/ibm-integration-bus&quot;&gt;
        IBM Integration Bus&lt;/a&gt; in recent years, but no upgrade path existed.
&lt;/p&gt;

&lt;p&gt;At first, I didn&apos;t want to do the project. I was hired as a Modern Java/UI Architect and I had enjoyed my first
    month upgrading libraries, making recommendations and doing a bit of UI performance work. I hadn&apos;t done much with
    ESBs and I enjoy front-end development a lot more than backend. It took me a couple days to realize they
    were willing to &lt;em&gt;pay me to learn&lt;/em&gt;. That&apos;s when I decided to clutch up, learn how to do it all, and get the job done.
    This article is the first in a series on what I learned during this migration project.
&lt;/p&gt;

&lt;p&gt;
    My approach for figuring out how everything worked was similar to working on any new application. I get the source
    code, install the software necessary to run it, and run it locally so I can interact with it.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
    In early May, my client asked me to work on a project migrating from IBM Message Broker 6.1 to an open source
    solution. Their reason was simple, the IBM solution was end of life and outdated. To prove how out of date it was,
    the Windows version required Windows XP to run. IBM WebSphere Message Broker
    has been replaced by &lt;a href=&quot;http://www-03.ibm.com/software/products/en/ibm-integration-bus&quot;&gt;
        IBM Integration Bus&lt;/a&gt; in recent years, but no upgrade path existed.
&lt;/p&gt;

&lt;p&gt;At first, I didn&apos;t want to do the project. I was hired as a Modern Java/UI Architect and I had enjoyed my first
    month upgrading libraries, making recommendations and doing a bit of UI performance work. I hadn&apos;t done much with
    ESBs and I enjoy front-end development a lot more than backend. It took me a couple days to realize they
    were willing to &lt;em&gt;pay me to learn&lt;/em&gt;. That&apos;s when I decided to clutch up, learn how to do it all, and get the job done.
    This article is the first in a series on what I learned during this migration project.
&lt;/p&gt;

&lt;p&gt;
    My approach for figuring out how everything worked was similar to working on any new application. I get the source
    code, install the software necessary to run it, and run it locally so I can interact with it.
&lt;/p&gt;

&lt;h3 id=&quot;installing-ibm-message-broker&quot;&gt;Installing IBM Message Broker&lt;/h3&gt;

&lt;p&gt;The hardest part about installing IBM Message Broker 6.1 was getting the bits to do so. I installed Windows XP in a
    Parallels VM on my Mac, installed Java 7 and
    started downloading the install files from my client&apos;s server. The files consisted of the following, which I used to
    install the server, WebSphere Message Broker Toolkit (Eclipse-based), and some plugins we were using.&lt;/p&gt;

&lt;p&gt;
&lt;ul&gt;
    &lt;li&gt;IBM_Broker_Install_Disks.zip&lt;/li&gt;
    &lt;li&gt;IBM_plugins.zip&lt;/li&gt;
    &lt;li&gt;IBM_Upgrade_6.1.06.zip&lt;/li&gt;
    &lt;li&gt;MessageBrokerInstallFiles.7z&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transferring these files to my laptop took &lt;i&gt;hours&lt;/i&gt; over scp. Installing and getting everything to work correctly
    took &lt;i&gt;days&lt;/i&gt;. Much of this time was spent setting up various ODBC data sources, SMTP servers and figuring out
    how to
    run a &quot;message flow test&quot; to verify things were working. Before I started working with my client&apos;s project, I read
    Magnus Palm&#233;r&apos;s &lt;a href=&quot;https://github.com/magnuspalmer/wmbtesting/wiki/Article-about-testing-WMB&quot;&gt;article about
        testing WMB&lt;/a&gt;.
    It was very helpful and I was able to run his project and its tests against my local server.
&lt;/p&gt;

&lt;h3 id=&quot;choosing-an-open-source-solution&quot;&gt;Choosing an Open Source Solution&lt;/h3&gt;

&lt;p&gt;When searching for how one might migrate from IBM Message Broker to an open source solution, I stumbled upon &lt;a
        href=&quot;https://github.com/cnaphan/osler-mb/blob/master/README.md#alternative-implementations&quot;&gt;this article&lt;/a&gt;:
&lt;/p&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;&lt;strong&gt;Use an Open Source Broker&lt;/strong&gt;&lt;br&gt;

        Refer to my report for details on Mule ESB and Fuse ESB. If I had to pick right now, I&apos;d use Fuse, as we already
        use Apache ActiveMQ and Apache CXF, so why not add another Apache-based product? Fuse also has a much higher install
        base. Mule seems perfectly acceptable, too, though. I would use the simplified routing scheme described in the
        section above and deploy either Mule or Fuse onto the same server as PFM. Mule/Fuse do not have dependencies on
        a queue manager like IBM Message Broker does, so there&apos;s less overhead. You can also re-use the XSLs from Message
        Broker.
    &lt;/p&gt;

    &lt;p style=&quot;margin-bottom: 0&quot;&gt;
        I think that if you really understood the IBM Message Broker implementation and were comfortable with Active MQ,
        SOAP, etc... you could have Mule or Fuse implemented in about 2 weeks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The last sentence inspired me to take a look at Fuse. I knew James Strachan was behind the project, so I shot him an
    email in early May:
&lt;/p&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;Hey James,
    &lt;/p&gt;
    &lt;p&gt;It&apos;s been a while - hope you&apos;re doing well. I recently started working for a client that has a ton of legacy
        frameworks and servers. They basically haven&apos;t updated anything for 10 years, since the application was originally
        created by an outsourced company. They&apos;re using Acegi 1.0 for crying out loud!
    &lt;/p&gt;&lt;p&gt;
    One of the components they have in their system is IBM Message Broker - or maybe it&apos;s called WebSphere ESB - I&apos;m not
    sure. If I succeed in getting it installed, I&apos;m hoping to somehow install the &quot;services&quot; they have configured, which
    seem to consist of .bar, .esql and .msgflow files. From what I can tell, these seem to be ESB-related, but they
    might be proprietary as well. I don&apos;t have any experience with ESBs, so I&apos;m pretty much fumbling in the dark.
&lt;/p&gt;&lt;p&gt;
    I found the following information online:
&lt;/p&gt;&lt;p&gt;
    https://github.com/cnaphan/osler-mb/blob/master/README.md#alternative-implementations
&lt;/p&gt;&lt;p&gt;
    Under Alternative Implementations:
&lt;/p&gt;&lt;p&gt;
    &amp;lt;quote&gt;&lt;br/&gt;
    Use an Open Source Broker&lt;br/&gt;
    ...&lt;br/&gt;
    &lt;strong&gt;I think that if you really understood the IBM Message Broker implementation and were comfortable with Active
        MQ, SOAP, etc... you could have Mule or Fuse implemented in about 2 weeks.&lt;/strong&gt;&lt;br/&gt;
    &amp;lt;/quote&gt;
&lt;/p&gt;&lt;p&gt;
    Emphasis of the last sentence is mine. So I&apos;m trying to make this happen and migrate from IBM Message Broker to
    Fuse. I&apos;ve downloaded JBoss Fuse 6.1,
    installed it and got it running.
&lt;/p&gt;&lt;p&gt;
    Do you know of any guides or articles about migrating from IBM Message Broker to Fuse?
&lt;/p&gt;&lt;p&gt;
    Thanks,
&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0&quot;&gt;
    Matt&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;James took a couple days to reply, but when he did it was packed with the advice I was hoping for.&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;
        I&apos;ll ask around to see. TBH the easiest thing really is to just start using Apache Camel for this kinda stuff; its a
        simple Java library that you can use in any application server. Then make sure you use the hawtio console (which
        lets you view/edit/trace/debug camel routes in your browser via a nice HTML5 / AngularJS application).
    &lt;a href=&quot;http://hawt.io/&quot;&gt;http://hawt.io/&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
    JBoss Fuse 6.1 is cool and all though; its based on OSGi which some folks love and some hate. The class loader /
    application server doesn&apos;t really matter to Camel though; use whatever you want (tomcat / jetty / wildfly / karaf /
    stand alone java applications etc).
&lt;/p&gt;&lt;p&gt;
    Fuse 6.1 is based on a bunch of apache projects plus an upstream open source project called &apos;fabric8&apos; which deals
    with provisioning, management, discovery and so forth (i.e. scaling 1 camel route in 1 JVM to many JVMs etc).
    &lt;a href=&quot;http://fabric8.io/&quot;&gt;http://fabric8.io/&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
    The 1.1.x version of fabric8 supports a &quot;Java Container&quot;; i.e. a static flat classpath. For folks who&apos;ve not done
    OSGi before (or folks who hate OSGi) I kinda recommend folks not start using OSGi yet - but just start with camel;
    otherwise it can seem like too much to learn and the OSGi class loading / metadata stuff can kinda get in the way
    and slow you down. I did a little demo &amp; blog about using 1.1.0.Beta5 of fabric8 (1.1.x of fabric8 will make it into
    a future JBoss Fuse product release).
    &lt;a href=&quot;http://macstrac.blogspot.co.uk/2014/05/micro-services-with-fabric8.html&quot;&gt;http://macstrac.blogspot.co.uk/2014/05/micro-services-with-fabric8.html&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
    TL;DR; - play with Apache Camel, it&apos;ll solve easily all your integration needs; its got a much bigger &amp; more active
    community than Mule and unlike Mule - its all open source; there&apos;s no locked down, non-open source
    connectors/magic/tools or proprietary software included. Once you&apos;ve got your build &amp; tests working fine; ponder
    which kinda container you wanna use in production (an app server or micro services) - it doesn&apos;t matter too much
    which one. We&apos;re working hard on making all our production/testing management/monitoring/diagnostics/debugging
    tooling work on all containers/app servers anyway (stand alone Java processes via the Java Container, Docker, OSGI
    (via Karaf like Fuse 6.1), Tomcat, TomEE and Wildfly).
&lt;/p&gt;&lt;p&gt;
    Though if you need 24x7 production support like now, definitely use the JBoss Fuse 6.1 distro &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;)&quot; title=&quot;;)&quot; /&gt; If you can wait
    until later in the year for production support; I&apos;d stick with the fabric8 1.1.x stuff for Java Containers; its
    simpler &amp; more agile for you go get things sorted.
&lt;/p&gt;&lt;p&gt;
    Here&apos;s a little demo of the UI tooling btw
    &lt;a href=&quot;https://vimeo.com/album/2635012/video/84674508&quot;&gt;https://vimeo.com/album/2635012/video/84674508&lt;/a&gt;
&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0&quot;&gt;
    It&apos;s using the Fuse distro in the demo; but really the hawtio console is doing all the heavy lifting &amp; is available
    in any JVM thats got a jolokia agent running (and you can use the hawtio Chrome Plugin too). It hopefully will give
    you a feel for the UI tooling working with camel routes; debugging/tracing them, grokking their metrics and stuff.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After reading James&apos; email, I forwarded it to my client with my recommendation that we start with &lt;a href=&quot;http://camel.apache.org&quot;&gt;Apache Camel&lt;/a&gt;. He
    agreed it was a good approach and I went to work.&lt;/p&gt;

&lt;h3 id=&quot;dev-strategy&quot;&gt;Development Strategy&lt;/h3&gt;
&lt;p&gt;
    On May 21st, I subscribed to the Apache Camel users mailing list and posted &lt;a
        href=&quot;http://camel.465427.n5.nabble.com/Email-Error-on-Route-Exception-td5751479.html&quot;&gt;my first question&lt;/a&gt; the
    next day. My development strategy was the following:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Write an integration test against the existing service.&lt;/li&gt;
    &lt;li&gt;Implement the service with Camel, writing unit tests as I progressed.&lt;/li&gt;
    &lt;li&gt;Copy the logic from step 1&apos;s integration test and use it for the new service&apos;s integration tests.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I created the project with a &lt;a href=&quot;http://camel.apache.org/camel-maven-archetypes.html&quot;&gt;Camel Archetype&lt;/a&gt; and
    used Java 7 as the minimum JDK. I decided I wanted no XML in the project (aside from pom.xml) and that I&apos;d use Camel&apos;s
    &lt;a href=&quot;http://camel.apache.org/java-dsl.html&quot;&gt;Java DSL&lt;/a&gt; to develop my routes.
&lt;/p&gt;
&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;
&lt;p&gt;
    When I first started migrating from IBM Message Broker to an open source solution, I was a bit overwhelmed with the seemingly
    daunting task. I quickly discovered that Apache Camel was a good replacement and started developing my first route.
    It took me a couple days to get things working, but I learned a lot in the process - especially around testing. In the &lt;a href=&quot;http://raibledesigns.com/rd/entry/developing_services_with_apache_camel1&quot;&gt;next article&lt;/a&gt;, I&apos;ll
    talk about how I wrote tests, mocked 3rd party dependencies and configured everything to run in Jenkins. Stay tuned!
&lt;/p&gt;
&lt;p&gt;Related: I &lt;a href=&quot;http://raibledesigns.com/rd/entry/taking_apache_camel_for_a&quot;&gt;first learned about Apache Camel from Bruce
    Snyder in 2008&lt;/a&gt; at Colorado Software Summit.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/why_i_prefer_intellij_idea</id>
        <title type="html">Why I prefer IntelliJ IDEA over Eclipse</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/why_i_prefer_intellij_idea"/>
        <published>2014-07-21T13:33:55-06:00</published>
        <updated>2014-11-06T20:03:50-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webdevelopment" scheme="http://roller.apache.org/ns/tags/" />
        <category term="intellij" scheme="http://roller.apache.org/ns/tags/" />
        <category term="idea" scheme="http://roller.apache.org/ns/tags/" />
        <category term="eclipse" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Over the last couple months, I&apos;ve received a few emails asking why I prefer &lt;a href=&quot;http://www.jetbrains.com/idea/&quot;&gt;IntelliJ IDEA&lt;/a&gt; over &lt;a href=&quot;https://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt;. They usually go something like this:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
I keep seeing you recommending IntelliJ. I keep trying it intermittently with using Eclipse, but I feel like I&apos;m missing something obvious that makes so many people think it&apos;s better. 
Granted having the usual plugins incorporated is nice, but other things like the build process and debugger sometimes seems a step back from Eclipse. Could you please blog a &apos;10 reasons why I love IntelliJ&apos; or point me to something that would clue me in?
&lt;/p&gt;
&lt;p&gt;
I grew to love IntelliJ for a few reasons. It all started in 2006 when I decided to migrate &lt;a href=&quot;http://appfuse.org&quot;&gt;AppFuse&lt;/a&gt; from Ant to Maven. Before that, I was a huge Eclipse fan (2002 - 2006). Before Eclipse, I used HomeSite, an HTML Editor to write all my Java code (1999-2002). Eclipse was the first IDE that didn&apos;t hog all my system&apos;s memory and was pleasant to work with.
&lt;/p&gt;
&lt;p&gt;
The reason I started using IntelliJ in 2006 was because of it&apos;s multi-module Maven support. Eclipse&apos;s Maven support was terrible, and m2e hasn&apos;t gotten a whole lot better in recent years AFAIK. 
&lt;/p&gt;
&lt;p&gt;
Back then, I used to think everything should be built and run from the command line. A couple years later, I realized it was better to run tests and debug from an IDE. Now I&apos;m more concerned with the ability to run tests and debug in an IDE than I am from the build system.
&lt;/p&gt;
&lt;p&gt;
In 2009, I started doing a lot more front-end work: writing HTML, CSS and JavaScript. I also started digging into alternate languages for these: Jade, GWT, CoffeeScript, LESS, SASS - even Scala. I found IntelliJ&apos;s support, and plugins, to be outstanding for these languages and really enjoyed how it would tell me I had invalid JavaScript, HTML and CSS. 
&lt;/p&gt;
&lt;p&gt;
My original passion in software was HTML and JavaScript and I found that hasn&apos;t changed in the last 15 years. AFAIK, Eclipse still has terrible web tools support; it excels at Java (and possibly C++ support). Even today, I write most of my HTML code (&lt;a href=&quot;http://www.infoq.com/author/Matt-Raible&quot;&gt;for InfoQ&lt;/a&gt; and this blog) in IntelliJ.
&lt;/p&gt;
&lt;p&gt;
In reality, it probably doesn&apos;t matter which IDE you use, as long as you&apos;re productive with it. Once you learn one IDE well, the way others do things will likely seem backwards. I&apos;m so familiar with debugging in IntelliJ, that when I tried to use Eclipse&apos;s debugger a few weeks ago, it seemed backwards to me. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;)&quot; title=&quot;;)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In a nutshell: the technologies I&apos;ve worked with have been better embraced by IntelliJ. Has this happened to you? Have certain technologies caused you to use one IDE over another?&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/rafting_the_yampa_through_dinosaur</id>
        <title type="html">Rafting the Yampa through Dinosaur National Monument</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/rafting_the_yampa_through_dinosaur"/>
        <published>2014-06-11T22:30:23-06:00</published>
        <updated>2014-06-12T15:24:41-06:00</updated> 
        <category term="/General" label="General" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="colorado" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yampa" scheme="http://roller.apache.org/ns/tags/" />
        <category term="whitewater" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rafting" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    In January, my friend Brice sent out an email to a bunch of folks asking us to apply for a river permit
    lottery. He sent us links to lotteries for &lt;a
        href=&quot;http://www.recreation.gov/permits/Dinosaur_National_Monument_Green_And_Yampa_Lottery/r/wildernessAreaDetails.do?page=detail&amp;contractCode=NRSO&amp;parkId=115139&quot;&gt;Dinosaur
    National Monument - Yampa River&lt;/a&gt; and &lt;a
        href=&quot;http://www.recreation.gov/permits/Desolation_Gray_Green_River_Permit/r/wildernessAreaDetails.do?page=detail&amp;contractCode=NRSO&amp;parkId=72440&quot;&gt;Desolation
    Gray - Green River&lt;/a&gt;. There were 10 of us on the email and we all applied for both permits. In mid-February, I
    found out &lt;em&gt;I won&lt;/em&gt; the Yampa permit and the trip planning began. This was a huge deal for some since they&apos;d
    been trying to get this permit for 10 years.
&lt;/p&gt;
&lt;p&gt;
    When we got all the details worked out, we were scheduled to launch on Saturday, May 31 and take out on Wednesday,
    June 4. Our put-in was Deerlodge Park and take-out, Split Mountain. If you&apos;re interested, you can &lt;a
        href=&quot;http://www.nps.gov/dino/planyourvisit/maps.htm&quot;&gt;see a map&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Over the next four months, many emails flew between us (33 pages if printed out) and much planning ensued. We had a
    planning BBQ, endured a permit-award-never-sent-fiasco and I tried to back out for Abbie&apos;s 5th grade continuation
    ceremony. Since I was the permit holder (and had to go), the crew convinced me it was a trip of a lifetime. We left Abbie in Denver 
    for her ceremony and took Jack with us. When we launched on May 31, we had 21
    people, 8 rafts and one inflatable kayak. Of the crew, 6 were children (aged 6 - 11).
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3878/14388414851_1b26acd760_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14388414851&quot;
       title=&quot;Eddy... Set... Go! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3878/14388414851_1b26acd760.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Eddy... Set... Go!&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
    In January, my friend Brice sent out an email to a bunch of folks asking us to apply for a river permit
    lottery. He sent us links to lotteries for &lt;a
        href=&quot;http://www.recreation.gov/permits/Dinosaur_National_Monument_Green_And_Yampa_Lottery/r/wildernessAreaDetails.do?page=detail&amp;contractCode=NRSO&amp;parkId=115139&quot;&gt;Dinosaur
    National Monument - Yampa River&lt;/a&gt; and &lt;a
        href=&quot;http://www.recreation.gov/permits/Desolation_Gray_Green_River_Permit/r/wildernessAreaDetails.do?page=detail&amp;contractCode=NRSO&amp;parkId=72440&quot;&gt;Desolation
    Gray - Green River&lt;/a&gt;. There were 10 of us on the email and we all applied for both permits. In mid-February, I
    found out &lt;em&gt;I won&lt;/em&gt; the Yampa permit and the trip planning began. This was a huge deal for some since they&apos;d
    been trying to get this permit for 10 years.
&lt;/p&gt;
&lt;p&gt;
    When we got all the details worked out, we were scheduled to launch on Saturday, May 31 and take out on Wednesday,
    June 4. Our put-in was Deerlodge Park and take-out, Split Mountain. If you&apos;re interested, you can &lt;a
        href=&quot;http://www.nps.gov/dino/planyourvisit/maps.htm&quot;&gt;see a map&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Over the next four months, many emails flew between us (33 pages if printed out) and much planning ensued. We had a
    planning BBQ, endured a permit-award-never-sent-fiasco and I tried to back out for Abbie&apos;s 5th grade continuation
    ceremony. Since I was the permit holder (and had to go), the crew convinced me it was a trip of a lifetime. We left Abbie in Denver 
    for her ceremony and took Jack with us. When we launched on May 31, we had 21
    people, 8 rafts and one inflatable kayak. Of the crew, 6 were children (aged 6 - 11).
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3878/14388414851_1b26acd760_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14388414851&quot;
       title=&quot;Eddy... Set... Go! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3878/14388414851_1b26acd760.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Eddy... Set... Go!&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p id=&quot;day1&quot;&gt;
    &lt;strong&gt;Day 1&lt;/strong&gt; (10 miles)&lt;br/&gt;
    We knew there was high water going into the trip. We later found out that June 1 may have been the highest flow
    of the season, with between 17000 and 18000&lt;abbr title=&quot;Cubic Feet per Second&quot;&gt;CFS&lt;/abbr&gt;.
    We were only on the river
    a couple hours the first day. The river was swift and we marveled that none of the rapids we went through had names.
    Our friend, The Professor, flipped in his ducky, but had no issues recovering. We camped at Teepee Hole that night.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3908/14388437231_5f8ee77ef9_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14388437231&quot;
       title=&quot;Jack riding bull! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3908/14388437231_5f8ee77ef9_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Jack riding bull!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3921/14390741834_8375a69876_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390741834&quot;
       title=&quot;Matt with our latest flag addition - love the Colorado colors by Trish McGinity, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3921/14390741834_8375a69876_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Matt with our latest flag addition - love the Colorado colors&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2900/14205217200_b99cce7078_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205217200&quot;
       title=&quot;Love the Caldes crew by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2900/14205217200_b99cce7078_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Love the Caldes crew&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2927/14390752554_964505af85_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390752554&quot;
       title=&quot;Dave and Jake&amp;#x27;s Raft by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2927/14390752554_964505af85_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Dave and Jake&amp;#x27;s Raft&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2917/14205160909_5e72f15208_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205160909&quot; title=&quot;Cheers! by Trish McGinity, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2917/14205160909_5e72f15208_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Cheers!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5274/14205360507_ed503d0558_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205360507&quot;
       title=&quot;Boy time! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5274/14205360507_ed503d0558_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Boy time!&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3923/14205362747_190a55cd40_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205362747&quot;
       title=&quot;Group Photo! by Trish McGinity, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3923/14205362747_190a55cd40.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Group Photo!&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p id=&quot;day2&quot;&gt;
    &lt;strong&gt;Day 2&lt;/strong&gt; (16 miles)&lt;br/&gt;
    Sunday morning, everyone was in good spirits. It was our first day with named rapids and we all were looking forward
    to it.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2912/14205373627_75b062f68c_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205373627&quot;
       title=&quot;Getting ready for Teepee Rapids by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2912/14205373627_75b062f68c_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Getting ready for Teepee Rapids&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5076/14390787774_14ce37744f_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390787774&quot;
       title=&quot;Dave and Brice! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5076/14390787774_14ce37744f_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Dave and Brice!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2895/14368725096_57d26b70ff_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14368725096&quot;
       title=&quot;The boys in yellow and black by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2895/14368725096_57d26b70ff_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;The boys in yellow and black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2919/14411997283_2fd35587cb_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14411997283&quot;
       title=&quot;Tanner making it rain by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2919/14411997283_2fd35587cb_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Tanner making it rain&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3881/14390452232_594d870b5a_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390452232&quot;
       title=&quot;Girls Rule! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3881/14390452232_594d870b5a_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Girls Rule!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5278/14205265730_3bc14a5090_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205265730&quot;
       title=&quot;Cara and Dave cuties by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5278/14205265730_3bc14a5090_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Cara and Dave cuties&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5274/14388462501_e38660c8b7_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14388462501&quot;
       title=&quot;Sloane, Burke and Tami! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5274/14388462501_e38660c8b7_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Sloane, Burke and Tami!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2911/14205395267_692496226f_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205395267&quot;
       title=&quot;Dawn and Erick Family by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2911/14205395267_692496226f_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Dawn and Erick Family&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3896/14205230098_2ca974c15f_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205230098&quot;
       title=&quot;Dave and Jake aka Eucher Runners Up by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3896/14205230098_2ca974c15f_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Dave and Jake aka Eucher Runners Up&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    Sunday started out with TeePee Rapid, a &lt;a
        href=&quot;http://en.wikipedia.org/wiki/International_Scale_of_River_Difficulty&quot;&gt;Class&lt;/a&gt; III. We all stayed right
    and made it through
    just fine. The waves were big, but nothing seemed dangerous. We paddled through Little Joe (Class III) and wondered
    why they named Big Joe (Class II) &quot;Big&quot;. We soon learned why when we saw one of the first rafts flip in the middle
    of
    it. It was a blue raft with our friends, Eagle Dave and Jake. A few more rafts went through the same route, then a
    silver raft flipped right in front of us. It contained our friends, Chris and Brice, as well as their kids (6 and
    9).&lt;/p&gt;
&lt;p&gt;Yes, things got scary all of a sudden. I instantly realized I didn&apos;t want to follow their route and rowed as hard as
    I
    could to go right instead of left. Once we passed the flipping hole, I rowed as hard as I could to try and reach
    Brice on the left. It was the hardest I&apos;d ever rowed in my life, yet I couldn&apos;t get across the river to stop and
    help. Luckily, a couple other friends did reach him and were able to help. Chris, thinking quickly, had grabbed both
    their boys (while flipping) and swam with them until Erick and Galin (11 yrs old) rescued them with a throw bag.
&lt;/p&gt;
&lt;p&gt;We arrived at Harding Hole about 30 minutes after flipping/recovering. Emotions were high and all the kids were a bit
    freaked out. Many asked to go home. Luckily, a ranger and number of trainees were camping nearby. They helped calm
    nerves by giving us advice and offering to run safety for us the next day.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3906/14368765876_1ca8562d12_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14368765876&quot;
       title=&quot;Wind 1, Umbrella 0 by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3906/14368765876_1ca8562d12_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black&quot; alt=&quot;Wind 1, Umbrella 0&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3872/14390525692_89eb91ccd8_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390525692&quot;
       title=&quot;Eight Raft Posse by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3872/14390525692_89eb91ccd8_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Eight Raft Posse&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;


&lt;/p&gt;
&lt;p id=&quot;day3&quot;&gt;
    &lt;strong&gt;Day 3&lt;/strong&gt; (18 miles)&lt;br/&gt;
    On Monday, we got to experience the biggest rapids of the trip: Warm Springs (Class IV). We stopped and scouted,
    as well as let the kids walk around the rapid. There was a tall haystack wave in the middle of it, as well as a huge &quot;Maytag&quot; hole at
    the end.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3857/14400261442_59bc4c453f_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/14400261442&quot;
       title=&quot;Scouting Maytag Hole by Matt Raible, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3857/14400261442_59bc4c453f_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Scouting Maytag Hole&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3876/14401623795_a3201f225c_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/14401623795&quot;
       title=&quot;Heading for Maytag Hole by Matt Raible, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3876/14401623795_a3201f225c_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Heading for Maytag Hole&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3905/14392010555_6fafe1b95b_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14392010555&quot;
       title=&quot;YAY! Kids walked around and we had no flips! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3905/14392010555_6fafe1b95b_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;YAY! Kids walked around and we had no flips!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5160/14388678691_ea004d21f6_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14388678691&quot;
       title=&quot;Tanner got both of his shoes back from other rafters the day after they flipped by Trish McGinity, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5160/14388678691_ea004d21f6_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Tanner got both of his shoes back from other rafters the day after they flipped&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;

    Luckily, everyone made it through just fine and spirits ran high with accomplishment. The rest of the day
    was
    particularly enjoyable as flat water brought us floating and relaxing. Many water fights ensued between boats and
    laughter erupted off the canyon walls.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3843/14390869534_109b61dfcf_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390869534&quot;
       title=&quot;Beautiful Scenery by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3843/14390869534_109b61dfcf_s.jpg&quot; width=&quot;75&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Beautiful Scenery&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5585/14391923415_f914c26d89_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14391923415&quot;
       title=&quot;Dave and Cara and group by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5585/14391923415_f914c26d89_s.jpg&quot; width=&quot;75&quot;
            style=&quot;border: 1px solid black; margin-left: 20px&quot;
            alt=&quot;Dave and Cara and group&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3894/14390893004_88c7b56039_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390893004&quot;
       title=&quot;Watch out! Tami with the double soaker by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3894/14390893004_88c7b56039_s.jpg&quot; width=&quot;75&quot;
            style=&quot;border: 1px solid black; margin-left: 20px&quot;
            alt=&quot;Watch out! Tami with the double soaker&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3841/14205307759_4d43738694_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205307759&quot;
       title=&quot;My honey and me with Matt Good by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3841/14205307759_4d43738694_s.jpg&quot; width=&quot;75&quot;
            style=&quot;border: 1px solid black; margin-left: 20px&quot;
            alt=&quot;My honey and me with Matt Good&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5115/14390578972_880dfc75f6_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390578972&quot;
       title=&quot;Jack having fun at the Oars by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5115/14390578972_880dfc75f6_s.jpg&quot; width=&quot;75&quot;
            style=&quot;border: 1px solid black; margin-left: 20px&quot;
            alt=&quot;Jack having fun at the Oars&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3880/14205544837_fcc02cbfa2_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205544837&quot;
       title=&quot;Jake and Dave at Tiger Wall by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3880/14205544837_fcc02cbfa2_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Jake and Dave at Tiger Wall&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2898/14390616062_8193400ec2_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390616062&quot;
       title=&quot;Big Horn Sheep Mama and Baby! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2898/14390616062_8193400ec2_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black; margin-left: 10px&quot;
            alt=&quot;Big Horn Sheep Mama and Baby!&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    We celebrated 80s night with style at Box Elder campground that evening.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3837/14392024335_c7214c0c0b_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14392024335&quot;
       title=&quot;ERic, Jake, Dave and Hans Happy Hour! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3837/14392024335_c7214c0c0b_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;ERic, Jake, Dave and Hans Happy Hour!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3851/14392026475_554c9a6560_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14392026475&quot;
       title=&quot;Cool Campsite at Echo 2 by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3851/14392026475_554c9a6560_m.jpg&quot; width=&quot;240&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Cool Campsite at Echo 2&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2933/14390991814_5f505549d1_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390991814&quot;
       title=&quot;80&amp;#x27;s Party Group! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2933/14390991814_5f505549d1.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;80&amp;#x27;s Party Group!&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3897/14390998154_85cf9bc11f_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390998154&quot;
       title=&quot;Eagle, Swayze and Jovi by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3897/14390998154_85cf9bc11f_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Eagle, Swayze and Jovi&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3859/14205593537_174c8c399d_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205593537&quot;
       title=&quot;Ready for some aerobics with Dawn! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3859/14205593537_174c8c399d_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Ready for some aerobics with Dawn!&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3898/14392044685_639da4b441_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14392044685&quot;
       title=&quot;Axl Rules! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3898/14392044685_639da4b441_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Axl Rules!&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2940/14205402089_baf174af08_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205402089&quot;
       title=&quot;Axl and his Manager by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2940/14205402089_baf174af08_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Axl and his Manager&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2938/14205452438_8ea0bde6d1_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205452438&quot;
       title=&quot;Dave was the leader of the pack by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2938/14205452438_8ea0bde6d1_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Dave was the leader of the pack&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3874/14205480918_6300e566f7_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14205480918&quot;
       title=&quot;Boys rule the Camp! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3874/14205480918_6300e566f7_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Boys rule the Camp!&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2915/14391073424_70f4076a3b_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14391073424&quot;
       title=&quot;Sweet Sunset! by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2915/14391073424_70f4076a3b.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Sweet Sunset!&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p id=&quot;day4&quot;&gt;
    &lt;strong&gt;Day 4&lt;/strong&gt; (14.5 miles)&lt;br/&gt;
    Tuesday was another floater in the morning. We stopped at the confluence of the Yampa and Green River and enjoyed
    the view.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2904/14214967529_8f7a7974cc_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/14214967529&quot;
       title=&quot;Day 4: Pirate Flag! by Matt Raible, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2904/14214967529_8f7a7974cc.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Day 4: Pirate Flag!&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;

    In the early afternoon, we stopped at Echo Park and enjoyed our first
    non-&lt;a href=&quot;http://everything2.com/title/Groover&quot;&gt;groover&lt;/a&gt; toilet in days. We also gathered water and took
    the kids on a hike to see some petroglyphs.

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3921/14214998978_1679716b0b_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/14214998978&quot; title=&quot;Echo Park Hike by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3921/14214998978_1679716b0b.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Echo Park Hike&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    As we progressed that afternoon, we hit some more rapids that sent some
    fright through the kids that flipped on Sunday. We stopped for a couple hours to hike, play Yahtzee and relax in the
    sun.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3844/14401629005_5b63076ce7_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14401629005&quot; title=&quot;Break time! by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3844/14401629005_5b63076ce7.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Break time!&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;

    Then we continued to camp at Big Island that night. Our last night on the river, we spent in a beautiful camping utopia.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm6.staticflickr.com/5484/14398266111_4c951f9c49_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14398266111&quot;
       title=&quot;Happy to be on Day 4 by Matt Raible, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5484/14398266111_4c951f9c49_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Happy to be on Day 4&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3876/14400532034_5551dbd757_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14400532034&quot; title=&quot;Happy by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3876/14400532034_5551dbd757_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3902/14378509796_39db84533d_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14378509796&quot; title=&quot;Jack as Peter Pan by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3902/14378509796_39db84533d_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;
            alt=&quot;Jack as Peter Pan&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2896/14390758792_9d6270b5ee_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mcginityphoto/14390758792&quot;
       title=&quot;2014 DNM Raft Sunset by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2896/14390758792_9d6270b5ee.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;2014 DNM Raft Sunset&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p id=&quot;day5&quot;&gt;
    &lt;strong&gt;Day 5&lt;/strong&gt; (13.5 miles)&lt;br/&gt;
    Wednesday, everyone gathered their things early and had their boats packed by breakfast. It was our morning to cook,
    so Trish whipped up huckleberry pancakes and dazzled our taste buds. We had one big rapid, Moonshine (Class III),
    to get our blood pumping. We scouted, the kids walked, and everyone made it through just fine. There were a few more
    rapids (SOB, Schoolboy and Inglesby) through the rest of Split Mountain Canyon, but none that inspired scouting. We
    landed at Split Mountain take-out around 2pm, said our goodbyes and headed home. Trish, Jack and I arrived back in Denver
    just before midnight.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2908/14400542304_28d32dc7f7_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14400542304&quot;
       title=&quot;Rolling into Split Mountain Take-out by Matt Raible, on Flickr&quot; rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2908/14400542304_28d32dc7f7_q.jpg&quot; width=&quot;150&quot;
            style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3893/14215043280_4a7bd24680_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14215043280&quot; title=&quot;Syncro Take-out by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3893/14215043280_4a7bd24680_q.jpg&quot; width=&quot;150&quot;
                                      style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2901/14400292132_e5a940c04e_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14400292132&quot; title=&quot;Heading Home by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img src=&quot;//farm3.staticflickr.com/2901/14400292132_e5a940c04e_q.jpg&quot; width=&quot;150&quot;
                                      style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p id=&quot;summary&quot;&gt;
    &lt;strong&gt;Summary&lt;/strong&gt;&lt;br/&gt;
    Wow - what a trip! When we first read about floating through Dinosaur National Monument, we
    thought it&apos;d be more of a float trip with some fun rapids. Instead, it greeted us with lots of fast water, tons of
    rapids
    and not-so-much floating. In the &lt;a
        href=&quot;http://www.nps.gov/dino/planyourvisit/upload/2014-Dinosaur-Boating-Information.pdf&quot;&gt;2014 Boating
    Information Booklet&lt;/a&gt; (PDF), item #5 in the Safety Recommendations says &lt;strong&gt;&quot;Rig to flip!&quot;&lt;/strong&gt; This was
    no joke.
&lt;/p&gt;
&lt;p&gt;Everyone was well prepared and we did &lt;em&gt;rig to flip&lt;/em&gt;, we just never expected it to happen on a Class II. With
    kids in the boat, it shook everyone up a bit, but we became a stronger team because of it. Sloane, one of the most
    experienced rafters on the trip, wore a GoPro through much of the trip. You can view a video of our adventures
    below, or
    &lt;a href=&quot;http://youtu.be/oCjVz3mPvdk&quot;&gt;on YouTube&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/oCjVz3mPvdk&quot; frameborder=&quot;0&quot; allowfullscreen style=&quot;border: 1px solid black&quot;&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;Good times, great friends, fantastic memories. &lt;img src=&quot;//raibledesigns.com/images/smileys/smile.gif&quot; class=&quot;smiley&quot; alt=&quot;:-)&quot; title=&quot;:-)&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2913/14215200497_3033559745_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/14215200497&quot; title=&quot;Wheeee by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[yampa2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2913/14215200497_3033559745.jpg&quot; width=&quot;500&quot;
            style=&quot;border: 1px solid black&quot;
            alt=&quot;Wheeee&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div style=&quot;text-align: right; color: #666; max-width: 500px; margin: -15px auto 0 auto&quot;&gt;
    &lt;a href=&quot;https://www.flickr.com/photos/mcginityphoto/sets/72157644696991730&quot; title=&quot;Trish&apos;s 2014 Dinosaur National Monument Rafting Trip&quot;&gt;more&lt;/a&gt;
    &lt;a href=&quot;https://www.flickr.com/photos/mraible/sets/72157645078288166/&quot; title=&quot;Matt&apos;s Rafting The Yampa 2014&quot;&gt;photos&lt;/a&gt; on Flickr &amp;RightArrow;

&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/spring_break_in_florida_golf</id>
        <title type="html">Spring Break in Florida: Golf, Beaches and Boats!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/spring_break_in_florida_golf"/>
        <published>2014-04-14T20:34:59-06:00</published>
        <updated>2014-04-15T11:59:08-06:00</updated> 
        <category term="/General" label="General" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="naples" scheme="http://roller.apache.org/ns/tags/" />
        <category term="keywest" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="florida" scheme="http://roller.apache.org/ns/tags/" />
        <category term="sunset" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springbreak" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;Florida is a beautiful state, with sandy beaches, excellent fishing, fun people and a great enthusiasm for golf. When
    I dreamed up Trish, I knew she&apos;d have an awesome family, but I never expected her parents to have a house &lt;em&gt;on a
        golf course&lt;/em&gt;. Trish&apos;s grandma, Claire Stanley, is a legend in her own right. I&apos;ve never met her, but I knew
    I loved her when Trish&apos;s dad first told me about her &quot;layered shots&quot;. When I saw Claire&apos;s name listed &lt;em&gt;several
        times&lt;/em&gt; on the walls of the The Country Club of Naples, a deep respect came over me. Claire picked out her
    house on the 17th hole (Trish&apos;s favorite number) of the Country Club in 1966, when the establishment was founded. &lt;a
            href=&quot;http://raibledesigns.com/rd/entry/10_years_ago_today_i&quot;&gt;My bus was born in 1966&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
    Today, Trish&apos;s parents have turned it into a golf and relaxation oasis, complete with beautiful orchid gardens, a
    sweet pool and Japanese decorations from the country where they first met.
&lt;/p&gt;
&lt;p&gt;As a golf enthusiast, I&apos;m embarrassed that we&apos;ve only visited her parents in Naples &lt;a
        href=&quot;//www.flickr.com/photos/mraible/sets/72157625591245697/&quot;&gt;once before&lt;/a&gt;.  We bought Abbie and Jack golf clubs last year for &lt;a href=&quot;//raibledesigns.com/rd/entry/happy_birthday_jack5&quot;&gt;Jack&apos;s birthday&lt;/a&gt;, and they both like to play the game.
    To make up for our lack of visiting family in Florida, we took our kids on a golf vacation for this year&apos;s Spring Break.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;Florida is a beautiful state, with sandy beaches, excellent fishing, fun people and a great enthusiasm for golf. When
    I dreamed up Trish, I knew she&apos;d have an awesome family, but I never expected her parents to have a house &lt;em&gt;on a
        golf course&lt;/em&gt;. Trish&apos;s grandma, Claire Stanley, is a legend in her own right. I&apos;ve never met her, but I knew
    I loved her when Trish&apos;s dad first told me about her &quot;layered shots&quot;. When I saw Claire&apos;s name listed &lt;em&gt;several
        times&lt;/em&gt; on the walls of the The Country Club of Naples, a deep respect came over me. Claire picked out her
    house on the 17th hole (Trish&apos;s favorite number) of the Country Club in 1966, when the establishment was founded. &lt;a
            href=&quot;http://raibledesigns.com/rd/entry/10_years_ago_today_i&quot;&gt;My bus was born in 1966&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
    Today, Trish&apos;s parents have turned it into a golf and relaxation oasis, complete with beautiful orchid gardens, a
    sweet pool and Japanese decorations from the country where they first met.
&lt;/p&gt;
&lt;p&gt;As a golf enthusiast, I&apos;m embarrassed that we&apos;ve only visited her parents in Naples &lt;a
        href=&quot;//www.flickr.com/photos/mraible/sets/72157625591245697/&quot;&gt;once before&lt;/a&gt;.  We bought Abbie and Jack golf clubs last year for &lt;a href=&quot;//raibledesigns.com/rd/entry/happy_birthday_jack5&quot;&gt;Jack&apos;s birthday&lt;/a&gt;, and they both like to play the game.
    To make up for our lack of visiting family in Florida, we took our kids on a golf vacation for this year&apos;s Spring Break.
&lt;/p&gt;
&lt;p&gt;We learned a technique for kids golfing in &lt;a href=&quot;//raibledesigns.com/rd/entry/we_bought_a_boat&quot;&gt;September
    2012&lt;/a&gt;: have them tee off from the 150 marker so they have a chance to par the hole. We arrived in Naples on a Saturday, had
    a nice family brunch on Sunday and played golf with the kids that afternoon. The kids had a really good time, even beating us on
    a couple holes.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2871/13630302365_cdd438a1da_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630302365&quot; title=&quot;Family photo by Trish McGinity, on Flickr&quot;
       rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2871/13630302365_cdd438a1da_m.jpg&quot; width=&quot;240&quot; alt=&quot;Family photo&quot;
            style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;//farm4.staticflickr.com/3770/13630730864_66e90d2dcc_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630730864&quot; title=&quot;Family photo by Trish McGinity, on Flickr&quot;
       rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3770/13630730864_66e90d2dcc_m.jpg&quot; width=&quot;240&quot; alt=&quot;Family photo&quot;
            style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3672/13630722074_ebcd171e69_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630722074&quot;
       title=&quot;Abbie&amp;#x27;s Bee Photo by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3672/13630722074_ebcd171e69.jpg&quot; width=&quot;500&quot;
            alt=&quot;Abbie&amp;#x27;s Bee Photo&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    The sunset on Sunday evening was gorgeous, especially with the kids frolicking in the waves.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7138/13630479433_2220968cfb_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630479433&quot;
       title=&quot;Abbie and Jack playing at the beach by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7138/13630479433_2220968cfb.jpg&quot; width=&quot;500&quot;
            alt=&quot;Abbie and Jack playing at the beach&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7027/13694753135_c9b1e6fff5_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13694753135&quot; title=&quot;Naples Sunset by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7027/13694753135_c9b1e6fff5.jpg&quot; width=&quot;500&quot;
            alt=&quot;Naples Sunset&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7405/13630471715_c44659320f_c.jpg&quot; 
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630471715&quot;
       title=&quot;Naples Beach Sunset by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7405/13630471715_c44659320f.jpg&quot; width=&quot;500&quot; alt=&quot;Naples Beach Sunset&quot;
            style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;On Monday, we woke up early and boarded the &lt;a href=&quot;http://www.seakeywestexpress.com/&quot;&gt;Key West Express&lt;/a&gt; before
    sunrise. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3776/13695100454_090b07ec82_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13695100454&quot;
       title=&quot;Fort Myers Beach Sunrise by Matt Raible, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3776/13695100454_090b07ec82_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Fort Myers Beach Sunrise&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2812/13694786463_c31b268b4a_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13694786463&quot;
       title=&quot;On the Key West Express! by Matt Raible, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2812/13694786463_c31b268b4a_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;On the Key West Express!&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We arrived in Key West around noon and hung out by our hotel pool for most of the day. That evening, after marveling
    at the sunset, we took the kids on a Key West Ghost Tour. It was a bit long at 1.5 hours, but the story of &lt;a href=&quot;http://en.wikipedia.org/wiki/Robert_the_Doll&quot;&gt;Robert the Doll&lt;/a&gt; was excellent.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3722/13630579573_ebd5301f86_c.jpg&quot; data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630579573&quot;
       title=&quot;Ship at Key West Sunset by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3722/13630579573_ebd5301f86.jpg&quot; width=&quot;500&quot;
            alt=&quot;Ship at Key West Sunset&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Tuesday morning, we met up with Abbie and Jack&apos;s Mom, Julie, and her fianc&#233; Dave. They had Dave&apos;s kids with them, and
    we all headed out for a sailing, parasailing and jet skiing adventure together. Everyone had a great time, as is
    evidenced by the photos below.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3724/13630565115_3ef27609f0_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630565115&quot;
       title=&quot;Lauren and Buck Parasailing by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3724/13630565115_3ef27609f0_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Lauren and Buck Parasailing&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7358/13630633253_dbe6d0585b_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630633253&quot;
       title=&quot;Julie and Abbie Parasailing by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7358/13630633253_dbe6d0585b_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Julie and Abbie Parasailing&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7272/13630626885_e70cb323ab_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630626885&quot;
       title=&quot;Dave and Jack Parasailing by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7272/13630626885_e70cb323ab_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Dave and Jack Parasailing&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;//farm3.staticflickr.com/2913/13631058034_41249f106d_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13631058034&quot;
       title=&quot;Abbie, Matt and Jack hug by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2913/13631058034_41249f106d_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Abbie, Matt and Jack hug&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7237/13630704885_1419661a66_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630704885&quot;
       title=&quot;Fun in the Sun :) by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7237/13630704885_1419661a66_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Fun in the Sun :)&quot; style=&quot;border: 1px solid black; margin-left: 20px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7174/13695119114_2fbccbaa98_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13695119114&quot; title=&quot;Family Fun Day by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7174/13695119114_2fbccbaa98.jpg&quot; width=&quot;500&quot;
            alt=&quot;Family Fun Day&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Trish and I handed the kids over to Julie that afternoon and spent a few more hours in Key West. We rented bikes,
    visited the southernmost point in the US and enjoyed a cocktail on the beach. We especially liked seeing the house
    that Trish&apos;s Mom, Maureen, grew up in.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7096/13630790783_442129093e_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630790783&quot;
       title=&quot;Matt and Trish Southernmost point USA by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7096/13630790783_442129093e_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Matt and Trish Southernmost point USA&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7152/13694777145_1fac338f01_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13694777145&quot; title=&quot;Happy Tuesday! by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7152/13694777145_1fac338f01_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Happy Tuesday!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2849/13695123774_4aea08d44e_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13695123774&quot;
       title=&quot;Where Trish&amp;#x27;s Mom grew up by Matt Raible, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2849/13695123774_4aea08d44e_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;Where Trish&amp;#x27;s Mom grew up&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Around happy hour, after visiting the &lt;a href=&quot;http://wobusa.com/locations/key-west&quot;&gt;World of Beer&lt;/a&gt;, we boarded the Key West Express and traveled back to
    Trish&apos;s parents.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2925/13630830575_3da3940532_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mcginityphoto/13630830575&quot;
       title=&quot;Sunset from the Key West Express by Trish McGinity, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2925/13630830575_3da3940532.jpg&quot; width=&quot;500&quot;
            alt=&quot;Sunset from the Key West Express&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    The rest of the week was an ideal vacation: golfing, swimming in the pool, swimming in the ocean,
    walking on the beach, dinner on the beach and fishing in the Everglades. Trish&apos;s Dad, Joe, booked us a fishing trip
    in the &lt;a href=&quot;http://www.nps.gov/ever/&quot;&gt;Everglades&lt;/a&gt;, starting from Everglades City. He and I had to wake up before
    dawn on Friday to meet our guide, who was waiting for us at the dock at 7:30. From there, we spent six hours
    boating, casting, reeling, catching some, losing some and having a fabulous time. Our catch at the end of the
    adventure was two Trout and one Flounder (caught by our guide, Tony). Nevertheless, we had a delightful day and savored
    the sun and the water in a beautiful location.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm4.staticflickr.com/3676/13694822653_4ee34efc3a_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13694822653&quot; title=&quot;Fishing Sunrise by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3676/13694822653_4ee34efc3a_t.jpg&quot; width=&quot;100&quot;
            alt=&quot;Fishing Sunrise&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7451/13694802275_1d566d3888_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13694802275&quot; title=&quot;Happy Fishermen by Matt Raible, on Flickr&quot;
       rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7451/13694802275_1d566d3888_t.jpg&quot; width=&quot;100&quot;
            alt=&quot;Happy Fishermen&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm3.staticflickr.com/2871/13695144734_c7afa9a1d6_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13695144734&quot;
       title=&quot;Fishing for Red Fish by Matt Raible, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2871/13695144734_c7afa9a1d6_t.jpg&quot; width=&quot;100&quot;
            alt=&quot;Fishing for Red Fish&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7101/13695150364_3c530db10d_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13695150364&quot;
       title=&quot;Two trout and a Flounder by Matt Raible, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7101/13695150364_3c530db10d_t.jpg&quot; width=&quot;100&quot;
            alt=&quot;Two trout and a Flounder&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Saturday, we played some more golf and took an evening flight home. It was a fun spring break and I&apos;m glad
    the kids got to enjoy it with both parents and multiple grandparents. More than anything, thanks to Trish&apos;s parents
    for their hospitality and fun-loving lifestyle. We had a blast!
&lt;/p&gt;
&lt;div style=&quot;width: 500px; margin: 0 auto&quot;&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;//farm8.staticflickr.com/7046/13694837593_58d9e6b107_c.jpg&quot;
       data-href=&quot;//www.flickr.com/photos/mraible/13694837593&quot;
       title=&quot;Good lookin&amp;#x27; McGinity&amp;#x27;s by Matt Raible, on Flickr&quot; rel=&quot;lightbox[springbreak2014]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7046/13694837593_58d9e6b107.jpg&quot; width=&quot;500&quot;
            alt=&quot;Good lookin&amp;#x27; McGinity&amp;#x27;s&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #666; text-align: right; font-size: .9em; margin-top: -10px&quot;&gt;
For more pictures, checkout Trish&apos;s &lt;a href=&quot;https://www.flickr.com/photos/mcginityphoto/sets/72157643422906925/&quot;&gt;Spring Break 2014&lt;/a&gt; or my &lt;a href=&quot;https://www.flickr.com/photos/mraible/sets/72157643588119143/&quot;&gt;Spring Break in Florida&lt;/a&gt;.
&lt;/p&gt;
&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/comparing_jvm_web_frameworks_at</id>
        <title type="html">Comparing JVM Web Frameworks at vJUG</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/comparing_jvm_web_frameworks_at"/>
        <published>2014-02-06T10:54:17-07:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="struts2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vaadin" scheme="http://roller.apache.org/ns/tags/" />
        <category term="tapestry" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springmvc" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angularjs" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wicket" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jvm" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;A couple months ago, I was invited to &lt;a href=&quot;http://www.meetup.com/virtualJUG/events/153096902/&quot;&gt;speak at Virtual JUG&lt;/a&gt; - an online-only Java User Group organized by the &lt;a href=&quot;http://zeroturnaround.com/&quot;&gt;ZeroTurnaround&lt;/a&gt; folks. They chose my Comparing JVM Web Frameworks presentation and we agreed I&apos;d speak yesterday morning. They used a combination of Google Hangouts, live streaming on YouTube and IRC to facilitate the meeting. It all went pretty smoothly and produced a comfortable speaking environment. To practice for vJUG, I delivered the same talk on Tuesday night at the &lt;a href=&quot;http://www.meetup.com/DOSUG1/events/155080452/&quot;&gt;Denver Open Source Users Group&lt;/a&gt;.
&lt;p&gt;
The last time I delivered this talk was at &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference&quot;&gt;Devoxx France&lt;/a&gt; in March 2013. I didn&apos;t change any of the format this time, keeping with referencing the Paradox of Choice and encouraging people to define constraints to help them make their decision. I did add a few new slides regarding RebelLabs&apos; &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/&quot;&gt;Curious Coder&#8217;s Java Web Frameworks Comparison: Spring MVC, Grails, Vaadin, GWT, Wicket, Play, Struts and JSF&lt;/a&gt; and &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/&quot;&gt;The 2014 Decision Maker&#8217;s Guide to Java Web Frameworks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also updated all the pretty graphs (which may or may not have any significance) with the latest stats from Dice.com, LinkedIn, StackOverflow and respective mailing lists. Significant changes I found compared to one year ago:&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;A couple months ago, I was invited to &lt;a href=&quot;http://www.meetup.com/virtualJUG/events/153096902/&quot;&gt;speak at Virtual JUG&lt;/a&gt; - an online-only Java User Group organized by the &lt;a href=&quot;http://zeroturnaround.com/&quot;&gt;ZeroTurnaround&lt;/a&gt; folks. They chose my Comparing JVM Web Frameworks presentation and we agreed I&apos;d speak yesterday morning. They used a combination of Google Hangouts, live streaming on YouTube and IRC to facilitate the meeting. It all went pretty smoothly and produced a comfortable speaking environment. To practice for vJUG, I delivered the same talk on Tuesday night at the &lt;a href=&quot;http://www.meetup.com/DOSUG1/events/155080452/&quot;&gt;Denver Open Source Users Group&lt;/a&gt;.
&lt;p&gt;
The last time I delivered this talk was at &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference&quot;&gt;Devoxx France&lt;/a&gt; in March 2013. I didn&apos;t change any of the format this time, keeping with referencing the Paradox of Choice and encouraging people to define constraints to help them make their decision. I did add a few new slides regarding RebelLabs&apos; &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-curious-coders-java-web-frameworks-comparison-spring-mvc-grails-vaadin-gwt-wicket-play-struts-and-jsf/&quot;&gt;Curious Coder&#8217;s Java Web Frameworks Comparison: Spring MVC, Grails, Vaadin, GWT, Wicket, Play, Struts and JSF&lt;/a&gt; and &lt;a href=&quot;http://zeroturnaround.com/rebellabs/the-2014-decision-makers-guide-to-java-web-frameworks/&quot;&gt;The 2014 Decision Maker&#8217;s Guide to Java Web Frameworks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also updated all the pretty graphs (which may or may not have any significance) with the latest stats from Dice.com, LinkedIn, StackOverflow and respective mailing lists. Significant changes I found compared to one year ago:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Job Listings on Dice.com
&lt;ul&gt;
&lt;li&gt;Play Framework job listings increased almost 4x&lt;/li&gt;
&lt;li&gt;Tapestry jobs are 1/3 of what they were a year ago&lt;/li&gt;
&lt;li&gt;Wicket jobs are 1/2 of what they were a year ago&lt;/li&gt;
&lt;li&gt;JavaScript framework jobs are up quite a bit: Ember.js up ~300%, AngularJS up 900%, Backbone up 160%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LinkedIn Skills
&lt;ul&gt;
&lt;li&gt;Rails down ~30%&lt;/li&gt;
&lt;li&gt;Grails up 25%&lt;/li&gt;
&lt;li&gt;Play Framework up 200%&lt;/li&gt;
&lt;li&gt;Spring Roo up 40%&lt;/li&gt;
&lt;li&gt;Ember.js up 300%&lt;/li&gt;
&lt;li&gt;AngularJS up 840%&lt;/li&gt;
&lt;li&gt;Backbone up 200%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As you can tell from these findings, AngularJS has gained quite a bit of mindshare in the last year. There&apos;s a lot of companies looking for JavaScript skills and quite a few folks have added JavaScript frameworks to their LinkedIn profiles.&lt;/p&gt;
&lt;p&gt;You can &lt;a href=&quot;https://www.youtube.com/watch?v=ygW8fJVlDxQ&quot;&gt;watch the recording on YouTube&lt;/a&gt; or click play in the embedded video below.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/ygW8fJVlDxQ&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;You can also quickly browse the slide deck below, &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/Comparing_JVM_Web_Frameworks_February2014.pdf&quot;&gt;download the PDF&lt;/a&gt; or &lt;a href=&quot;http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-february-2014&quot;&gt;view it on SlideShare&lt;/a&gt;.&lt;/li&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/30861557?rel=0&quot; width=&quot;512&quot; height=&quot;325&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;Thanks to all the folks who attended these talks. And thanks to &lt;a href=&quot;http://twitter.com/dosug&quot;&gt;@dosug&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/virtualjug&quot;&gt;@virtualjug&lt;/a&gt; for giving me the opportunity to speak.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2013_a_year_in_review</id>
        <title type="html">2013 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2013_a_year_in_review"/>
        <published>2014-01-31T08:53:10-07:00</published>
        <updated>2014-07-26T21:11:02-06:00</updated> 
        <category term="/Roller" label="Roller" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2013" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;2013 was an amazing year:
    Trish and I got married, celebrated on a &apos;round-the-world honeymoon and invested in a new 4x4 VW Bus. I finally
    achieved my goal of vacationing 25% and I got to spend more than two months in the presence of my wonderful parents.
&lt;/p&gt;
&lt;p&gt;
    For this Year in Review post, I&apos;ll use the same format as I did &lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review&quot;&gt;last
        year&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#2014&quot;&gt;2014&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;
    For the last few years, I&apos;ve generally had one client per year. That changed this year when my contract with Oracle
    ended in May. Fortunately, I had the opportunity to develop a cool dashboard application before I finished. I
    wrote about it in a four-part series.&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;2013 was an amazing year:
    Trish and I got married, celebrated on a &apos;round-the-world honeymoon and invested in a new 4x4 VW Bus. I finally
    achieved my goal of vacationing 25% and I got to spend more than two months in the presence of my wonderful parents.
&lt;/p&gt;
&lt;p&gt;
    For this &lt;a href=&quot;http://raibledesigns.com/rd/tags/yearinreview&quot;&gt;Year in Review&lt;/a&gt; post, I&apos;ll use the same format as I did &lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review&quot;&gt;last
        year&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2013_a_year_in_review#2014&quot;&gt;2014&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;
    For the last few years, I&apos;ve generally had one client per year. That changed this year when my contract with Oracle
    ended in May. Fortunately, I had the opportunity to develop a cool dashboard application before I finished. I
    wrote about it in a four-part series.&lt;/p&gt;
&lt;ul&gt;

    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/developing_with_angularjs_part_i&quot;&gt;Developing with AngularJS - Part I:
        The Basics&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/developing_with_angularjs_part_ii&quot;&gt;Developing with AngularJS - Part
        II: Dialogs and Data&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/developing_with_angularjs_part_iii&quot;&gt;Developing with AngularJS - Part
        III: Services&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/developing_with_angularjs_part_iv&quot;&gt; Developing with AngularJS - Part
        IV: Making it Pop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I engaged in a month-long contract with &lt;a href=&quot;http://www.travelport.com/&quot;&gt;Travelport&lt;/a&gt;
    to keep me busy in June. They hired me to develop a portal consolidation prototype, which I did with AngularJS,
    Grails and LDAP. I showcased &lt;a href=&quot;http://vimeo.com/80314102&quot;&gt;that application&lt;/a&gt; at Devoxx in November.
&lt;/p&gt;
&lt;p&gt;In September, I started a new gig with &lt;a href=&quot;http://www.johnmuirhealth.com/&quot;&gt;John Muir Health&lt;/a&gt;. I was hired
    to help with their mobile architecture, and spent my first couple months doing front-end optimizing and helping get
    their MyJMH product released. Once the release was complete, I proposed a mobile architecture and started assisting
    with the development of their mobile application.
&lt;/p&gt;
&lt;p&gt;
    We&apos;re developing the Mobile API with &lt;a href=&quot;http://projects.spring.io/spring-boot/&quot;&gt;Spring Boot&lt;/a&gt;. I wrote about
    my initial experience in &lt;a href=&quot;http://raibledesigns.com/rd/entry/a_webapp_makeover_with_spring&quot;&gt;A Webapp Makeover
    with Spring 4 and Spring Boot&lt;/a&gt;. My contract with John Muir Health is through the end of March and I hope to
    start something new shortly after.
&lt;/p&gt;
&lt;p&gt;In October, I started &lt;a href=&quot;http://raibledesigns.com/rd/entry/writing_for_infoq&quot;&gt;Writing for InfoQ&lt;/a&gt; and I&apos;ve
    really enjoyed it so far. You can see the articles I&apos;ve written on &lt;a
            href=&quot;http://www.infoq.com/author/Matt-Raible&quot;&gt;my author page&lt;/a&gt; or by clicking the links below:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.infoq.com/articles/javaone2013-roundup&quot;&gt;JavaOne 2013 Roundup: Java 8 is Revolutionary, Java
        is back&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.infoq.com/news/2013/11/netty4-twitter&quot;&gt;Netty 4 Reduces GC Overhead by 5x at Twitter&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.infoq.com/news/2013/12/spring4&quot;&gt;Spring 4 Enhances Support for Java 8, Java EE 7, REST and
        HTML5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;I spoke at five events in 2013:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Denver JUG on &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_modern_java_web_developer&quot;&gt;The Modern Java Web
        Developer and Java Web Security&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;Devoxx France on &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference&quot;&gt;Comparing JVM Web
        Frameworks and Play vs. Grails&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;HTML5 Denver on &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_bootstrap_presentation_from_html5&quot;&gt;Bootstrap&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;JavaOne: I &lt;a href=&quot;http://raibledesigns.com/rd/entry/javaone_2013 JavaOne 2013&quot;&gt;spoke for the first time&lt;/a&gt;
        and &lt;a href=&quot;http://raibledesigns.com/rd/entry/javaone_2013_videos_of_presentations&quot;&gt;received a Rock Star
            Award&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;Devoxx and a Nordic Countries Speaking Tour on &lt;a
            href=&quot;http://raibledesigns.com/rd/entry/devoxx_2013_a_nordic_countries&quot;&gt;The Modern Java Web Developer&lt;/a&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It seems that folks liked my presentations since they were in &lt;a href=&quot;http://www.slideshare.net/yearinreview/mraible/ycEAAA&quot;&gt;the top 1% of most viewed on SlideShare in 2013&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
    Trish took many &lt;a href=&quot;http://raibledesigns.com/rd/entry/paris_and_iceland_a_photographers&quot;&gt;beautiful
    photos&lt;/a&gt; as part of our trip to Devoxx France.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8615035109/&quot;
       href=&quot;http://farm9.staticflickr.com/8108/8615035109_cb5d88a4ed_c.jpg&quot;
       title=&quot;Our Lady Liberty and Eiffel Tower by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8108/8615035109_cb5d88a4ed_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Our Lady Liberty and Eiffel Tower&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8615047387/&quot;
       href=&quot;http://farm9.staticflickr.com/8384/8615047387_93155b7fcc_c.jpg&quot;
       title=&quot;R&#233;cipon Quadrigas France by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8384/8615047387_93155b7fcc_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;R&#233;cipon Quadrigas France&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;


    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616147874/&quot;
       href=&quot;http://farm9.staticflickr.com/8543/8616147874_8e0de9d7aa_c.jpg&quot;
       title=&quot;Boats Seine River Eiffel Tower by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8543/8616147874_8e0de9d7aa.jpg&quot; width=&quot;500&quot;
            alt=&quot;Boats Seine River Eiffel Tower&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616151686/&quot;
       href=&quot;http://farm9.staticflickr.com/8266/8616151686_89d7bfdf75_c.jpg&quot;
       title=&quot;Statue Of LaFayette Cours La Reine Paris Frances by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8266/8616151686_89d7bfdf75.jpg&quot;
                                             width=&quot;500&quot;
                                             alt=&quot;Statue Of LaFayette Cours La Reine Paris Frances&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    We stopped in Iceland on the way home to see the &lt;a
        href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157633161145490/&quot;&gt;Northern
    Lights&lt;/a&gt;.

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8617531184/&quot;
       href=&quot;http://farm9.staticflickr.com/8262/8617531184_a688cb0f88_c.jpg&quot;
       title=&quot;Northern Lights 19 by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8262/8617531184_a688cb0f88.jpg&quot; width=&quot;500&quot; alt=&quot;Northern Lights 19&quot;
            style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AppFuse:&lt;/strong&gt; I released &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_light_2_2_1&quot;&gt;AppFuse Light
    2.2.1&lt;/a&gt; in January and
    switched AppFuse from JSF&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/switching_appfuse_from_myfaces_to&quot;&gt;MyFaces to
        PrimeFaces&lt;/a&gt; in February. I blogged about &lt;a
            href=&quot;http://raibledesigns.com/rd/entry/integrating_gwt_into_appfuse&quot;&gt;AppFuse&apos;s GWT integration&lt;/a&gt; in March
    and
    celebrated the project&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_10_year_appfuse&quot;&gt;10 year anniversary in
        April&lt;/a&gt;. AppFuse 3.0 was released &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_3_0_released&quot;&gt;just before
        Christmas&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
    &lt;strong&gt;Roller:&lt;/strong&gt; I didn&apos;t contribute any code to the Roller project in 2013, but I did &lt;a
        href=&quot;http://raibledesigns.com/rd/entry/responsive_design_with_css_media&quot;&gt;make this site responsive with CSS
    media queries&lt;/a&gt;.
&lt;/p&gt;
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;
&lt;p&gt;
    Trish and I started our world travels in March with a trip to &lt;a
        href=&quot;http://raibledesigns.com/rd/entry/magnificent_mexico&quot;&gt;Magnificent Mexico&lt;/a&gt;. We had a wonderful time
    playing with old friends and renting a house on the beach.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8491989219/&quot;
       href=&quot;https://farm9.staticflickr.com/8096/8491989219_5150a05565_c.jpg&quot; title=&quot;The Pool by mraible, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;https://farm9.staticflickr.com/8096/8491989219_5150a05565_q.jpg&quot;
                                             width=&quot;150&quot; alt=&quot;The Pool&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8491993847/&quot;
       href=&quot;https://farm9.staticflickr.com/8366/8491993847_a77a00081d_c.jpg&quot; title=&quot;My Love and I by mraible, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;https://farm9.staticflickr.com/8366/8491993847_a77a00081d_q.jpg&quot;
                                             width=&quot;150&quot; alt=&quot;My Love and I&quot;
                                             style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8491997899/&quot;
       href=&quot;https://farm9.staticflickr.com/8388/8491997899_190ec7bfd0_c.jpg&quot;
       title=&quot;Julie at Sunset by mraible, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;https://farm9.staticflickr.com/8388/8491997899_190ec7bfd0_q.jpg&quot;
                                             width=&quot;150&quot; alt=&quot;Julie at Sunset&quot;
                                             style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525669404/&quot;
       href=&quot;http://farm9.staticflickr.com/8097/8525669404_4fc25f6bb8_c.jpg&quot;
       title=&quot;Chacala Sunset by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8097/8525669404_4fc25f6bb8.jpg&quot; width=&quot;500&quot;
            alt=&quot;Chacala Sunset&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8524458091/&quot;
       href=&quot;http://farm9.staticflickr.com/8368/8524458091_721ed22fe7_c.jpg&quot;
       title=&quot;What a great posse! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8368/8524458091_721ed22fe7_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;What a great posse!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525571064/&quot;
       href=&quot;http://farm9.staticflickr.com/8243/8525571064_da036d44a7_c.jpg&quot;
       title=&quot;The Chacala gang! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8243/8525571064_da036d44a7_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;The Chacala gang!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525569828/&quot;
       href=&quot;http://farm9.staticflickr.com/8521/8525569828_1eb8850118_c.jpg&quot;
       title=&quot;YAY Chacalas! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8521/8525569828_1eb8850118_q.jpg&quot; width=&quot;150&quot;
            alt=&quot;YAY Chacalas!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;Our trip to &lt;a href=&quot;http://raibledesigns.com/rd/entry/paris_and_iceland_a_photographers&quot;&gt;Paris and Iceland&lt;/a&gt; was a
    dream come true for Trish. Watching the Aurora Borealis dance in the sky is something I&apos;ll never forget.&lt;/p&gt;
&lt;p&gt;
    To end the ski season in April, we &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_trifecta_2013&quot;&gt;completed the
    trifecta&lt;/a&gt; (3 ski resorts in 3 days) with
    a fun family weekend.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://farm9.staticflickr.com/8246/8662516874_f2400ba9c6_c.jpg&quot; title=&quot;13&amp;quot; Powder Day at Copper!&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8246/8662516874_f2400ba9c6.jpg&quot;
                                             width=&quot;500&quot; alt=&quot;13&amp;quot; Powder Day at Copper!&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    The last week of the ski season was epic, as I described in a &lt;a href=&quot;http://raibledesigns.com/rd/entry/life_update1&quot;&gt;life
    update&lt;/a&gt;.
&lt;/p&gt;

&lt;p class=&quot;quote&quot;&gt;
    The last week in Winter Park was the best skiing of the year. The first (Tuesday) afternoon, I started skiing around
    1pm and it snowed all afternoon - resulting in several inches by the end of the day. The next day was smooth and
    empty, followed by a day of deep powder and knee-deep runs down Eagle Wind. I had one of the best runs of my life
    that day.
&lt;/p&gt;

&lt;p&gt;
    I wrote about the &apos;66 Bus Project and how I removed it from Motorworks Restorations after six years.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://farm9.staticflickr.com/8522/8615924358_c863705496_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mraible/8615924358/&quot; title=&quot;Sweet Stance by mraible, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8522/8615924358_c863705496_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Sweet Stance&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;http://farm9.staticflickr.com/8263/8615925190_80b016767b_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mraible/8615925190/&quot; title=&quot;Love That Boy by mraible, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8263/8615925190_80b016767b_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Love That Boy&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://farm8.staticflickr.com/7418/9032950835_57cf83c68f_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mraible/9032950835/&quot; title=&quot;Leaving Motorworks by mraible, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7418/9032950835_57cf83c68f_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Leaving Motorworks&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;http://farm4.staticflickr.com/3679/9035175304_773922f83b_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mraible/9035175304/&quot;
       title=&quot;Time to get this thing done! by mraible, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3679/9035175304_773922f83b_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Time to get this thing done!&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We spent the first weekends in June &lt;a href=&quot;http://raibledesigns.com/rd/entry/father_s_day_weekend_on&quot;&gt;on the
    Colorado River&lt;/a&gt;.
    One of the biggest highlights for me was catching a 16&quot; Trout, right after Trish saw it jump and told me exactly
    where to cast my line. The fact that I was able to cast it to the precise spot was cool enough, but getting the fish
    on my line moments later was exhilarating. Shortly after, a majestic Bald Eagle flew over us and we all dropped our
    jaws in amazement.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9071726423/&quot;
       href=&quot;http://farm8.staticflickr.com/7332/9071726423_3d1faf669c_c.jpg&quot; title=&quot;My Crew&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7332/9071726423_3d1faf669c_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;My Crew&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9071727141/&quot;
       href=&quot;http://farm4.staticflickr.com/3668/9071727141_b3ce9e3286_c.jpg&quot; title=&quot;Roasting Hot Dogs&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3668/9071727141_b3ce9e3286_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Roasting Hot Dogs&quot;
                                             style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9071648965/&quot;
       href=&quot;http://farm4.staticflickr.com/3725/9071648965_b142ae7f05_c.jpg&quot; title=&quot;16 Incher&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3725/9071648965_b142ae7f05.jpg&quot;
                                             width=&quot;500&quot; alt=&quot;16 Incher&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Trish and I started a two month sabbatical in July to &lt;a
        href=&quot;http://raibledesigns.com/rd/entry/matrimony_in_montana&quot;&gt;get married in proper
    fashion&lt;/a&gt; in the town I grew up in. She looked absolutely stunning.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://farm8.staticflickr.com/7431/9624418537_21f624efcc_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9624418537/&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7431/9624418537_21f624efcc.jpg&quot;
                                             width=&quot;500&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;During the ceremony, I surprised her with a 162-page
    book I built with my words and her pictures.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://farm4.staticflickr.com/3775/9624416155_92cb67d722_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9624416155/&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3775/9624416155_92cb67d722_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;http://farm4.staticflickr.com/3756/9627642486_c1c3cca8b2_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9627642486/&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3756/9627642486_c1c3cca8b2_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
                                             style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    When asked if I&apos;d take her as my lawfully-wedded wife, I shouted as &quot;YES!&quot; at the top of my lungs. Trish agreed enthusiastically and we were pronounced husband and wife.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://farm8.staticflickr.com/7348/9624417367_a672878836_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9624417367/&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7348/9624417367_a672878836_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;http://farm8.staticflickr.com/7337/9624416939_a67bb07e70_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9624416939/&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7337/9624416939_a67bb07e70_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
                                             style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;http://farm8.staticflickr.com/7442/9627648458_38de03b06a_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9627648458/&quot; title=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7442/9627648458_38de03b06a.jpg&quot;
                                             width=&quot;500&quot; alt=&quot;Raible &amp;amp; McGinity Wedding Photos&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Our wedding week was an unbelievably fun experience with many, many friends and family. We look forward to
    celebrating it over and over again as long as we live.&lt;/p&gt;
&lt;p&gt;
    We had a day of rest following the wedding, then drove back to Denver to begin our &apos;round-the-world honeymoon
    without phones. We spent a month traveling to &lt;a
        href=&quot;http://raibledesigns.com/rd/entry/around_the_world_honeymoon_1st&quot;&gt;Ireland&lt;/a&gt;,
    &lt;a href=&quot;http://raibledesigns.com/rd/entry/around_the_world_honeymoon_2nd&quot;&gt;Italy&lt;/a&gt;,
    &lt;a href=&quot;http://raibledesigns.com/rd/entry/around_the_world_honeymoon_3rd&quot;&gt;Thailand&lt;/a&gt; and
    &lt;a href=&quot;http://raibledesigns.com/rd/entry/around_the_world_honeymoon_last&quot;&gt;Fiji&lt;/a&gt;. It was a wonderful journey
    and we greatly enjoyed all the people, places and experiences.

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;http://farm8.staticflickr.com/7342/10322700916_88449ec9ea_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/10322700916/&quot;
       title=&quot;Ballynahinch Castle Ireland by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7342/10322700916_88449ec9ea.jpg&quot; width=&quot;500&quot;
            alt=&quot;Ballynahinch Castle Ireland&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;http://farm8.staticflickr.com/7362/9902197834_90ef009fd8_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9902197834/&quot; rel=&quot;lightbox[2013yearinreview]&quot; title=&quot;View from hills
	just outside of La Morra Italy! by McGinityPhoto, on Flickr&quot;&gt;&lt;img
            src=&quot;//farm8.staticflickr.com/7362/9902197834_90ef009fd8.jpg&quot; width=&quot;500&quot;
            alt=&quot;View from hills just outside of La Morra Italy!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-href=&quot;http://www.flickr.com/photos/mcginityphoto/10076904953/&quot;
       href=&quot;http://farm3.staticflickr.com/2871/10076904953_34cb763f5c_c.jpg&quot;
       title=&quot;View of Ang Thong National Marine Park by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img src=&quot;//farm3.staticflickr.com/2871/10076904953_34cb763f5c.jpg&quot;
                                             width=&quot;500&quot; alt=&quot;View of Ang Thong National Marine Park&quot;
                                             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;http://farm6.staticflickr.com/5343/10177404544_1358494510_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/10177404544/&quot;
       title=&quot;Chillin&apos; in Qamea Fiji by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm6.staticflickr.com/5343/10177404544_1358494510.jpg&quot; width=&quot;500&quot; alt=&quot;Chillin&apos; in Qamea Fiji&quot;
            style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We arrived back in the US at the end of August, just in time to celebrate &lt;a
        href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack5&quot;&gt;Jack&apos;s 9th birthday&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    In September, we got loud at
    the Broncos Home Opener, and experienced beautiful Colorado fall weather with trips to Estes Park and Aspen. In
    October, we
    traveled to Minnesota for a best friend&apos;s wedding. We also visited Pennsylvania to spend some time with Trish&apos;s parents.
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;http://farm4.staticflickr.com/3731/10424172085_fbf8ebb173_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mraible/10424172085&quot;
       title=&quot;Right 3/4&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3731/10424172085_fbf8ebb173_t.jpg&quot; width=&quot;100&quot; alt=&quot;Right 3/4&quot;
            style=&quot;border: 1px solid black&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;http://raibledesigns.com/rd/entry/we_bought_a_ski_bus&quot;&gt;We Bought a Ski Bus&lt;/a&gt; in October and celebrated &lt;a
        href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_abbie7&quot;&gt;Abbie&apos;s birthday&lt;/a&gt; in November. Shortly after,
    we
    departed on a whirlwind &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_2013_a_nordic_countries&quot;&gt;six-country
    speaking tour&lt;/a&gt; in Europe. We visited 14 countries in 2013. 
    &lt;!-- Mexico, France, Iceland, Ireland, Britain, Italy, Thailand, Fiji, Holland, Belgium, Sweden, Norway, Finland, Copenhagen --&gt;
&lt;/p&gt;
&lt;p&gt;
    In early December, we flew to
    Idaho to &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_syncro_rescue_road_trip&quot;&gt;pickup our new Syncro&lt;/a&gt;. We
    anticipated a few VW Adventures when we bought the bus and haven&apos;t been disappointed.


&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a href=&quot;http://farm4.staticflickr.com/3771/11318813023_0a33a869ef_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mraible/11318813023/&quot;
       title=&quot;Let the VW adventures begin! by mraible, on Flickr&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm4.staticflickr.com/3771/11318813023_0a33a869ef_n.jpg&quot; width=&quot;320&quot;
            alt=&quot;Let the VW adventures begin!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;

    The Syncro drove
    back to Denver just fine, but started experiencing cooling issues driving around town. We got it fixed and drove
    to Montana for Christmas. We broke down on Christmas Eve in Bozeman, tried to fix it, but eventually gave up and
    rented a car. Straightaway Motors replaced the thermostat over the next week and we were able to drive it back to
    Denver with no issues. It started overheating again a couple days later. We&apos;ve only recently got it running smoothly, with help from &lt;a
        href=&quot;http://www.rockymountainwesty.com/&quot;&gt;Rocky Mountain Westy&lt;/a&gt;. You can read the full story on &lt;a
        href=&quot;http://www.thesamba.com/vw/forum/viewtopic.php?t=580347&quot;&gt;
    thesamba.com&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    Christmas Vacation was spent at The Raible Homestead, enjoying my parents new retirement cabin and a
    &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157639816640594/&quot;&gt;sweet sledding hill&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://farm3.staticflickr.com/2845/11973497666_90c0414f3d_c.jpg&quot;
       data-href=&quot;http://www.flickr.com/photos/mcginityphoto/11973497666/&quot;
       title=&quot;Yee Haw!&quot; rel=&quot;lightbox[2013yearinreview]&quot;&gt;&lt;img
            src=&quot;//farm3.staticflickr.com/2845/11973497666_90c0414f3d.jpg&quot; width=&quot;500&quot;
            alt=&quot;Yee Haw!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We finished the year skiing at &lt;a href=&quot;http://skiwhitefish.com/&quot;&gt;Big Mountain&lt;/a&gt;, where I learned how to downhill
    ski in grade school.&lt;/p&gt;

&lt;h2 id=&quot;2014&quot;&gt;2014&lt;/h2&gt;

&lt;p&gt;My goal for 2014 is singular: &lt;em&gt;finish The Bus&lt;/em&gt;. I finally found the restoration shop I wish I would&apos;ve found years ago.
    They&apos;re
    very quick and efficient, and send me daily (picture) updates of their progress. With any luck, it&apos;ll be done in a
    couple months (sound
    &lt;a href=&quot;http://raibledesigns.com/rd/entry/when_is_the_bus_gonna&quot;&gt;familiar&lt;/a&gt;?).
&lt;/p&gt;
&lt;p&gt;Last year, I wanted to &lt;em&gt;slow down&lt;/em&gt; and I feel like I did that on our honeymoon. My wife scoffs at that notion.
    &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;)&quot; title=&quot;;)&quot; /&gt; This year, I
    hope to simply take more time to do things, instead of trying to cram many things into tight timelines.&lt;/p&gt;
&lt;p&gt;
    I plan to spend less time traveling and speaking at conferences and more time at Volkswagen shows. With our 4x4 VW
    Syncro, we hope to camp, raft and spend quite a bit of time in the Rocky Mountains. We also hope to take the busses
    to a few art shows to show off Trish&apos;s majestic photos.
&lt;/p&gt;
&lt;p&gt;Professionally, I hope to continue developing HTML5 apps and APIs with JavaScript, CSS, Java and Groovy. I might dive back
    into Scala and I&apos;m intrigued by Node.js and Spring Boot. Since I won&apos;t be doing as many conferences, the
    technologies I
    use will likely be driven by client engagements. I expect 2014 to be a big year for HTTP/2.
&lt;/p&gt;
&lt;p&gt;Last year, and the year before, we watched the Broncos fail miserably in the NFL playoffs. This year, they&apos;re in the
    Super Bowl.
    With a kick-ass Ski Bus, a Porsche Bus on the way, awesome kids and a great wife - 2014 is destined to be
    spectacular. I hope the Broncos are too! &lt;img src=&quot;https://raibledesigns.com/images/smileys/smile.gif&quot; class=&quot;smiley&quot; alt=&quot;:)&quot; title=&quot;:)&quot; /&gt;
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/a_webapp_makeover_with_spring</id>
        <title type="html">A Webapp Makeover with Spring 4 and Spring Boot</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/a_webapp_makeover_with_spring"/>
        <published>2013-12-11T12:47:15-07:00</published>
        <updated>2013-12-13T14:54:52-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="spring4" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maven" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jersey" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springboot" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;A typical Maven and Spring web application has a fair amount of XML and 
verbosity to it. Add in Jersey and Spring Security and you can have hundreds of lines of 
XML before you even start to write your Java code. As part of a recent project,
I was tasked with upgrading a webapp like this to use Spring 4 and 
&lt;a href=&quot;http://projects.spring.io/spring-boot/&quot;&gt;Spring Boot&lt;/a&gt;. I also figured I&apos;d try to minimize the XML.&lt;/p&gt; 
&lt;p&gt;This is my story on how I upgraded to Spring 4, Jersey 2, Java 8 and Spring Boot 0.5.0 M6. 
&lt;/p&gt;
&lt;p&gt;When I started, the app was using Spring 3.2.5, Spring Security 3.1.4 and Jersey 1.18. The
pom.xml had four Jersey dependencies, three Spring dependencies and three Spring Security
dependencies, along with a number of exclusions for &quot;jersey-spring&quot;.&lt;/p&gt;
&lt;p id=&quot;spring4&quot;&gt;&lt;strong&gt;Upgrading to Spring 4&lt;/strong&gt;&lt;br/&gt;
Upgrading to Spring 4 was easy, I changed the version property to 4.0.0.RC2 and added the new 
Spring &lt;a href=&quot;http://spring.io/blog/2013/12/03/spring-framework-4-0-rc2-available&quot;&gt;bill of materials&lt;/a&gt;
to my pom.xml. I also add the Spring milestone repo since Spring 4 won&apos;t be released to Maven central
until tomorrow.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;dependencyManagement&amp;gt;
    &amp;lt;dependencies&amp;gt;
        &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;spring-framework-bom&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;${spring.framework.version}&amp;lt;/version&amp;gt;
            &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;
            &amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;
        &amp;lt;/dependency&amp;gt;
    &amp;lt;/dependencies&amp;gt;
&amp;lt;/dependencyManagement&amp;gt;

&amp;lt;repositories&amp;gt;
    &amp;lt;repository&amp;gt;
        &amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;
        &amp;lt;url&amp;gt;http://repo.spring.io/milestone&amp;lt;/url&amp;gt;
        &amp;lt;snapshots&amp;gt;
            &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
        &amp;lt;/snapshots&amp;gt;
    &amp;lt;/repository&amp;gt;
&amp;lt;/repositories&amp;gt;
&lt;/pre&gt;</summary>
        <content type="html">&lt;p&gt;A typical Maven and Spring web application has a fair amount of XML and 
verbosity to it. Add in Jersey and Spring Security and you can have hundreds of lines of 
XML before you even start to write your Java code. As part of a recent project,
I was tasked with upgrading a webapp like this to use Spring 4 and 
&lt;a href=&quot;http://projects.spring.io/spring-boot/&quot;&gt;Spring Boot&lt;/a&gt;. I also figured I&apos;d try to minimize the XML.&lt;/p&gt; 
&lt;p&gt;This is my story on how I upgraded to Spring 4, Jersey 2, Java 8 and Spring Boot 0.5.0 M6. 
&lt;/p&gt;
&lt;p&gt;When I started, the app was using Spring 3.2.5, Spring Security 3.1.4 and Jersey 1.18. The
pom.xml had four Jersey dependencies, three Spring dependencies and three Spring Security
dependencies, along with a number of exclusions for &quot;jersey-spring&quot;.&lt;/p&gt;
&lt;p id=&quot;spring4&quot;&gt;&lt;strong&gt;Upgrading to Spring 4&lt;/strong&gt;&lt;br/&gt;
Upgrading to Spring 4 was easy, I changed the version property to 4.0.0.RC2 and added the new 
Spring &lt;a href=&quot;http://spring.io/blog/2013/12/03/spring-framework-4-0-rc2-available&quot;&gt;bill of materials&lt;/a&gt;
to my pom.xml. I also add the Spring milestone repo since Spring 4 won&apos;t be released to Maven central
until tomorrow.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;dependencyManagement&amp;gt;
    &amp;lt;dependencies&amp;gt;
        &amp;lt;dependency&amp;gt;
            &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
            &amp;lt;artifactId&amp;gt;spring-framework-bom&amp;lt;/artifactId&amp;gt;
            &amp;lt;version&amp;gt;${spring.framework.version}&amp;lt;/version&amp;gt;
            &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;
            &amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;
        &amp;lt;/dependency&amp;gt;
    &amp;lt;/dependencies&amp;gt;
&amp;lt;/dependencyManagement&amp;gt;

&amp;lt;repositories&amp;gt;
    &amp;lt;repository&amp;gt;
        &amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;
        &amp;lt;url&amp;gt;http://repo.spring.io/milestone&amp;lt;/url&amp;gt;
        &amp;lt;snapshots&amp;gt;
            &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;
        &amp;lt;/snapshots&amp;gt;
    &amp;lt;/repository&amp;gt;
&amp;lt;/repositories&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Next, I removed all the references to ${spring.framework.version} in dependencies since it&apos;d 
be controlled by &lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Management&quot;&gt;
Maven&apos;s dependency management feature&lt;/a&gt;. 
&lt;/p&gt;
&lt;pre class=&quot;brush: diff&quot;&gt;
     &amp;lt;dependency&amp;gt;
         &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
         &amp;lt;artifactId&amp;gt;spring-web&amp;lt;/artifactId&amp;gt;
-        &amp;lt;version&amp;gt;${spring.framework.version}&amp;lt;/version&amp;gt;
     &amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
I also changed to use Maven 3&apos;s &lt;a href=&quot;http://maven.apache.org/pom.html#Exclusions&quot;&gt;wildcard syntax&lt;/a&gt; to exclude multiple 
dependencies.&lt;/p&gt;
&lt;pre class=&quot;brush: diff&quot;&gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;com.sun.jersey.contribs&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;jersey-spring&amp;lt;/artifactId&amp;gt;
        &amp;lt;exclusions&amp;gt;
             &amp;lt;exclusion&amp;gt;
                 &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
-                    &amp;lt;artifactId&amp;gt;spring&amp;lt;/artifactId&amp;gt;
-                &amp;lt;/exclusion&amp;gt;
-                &amp;lt;exclusion&amp;gt;
-                    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
-                    &amp;lt;artifactId&amp;gt;spring-core&amp;lt;/artifactId&amp;gt;
-                &amp;lt;/exclusion&amp;gt;
-                &amp;lt;exclusion&amp;gt;
-                    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
-                    &amp;lt;artifactId&amp;gt;spring-web&amp;lt;/artifactId&amp;gt;
-                &amp;lt;/exclusion&amp;gt;
-                &amp;lt;exclusion&amp;gt;
-                    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
-                    &amp;lt;artifactId&amp;gt;spring-beans&amp;lt;/artifactId&amp;gt;
-                &amp;lt;/exclusion&amp;gt;
-                &amp;lt;exclusion&amp;gt;
-                    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;
-                    &amp;lt;artifactId&amp;gt;spring-context&amp;lt;/artifactId&amp;gt;
+                    &amp;lt;artifactId&amp;gt;*&amp;lt;/artifactId&amp;gt;
             &amp;lt;/exclusion&amp;gt;
         &amp;lt;/exclusions&amp;gt;
     &amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;I confirmed the upgrade worked by running &quot;mvn dependency:tree | grep spring&quot;, followed by &quot;mvn jetty:run&quot; and viewing the app in my browser. &lt;/p&gt;
&lt;p id=&quot;jersey2&quot;&gt;&lt;strong&gt;Upgrading to Jersey 2&lt;/strong&gt;&lt;br/&gt;
The next item I tackled was upgrading to Jersey 2.4.1. I changed the version number in my pom.xml, then added the Jersey BOM.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.glassfish.jersey&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;jersey-bom&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;${jersey.version}&amp;lt;/version&amp;gt;
    &amp;lt;type&amp;gt;pom&amp;lt;/type&amp;gt;
    &amp;lt;scope&amp;gt;import&amp;lt;/scope&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
You might ask &quot;why Jersey?&quot; if we already have Spring MVC and its REST support? You might also ask why not Play or Grails instead of a Java + Spring stack? For this particular project, I recommended technology options, and these were certainly among them. However, the team chose differently and I support their decision. The project is 
creating an iOS app, as well as a responsive HTML5 mobile/desktop app. We figured we had enough risk with new technologies on the front-end that we should play it a bit safer on the backend. To make the backend work a bit sexier, we&apos;ve decided to allow Spring 4, Java 8 and possibly some reactive principles.&lt;/p&gt;
&lt;p&gt;Next, I changed from the old &lt;i&gt;com.sun.jersey&lt;/i&gt; dependencies to &lt;i&gt;org.glassfish.jersey&lt;/i&gt; and removed jersey-spring. &lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.glassfish.jersey.containers&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;jersey-container-servlet&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.glassfish.jersey.media&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;jersey-media-json-jackson&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
The last thing I needed to do was change the servlet-class and param-name in web.xml:&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;servlet&amp;gt;
    &amp;lt;servlet-name&amp;gt;jersey-servlet&amp;lt;/servlet-name&amp;gt;
    &amp;lt;servlet-class&amp;gt;org.glassfish.jersey.servlet.ServletContainer&amp;lt;/servlet-class&amp;gt;
    &amp;lt;init-param&amp;gt;
        &amp;lt;param-name&amp;gt;jersey.config.server.provider.packages&amp;lt;/param-name&amp;gt;
        &amp;lt;param-value&amp;gt;com.raibledesigns.boot.service&amp;lt;/param-value&amp;gt;
    &amp;lt;/init-param&amp;gt;
    &amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;
&amp;lt;/servlet&amp;gt;
&lt;/pre&gt;
&lt;p id=&quot;java8&quot;&gt;&lt;strong&gt;Requiring Java 8&lt;/strong&gt;&lt;br/&gt;
Requiring Java 8 to compile was easy enough. I added the maven-compiler-plugin to enforce a minimum version.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;plugin&amp;gt;
    &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.1&amp;lt;/version&amp;gt;
    &amp;lt;configuration&amp;gt;
        &amp;lt;source&amp;gt;1.8&amp;lt;/source&amp;gt;
        &amp;lt;target&amp;gt;1.8&amp;lt;/target&amp;gt;
    &amp;lt;/configuration&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;&lt;p&gt;I &lt;a href=&quot;https://jdk8.java.net/download.html&quot;&gt;downloaded the latest Java 8 SDK&lt;/a&gt; and installed it. Then I set my JAVA_HOME to use it.&lt;/p&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
&lt;/pre&gt;
&lt;p id=&quot;boot&quot;&gt;&lt;strong&gt;Integrating Spring Boot&lt;/strong&gt;&lt;br/&gt;
I learned about Spring Boot a few weeks ago &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_2013_a_nordic_countries&quot;&gt;at Devoxx&lt;/a&gt;. &lt;a href=&quot;http://www.joshlong.com/&quot;&gt;Josh Long&lt;/a&gt; gave me a 3-minute demo at the speaker&apos;s dinner and showed me enough to pique my interest. To integrate it into my project, I started with the &lt;a href=&quot;http://projects.spring.io/spring-boot/#quick-start&quot;&gt;Quick Start&lt;/a&gt;. I added the boot-parent, dependencies for web, security and actuator (logging, metrics, etc.) and the Maven plugin. I removed all the Spring and Spring Security dependencies.
&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;parent&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-parent&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;0.5.0.M6&amp;lt;/version&amp;gt;
&amp;lt;/parent&amp;gt;
...
&amp;lt;pluginRepositories&amp;gt;
    &amp;lt;pluginRepository&amp;gt;
        &amp;lt;id&amp;gt;spring-milestones&amp;lt;/id&amp;gt;
        &amp;lt;url&amp;gt;http://repo.spring.io/milestone&amp;lt;/url&amp;gt;
    &amp;lt;/pluginRepository&amp;gt;
&amp;lt;/pluginRepositories&amp;gt;
...
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-security&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-actuator&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
...
&amp;lt;plugin&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-maven-plugin&amp;lt;/artifactId&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Upon restarting my app, I got an error about spring-security.xml using a 3.1 XSD. I fixed it by changing to 3.2. Next, I wanted to eliminate web.xml. First of all, I created an &lt;code&gt;ApplicationInitializer&lt;/code&gt; so the WAR could be started from the command line.&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
package com.raibledesigns.boot.config;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class ApplicationInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(ApplicationInitializer.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(ApplicationInitializer.class, args);
    }
}
&lt;/pre&gt;
&lt;p&gt;However, after adding this, I received the following error on startup:&lt;/p&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
&apos;org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor&apos;: 
Invocation of init method failed; nested exception is 
java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl
.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;
&lt;/pre&gt;
&lt;p&gt;Adding hibernate-validator as a dependency solved this problem:&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.hibernate&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;hibernate-validator&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;
&lt;p&gt;To configure Spring Security without web.xml and spring-security.xml, I created &lt;code&gt;WebSecurityConfig.java&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
package com.raibledesigns.boot.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
@Order(Ordered.LOWEST_PRECEDENCE - 6)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers(&quot;/&quot;, &quot;/home&quot;).permitAll()
                .antMatchers(&quot;/v1.0/**&quot;).hasRole(&quot;USER&quot;)
                .anyRequest().authenticated();
        http.httpBasic().realmName(&quot;My API&quot;);
    }

    @Override
    protected void configure(AuthenticationManagerBuilder authManagerBuilder) throws Exception {
        authManagerBuilder.inMemoryAuthentication()
                .withUser(&quot;test&quot;).password(&quot;test123&quot;).roles(&quot;USER&quot;);
    }
}
&lt;/pre&gt;
&lt;p&gt;To configure Jersey without web.xml, I created a &lt;code&gt;JerseyConfig&lt;/code&gt; class:&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
package com.raibledesigns.boot.config;

import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.ServerProperties;

import javax.ws.rs.ApplicationPath;

@ApplicationPath(&quot;/v1.0&quot;)
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {
        packages(&quot;com.raibledesigns.boot.service&quot;);
        property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);
        property(ServerProperties.JSON_PROCESSING_FEATURE_DISABLE, false);
        property(ServerProperties.MOXY_JSON_FEATURE_DISABLE, true);
        property(ServerProperties.WADL_FEATURE_DISABLE, true);
        register(LoggingFilter.class);
        register(JacksonFeature.class);
    }
}
&lt;/pre&gt;
&lt;p&gt;Finally, I created &lt;code&gt;MvcConfig.java&lt;/code&gt; to set the welcome page.&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
package com.raibledesigns.boot.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController(&quot;/&quot;).setViewName(&quot;index&quot;);
    }
}
&lt;/pre&gt;
&lt;p&gt;To cleanup, I deleted &lt;code&gt;src/main/webapp/WEB-INF&lt;/code&gt; and created &lt;code&gt;src/main/resources/logback.xml&lt;/code&gt;:
&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
    &amp;lt;include resource=&quot;org/springframework/boot/logging/logback/base.xml&quot;/&amp;gt;
    &amp;lt;logger name=&quot;org.springframework.boot&quot; level=&quot;INFO&quot;/&amp;gt;
    &amp;lt;logger name=&quot;org.springframework.security&quot; level=&quot;ERROR&quot;/&amp;gt;
&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;p&gt;Since Boot doesn&apos;t support JSP out-of-the-box, I renamed my index.jsp file to index.html and changed the URL in it to point to &quot;/v1.0/hello&quot;. I was pleased to see that everything worked nicely. I learned shortly after that I could remove the Spring BOM since Spring Boot &lt;a href=&quot;https://twitter.com/rob_winch/status/410609696639184896&quot;&gt;uses a &amp;lt;spring.version&amp;gt; property to control its Spring version&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;The only issue I found is when started the app with &quot;mvn package &amp;&amp; java -jar target/app.war&quot;, it failed to initialize Jersey. I tried adding a @Bean for the servlet:&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;
@Bean
public ServletRegistrationBean jerseyServlet() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new ServletContainer(), &quot;/v1.0/*&quot;);
    registration.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, JerseyConfig.class.getName());
    return registration;
}
&lt;/pre&gt;
&lt;p&gt;Unfortunately, when running it using &quot;java -jar&quot;, I get the following error:
&lt;/p&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
org.glassfish.hk2.api.MultiException: A MultiException has 1 exceptions.  They are:
1. org.glassfish.jersey.server.internal.scanning.ResourceFinderException: 
java.io.FileNotFoundException: /.../target/app.war!/WEB-INF/classes (No such file or directory)
	at org.jvnet.hk2.internal.Utilities.justCreate(Utilities.java:869)
	at org.jvnet.hk2.internal.ServiceLocatorImpl.create(ServiceLocatorImpl.java:814)
	at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:906)
	at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:898)
	at org.glassfish.jersey.server.ApplicationHandler.createApplication(ApplicationHandler.java:300)
	at org.glassfish.jersey.server.ApplicationHandler.&amp;lt;init&amp;gt;(ApplicationHandler.java:279)
	at org.glassfish.jersey.servlet.WebComponent.&amp;lt;init&amp;gt;(WebComponent.java:302)
&lt;/pre&gt;
&lt;p&gt;
This seems strange since there is a WEB-INF/classes in my WAR. Regardless, this is not a Boot problem per se, but more of a Jersey issue. From one of the Boot developers:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
The whole idea with Boot is that servlets are just a transport - they are a means to an end, and hopefully not the only one - the &quot;container&quot; is Spring, not the servlet container. We probably could add some form of support for SCI but only by hacking the containers since the spec really doesn&apos;t allow for much control of their lifecycle. It hasn&apos;t been a priority so far.
&lt;/p&gt;
&lt;p id=&quot;summary&quot;&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br/&gt;
I hope this article is useful to see how you to upgrade your Java webapps to use Spring 4 and Spring Boot. I&apos;ve created a &lt;a href=&quot;https://github.com/mraible/boot-makeover&quot;&gt;boot-makeover project on GitHub&lt;/a&gt; with all the code mentioned. You can also &lt;a href=&quot;https://github.com/mraible/boot-makeover/commits/master&quot;&gt;view the commits&lt;/a&gt; for each step. &lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_modern_java_web_developer1</id>
        <title type="html">The Modern Java Web Developer Bootcamp at Devoxx</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_modern_java_web_developer1"/>
        <published>2013-10-29T10:21:49-06:00</published>
        <updated>2013-10-29T16:22:39-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="webdevelopment" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jvm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="dv13-javaweb$" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">At this year&apos;s &lt;a href=&quot;http://www.devoxx.be/&quot;&gt;Devoxx&lt;/a&gt;, I&apos;ll be delivering &lt;a href=&quot;http://www.devoxx.be/dv13-matt-raible.html?presId=3648&quot;&gt;my first University session&lt;/a&gt;. University talks are in depth presentations of 3 hours (= 75m + 30m break + 75m). I&apos;m calling it The Modern Java Web Developer Bootcamp and my goal is to teach people some new concepts and techniques that&apos;ll make them more valuable developers. My session&apos;s hashtag is &lt;a href=&quot;https://twitter.com/search?q=%23dv13-javaweb%24&quot;&gt;#dv13-javaweb$&lt;/a&gt; to exemplify the important takeaways: &lt;a href=&quot;http://www.infoq.com/articles/javaone2013-roundup&quot;&gt;Java is back&lt;/a&gt;, web development is fun and you can make more money.
&lt;/p&gt;
&lt;p&gt;Three hours is quite a bit longer than I&apos;m used to, but I&apos;m confident I can fill the time with lots of knowledge. My plan is to enhance my &lt;a href=&quot;http://raibledesigns.com/rd/entry/javaone_2013_my_presentations&quot;&gt;presentation from JavaOne&lt;/a&gt; and add a few demos. Currently, I&apos;m thinking of developing the following additional content:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP Overview (with SPDY)&lt;/li&gt;
&lt;li&gt;Polymer and Web Components&lt;/li&gt;
&lt;li&gt;Bootstrap 3 Overview&lt;/li&gt;
&lt;li&gt;HTML5 Storage&lt;/li&gt;
&lt;li&gt;API Framework Comparison (Play, Grails, Dropwizard)&lt;/li&gt;
&lt;li&gt;Load Testing&lt;/li&gt;
&lt;li&gt;Performance Monitoring (including RUM)&lt;/li&gt;
&lt;li&gt;Internal Cloud Options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For demos, I&apos;d like to show a few that provide real value to attendees and teach them how to do something they haven&apos;t done before. The ones below are candidates I&apos;m thinking of, and I&apos;d like to pick three for the final presentation.&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;Browser Tools Demo&lt;/li&gt;
&lt;li&gt;Developing with Bootstrap Demo&lt;/li&gt;
&lt;li&gt;AngularJS Demo&lt;/li&gt;
&lt;li&gt;Refactor an app from Spring to Java EE, no XML, all Java 8&lt;/li&gt;
&lt;li&gt;Page Speed Improvement Demo&lt;/li&gt;
&lt;li&gt;Security Demo (add LDAP to Angular app + OWASP ZAP)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you could pick three real-time tutorials from the choices above, which ones would you choose?&lt;/p&gt;
&lt;p&gt;I&apos;m also thinking of adding some stories about impressive loads served with very little hardware and real-time dashboard development. If you have a story about either of these, please let me know. I&apos;d be happy to credit you (or your company) and talk about any technical implementation details you&apos;re willing to provide.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/javaone_2013_my_presentations</id>
        <title type="html">JavaOne 2013: My Presentations</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/javaone_2013_my_presentations"/>
        <published>2013-09-27T13:35:01-06:00</published>
        <updated>2015-07-24T20:51:56-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="play" scheme="http://roller.apache.org/ns/tags/" />
        <category term="presentation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="web" scheme="http://roller.apache.org/ns/tags/" />
        <category term="smackdown" scheme="http://roller.apache.org/ns/tags/" />
        <category term="modern" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;I flew into San Francisco this past Monday to speak at &lt;a href=&quot;http://www.oracle.com/javaone&quot;&gt;JavaOne&lt;/a&gt; 2013, and to meet with my &lt;a href=&quot;http://www.johnmuirhealth.com/&quot;&gt;new client&lt;/a&gt;. I made sure to wear a &lt;a href=&quot;http://www.denverbroncos.com/&quot;&gt;Broncos&lt;/a&gt; shirt since I was riding the train through Oakland and had some co-workers that were Raiders fans. My trip started off nicely as the Broncos dismantled the Raiders on Monday Night Football. My new team and I watched it during a team dinner at &lt;a href=&quot;http://havanarestaurant.net/main/&quot;&gt;Havana&lt;/a&gt; in Walnut Creek. Historically, the Broncos and Raiders have had a heated rivalry historically, so the win was the perfect start to the week. &lt;img src=&quot;https://raibledesigns.com/images/smileys/smile.gif&quot; class=&quot;smiley&quot; alt=&quot;:)&quot; title=&quot;:)&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On Tuesday, I worked from my hotel in the morning, then met &lt;a href=&quot;http://www.jamesward.com/&quot;&gt;James Ward&lt;/a&gt; to do some last minute prep for our &lt;a href=&quot;https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2863&quot;&gt;smackdown&lt;/a&gt;. The prior week, we both upgraded our respective apps to use the latest versions of Grails and Play Framework. I ran into &lt;a href=&quot;http://grails.1312388.n4.nabble.com/Grails-2-3-Child-object-not-saved-in-unit-test-td4649385.html&quot;&gt;a&lt;/a&gt; &lt;a href=&quot;http://grails.1312388.n4.nabble.com/Geb-Tests-with-Grails-2-3-0-td4649417.html&quot;&gt;few&lt;/a&gt; &lt;a href=&quot;http://grails.1312388.n4.nabble.com/Grails-2-3-with-Spring-Security-td4649418.html&quot;&gt;issues&lt;/a&gt; when &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/801eca879dfeed208605db897eff8b77fa07bd29&quot;&gt;upgrading&lt;/a&gt;, while Play required &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/70cbdc9b00876c6dd455dd318c304ebf053e9fa1&quot;&gt;some API changes&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
We both added &lt;a href=&quot;https://www.memcachier.com/&quot;&gt;Memcachier&lt;/a&gt; to our apps (to share caching between dynos) and ran some Apache Bench tests. The &lt;a href=&quot;http://www.ubertracks.com/preso/#/8/10&quot;&gt;results&lt;/a&gt; showed quite a bit of slowdown compared to &lt;a href=&quot;http://www.ubertracks.com/preso/#/8/9&quot;&gt;last time&lt;/a&gt;, which we attributed to caching needing to make network hops. Other than that, we both had to make changes to our framework&apos;s buildpacks to get the latest versions running on Heroku, and when we headed for our talk, my instance of Grails wasn&apos;t running (60 second boot timeout on startup). The good news is it somehow solved its issues during our talk and was up and running when I checked it after, as it &lt;a href=&quot;http://bike.ubertracks.com/&quot;&gt;is now&lt;/a&gt;. Below is an embedded version of the presentation we delivered. You can also &lt;a href=&quot;http://ubertracks.com/preso&quot;&gt;click here&lt;/a&gt; to see it in a new window, or &lt;a href=&quot;http://www.slideshare.net/mraible/play-framework-vs-grails-smackdown-javaone-2013&quot;&gt;view it on SlideShare&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;http://static.raibledesigns.com/repository/presentations/Play_Framework_vs_Grails_Smackdown_JavaOne2013/&quot; width=&quot;600&quot; height=&quot;375&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;margin-bottom:5px&quot; allowfullscreen&gt; &lt;/iframe&gt; 
&lt;/div&gt;
&lt;p&gt;On Wednesday morning, I tried to attend Venkat&apos;s &lt;a href=&quot;https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2055&quot;&gt;Programming with Lambda Expressions in Java&lt;/a&gt;, but quickly discovered it was sold out. My talk on The Modern Java Web Developer started shortly after and I had a fantastic time talking to a packed room and preaching the virtues of learning and staying up-to-date with web technologies. I made sure to include a slide on &lt;a href=&quot;https://avatar.java.net/&quot;&gt;Avatar&lt;/a&gt;, an Oracle-sponsored JavaScript-based framework that requires &quot;very minor JavaScript knowledge&quot;. You can view my presentation below or &lt;a href=&quot;http://www.slideshare.net/mraible/the-modern-java-web-developer-javaone-2013&quot;&gt;on SlideShare&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/26581954?rel=0&quot; width=&quot;600&quot; height=&quot;375&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen&gt; &lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;According to @JavaOneConf, all JavaOne 2013 presentations will be &lt;a href=&quot;https://twitter.com/JavaOneConf/status/383381815626825728&quot;&gt;published on Parleys.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After completing my talks, I journeyed to my client and practiced what I preached, successfully finishing a spike that reduced page load time from 8 seconds to 2 seconds. That evening, I attended the Oracle Appreciation Event at Treasure Island, had some cold beer and listened to some loud music. &lt;/p&gt;
&lt;p&gt;I had a great time speaking at JavaOne this year, and look forward to my next speaking engagement. In November, I&apos;ll be traveling to Devoxx where I&apos;ll be giving a &lt;a href=&quot;http://www.devoxx.be/dv13-matt-raible.html?presId=3648&quot;&gt;3-hour University session&lt;/a&gt; on The Modern Java Web Developer. Hope to see you there!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/javaone_2013</id>
        <title type="html">JavaOne 2013: My First Time Speaking</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/javaone_2013"/>
        <published>2013-09-19T17:50:34-06:00</published>
        <updated>2013-09-20T00:10:04-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="webdevelopment" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javaone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="play" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;I&apos;ve been to JavaOne many times in my life, starting in &lt;a href=&quot;http://raibledesigns.com/rd/date/20040701&quot;&gt;2004&lt;/a&gt; and continuing in &lt;a href=&quot;http://raibledesigns.com/rd/entry/javaone_pictures_from_monday&quot;&gt;2005&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/javaone_2006_begins&quot;&gt;2006&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/javaone_parties&quot;&gt;2008&lt;/a&gt;. I have fond memories of the first couple years, meeting all the Java open source guys and having a lot of fun. 
&lt;/p&gt;
&lt;p&gt;
You might notice that the aforementioned blog posts no longer show pictures. That&apos;s because they were originally hosted on Apple&apos;s HomePage, which they shut down years ago. I haven&apos;t bothered to republish the photos and fix the links, but I do still have them. For those looking for a blast from the past, checkout &lt;a href=&quot;https://www.dropbox.com/sc/rk4lsfza50iaoag/a6nfMDmc_T&quot;&gt;Mike, Howard and James&lt;/a&gt; or &lt;a href=&quot;https://www.dropbox.com/sc/8fmr636tokxkaz1/YrsXeZaq4o&quot;&gt;Bruce and Marc&lt;/a&gt;. I also have a set of photos from our &lt;a href=&quot;http://www.flickr.com/photos/mraible/sets/72057594139761408/&quot;&gt;Geronimo Live party in 2006&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;As many of you know, JavaOne used to be a &lt;em&gt;huge&lt;/em&gt; conference, attracting 15,000 attendees back in the day. Numbers have dwindled a lot since Oracle bought Sun and I&apos;ve heard recent years are more around 1500. Since I&apos;ve spoken at a lot of conferences, but never JavaOne, I figured I&apos;d try this year. The good news is I got accepted and I&apos;ll be there next week!&lt;/p&gt;
&lt;p&gt;On Tuesday afternoon, I&apos;ll be presenting the &lt;a href=&quot;https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2863&amp;tclass=popup&quot;&gt;Play Framework vs Grails Smackdown&lt;/a&gt; with &lt;a href=&quot;http://www.jamesward.com/&quot;&gt;James Ward&lt;/a&gt;. On Wednesday morning, I&apos;ll be talking about &lt;a href=&quot;https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=2698&amp;tclass=popup&quot;&gt;The Modern Java Web Developer&lt;/a&gt;. I also look forward to &lt;a href=&quot;http://www.oracle.com/javaone/appreciation-event/index.html&quot;&gt;The Black Keys&lt;/a&gt; on Wednesday night.&lt;/p&gt;
&lt;p&gt;I have a feeling it&apos;s gonna be a great week!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/happy_birthday_jack5</id>
        <title type="html">Happy Birthday Jack!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/happy_birthday_jack5"/>
        <published>2013-08-28T14:41:19-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="birthday" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;My son Jack, or &quot;J Jackson&quot; as he liked to be called, turns 9 years old today. In the last year, he&apos;s grown up quite a bit. He learned how to play basketball last fall, snowboard last winter and became a Webelos Scout in the spring. This summer, he learned how to ride a motorcycle and had a blast whitewater rafting with us. He did a fabulous job being my Best Son in our wedding.&lt;/p&gt;
&lt;p&gt;This past weekend, we had a birthday party for Jack -- complete with a huge inflatable water slide. Trish and I flew in from our honeymoon 10 hours before the party started, but still managed to oversleep from jet lag. Nevertheless, we made it in time for some good fun and had a great time celebrating with the whole family and new friends from his new school. Below are a few choice pictures. &lt;a href=&quot;http://www.flickr.com/photos/mraible/sets/72157635278822284/&quot;&gt;The rest&lt;/a&gt; are on Flickr.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9618342158/&quot; href=&quot;http://farm6.staticflickr.com/5346/9618342158_0a58a42d04_c.jpg&quot; rel=&quot;lightbox[jackturns9]&quot; title=&quot;The Waterslide&quot;&gt;&lt;img src=&quot;//farm6.staticflickr.com/5346/9618342158_0a58a42d04_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;The Waterslide&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9615101587/&quot; href=&quot;http://farm3.staticflickr.com/2877/9615101587_ec4f71e80b_c.jpg&quot; rel=&quot;lightbox[jackturns9]&quot; title=&quot;Boing!&quot;&gt;&lt;img src=&quot;//farm3.staticflickr.com/2877/9615101587_ec4f71e80b_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Boing!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9618344806/&quot; href=&quot;http://farm6.staticflickr.com/5494/9618344806_1b37d36347_c.jpg&quot; rel=&quot;lightbox[jackturns9]&quot; title=&quot;Proud Papa&quot;&gt;&lt;img src=&quot;//farm6.staticflickr.com/5494/9618344806_1b37d36347_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Proud Papa&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9618352286/&quot; href=&quot;http://farm4.staticflickr.com/3769/9618352286_92aeb51b34_c.jpg&quot; rel=&quot;lightbox[jackturns9]&quot; title=&quot;Double Rainbow&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3769/9618352286_92aeb51b34.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Double Rainbow&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
Jack&apos;s favorite thing to do is play Minecraft or watch YouTube videos about it. His sister still knows how to push his buttons, but he&apos;s learning to ignore her. This is a big year for Jack as he&apos;s starting a new school and making a bunch of new friends. I know he&apos;ll do great and I look forward to helping him adapt and enjoy it. Happy Birthday Jack!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-href=&quot;http://www.flickr.com/photos/mraible/9615111297/&quot; href=&quot;http://farm3.staticflickr.com/2891/9615111297_f604219599_c.jpg&quot; title=&quot;Jack on his birthday&quot; rel=&quot;lightbox[jackturns9]&quot;&gt;&lt;img src=&quot;//farm3.staticflickr.com/2891/9615111297_f604219599.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Jack on his birthday&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Related:&lt;/b&gt; Jack&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack3&quot;&gt;8th&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack3&quot;&gt;5th&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack2&quot;&gt;4th&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack1&quot;&gt;3rd&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack&quot;&gt;1st&lt;/a&gt; birthdays. </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/paris_and_iceland_a_photographers</id>
        <title type="html">Paris and Iceland, A Photographer&apos;s Paradise</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/paris_and_iceland_a_photographers"/>
        <published>2013-04-12T10:31:24-06:00</published>
        <updated>2022-03-30T17:21:09-06:00</updated> 
        <category term="/General" label="General" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="photos" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxfrance" scheme="http://roller.apache.org/ns/tags/" />
        <category term="iceland" scheme="http://roller.apache.org/ns/tags/" />
        <category term="paris" scheme="http://roller.apache.org/ns/tags/" />
        <category term="northernlights" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
    In February 2012, Trish and I &lt;a href=&quot;http://raibledesigns.com/rd/entry/a_spectacular_trip_to_stockholm&quot;&gt;traveled
    to
    Stockholm&lt;/a&gt; on &lt;a href=&quot;http://www.icelandair.com/&quot;&gt;Icelandair&lt;/a&gt;. We were immediately impressed with the
    airline&apos;s
    excellent service. Trish was also a bit miffed that we had a layover in Iceland without an opportunity to get out
    and see the sites. You see, Iceland is a Photographer&apos;s Paradise, and she&apos;s &lt;a href=&quot;http://mcginityphoto.com&quot;&gt;the
    best photographer I know&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This year, when planning our trip to &lt;a href=&quot;http://www.devoxx.com/display/FR13/Home&quot;&gt;Devoxx
    France&lt;/a&gt;, I set out to correct this missed opportunity. Since Icelandair now flies direct from Denver, and offers
    &lt;a href=&quot;http://www.icelandair.us/flights/stopover/&quot;&gt;free stopovers&lt;/a&gt;, our planning was easy.

&lt;p&gt;The conference was in Paris; one of the most magnificent cities to photograph. Trish has some &lt;a
        href=&quot;http://raibledesigns.com/rd/entry/our_engaging_trip_to_paris&quot;&gt;great photos&lt;/a&gt; from 2011.
    She&apos;ll be showing many of these photos at an upcoming exhibit at &lt;a href=&quot;http://www.parisontheplatte.com/&quot;&gt;Paris
        on the Platte&lt;/a&gt; in Denver. However, she wanted more. &lt;/p&gt;

&lt;p&gt;We arrived in Paris for Devoxx France on Tuesday, March
    26th. The first day&apos;s excursion started with visiting the Latin Quarter, the
    &lt;a href=&quot;http://en.wikipedia.org/wiki/Panth%C3%A9on,_Paris&quot;&gt;Panth&#233;on&lt;/a&gt; and &lt;a
            href=&quot;http://en.wikipedia.org/wiki/Notre_Dame,_Paris&quot;&gt;Notre Dame&lt;/a&gt;.

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8614984919/&quot;
       href=&quot;http://farm9.staticflickr.com/8249/8614984919_b14ea344b1_c.jpg&quot;
       title=&quot;Panth&#233;on in the evening by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8249/8614984919_b14ea344b1_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Panth&#233;on in the evening&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616096172/&quot;
       href=&quot;http://farm9.staticflickr.com/8105/8616096172_c91693d33b_c.jpg&quot;
       title=&quot;Panth&#233;on with Bus by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8105/8616096172_c91693d33b_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Panth&#233;on with Bus&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8614993061/&quot;
       href=&quot;http://farm9.staticflickr.com/8114/8614993061_86f3943c3e_c.jpg&quot;
       title=&quot;Notre Dame Paris along the Seine River France by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8114/8614993061_86f3943c3e.jpg&quot; width=&quot;500&quot; height=&quot;333&quot;
            alt=&quot;Notre Dame Paris along the Seine River France&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;We had a nice dinner that evening while watching the F&#250;tbol match between France and Spain. 

    On Wednesday, we hung around the hotel in the morning, then took the metro to

    &lt;a href=&quot;http://www.sacre-coeur-montmartre.com/&quot;&gt;La Basilique du Sacr&#233; Coeur de Montmartre&lt;/a&gt; and &lt;a
        href=&quot;http://www.moulinrouge.fr/&quot;&gt;Moulin Rouge&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8596700115/&quot;
       href=&quot;http://farm9.staticflickr.com/8509/8596700115_ffe355a2d5_c.jpg&quot;
       title=&quot;La Basilique du Sacr&#233; Coeur de Montmartre by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8509/8596700115_ffe355a2d5.jpg&quot; width=&quot;500&quot; height=&quot;333&quot;
            alt=&quot;La Basilique du Sacr&#233; Coeur de Montmartre&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    From there, we journeyed to the &lt;a href=&quot;http://www.tour-eiffel.fr/&quot;&gt;Eiffel
    Tower&lt;/a&gt; for a hike. We climbed the stairs to the second floor and enjoyed the spectacular view.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8614863403/&quot;
       href=&quot;http://farm9.staticflickr.com/8541/8614863403_c7322a15f6_c.jpg&quot;
       title=&quot;View of Paris from Tour Eiffel by mraible, on Flickr&quot;  rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8541/8614863403_c7322a15f6.jpg&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;
            width=&quot;500&quot; height=&quot;375&quot;
            alt=&quot;View of Paris from Tour Eiffel&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Wednesday evening, we attended the Devoxx Speakers Dinner. We had a great time chatting and drinking wine with Martin Odersky, Guillaume Bort, the many Nicolas&apos;, James Ward and Josh Long.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8596698839/&quot;
       href=&quot;http://farm9.staticflickr.com/8112/8596698839_8c875527a9_c.jpg&quot;
       title=&quot;Nicolas&apos; by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8112/8596698839_8c875527a9_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Nicolas&apos;&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8597803538/&quot; href=&quot;http://farm9.staticflickr.com/8096/8597803538_7289136aca_c.jpg&quot;
       title=&quot;Martin and Nicolas by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8096/8597803538_7289136aca_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Martin and Nicolas&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8597803622/&quot; href=&quot;http://farm9.staticflickr.com/8382/8597803622_71348066a3_c.jpg&quot;
       title=&quot;Guillaume Bort and Martin Odersky by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8382/8597803622_71348066a3_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Guillaume Bort and Martin Odersky&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8596699105/&quot; href=&quot;http://farm9.staticflickr.com/8380/8596699105_36dda11ab6_c.jpg&quot; title=&quot;Shenanigans :) by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8380/8596699105_36dda11ab6_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Shenanigans :)&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;On Thursday, I delivered my talk on Comparing JVM Web Frameworks in the early afternoon and did
    Play vs. Grails Smackdown with &lt;a href=&quot;http://www.jamesward.com/&quot;&gt;James Ward&lt;/a&gt; in the evening. I published an
    &lt;a href=&quot;http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference&quot;&gt;article about these talks&lt;/a&gt;
    the next day.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8611595635/&quot;
       href=&quot;http://farm9.staticflickr.com/8100/8611595635_1e71e66358_c.jpg&quot;
       title=&quot;James Ward and I at Devoxx France by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8100/8611595635_1e71e66358_n.jpg&quot; width=&quot;320&quot; height=&quot;213&quot;
            alt=&quot;James Ward and I at Devoxx France&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;While I was talking about frameworks, Trish was galavanting around Paris taking some amazing photos.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8615035109/&quot;
       href=&quot;http://farm9.staticflickr.com/8108/8615035109_cb5d88a4ed_c.jpg&quot;
       title=&quot;Our Lady Liberty and Eiffel Tower by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8108/8615035109_cb5d88a4ed_s.jpg&quot; width=&quot;75&quot; height=&quot;75&quot;
            alt=&quot;Our Lady Liberty and Eiffel Tower&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616147874/&quot;
       href=&quot;http://farm9.staticflickr.com/8543/8616147874_8e0de9d7aa_c.jpg&quot;
       title=&quot;Boats Seine River Eiffel Tower by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8543/8616147874_8e0de9d7aa_s.jpg&quot; width=&quot;75&quot; height=&quot;75&quot;
            alt=&quot;Boats Seine River Eiffel Tower&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8615047387/&quot;
       href=&quot;http://farm9.staticflickr.com/8384/8615047387_93155b7fcc_c.jpg&quot;
       title=&quot;R&#233;cipon Quadrigas France by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8384/8615047387_93155b7fcc_s.jpg&quot; width=&quot;75&quot; height=&quot;75&quot;
            alt=&quot;R&#233;cipon Quadrigas France&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616151686/&quot;
       href=&quot;http://farm9.staticflickr.com/8266/8616151686_89d7bfdf75_c.jpg&quot;
       title=&quot;Statue Of LaFayette Cours La Reine Paris Frances by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8266/8616151686_89d7bfdf75_s.jpg&quot; width=&quot;75&quot; height=&quot;75&quot;
            alt=&quot;Statue Of LaFayette Cours La Reine Paris Frances&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616154162/&quot;
       href=&quot;http://farm9.staticflickr.com/8393/8616154162_6c320aa1f9_c.jpg&quot;
       title=&quot;Pont Alexandre III Bridge Paris by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8393/8616154162_6c320aa1f9_s.jpg&quot; width=&quot;75&quot; height=&quot;75&quot;
            alt=&quot;Pont Alexandre III Bridge Paris&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Thursday night, we had a wonderfully authentic French dinner with many of the folks from the conference. Around
    midnight, Trish captured the beauty of &lt;a href=&quot;http://en.wikipedia.org/wiki/Les_Invalides&quot;&gt;Les Invalides&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8611599727/&quot; href=&quot;http://farm9.staticflickr.com/8384/8611599727_d7a7d5ae51_c.jpg&quot;
       title=&quot;Les Invalides by Night by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8384/8611599727_d7a7d5ae51.jpg&quot; width=&quot;500&quot; height=&quot;195&quot;
            alt=&quot;Les Invalides by Night&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;On Friday, we slept in a bit and then headed to the airport for our flight to Iceland. A few hours later, we were
    snuggled into the cozy bar at &lt;a href=&quot;http://www.hotelcentrum.is/&quot;&gt;Hotel Reykjavik Centrum&lt;/a&gt;. A few hours after
    that
    and we were bouncing up and down on a &lt;a href=&quot;http://superjeep.is/&quot;&gt;Super Jeep&lt;/a&gt; tour to see the Northern Lights.
    Our
    driver kept telling us &quot;if you believe, it will happen&quot;. And boy oh boy, did it ever. The green and purple lights
    dancing in the sky overhead were mind-blowing!

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616423743/&quot;
       href=&quot;http://farm9.staticflickr.com/8519/8616423743_6d17a98e9e_c.jpg&quot;
       title=&quot;Northern Lights 12 by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8519/8616423743_6d17a98e9e_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Northern Lights 12&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8617530704/&quot;
       href=&quot;http://farm9.staticflickr.com/8122/8617530704_4bc892702a_c.jpg&quot;
       title=&quot;Northern Lights 13 by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8122/8617530704_4bc892702a_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Northern Lights 13&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8617531184/&quot;
       href=&quot;http://farm9.staticflickr.com/8262/8617531184_a688cb0f88_c.jpg&quot;
       title=&quot;Northern Lights 19 by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8262/8617531184_a688cb0f88_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Northern Lights 19&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8617531254/&quot;
       href=&quot;http://farm9.staticflickr.com/8383/8617531254_6cb60b329a_c.jpg&quot;
       title=&quot;Northern Lights 20 by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8383/8617531254_6cb60b329a_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot;
            alt=&quot;Northern Lights 20&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Saturday came quickly after a late night, and we opted for a scenic tour of the area &lt;a
        href=&quot;http://helicoptericeland.is/&quot;&gt;by helicopter&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616233884/&quot;
       href=&quot;http://farm9.staticflickr.com/8123/8616233884_e332e31cd8_c.jpg&quot;
       title=&quot;Bird&apos;s eye view of the Reykjavik Iceland Opera House overlooking the bay and Mountains by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8123/8616233884_e332e31cd8_m.jpg&quot; width=&quot;160&quot; height=&quot;240&quot;
            alt=&quot;Bird&apos;s eye view of the Reykjavik Iceland Opera House overlooking the bay and Mountains&quot;
            style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8615137705/&quot;
       href=&quot;http://farm9.staticflickr.com/8103/8615137705_070c4bd5a0_c.jpg&quot;
       title=&quot;Glymur Falls by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8103/8615137705_070c4bd5a0_m.jpg&quot; width=&quot;154&quot; height=&quot;240&quot;
            alt=&quot;Glymur Falls&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8615149011/&quot;
       href=&quot;https://live.staticflickr.com/8524/8615149011_028218b720_c.jpg&quot;
       title=&quot;Matt and me and our Pilot Eggert with our Bell by McGinityPhoto, on Flickr&quot;
       rel=&quot;lightbox[paris-iceland-2013]&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/8524/8615149011_028218b720.jpg&quot; width=&quot;500&quot; height=&quot;333&quot;
            alt=&quot;Matt and me and our Pilot Eggert with our Bell&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Saturday evening, we &lt;a
        href=&quot;http://www.getyourguide.com/reykjavik-l30/iceland-brewery-tour-a-journey-through-the-ages-t6043/&quot;&gt;journeyed
    through the ages&lt;/a&gt; with a tour and tasting at the &lt;a href=&quot;http://www.olgerdin.is/English/Products/Brewery/&quot;&gt;Icelandic
    brewery &#214;lger&#240;in&lt;/a&gt;. The &lt;a
        href=&quot;http://www.tripadvisor.com/Restaurant_Review-g189970-d2371613-Reviews-Grillmarkadurinn_The_Grill_Market-Reykjavik_Capital_Region.html&quot;&gt;Grillmarkadurinn&lt;/a&gt;
    restaurant
    afterward was delicious.
&lt;/p&gt;
&lt;p&gt;Easter Sunday was our last day in Iceland and we enjoyed most of it at the &lt;a href=&quot;http://www.bluelagoon.com/&quot;&gt;Blue
    Lagoon&lt;/a&gt;. Despite the plethora of tourists, the hot springs, saunas and cold beer were a lovely way to prepare for
    the long road home.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616267880/&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;
       href=&quot;http://farm9.staticflickr.com/8243/8616267880_a3545602e9_c.jpg&quot;
       title=&quot;Blue Lagoon Rocks! by McGinityPhoto, on Flickr&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8243/8616267880_a3545602e9_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot;
            alt=&quot;Blue Lagoon Rocks!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8616268748/&quot; rel=&quot;lightbox[paris-iceland-2013]&quot;
       href=&quot;http://farm9.staticflickr.com/8537/8616268748_022161dd45_c.jpg&quot;
       title=&quot;Great Road in Iceland by McGinityPhoto, on Flickr&quot;&gt;&lt;img
            src=&quot;//farm9.staticflickr.com/8537/8616268748_022161dd45_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot;
            alt=&quot;Great Road in Iceland&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Visiting Iceland and photographing the &lt;a href=&quot;http://en.wikipedia.org/wiki/Aurora_(astronomy)&quot;&gt;Aurora Borealis&lt;/a&gt;
    was an awesome experience. Speaking at Devoxx France, photographing Paris and having lots of good times with new
    (and old) friends was equally delightful. For more pictures of our travels, see &lt;a
        href=&quot;http://www.flickr.com/photos/mraible/sets/72157633151396495/&quot;&gt;my Paris and Iceland
    Album&lt;/a&gt; or Trish&apos;s &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157633110741364/&quot;&gt;Devoxx France&lt;/a&gt;,
    &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157633162412201/&quot;&gt;Iceland&lt;/a&gt; or &lt;a
        href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157633161145490/&quot;&gt;Northern Lights&lt;/a&gt; albums.
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/devoxx_france_a_great_conference</id>
        <title type="html">Devoxx France: A Great Conference in a Magnificent City</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/devoxx_france_a_great_conference"/>
        <published>2013-03-29T13:14:30-06:00</published>
        <updated>2014-05-08T19:47:26-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="paradoxofchoice" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="france" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxfr" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="play" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/8614997207/&quot; title=&quot;Red Eiffel flowers by McGinityPhoto, on Flickr&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8386/8614997207_7320dec749_t.jpg&quot; width=&quot;66&quot; height=&quot;100&quot; alt=&quot;Red Eiffel flowers&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

This week, my &lt;a href=&quot;http://mcginityphoto.com&quot;&gt;lovely fianc&#233;&lt;/a&gt; and I traveled to the &lt;a href=&quot;http://en.wikipedia.org/wiki/Paris&quot;&gt;City of Light&lt;/a&gt;. Our journey was designed around some speaking engagements at Devoxx France. Devoxx is one of my favorite conference franchises and Devoxx France has been special to me ever since the Devoxx (Belgium) I spoke at in 2011. 
&lt;/p&gt;
&lt;p&gt;
2011 was the year I spoke about &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_html5_with_play_scala&quot;&gt;my experience with Play, Scala, CoffeeScript and Jade&lt;/a&gt;. I wrote the presentation on my flight over, composed the demo video the night before and made it all happen in the nick of time. Of course, this was after 120 hours of research and preparation, so the presentation composition process had all the data I needed. You can imagine my sense of relief after pulling off that talk and getting an enthusiastic applause from the audience for my efforts. 
&lt;/p&gt;
&lt;p&gt;
One of the first audience questions I received was from &lt;a href=&quot;https://twitter.com/nmartignole&quot;&gt;Nicolas Martignole&lt;/a&gt;, asking if I&apos;d speak at Devoxx France the following year. I whole-heartedly agreed to do it and was excited for the opportunity. It was with great disappointment that I later found out I couldn&apos;t attend Devoxx France in 2012. My client didn&apos;t like me taking so much time off and I agreed to scale my two week vacation back to &lt;a href=&quot;http://raibledesigns.com/rd/entry/cruising_around_the_western_caribbean&quot;&gt;1 week&lt;/a&gt;. This year, I was determined to go, so I submitted some of my favorite talks: Comparing JVM Web Frameworks and The Play vs. Grails Smackdown with &lt;a href=&quot;http://www.jamesward.com/&quot;&gt;James Ward&lt;/a&gt;. I was extremely pleased when they both got accepted.
&lt;/p&gt;
&lt;p&gt;
Side Story: I met Martin Odersky shortly when he sat down next to me for the Java Posse presentation in Belgium in 2011. After shaking his hand and introducing myself, I had to politely ask him to leave because it was Trish&apos;s seat. Talk about awkward; but Martin was very gracious and promptly found a new seat close by.
&lt;/p&gt;
&lt;p id=&quot;comparing-jvm-web-frameworks&quot;&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/The_Paradox_of_Choice:_Why_More_Is_Less&quot; title=&quot;The Paradox of Choice&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8102/8600235023_dc4753c0aa_t.jpg&quot; width=&quot;65&quot; height=&quot;100&quot; alt=&quot;The Paradox of Choice&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;
&lt;strong&gt;Comparing JVM Web Frameworks&lt;/strong&gt;&lt;br/&gt;
Both talks required a bit of updating. For Comparing JVM Web Frameworks, I started reading &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Paradox_of_Choice:_Why_More_Is_Less&quot;&gt;The Paradox of Choice&lt;/a&gt; and found many parallels to the agony that developers experience with choosing a web framework. I described how I didn&apos;t think good framework decisions were based on the many, many features that frameworks have, but often on pre-defined constraints. There&apos;s those lucky developers that get to choose a Full Stack Framework because they&apos;re doing greenfield development. Then there&apos;s those that want a better &lt;em&gt;Pure&lt;/em&gt; Web Framework that replaces something (e.g. Struts) that&apos;s not satisfying their needs. And lastly, there&apos;s those that&apos;ve found it possible to leverage a &lt;abbr title=&quot;Service Oriented Front End Architecture&quot;&gt;SOFEA&lt;/abbr&gt; and use a JavaScript MVC framework with an API Framework on the backend. I don&apos;t think it makes sense to compare &lt;em&gt;all&lt;/em&gt; web frameworks and I tried to use these pre-defined constraints (language, platform and application type) argument to separate into categories and help make choosing easier. 
&lt;/p&gt;
&lt;p&gt;
I took out the parts of the presentation that&apos;ve pissed people off in the past - particular the JSF bashing by James Gosling, the Rails gushing from Craig McClanahan and the Pros and Cons sections of each framework. I added the &lt;a href=&quot;https://www.flickr.com/photos/mraible/8588701778&quot;&gt;history of web frameworks&lt;/a&gt; and research from &lt;a href=&quot;http://www.infoq.com/research/jvm-web-frameworks&quot;&gt;InfoQ&lt;/a&gt; and &lt;a href=&quot;http://devrates.com/project/list?query=%5Bweb+framework%5D&quot;&gt;devrates.com&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8588701778/&quot; href=&quot;https://farm9.staticflickr.com/8529/8588701778_91aeb65377_o.png&quot; title=&quot;History of Web Frameworks 2013&quot; rel=&quot;lightbox[devoxxfr-2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8529/8588701778_0fb17b5612.jpg&quot; width=&quot;500&quot; height=&quot;223&quot; alt=&quot;History of Web Frameworks 2013&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The best part of the JVM Web Frameworks talk was the audience&apos;s reaction and enthusiasm. Devoxx always seems to attract passionate developers and Devoxx France was no different. Developers packing the room, clapping after your intro, laughing at your jokes, signifying that they agree with you about JSF. As a speaker, it&apos;s an unbelievable experience.
&lt;/p&gt;
&lt;p&gt;
You can view my Comparing JVM Web Frameworks presentation below or &lt;a href=&quot;http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-devoxx-france-2013&quot;&gt;on Slideshare.net&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/17868398?rel=0&quot; width=&quot;512&quot; height=&quot;325&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen&gt; &lt;/iframe&gt;
&lt;/p&gt;
&lt;p id=&quot;play-vs-grails-smackdown&quot;&gt;&lt;strong&gt;Play Frameworks vs. Grails Smackdown&lt;/strong&gt;&lt;br/&gt;
To prepare for James Ward and my Play vs. Grails Smackdown, we had a number of goals. First of all, we wanted to update our apps to use the latest versions of each framework. I &lt;a href=&quot;http://raibledesigns.com/rd/entry/upgrading_grails_from_2_0&quot;&gt;documented what it took for Grails&lt;/a&gt;, James just &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/6b674e6b8998b0996869cf510dae71a199deec07&quot;&gt;checked in his code&lt;/a&gt; to GitHub. It was interesting to see that Grails 2.0.3 -&gt; 2.2.1 caused a number of issues with testing, while Play 2.0.3 -&gt; Play 2.1.0 required API changes, but nothing for tests. Secondly, we &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/43795059fcd3d321ab93ea14dc149a3c762daf47&quot;&gt;updated all the stats&lt;/a&gt; for our pretty graphs and &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/9654e74e61c03ccd916ee839885503e206339c81&quot;&gt;ran load tests again&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
This is where the fun started. On Tuesday evening, I decided to challenge the notion that Play was twice as fast as Grails. James had proven this with &lt;a href=&quot;http://httpd.apache.org/docs/2.2/programs/ab.html&quot;&gt;Apache Bench&lt;/a&gt; tests. With Play 2.0 and Grails 2.0 (last summer), we clocked Play at 251/requests per second and 198 for Grails. After upgrading each app to the latest releases, we found the numbers to be 233/second for Play and 118 for Grails. 
&lt;/p&gt;
&lt;p&gt;
However, Apache Bench only tests until the first byte is received. Since I&apos;ve done a lot of browser optimizations recently, I fired up &lt;a href=&quot;http://whichloadsfaster.com&quot;&gt;whichloadsfaster.com&lt;/a&gt;, captured a screenshot and &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/5e867a85279d4be0736c4843704646d55e7eacd7&quot;&gt;added it to our presentation&lt;/a&gt;. The next day, James &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/1f15b8c06a5b7b298b111f263f3c26197fbee096&quot;&gt;added a CDN&lt;/a&gt; and a &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/ab532444258f494d40a7126716c6ac7190b80a98&quot;&gt;bunch of caching&lt;/a&gt; to his app and re-ran his AB tests. 
&lt;/p&gt;
&lt;p&gt;
Now he was &lt;em&gt;smoking&lt;/em&gt; Grails, so I &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/ea911b60e17837a6d6b5359e1e616bec43013ddd&quot;&gt;added a CDN&lt;/a&gt; and &lt;a href=&quot;https://github.com/jamesward/happytrails/commit/da776a16ce6ac17eb65d66cb8a206b18a44a6536&quot;&gt;caching&lt;/a&gt; as well. However, the best I could do was just over 1000/requests per second, while he was around 2200/second. When he ran live tests during our talk, Play was around 2800/sec and Grails was around 900.
&lt;/p&gt;
&lt;p&gt;
It was great to see how much better performance we could get with caching and a CDN. The best part is this should be available to most applications, not just these frameworks. By adding a CDN (we used Amazon CloudFront) and caching, we were both able to 10x the performance of our apps. You can find our presentation &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/Play_vs_Grails_Smackdown_DevoxxFrance2013/&quot;&gt;here&lt;/a&gt; or view it below.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//static.raibledesigns.com/repository/presentations/Play_vs_Grails_Smackdown_DevoxxFrance2013/&quot; width=&quot;500&quot; height=&quot;375&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; allowfullscreen webkitallowfullscreen mozallowfullscreen style=&quot;border:1px solid #CCC;margin-bottom:5px&quot;&gt; &lt;/iframe&gt;
&lt;/p&gt;

&lt;p id=&quot;summary&quot;&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br/&gt;
This was a very enjoyable conference to attend as a speaker. First of all, it was in one of the most beautiful cities in the world, but it&apos;s also a very special place for Trish and I. &lt;a href=&quot;http://raibledesigns.com/rd/entry/our_engaging_trip_to_paris&quot;&gt;We got engaged just outside of Paris in Versailles&lt;/a&gt; after the &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_html5_with_play_scala&quot;&gt;last Devoxx conference&lt;/a&gt; I spoke at. Trish has some &lt;a href=&quot;http://www.mcginityphoto.com/Other/MattandTrishengagementPhotos&quot;&gt;amazing photos&lt;/a&gt; from that trip. Secondly, the Devoxx conference attracts a special kind of developer - one that is passionate about and eager for knowledge. Lastly, speaking with my good friend James, in an exotic city about something we love - that was special. Asking for beers and having them brought to us at the start of our Smackdown. That was magical (thanks Nicolas!). 
&lt;/p&gt;
&lt;p&gt;
To all the Devoxx organizers and crew - well done on a great show!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/upgrading_grails_from_2_0</id>
        <title type="html">Upgrading Grails from 2.0 to 2.2</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/upgrading_grails_from_2_0"/>
        <published>2013-03-22T09:16:37-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="smackdown" scheme="http://roller.apache.org/ns/tags/" />
        <category term="upgrade" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://grails.org&quot;&gt;&lt;img src=&quot;//static.raibledesigns.com/repository/images/grails-logo-20130322.png&quot; alt=&quot;Grails&quot; width=&quot;166&quot; height=&quot;39&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;/&gt;&lt;/a&gt;
In preparation for my &lt;a href=&quot;http://www.devoxx.com/display/FR13/Play+Framework+vs.+Grails+Smackdown&quot;&gt;Grails vs. Play Smackdown&lt;/a&gt; at &lt;a href=&quot;http://www.devoxx.com/display/FR13/Home&quot;&gt;Devoxx France&lt;/a&gt; next week, I recently upgraded my &lt;a href=&quot;https://github.com/jamesward/happytrails/tree/grails2&quot;&gt;Grails version&lt;/a&gt; of Happy Trails from Grails 2.0.3 to Grails 2.2.1. I ran into a few issues along the way and figured I&apos;d document them here to help others out.
&lt;/p&gt;
&lt;p id=&quot;source&quot;&gt;&lt;strong&gt;Fixing the source&lt;/strong&gt;&lt;br/&gt;The first issue I ran into was Spock and Groovy 2 incompatibilities. &lt;/p&gt;
&lt;pre class=&quot;brush: shell&quot;&gt;
| Resolving plugin JAR dependencies
| Error WARNING: Dependencies cannot be resolved for plugin [mail] due to error: startup failed:
Could not instantiate global transform class org.spockframework.compiler.SpockTransform specified at jar:file:/Users/mraible/.grails/ivy-cache/org.spockframework/spock-core/jars/spock-core-0.7-groovy-1.8.jar!/META-INF/services/org.codehaus.groovy.transform.ASTTransformation  because of exception org.spockframework.util.IncompatibleGroovyVersionException: The Spock compiler plugin cannot execute because Spock 0.7.0-groovy-1.8 is not compatible with Groovy 2.0.7. For more information, see http://versioninfo.spockframework.org
&lt;/pre&gt;
&lt;p&gt;I &lt;a href=&quot;http://stackoverflow.com/questions/15410368/upgrading-from-grails-2-0-3-to-2-2-1-server-access-error-connection-refused&quot;&gt;posted the problem to StackOverflow&lt;/a&gt; and got a response almost immediately. While &lt;a href=&quot;https://github.com/geb/geb-example-grails/pull/7/files&quot;&gt;this pull request&lt;/a&gt; helped me quite a bit, it was ultimately caused by my vision: I had two &quot;geb-spock&quot; dependencies listed in &lt;em&gt;BuildConfig.groovy&lt;/em&gt; with different groupIds.&lt;/p&gt;
&lt;p&gt;At this point, I also moved all my plugin dependencies from &lt;em&gt;application.properties&lt;/em&gt; to &lt;em&gt;BuildConfig.groovy&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The next problem I ran into was &lt;a href=&quot;http://stackoverflow.com/questions/15413701/upgrading-from-grails-2-0-3-to-2-2-1-tests-failing&quot;&gt;a unit test and functional tests failing&lt;/a&gt;. The unit testing issue was caused by my Direction model not being in the tests @Mock annotation. After I added it, validation kicked and I recognized my test was invalid. I added @Ignore and continued.&lt;/p&gt;
&lt;p&gt;The functional test seemed to be seemed to be caused by Geb and it trying to use the Chrome Driver. One of my tests didn&apos;t work with the default HtmlUnitDriver, so I used the ChromeDriver for the one test.&lt;/p&gt;
&lt;pre&gt;
| Running 11 spock tests... 6 of 11
| Failure:  signup as a new user(happytrails.AuthenticatedUserSpec)
|  org.openqa.selenium.WebDriverException: Unable to either launch or connect to Chrome. Please check that ChromeDriver is up-to-date. Using Chrome binary at: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 45.66 seconds
Build info: version: &apos;2.27.0&apos;, revision: &apos;18259&apos;, time: &apos;2012-12-05 11:30:53&apos;
System info: os.name: &apos;Mac OS X&apos;, os.arch: &apos;x86_64&apos;, os.version: &apos;10.8.2&apos;, java.version: &apos;1.7.0_04&apos;
Driver info: org.openqa.selenium.chrome.ChromeDriver
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:187)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:533)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
    at org.openqa.selenium.remote.RemoteWebDriver.&lt;init&gt;(RemoteWebDriver.java:111)
    at org.openqa.selenium.remote.RemoteWebDriver.&lt;init&gt;(RemoteWebDriver.java:115)
    at org.openqa.selenium.chrome.ChromeDriver.&lt;init&gt;(ChromeDriver.java:161)
    at org.openqa.selenium.chrome.ChromeDriver.&lt;init&gt;(ChromeDriver.java:107)
    at happytrails.AuthenticatedUserSpec.signup as a new user(AuthenticatedUserSpec.groovy:25)
&lt;/pre&gt;
&lt;p&gt;Even when running &quot;grails -Dgeb.env=chrome test-app&quot;, this still happened. This was caused by the fact that I had &lt;em&gt;GebConfig.groovy&lt;/em&gt; in test/functional/happytrails. Move it to test/functional solved the problem. I also discovered that I know longer needed Chrome to get this test to pass. Apparently, the &lt;a href=&quot;http://fbflex.wordpress.com/2013/03/18/how-to-configure-webdriver-in-grails-for-your-geb-tests/&quot;&gt;HtmlUnitDriver has issues with Grails 2.2&lt;/a&gt;, but it seems to work for me.&lt;/p&gt;
&lt;p&gt;After getting the Geb configuration fixed, I ran into a functional test failure:&lt;/p&gt;
&lt;pre&gt;
| Running 11 spock tests... 5 of 11
| Failure:  click signup link(happytrails.AuthenticatedUserSpec)
|  org.openqa.selenium.ElementNotVisibleException: Element must be displayed to click (WARNING: The server did not provide any stacktrace information)
&lt;/pre&gt;
&lt;p&gt;Even though I could see the &quot;signup&quot; link when I ran &quot;grails run-app&quot;, I could see that it didn&apos;t show up when running tests in Chrome. This turned out to be caused by an extraneous &lt;code&gt;&amp;lt;div class=&quot;nav-collapse&quot;&gt;&lt;/code&gt; I had in my main.gsp. Removing it solved the problem. It&apos;s strange that this never showed up with Grails 2.0. My only guess is that Geb someone didn&apos;t look at the visibility of the element.&lt;/p&gt;
&lt;p&gt;The last testing-related issue I ran into was a &lt;code&gt;InvalidElementStateException&lt;/code&gt;:
&lt;/p&gt;
&lt;pre&gt;
| Running 11 spock tests... 7 of 11
| Failure:  add new route to region(happytrails.AuthenticatedUserSpec)
|  org.openqa.selenium.InvalidElementStateException: Element must be user-editable in order to clear it. (WARNING: The server did not provide any stacktrace information)
&lt;/pre&gt;
&lt;p&gt;I was able to fix this by changing &lt;em&gt;AddRoutePage.groovy&lt;/em&gt; from:&lt;/p&gt;
&lt;pre class=&quot;brush: groovy&quot;&gt;
static content = {
    createButton(to: ShowRoutePage) { create() }
    name { value(&quot;Name&quot;) }
    distance { value(&quot;Distance&quot;) }
    location { value(&quot;Location&quot;) }
}
&lt;/pre&gt;
&lt;p&gt;To:&lt;/p&gt;
&lt;pre class=&quot;brush: groovy&quot;&gt;
static content = {
    createButton(to: ShowRoutePage) { create() }
    form { $(&quot;form&quot;) }
}
&lt;/pre&gt;
&lt;p&gt;And then referencing name, distance and location accordingly (form.name, etc.) in &lt;em&gt;AuthenticatedUserSpec.groovy&lt;/em&gt;.&lt;/p&gt;
&lt;p id=&quot;cloudbees&quot;&gt;&lt;strong&gt;CloudBees&lt;/strong&gt;&lt;br/&gt;
After I had everything working locally, I logged into Jenkins on &lt;a href=&quot;http://www.cloudbees.com/&quot;&gt;CloudBees&lt;/a&gt;. Since I hadn&apos;t used it in a while, I had to wait a bit while my Jenkins server was re-commissioned. Once it was up, I tried to select Grails 2.2.1 to build with, but found it wasn&apos;t available. After a &lt;a href=&quot;https://twitter.com/mraible/status/312636120112431104&quot;&gt;tweeting this&lt;/em&gt;, I learned about &lt;a href=&quot;http://grails.org/doc/2.1.0/ref/Command%20Line/wrapper.html&quot;&gt;Grails Wrapper&lt;/a&gt;, found that the latest Grails Jenkins plugin supported it and got everything working. I later discovered that CloudBees does support Grails 2.2.1, I just needed to setup another Grails installation to automatically download and install 2.2.1.&lt;/p&gt;
&lt;p id=&quot;heroku&quot;&gt;&lt;strong&gt;Heroku&lt;/strong&gt;&lt;br/&gt;
The last two issues I ran into were with Heroku. Since I was upgrading everything, I wanted Grails to build/run under Java 7 and use Servlet 3. I changed the appropriate properties in &lt;em&gt;BuildConfig.groovy&lt;/em&gt;, &lt;a href=&quot;https://devcenter.heroku.com/articles/add-java-version-to-an-existing-maven-app&quot;&gt;configured Heroku&lt;/a&gt; and deployed. No dice.&lt;/p&gt;
&lt;pre&gt;
Error Compilation error: startup failed:
Invalid commandline usage for javac.
javac: invalid source release: 1.7
Usage: javac &lt;options&gt; &lt;source files&gt;
use -help for a list of possible options
&lt;/pre&gt;
&lt;p&gt;Sidenote: I tried building with Java 8 on CloudBees, but discovered the searchable plugin doesn&apos;t support it.&lt;/p&gt;
&lt;pre&gt;
Compile error during compilation with javac.
/scratch/jenkins/workspace/Happy Trails - Grails 2/work/plugins/searchable-0.6.4/src/java/grails/plugin/searchable/internal/compass/index/DefaultUnindexMethod.java:94: error: reference to delete is ambiguous
                    session.delete(query);
                           ^
  both method delete(CompassQuery) in CompassOperations and method delete(CompassQuery) in CompassIndexSession match
&lt;/pre&gt;
&lt;p&gt;As far as Servlet 3, it was pretty obvious that the Jetty version Heroku uses for Grails doesn&apos;t support it. Therefore, I reverted back to Servlet 2.5.&lt;/p&gt;
&lt;pre&gt;
java.lang.NoClassDefFoundError: javax/servlet/AsyncContext
	at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
&lt;/pre&gt;
&lt;p&gt;I sent the Java 7 issue to Heroku Support a few days ago but haven&apos;t heard back yet.&lt;/p&gt;
&lt;p id=&quot;summary&quot;&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br/&gt;
While upgrading Grails from 2.0 to 2.2 wasn&apos;t as easy as expected, it is understandable. After all, Grails 2.2 ships with Groovy 2.0, which has a &lt;a href=&quot;http://www.infoq.com/articles/new-groovy-20&quot;&gt;bunch of new features&lt;/a&gt; itself. All the issues I ran into were fairly easy to solve, except for Java 7 on Heroku. But hey, what do you expect from a free hosting service?&lt;/p&gt;
&lt;p&gt;If you&apos;re at Devoxx France next week, I look forward to &lt;a href=&quot;http://www.devoxx.com/display/FR13/Play+Framework+vs.+Grails+Smackdown&quot;&gt;sharing our research&lt;/a&gt; on Grails 2.2.1 vs. Play 2.1.0. </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/magnificent_mexico</id>
        <title type="html">Magnificent Mexico</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/magnificent_mexico"/>
        <published>2013-03-05T10:53:53-07:00</published>
        <updated>2014-06-06T19:14:54-06:00</updated> 
        <category term="/General" label="General" />
        <category term="chacala" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mexico" scheme="http://roller.apache.org/ns/tags/" />
        <category term="friends" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">On October 30th, 2012, shortly after I&apos;d woke up, I received an email from my old friend Jess (of &lt;a href=&quot;http://raibledesigns.com/rd/entry/jess_and_lili_s_legendary&quot;&gt;Jess and Lili&apos;s Legendary Wedding&lt;/a&gt;). Its subject: &quot;Wanna go to Mexico?&quot;&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
We are taking a trip to Mexico Feb 16-24 with some friends from here and have one spot that just came open in the house we are all renting together.  It&apos;s a sweet spot, 1 hour north of Puerto Vallarta. It has seven bedrooms each with own bathroom, a cook, private beach and nice pool, link below.  Works out to about $1100 per week per couple.
&lt;br/&gt;...&lt;br/&gt;
&lt;a href=&quot;http://www.laspalapas.tv/home.html&quot;&gt;http://www.laspalapas.tv/home.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;As you can imagine, I was immediately enticed by the opportunity. I checked my schedule, verified they had high-speed internet and responded &lt;em&gt;We&apos;re IN!&lt;/em&gt; a couple hours later.&lt;/p&gt;
&lt;p&gt;A couple weeks ago, we embarked on this journey and had a great time. The house was awesome, the company was fantastic and the views were spectacular. Not only that, but the town we stayed in (&lt;a href=&quot;http://en.wikipedia.org/wiki/Chacala&quot;&gt;Chacala&lt;/a&gt;) was very authentic. No resorts, hardly any paved roads and nary a tourist in sight. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8491989219/&quot; href=&quot;//farm9.staticflickr.com/8096/8491989219_5150a05565.jpg&quot; title=&quot;The Pool by mraible, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8096/8491989219_5150a05565_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;The Pool&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8491993847/&quot; href=&quot;//farm9.staticflickr.com/8366/8491993847_a77a00081d.jpg&quot; title=&quot;My Love and I by mraible, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8366/8491993847_a77a00081d_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;My Love and I&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mraible/8491997899/&quot; href=&quot;//farm9.staticflickr.com/8388/8491997899_190ec7bfd0.jpg&quot; title=&quot;Julie at Sunset by mraible, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8388/8491997899_190ec7bfd0_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Julie at Sunset&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525669404/&quot; href=&quot;http://farm9.staticflickr.com/8097/8525669404_4fc25f6bb8.jpg&quot; title=&quot;Chacala Sunset by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8097/8525669404_4fc25f6bb8.jpg&quot; width=&quot;500&quot; height=&quot;320&quot; alt=&quot;Chacala Sunset&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;
We didn&apos;t take our kids, but a few families did, resulting in 19 people total. Everyone got along swimmingly, the home-cooked meals were wonderful and the weather was beautiful. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8524458091/&quot; href=&quot;http://farm9.staticflickr.com/8368/8524458091_721ed22fe7.jpg&quot; title=&quot;What a great posse! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8368/8524458091_721ed22fe7_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;What a great posse!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525571064/&quot; href=&quot;http://farm9.staticflickr.com/8243/8525571064_da036d44a7.jpg&quot; title=&quot;The Chacala gang! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8243/8525571064_da036d44a7_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;The Chacala gang!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525569828/&quot; href=&quot;http://farm9.staticflickr.com/8521/8525569828_1eb8850118.jpg&quot; title=&quot;YAY Chacalas! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8521/8525569828_1eb8850118_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;YAY Chacalas!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8524537045/&quot; href=&quot;http://farm9.staticflickr.com/8104/8524537045_643cb435df.jpg&quot; title=&quot;Sweet nap spots in the hammocks by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8104/8524537045_643cb435df_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Sweet nap spots in the hammocks&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525657978/&quot; href=&quot;http://farm9.staticflickr.com/8230/8525657978_fc2f99fd9a.jpg&quot; title=&quot;Heaven! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8230/8525657978_fc2f99fd9a_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Heaven!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525657078/&quot; href=&quot;http://farm9.staticflickr.com/8515/8525657078_280e1f960c.jpg&quot; title=&quot;!Salud! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8515/8525657078_280e1f960c.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;!Salud!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525640908/&quot; href=&quot;http://farm9.staticflickr.com/8378/8525640908_2de8455ea9.jpg&quot; title=&quot;Volleyball on our beach by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8378/8525640908_2de8455ea9_t.jpg&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;Volleyball on our beach&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
For the most part, we didn&apos;t do much throughout the week. I had to work, so I spent my days on the computer with an occasional break to play a game of volleyball. I experienced the same issue I did in &lt;a href=&quot;http://raibledesigns.com/rd/entry/summer_vacation_2012_in_montana&quot;&gt;Maui&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/november_travels_to_kauai_and&quot;&gt;Kauai&lt;/a&gt; last year, where my MacBook Pro couldn&apos;t find my hard drive. Yeah, it&apos;s a first-world problem: my laptop tries to stop me from working when I&apos;m on a beach. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;)&quot; title=&quot;;)&quot; /&gt; Luckily, I had a backup (external) hard drive that I could plugin and work from.
&lt;/p&gt;
&lt;p&gt;
We did a whale watching and snorkeling trip on a Catamaran one afternoon. We didn&apos;t get any good whale pictures, but we had many sightings.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8524477335/&quot; href=&quot;http://farm9.staticflickr.com/8252/8524477335_8dcd1c4329.jpg&quot; title=&quot;Kai surfing! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8252/8524477335_8dcd1c4329.jpg&quot; width=&quot;500&quot; height=&quot;191&quot; alt=&quot;Kai surfing!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;br/&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525589102/&quot; href=&quot;http://farm9.staticflickr.com/8530/8525589102_db94e74f84.jpg&quot; title=&quot;Love this pic of Leif kayaking with Alaia! by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8530/8525589102_db94e74f84.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;Love this pic of Leif kayaking with Alaia!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I only ventured into Chacala once, but found it to have a lovely beach, good music, and tasty restaurants. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8524522815/&quot; href=&quot;http://farm9.staticflickr.com/8366/8524522815_5af97f5433.jpg&quot; title=&quot;Mariachi by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8366/8524522815_5af97f5433_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Mariachi&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8525635196/&quot; href=&quot;http://farm9.staticflickr.com/8369/8525635196_95c296816b.jpg&quot; title=&quot;Josh with a tasty Sangria by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8369/8525635196_95c296816b_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Josh with a tasty Sangria&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Thanks to Jess and everyone else for inviting us to this magnificent place in Mexico. We had a great time, made a lot of new friends and thoroughly enjoyed ourselves.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8524493895/&quot; href=&quot;http://farm9.staticflickr.com/8243/8524493895_d0fb8e1946.jpg&quot; title=&quot;Me and My Love by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[mexico2013]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8243/8524493895_d0fb8e1946_n.jpg&quot; width=&quot;320&quot; height=&quot;240&quot; alt=&quot;Me and My Love&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;For more photos, see my &lt;a href=&quot;http://www.flickr.com/photos/mraible/sets/72157632811172279/&quot;&gt;Mexico 2013 Album&lt;/a&gt; or Trish&apos;s &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157632906458451/&quot;&gt;Mexico Trip 2013!&lt;/a&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/what_s_the_best_way4</id>
        <title type="html">What&apos;s the best way to compare JVM Web Frameworks?</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/what_s_the_best_way4"/>
        <published>2013-01-09T08:29:17-07:00</published>
        <updated>2013-01-14T15:03:01-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="dzone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="infoq" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
I&apos;ve been comparing web frameworks ever since 2004. It was the first time I&apos;d ever proposed a talk for a conference. ApacheCon was in Vegas that year and my buddy Bruce suggested I speak at it. I submitted the talk, &lt;a href=&quot;http://raibledesigns.com/rd/entry/going_to_apachecon&quot;&gt;got accepted&lt;/a&gt; and went to work learning the frameworks I was talking about. At the time, I had a lot of Struts experience and I&apos;d made a good living learning it, consulting on it and blogging about it. However, there was a new kid on the block (Spring MVC) that was garnishing attention and some other frameworks (WebWork and Tapestry) that had a lot of high praise from developers. I was inspired to learn why so many people hated Struts. 
&lt;/p&gt;
&lt;p&gt;
Fast forward 8 years and I&apos;m still comparing web frameworks. Why? Because there still seems to be a large audience that&apos;s interested in the topic. Witness InfoQ&apos;s &lt;a href=&quot;http://www.infoq.com/research/jvm-web-frameworks&quot;&gt;Top 20 JVM Web Frameworks&lt;/a&gt;, which was one of their most-read articles for two months in a row. One of the beauties of the Java Community is that it&apos;s very diverse. There&apos;s &lt;em&gt;tons&lt;/em&gt; of folks that are part of this community and, like it or not, several folks that are &lt;em&gt;former&lt;/em&gt; Java Developers. However, these developers still seem to maintain an interest in the community and it&apos;s still one of the largest pools of talent out there. Java is still &lt;a href=&quot;http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/&quot;&gt;quite viable&lt;/a&gt; and only seems to be &lt;a href=&quot;http://frankhinkel.blogspot.de/2012/11/java-8-closures-lambda-expressions.html&quot;&gt;getting better with age&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
So the topic of web frameworks on the JVM is still hot, and I still &lt;a href=&quot;http://raibledesigns.com/rd/entry/why_the_bias_against_jsf&quot;&gt;like to write about it&lt;/a&gt;. For those of you still enthusiastic about the topic, you&apos;re in luck. The two best websites for the Java Community, &lt;a href=&quot;http://infoq.com&quot;&gt;InfoQ&lt;/a&gt; and &lt;a href=&quot;http://java.dzone.com&quot;&gt;DZone&lt;/a&gt; (formerly Javalobby) are still very interested in the topic too!&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
I&apos;ve been comparing web frameworks ever since 2004. It was the first time I&apos;d ever proposed a talk for a conference. ApacheCon was in Vegas that year and my buddy Bruce suggested I speak at it. I submitted the talk, &lt;a href=&quot;http://raibledesigns.com/rd/entry/going_to_apachecon&quot;&gt;got accepted&lt;/a&gt; and went to work learning the frameworks I was talking about. At the time, I had a lot of Struts experience and I&apos;d made a good living learning it, consulting on it and blogging about it. However, there was a new kid on the block (Spring MVC) that was garnishing attention and some other frameworks (WebWork and Tapestry) that had a lot of high praise from developers. I was inspired to learn why so many people hated Struts.
&lt;/p&gt;
&lt;p&gt;
Fast forward 8 years and I&apos;m still comparing web frameworks. Why? Because there still seems to be a large audience that&apos;s interested in the topic. Witness InfoQ&apos;s &lt;a href=&quot;http://www.infoq.com/research/jvm-web-frameworks&quot;&gt;Top 20 JVM Web Frameworks&lt;/a&gt;, which was one of their most-read articles for two months in a row. One of the beauties of the Java Community is that it&apos;s very diverse. There&apos;s &lt;em&gt;tons&lt;/em&gt; of folks that are part of this community and, like it or not, several folks that are &lt;em&gt;former&lt;/em&gt; Java Developers. However, these developers still seem to maintain an interest in the community and it&apos;s still one of the largest pools of talent out there. Java is still &lt;a href=&quot;http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/&quot;&gt;quite viable&lt;/a&gt; and only seems to be &lt;a href=&quot;http://frankhinkel.blogspot.de/2012/11/java-8-closures-lambda-expressions.html&quot;&gt;getting better with age&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
So the topic of web frameworks on the JVM is still hot, and I still &lt;a href=&quot;http://raibledesigns.com/rd/entry/why_the_bias_against_jsf&quot;&gt;like to write about it&lt;/a&gt;. For those of you still enthusiastic about the topic, you&apos;re in luck. The two best websites for the Java Community, &lt;a href=&quot;http://infoq.com&quot;&gt;InfoQ&lt;/a&gt; and &lt;a href=&quot;http://java.dzone.com&quot;&gt;DZone&lt;/a&gt; (formerly Javalobby) are still very interested in the topic too!&lt;/p&gt;
&lt;!--p style=&quot;font-style: italic&quot;&gt;Sorry &lt;a href=&quot;http://theserverside.com&quot;&gt;TheServerSide.com&lt;/a&gt;, you were awesome at one time. Remember when Dion was pumping out the good content and there weren&apos;t ads in your face? Those where the days...&lt;/p--&gt; 
&lt;p&gt;
Both sites emailed me in November to get my advice for their research on the subject. InfoQ (specifically Dio Synodinos) was mostly interested in 1) having me analyze &lt;a href=&quot;http://www.infoq.com/research/jvm-web-frameworks&quot;&gt;their recently-gathered data&lt;/a&gt;, or 2) helping them create a new version. DZone (specifically Mitch Pronschinske) emailed about doing a similar survey to InfoQ&apos;s, but with more relevant data points (include GWT, specifying Struts 2 vs. Struts 1, etc.).
&lt;/p&gt;
&lt;p&gt;
My response to Mitch at DZone:
&lt;/p&gt;
&lt;div class=&quot;quote&quot;&gt;
&lt;p&gt;
Interestingly enough, the folks at InfoQ contacted me as well as they&apos;re thinking of doing a new survey. One of the things I mentioned to them is it&apos;d be interesting to see what folks are using AND which frameworks they admire. Often, devs don&apos;t get to choose their web framework at work. I wonder if it&apos;d be possible to collaborate with InfoQ to gather data from developers so it&apos;s not being done on two different sites?
&lt;/p&gt;
&lt;p&gt;
I submitted a talk for ApacheCon NA (in February) called Comparing Apache Web Frameworks. When choosing Web Frameworks, I&apos;ve often found it helps to eliminate frameworks and narrow the scope. Obviously, this makes sense for an Apache Conference, but not for all developers. However, I do plan on analyzing each framework based on a limited set of criteria. Here&apos;s what I have so far:
&lt;/p&gt;
&lt;p&gt;
Community, HTML5, REST, Mobile, Performance, Web Performance Optimization
&lt;/p&gt;
&lt;p&gt;
Obviously, community is important for Apache projects, but might not be for the wider audience. It might be good to limit to these 5 criteria, or expand it to 10, but not more. I think it&apos;d be interesting to get the community to rank the various frameworks on these criteria, and also try to find developer&apos;s biases while doing it. For example, I wonder if people would be willing to admit they&apos;re biased for/against certain frameworks and then take that into account as part of gathering the data?&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Unfortunately, ApacheCon denied my submission. This make sense since their &lt;a href=&quot;http://na.apachecon.com/schedule/&quot;&gt;schedule&lt;/a&gt; seems to be concentrating on &lt;a href=&quot;http://httpd.apache.org/&quot;&gt;HTTPD&lt;/a&gt;, &lt;a href=&quot;http://incubator.apache.org/cloudstack/&quot;&gt;Cloud&lt;/a&gt; and &lt;a href=&quot;http://hadoop.apache.org/&quot;&gt;Big Data&lt;/a&gt;.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
For InfoQ, Dio asked for a list of web frameworks to include. Below is a list we started with, followed by my response.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spring MVC&lt;/li&gt;
&lt;li&gt;Play&lt;/li&gt;
&lt;li&gt;Grails&lt;/li&gt;
&lt;li&gt;JSF&lt;/li&gt;
&lt;li&gt;Struts 2&lt;/li&gt;
&lt;li&gt;Wicket&lt;/li&gt;
&lt;li&gt;Lift&lt;/li&gt;
&lt;li&gt;Tapestry 5&lt;/li&gt;
&lt;li&gt;Seam&lt;/li&gt;
&lt;li&gt;JRuby on Rails&lt;/li&gt;
&lt;li&gt;Wicket&lt;/li&gt;
&lt;li&gt;GWT&lt;/li&gt;
&lt;li&gt;Vaadin&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;quote&quot;&gt;
&lt;p&gt;
I would add Stripes, vert.x and maybe something like Apache Click. VRaptor is probably a good one to add too. There&apos;s always a few less-used frameworks that get a lot of complainers if you don&apos;t include them. 
&lt;/p&gt;
&lt;p&gt;
Comparing to your previous list, I don&apos;t think Seam should be in here since they&apos;ve &lt;a href=&quot;http://www.infoq.com/news/2012/04/seam-deltaspike&quot;&gt;split the project into separate bundles&lt;/a&gt; and are no longer developing Seam as a whole. JRuby on Rails is a tough one because if you say Ruby on Rails, you&apos;ll get a ton of responses, but probably not from the Java community. The Ruby community might chime it quite a bit if you can get in touch with them though.
&lt;/p&gt;
&lt;p&gt;
I believe you should include Clojure web frameworks, but I&apos;ve only heard of one of them: Compojure.
&lt;/p&gt;
&lt;p&gt;
SiteMesh, Netty, etc. - remove them.
&lt;/div&gt;
&lt;p&gt;
I also offered my advice on instructions:
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
I actually like the two coordinates you used before, importance and adoptability. However, I don&apos;t know that everyone read the instructions this way. Most people didn&apos;t rank all frameworks and I believe that&apos;s part of the point. I only ranked the ones I&apos;d used, but I think it&apos;d be better if people ranked all of them. I also think having these two criteria opens it up to more than just developers. Project/Product Managers and stakeholders that&apos;ve been successful with certain frameworks should be able to vote too.
&lt;/p&gt;
&lt;p&gt;
For DZone, they wanted to include a set of criteria for ranking:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project maturity, community support, and documentation quality (one criteria)&lt;/li&gt;
&lt;li&gt;UI Features Capability (maybe some are more graphics driven or form driven?)&lt;/li&gt;
&lt;li&gt;Code readability&lt;/li&gt;
&lt;li&gt;Flexibility (maybe this could be broken down into what types of projects the framework can handle) or several criteria that ask if it is &quot;Good for &apos;x&apos; type of project&quot;&lt;/li&gt;
&lt;li&gt;Performance/Speed&lt;/li&gt;
&lt;li&gt;Cross platform support&lt;/li&gt;
&lt;li&gt;Extensibility, Plugins, Community Libraries&lt;/li&gt;
&lt;li&gt;Architecture (this may just be information for later, not an opinion question)&lt;/li&gt;
&lt;li&gt;Web standards support&lt;/li&gt;
&lt;li&gt;REST support (is this something you would just rate a yes or no?  In that case it wouldn&apos;t need to be an opinion question)&lt;/li&gt;
&lt;li&gt;Mobile support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
My response:&lt;/p&gt;

&lt;div class=&quot;quote&quot;&gt;
    &lt;p&gt;
For web frameworks, I believe the 5 I mentioned (Community, HTML5, REST, Mobile, Performance, Web Performance Optimization) are most important, with Security become more and more of a concern. For web standards support, I&apos;d almost change it to &quot;HTML5&quot; and to see how the various frameworks stack up. I think REST is very important, and I think it&apos;s cool that Struts 2, Spring MVC and Grails all have great support for it. It&apos;d be interesting to see how the component-based frameworks think of having REST support in the framework (vs. external like Jersey, CXF, etc.).
&lt;/p&gt;&lt;p&gt;
Of the list you provided, I don&apos;t know about Code readability or Flexibility. Code readability is kinda like Learnability. One of the nice things about Spring MVC and Grails is that you can learn how they work very quickly. Then you can use that knowledge and don&apos;t have to look things up much. Tapestry and Wicket might be similar for those writing large apps, but I haven&apos;t found that to be as true. The more traditional MVC Frameworks just make more sense to me.
&lt;/p&gt;
&lt;p&gt;
UI Feature Capability is a good one because frameworks with widgets are often popular with developers. Flex, GWT, jQuery UI, Sencha all do this very well.
&lt;/p&gt;
&lt;/div&gt;
&lt;p id=&quot;summary&quot;&gt;
&lt;strong&gt;Summary&lt;/strong&gt;&lt;br/&gt;The reason for this post is to add some transparency to the process of Comparing JVM Web Frameworks. I like to think that I&apos;ve tried to do this in the past (especially with my &lt;a href=&quot;http://raibledesigns.com/rd/entry/how_i_calculated_ratings_for&quot;&gt;reasons for rankings&lt;/a&gt;). Now, we&apos;d like to hear from you, the community that uses these web frameworks. 
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What&apos;s the best way to compare JVM Web Frameworks?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;While it&apos;s nice to hear from the generous folks that create and maintain JVM Web Frameworks, we&apos;re mostly interested in hearing from the developers that are using these things on a day-to-day basis. The Blue Collar Developers, if you will. If you could design a JVM Web Framework comparison that answered your questions, how would it look? What questions would it ask? What conclusions would make you happy? Should commercial frameworks like ZK be included?
    &lt;/p&gt;
    &lt;p&gt;Your responses are very greatly appreciated.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2012_a_year_in_review</id>
        <title type="html">2012 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2012_a_year_in_review"/>
        <published>2013-01-08T13:15:24-07:00</published>
        <updated>2014-05-08T19:47:26-06:00</updated> 
        <category term="/Roller" label="Roller" />
        <category term="2012" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;I wrote my first &lt;a href=&quot;http://raibledesigns.com/rd/tags/yearinreview&quot;&gt;year in review&lt;/a&gt; blog entry way back in &lt;a href=&quot;http://raibledesigns.com/rd/entry/2005_a_year_in_review&quot;&gt;2005&lt;/a&gt;. That means this year&apos;s is number 8. Since they keep getting longer every year, I figured I&apos;d try something different this year and use sections similar to &lt;a href=&quot;http://remysharp.com/2012/12/31/my-2012/&quot;&gt;Remy Sharp&lt;/a&gt;. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#business&quot;&gt;Business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#2013&quot;&gt;2013&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;I spent the entirety of the year with one client: Taleo. &lt;a href=&quot;http://www.businessweek.com/news/2012-02-10/oracle-buys-taleo-for-1-9-billion-adds-human-resource-tool.html&quot;&gt;Oracle bought them in February&lt;/a&gt;. In June, the transition to Oracle happened. My tasks and projects haven&apos;t changed much since the transition, but it has been a real pain to get paid on time. My contract with them is through the end of May. I hope to take July off (to get married) and August off (to honeymoon) and start a new gig in September.
&lt;/p&gt;
&lt;p&gt;I did minimal Java work throughout the year and spent most of my time doing CSS and JavaScript. I love doing front-end work much more than back-end, so day-to-day, it was very satisfying. 
&lt;/p&gt;</summary>
        <content type="html">I wrote my first &lt;a href=&quot;http://raibledesigns.com/rd/tags/yearinreview&quot;&gt;year in review&lt;/a&gt; blog entry way back in &lt;a href=&quot;http://raibledesigns.com/rd/entry/2005_a_year_in_review&quot;&gt;2005&lt;/a&gt;. That means this year&apos;s is number 8. Since they keep getting longer every year, I figured I&apos;d try something different this year and use sections similar to &lt;a href=&quot;http://remysharp.com/2012/12/31/my-2012/&quot;&gt;Remy Sharp&lt;/a&gt;. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#professional&quot;&gt;Professional&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#business&quot;&gt;Business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#speaking&quot;&gt;Speaking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#projects&quot;&gt;Projects&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#personal&quot;&gt;Personal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/2012_a_year_in_review#2013&quot;&gt;2013&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;I spent the entirety of the year with one client: Taleo. &lt;a href=&quot;http://www.businessweek.com/news/2012-02-10/oracle-buys-taleo-for-1-9-billion-adds-human-resource-tool.html&quot;&gt;Oracle bought them in February&lt;/a&gt;. In June, the transition to Oracle happened. My tasks and projects haven&apos;t changed much since the transition, but it has been a real pain to get paid on time. My contract with them is through the end of May. I hope to take July off (to get married) and August off (to honeymoon) and start a new gig in September.
&lt;/p&gt;
&lt;p&gt;I did minimal Java work throughout the year and spent most of my time doing CSS and JavaScript. I love doing front-end work much more than back-end, so day-to-day, it was very satisfying. 
&lt;/p&gt;

&lt;h3 id=&quot;business&quot;&gt;Business&lt;/h3&gt;
&lt;p&gt;Raible Designs had a great year, our best ever financially. I hired Trish as an assistant in January, doubling the size of the company. We had our Annual Shareholders Meeting on a &lt;a href=&quot;http://raibledesigns.com/rd/entry/cruising_around_the_western_caribbean&quot;&gt;Disney Cruise&lt;/a&gt; in April. I have no plans to do increase the size of the company in 2013, mostly because I enjoy not having the responsibility of employees. I&apos;ve employed sub-contractors in the past and it always seems to create more of a headache than it&apos;s worth.&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.dailymile.com/people/mraible/training/2012/summary&quot; title=&quot;My Daily Mile 2012 Year End Report&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8227/8360832357_858f34a10e_t.jpg&quot; width=&quot;100&quot; height=&quot;52&quot; alt=&quot;Daily Mile 2012 Year End Report&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;
We moved our offices from downtown Littleton to &lt;a href=&quot;http://www.businessatthrive.com/v3/&quot;&gt;Thrive&lt;/a&gt; (in LoDo) last April and I plan on staying there. It&apos;s an easy 6-mile bicycle commute and the guys there have been great to work with. I highly recommend it if you&apos;re looking for co-working space.&lt;/p&gt;

&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;I spoke at 5 events in 2012:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Silicon Valley Spring User Group on &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_what_s_new_in&quot;&gt;What&apos;s New in Spring 3.1&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;JFokus on &lt;a href=&quot;http://raibledesigns.com/rd/entry/comparing_web_frameworks_and_html5&quot;&gt;Comparing Web Frameworks and HTML5 with Play Scala&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Spring I/O on &lt;a href=&quot;http://www.youtube.com/watch?v=QlQMt3W9fpU&quot;&gt;Comparing JVM Web Frameworks&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;JavaPosse Roundup on &lt;a href=&quot;http://raibledesigns.com/rd/entry/how_to_build_a_shot&quot;&gt;How to build a Shot-Ski&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&#220;berConf on &lt;a href=&quot;http://raibledesigns.com/rd/entry/play_vs_grails_smackdown_at&quot;&gt;Play vs. Grails&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Traveling to &lt;a href=&quot;http://raibledesigns.com/rd/entry/a_spectacular_trip_to_stockholm&quot;&gt;Stockholm and Madrid for JFokus and Spring I/O was spectacular&lt;/a&gt;. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8350765961/&quot; href=&quot;http://farm9.staticflickr.com/8357/8350765961_9eed5c5ee8.jpg&quot; title=&quot;James Ward and Enno Runne by Trish McGinity&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8357/8350765961_9eed5c5ee8_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;James Ward and Enno Runne by Trish McGinity&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8351826862/&quot; href=&quot;http://farm9.staticflickr.com/8233/8351826862_87c90d6990.jpg&quot; title=&quot;Juergen Hoeller&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8233/8351826862_87c90d6990_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;Juergen Hoeller&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8351825042/&quot; href=&quot;http://farm9.staticflickr.com/8227/8351825042_0a15401fa8.jpg&quot; title=&quot;Speakers Dinner Singers by Trish McGinity&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8227/8351825042_0a15401fa8_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;Speakers Dinner Singers&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8351823962/&quot; href=&quot;http://farm9.staticflickr.com/8091/8351823962_5b8c06859f.jpg&quot; title=&quot;Matt Raible James Ward Rickard Oberg Jfokus speakers dinner by Trish McGinity&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8091/8351823962_5b8c06859f_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;Matt Raible James Ward Rickard Oberg Jfokus speakers dinner&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8351907734/&quot; href=&quot;http://farm9.staticflickr.com/8191/8351907734_28c5dd5e83.jpg&quot; title=&quot;Stockholm View by Trish McGinity&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8191/8351907734_28c5dd5e83.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Stockholm View&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;/p&gt;
    
    &lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8355701252/&quot; href=&quot;http://farm9.staticflickr.com/8509/8355701252_3f507c646a.jpg&quot; title=&quot;Templo de Debod by Trish McGinity&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8509/8355701252_3f507c646a.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Templo de Debod&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;&lt;/p&gt;
    
    &lt;p style=&quot;text-align: center&quot;&gt;

    &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8351930566/&quot; href=&quot;http://farm9.staticflickr.com/8366/8351930566_bb5f27f19a.jpg&quot; title=&quot;Iglesia San Gines by Trish McGinity&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8366/8351930566_bb5f27f19a_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Iglesia San Gines&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8355691858/&quot; href=&quot;http://farm9.staticflickr.com/8050/8355691858_8878582d57.jpg&quot; title=&quot;Evening Commute Puerta de Alcala Madrid by Trish McGinity&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8050/8355691858_8878582d57_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Evening Commute Puerta de Alcala Madrid&quot; style=&quot;margin-left: 15px; border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;/p&gt;
    
    
&lt;p&gt;I took the 2nd half of the year off from speaking, celebrating my temporary retirement at a &lt;a href=&quot;http://twitter.com/mraible/status/217459157689831424&quot;&gt;Def Leppard concert&lt;/a&gt; in June. When I decided to do this, I was planning on my VW Bus being finished. I was planning on switching from Java Conferences to VW Shows as a hobby. Unfortunately, now it&apos;s January and &lt;a href=&quot;http://raibledesigns.com/roller-ui/authoring/preview/rd/category/The+Bus&quot;&gt;The Bus&lt;/a&gt; still isn&apos;t done. I have high hopes for it being finished in 2013.
&lt;/p&gt;
&lt;p&gt;I paid for 2 conferences in 2012, the &lt;a href=&quot;http://raibledesigns.com/rd/entry/spring_break&quot;&gt;JavaPosse Roundup&lt;/a&gt; in March and &lt;a href=&quot;http://monktoberfest.com/&quot;&gt;Monktoberfest&lt;/a&gt; in October. While I enjoyed both, Monktoberfest will likely become a tradition. 
&lt;/p&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;AppFuse:&lt;/strong&gt; I started the year by &lt;a href=&quot;http://raibledesigns.com/rd/entry/refreshing_appfuse_s_ui_with&quot;&gt;refreshing AppFuse&apos;s UI with Twitter Bootstrap&lt;/a&gt; and blogged about the &lt;a href=&quot;http://raibledesigns.com/rd/entry/twitter_s_open_source_summit&quot;&gt;Twitter&apos;s Summit on Bootstrap&lt;/a&gt; shortly after. At the same time, I was overhauling &lt;a href=&quot;http://raibledesigns.com/rd/entry/refreshing_taleo_s_ui_with&quot;&gt;Taleo&apos;s UI with HTML5, Bootstrap and CSS3&lt;/a&gt;, but waited until August to blog about it.&lt;/p&gt;
&lt;p&gt;In the fall, the AppFuse Team &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_news_github_hibernate_search&quot;&gt;migrated to GitHub and integrated Hibernate Search&lt;/a&gt;. &lt;a href=&quot;http://raibledesigns.com/rd/entry/appfuse_2_2_1_released&quot;&gt;AppFuse 2.2.1 was released&lt;/a&gt; in December.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Happy Trails:&lt;/strong&gt; In May and June, I worked on &lt;a href=&quot;https://github.com/jamesward/happytrails&quot;&gt;Happy Trails&lt;/a&gt; with James Ward as part of our &lt;a href=&quot;http://raibledesigns.com/rd/entry/play_vs_grails_smackdown_at&quot;&gt;Play vs. Grails Smackdown&lt;/a&gt;. This was a very enjoyable experience and I learned a lot about GitHub, Cloudbees and Heroku. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Play More:&lt;/strong&gt; In June, I wrote about &lt;a href=&quot;http://raibledesigns.com/rd/entry/upgrading_to_play_2_anorm&quot;&gt;Upgrading to Play 2: Anorm and Testing&lt;/a&gt;. A couple weeks later, I wrote about integrating &lt;a href=&quot;http://raibledesigns.com/rd/entry/migrating_to_play_2_and&quot;&gt;Validation and Secure Social&lt;/a&gt; into &lt;a href=&quot;http://play-more.com&quot;&gt;&lt;em&gt;Play More&lt;/em&gt;&lt;/a&gt;. In the aforementioned post, I also posted my &lt;a href=&quot;http://www.slideshare.net/mraible/html5-with-play-scala-coffeescript-and-jade-uberconf-2012&quot;&gt;&#220;berConf presentation&lt;/a&gt;, the &lt;a href=&quot;https://github.com/mraible/play-more&quot;&gt;source code&lt;/a&gt; and my thoughts on Play 2.&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
I found Anorm and Scalate to be &lt;em&gt;huge&lt;/em&gt; time sinks and don&apos;t know if I&apos;d recommend using either one in a Play 2 project. I&apos;m sure Scalate will be easier to use as its Play 2 integration gets more refined, but I don&apos;t know if there&apos;s any hope for a JDBC abstraction that doesn&apos;t produce error messages when things go south.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Roller:&lt;/strong&gt; Although I didn&apos;t contribute much to &lt;a href=&quot;http://roller.apache.org&quot;&gt;Apache Roller&lt;/a&gt; in 2012, I do continue to use it frequently. This site celebrated its &lt;a href=&quot;http://raibledesigns.com/rd/entry/10_years_ago&quot;&gt;10-year anniversary&lt;/a&gt; in August. It got a &lt;a href=&quot;http://raibledesigns.com/rd/entry/new_look_and_feel_designed&quot;&gt;new look and feel&lt;/a&gt; shortly after.&lt;/p&gt; 
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;
&lt;p&gt;Last year was a fantastic year for family time. Our &lt;a href=&quot;http://raibledesigns.com/rd/entry/cruising_around_the_western_caribbean&quot;&gt;cruise around the Western Caribbean&lt;/a&gt; was money well spent.&lt;/p&gt;&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358223863/&quot; href=&quot;http://farm9.staticflickr.com/8092/8358223863_5b7c2d31eb.jpg&quot; title=&quot;Raible&apos;s and McGinity&apos;s welcome to our Disney Cruise! by Trish, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8092/8358223863_5b7c2d31eb.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Raible&apos;s and McGinity&apos;s welcome to our Disney Cruise!&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358600474/&quot; href=&quot;http://farm9.staticflickr.com/8213/8358600474_ea26b2cc90.jpg&quot; title=&quot;Raible and McGinity dinner by Trish, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8213/8358600474_ea26b2cc90.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Raible and McGinity dinner&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;p&gt;My goal was to spend a month with my parents this year and we satisfied that by July. In total, we enjoyed their company for 8 weeks in 2012. 
&lt;/p&gt;
&lt;p&gt;
The worst ski season on record &lt;a href=&quot;http://raibledesigns.com/rd/entry/farewell_to_the_2011_2012&quot;&gt;ended in April&lt;/a&gt; and Trish and I headed for &lt;a href=&quot;http://raibledesigns.com/rd/entry/wine_tasting_in_napa_valley&quot;&gt;wine country&lt;/a&gt; in May.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://www.mcginityphoto.com/photos/i-cDtj2v6/1/M/i-cDtj2v6-M.jpg&quot; rel=&quot;lightbox[2012yearinreview]&quot; title=&quot;Cade Vineyard Cave Table&quot;&gt;
    &lt;img alt=&quot;Cade Vineyard Cave Table&quot; src=&quot;//www.mcginityphoto.com/photos/i-cDtj2v6/1/Th/i-cDtj2v6-Th.jpg&quot; width=&quot;150&quot; height=&quot;100&quot;  alt=&quot;Cade Vineyard Cave Table&quot; style=&quot;border: 1px solid black&quot;&gt;
    &lt;/a&gt;
    
    &lt;a href=&quot;http://www.mcginityphoto.com/photos/i-mCJJZR3/0/M/i-mCJJZR3-M.jpg&quot; rel=&quot;lightbox[2012yearinreview]&quot; title=&quot;Cade Vineyard Cask Row&quot;&gt;
    &lt;img src=&quot;//www.mcginityphoto.com/photos/i-mCJJZR3/0/Th/i-mCJJZR3-Th.jpg&quot; width=&quot;150&quot; height=&quot;99&quot;  alt=&quot;Cade Vineyard Cask Row&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
    
    &lt;a href=&quot;http://www.mcginityphoto.com/photos/i-r4fmDX2/0/M/i-r4fmDX2-M.jpg&quot; rel=&quot;lightbox[2012yearinreview]&quot; title=&quot;Cade Flowers next to infinity pool&quot;&gt;
    &lt;img alt=&quot;Cade Flowers next to infinity pool&quot; src=&quot;//www.mcginityphoto.com/photos/i-r4fmDX2/0/Th/i-r4fmDX2-Th.jpg&quot; width=&quot;150&quot; height=&quot;100&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;/p&gt;
    &lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;http://www.mcginityphoto.com/photos/i-R9tmTz4/0/M/i-R9tmTz4-M.jpg&quot; rel=&quot;lightbox[2012yearinreview]&quot; title=&quot;Cade Winery&quot;&gt;
    &lt;img alt=&quot;Cade Winery&quot; src=&quot;//www.mcginityphoto.com/photos/i-R9tmTz4/0/S/i-R9tmTz4-S.jpg&quot; width=&quot;400&quot; height=&quot;266&quot; title=&quot;Cade Winery&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    
    &lt;/p&gt;
    
    &lt;/p&gt;
    &lt;p&gt;Abbie and Jack&apos;s school year &lt;a href=&quot;http://raibledesigns.com/rd/entry/school_s_out_for_summer&quot;&gt;ended&lt;/a&gt; on June 5th and we &lt;a href=&quot;http://raibledesigns.com/rd/entry/father_s_day_weekend_at&quot;&gt;celebrated Father&apos;s Day on the Oregon coast&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a data-href=&quot;http://farm8.staticflickr.com/7284/9071981163_9ecc04ec8f_c.jpg&quot; title=&quot;View from Ecola State Park Oregon&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7284/9071981163_9ecc04ec8f.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;View from Ecola State Park Oregon&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9071962289/&quot; href=&quot;http://farm4.staticflickr.com/3675/9071962289_a7fc891f15_c.jpg&quot; title=&quot;Raible Family on the Oregon coast&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3675/9071962289_a7fc891f15_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Raible Family on the Oregon coast&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9074185440/&quot; href=&quot;http://farm8.staticflickr.com/7404/9074185440_eebccb9acf_c.jpg&quot; title=&quot;Abbie and Jack frolicking in the waves&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7404/9074185440_eebccb9acf_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Abbie and Jack frolicking in the waves&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;

&lt;a data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9074188854/&quot; href=&quot;http://farm3.staticflickr.com/2814/9074188854_f0b09a43ca_c.jpg&quot; title=&quot;Kalin and Joe on the beach&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm3.staticflickr.com/2814/9074188854_f0b09a43ca_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Kalin and Joe on the beach&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

    &lt;p&gt;Raible Road Trip #17 began in late June and we spent two weeks parading, rafting and golfing in Montana. From there, we flew to Maui for two weeks. I wrote about it all in &lt;a href=&quot;http://raibledesigns.com/rd/entry/summer_vacation_2012_in_montana&quot;&gt;Summer Vacation 2012 in Montana and Maui&lt;/a&gt;.
        &lt;/p&gt;
        &lt;p style=&quot;text-align: center&quot;&gt;

                        &lt;a title=&quot;Holland Lake Patio&quot; rel=&quot;lightbox[2012yearinreview]&quot; href=&quot;http://www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-rsL7ncX/0/M/DSC_4745-M.jpg&quot;&gt;
        &lt;img src=&quot;//www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-rsL7ncX/0/Ti/DSC_4745-Ti.jpg&quot;
             style=&quot;border: 1px solid black&quot; width=&quot;95&quot; height=&quot;95&quot; alt=&quot;Holland Lake Patio&quot;&gt;&lt;/a&gt;

      &lt;a title=&quot;The Girls at Double Arrow&quot; rel=&quot;lightbox[2012yearinreview]&quot; href=&quot;http://www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-sdLBDmF/0/M/DSC_4755-M.jpg&quot;&gt;
        &lt;img src=&quot;//www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-sdLBDmF/0/Ti/DSC_4755-Ti.jpg&quot;
             style=&quot;border: 1px solid black&quot; width=&quot;95&quot; height=&quot;95&quot; alt=&quot;The Girls at Double Arrow&quot;&gt;&lt;/a&gt;

      &lt;a title=&quot;Hard to believe I caused this guy to move to Montana in 1997&quot; rel=&quot;lightbox[2012yearinreview]&quot; href=&quot;http://www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-b5FCTrd/0/M/DSC_4845-2-M.jpg&quot;&gt;
        &lt;img src=&quot;//www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-b5FCTrd/0/Ti/DSC_4845-2-Ti.jpg&quot;
             style=&quot;border: 1px solid black&quot; width=&quot;95&quot; height=&quot;95&quot; alt=&quot;Hard to believe I caused this guy to move to Montana in 1997&quot;&gt;&lt;/a&gt;

      &lt;a title=&quot;Holland Lake Sunset&quot; rel=&quot;lightbox[2012yearinreview]&quot; href=&quot;http://www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-cH8CpGZ/0/M/HLL%20View-M.jpg&quot;&gt;
        &lt;img src=&quot;//www.mcginityphoto.com/Vacation/Montana-Summer-2012/i-cH8CpGZ/0/Ti/HLL%20View-Ti.jpg&quot;
             style=&quot;border: 1px solid black; margin-left: 1px&quot; width=&quot;95&quot; height=&quot;95&quot; alt=&quot;Holland Lake Sunset&quot;&gt;&lt;/a&gt;

                &lt;/p&gt;
                &lt;p style=&quot;text-align: center&quot;&gt;
&lt;a title=&quot;Api, Makao and Keaka. My Hawaiin name is Pualani&quot; rel=&quot;lightbox[2012yearinreview]&quot; href=&quot;http://www.mcginityphoto.com/Vacation/2012-Maui-Vacation/i-KHjFqdL/0/M/DSC_5402-M.jpg&quot;&gt;
        &lt;img src=&quot;//www.mcginityphoto.com/Vacation/2012-Maui-Vacation/i-KHjFqdL/0/S/DSC_5402-S.jpg&quot;
             width=&quot;400&quot; height=&quot;266&quot; style=&quot;border: 1px solid black&quot; alt=&quot;Api, Makao and Keaka. My Hawaiin name is Pualani&quot;&gt;&lt;/a&gt;
                            &lt;/p&gt;
&lt;p&gt;
    After returning from Hawaii, we dropped the kids off at their Mom&apos;s and headed to my cousin&apos;s wedding in Beacon, NY for the weekend. From there, my parents, Trish and I rode the train to Boston, spent a few days in Cape Cod and returned home in time for the beginning of school.
    &lt;/p&gt;
    &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7795952628/&quot; href=&quot;http://farm9.staticflickr.com/8294/7795952628_c0be6bc4ca.jpg&quot; title=&quot;Abbie and Jack on the First Day of School 2012 by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8294/7795952628_c0be6bc4ca_n.jpg&quot; width=&quot;209&quot; height=&quot;320&quot; alt=&quot;Abbie and Jack on the First Day of School 2012&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    
    The kids &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_first_day_of_school2&quot;&gt;started the school year in mid-August&lt;/a&gt; and we celebrated &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack4&quot;&gt;Jack&apos;s 8th birthday&lt;/a&gt; a couple weeks later.
    &lt;/p&gt;
&lt;p&gt;My lack of speaking engagements and work-related travel gave us more time to frolic in the Colorado mountains, so we &lt;a href=&quot;http://raibledesigns.com/rd/entry/we_bought_a_boat&quot;&gt;bought a boat&lt;/a&gt; for Labor Day weekend. That Saturday, we took it on its Maiden Voyage on the Colorado River, floating from Radium to Rancho del Rio. I guided and rowed the boat most of the time while our &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7921929062/in/photostream/&quot; href=&quot;http://farm9.staticflickr.com/8460/7921929062_9bcf7d15f0.jpg&quot; rel=&quot;lightbox[2012yearinreview]&quot; title=&quot;The Maiden Voyage Crew&quot;&gt;7 passengers (and 2 dogs)&lt;/a&gt; enjoyed cold beverages, great scenery and relaxing in the sun. 
    &lt;/p&gt;
    &lt;p style=&quot;text-align: center&quot;&gt;
        &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7921917130/&quot; href=&quot;http://farm9.staticflickr.com/8041/7921917130_7389475dea.jpg&quot; title=&quot;Abbie with our new boat by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8041/7921917130_7389475dea_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Abbie with our new boat&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;The next day, Abbie played her first game of golf.&lt;/p&gt;
    &lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a rev=&quot;http://www.flickr.com/photos/mraible/7937704316/&quot; href=&quot;http://farm9.staticflickr.com/8317/7937704316_ee30d6bc55.jpg&quot; title=&quot;Nice form kiddo!&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8317/7937704316_ee30d6bc55_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Nice form kiddo!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

    &lt;a rev=&quot;http://www.flickr.com/photos/mraible/7937705606/&quot; href=&quot;http://farm9.staticflickr.com/8318/7937705606_9d754545de.jpg&quot; title=&quot;Great day of golf at Pole Creek. Got a sweet framed set of Abbie pics at the end too!&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8318/7937705606_9d754545de_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Great day of golf at Pole Creek. Got a sweet framed set of Abbie pics at the end too!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

    &lt;/p&gt;
    &lt;p&gt;In October, I &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_deck_project&quot;&gt;finished our deck project&lt;/a&gt; and work continued on our kitchen remodel (started in July by &lt;a href=&quot;http://peppergc.com/&quot;&gt;Ted Pepper&lt;/a&gt;). Our kitchen was far enough along for us to host our 1st Annual Halloween Party.&lt;/p&gt;
    &lt;p&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_abbie6&quot;&gt;Abbie turned 10&lt;/a&gt; the first week in November. That Friday, we headed to Kauai to &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_40th_anniversary_mom_and&quot;&gt;celebrate my parents&apos; 40th Anniversary&lt;/a&gt;. We spent &lt;a href=&quot;http://raibledesigns.com/rd/entry/november_travels_to_kauai_and#thanksgiving&quot;&gt;Thanksgiving in Wenatchee&lt;/a&gt;, Christmas in Boston/Vermont and &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157632448197212/&quot;&gt;New Years with good friends in Fraser&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8224084347/&quot; href=&quot;http://farm9.staticflickr.com/8341/8224084347_d146419dfd.jpg&quot; title=&quot;Our Lanai by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8341/8224084347_d146419dfd_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;Our Lanai&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8224089763/&quot; href=&quot;http://farm9.staticflickr.com/8065/8224089763_03d7c6a657.jpg&quot; title=&quot;Hanalei Pier by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8065/8224089763_03d7c6a657_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;Hanalei Pier&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8225168600/&quot; href=&quot;http://farm9.staticflickr.com/8059/8225168600_df36e98e1e.jpg&quot; title=&quot;Happy Family by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8059/8225168600_df36e98e1e_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;Happy Family&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8225152842/&quot; href=&quot;http://farm9.staticflickr.com/8339/8225152842_6c987fae93.jpg&quot; title=&quot;Surf House by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8339/8225152842_6c987fae93_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;Surf House&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-url=&quot;http://www.flickr.com/photos/mcginityphoto/8225154986/&quot; href=&quot;http://farm9.staticflickr.com/8480/8225154986_2641ec95bd.jpg&quot; title=&quot;St Regis Pool by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[2012yearinreview]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8480/8225154986_2641ec95bd_t.jpg&quot; width=&quot;100&quot; height=&quot;67&quot; alt=&quot;St Regis Pool&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://www.facebook.com/photo.php?fbid=10200109112597408&amp;amp;set=a.10200104543563185.2198356.1438065285&amp;amp;type=1&quot;&gt;
&lt;img alt=&quot;Mom and Dad in Kauai&quot; src=&quot;//sphotos-a.xx.fbcdn.net/hphotos-prn1/621352_10200109112597408_143056394_o.jpg&quot; style=&quot;width: 520px; height: 346px; border: 1px solid black&quot;&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id=&quot;2013&quot;&gt;2013&lt;/h2&gt;
&lt;p&gt;My goals for 2013 are to be happy and to &lt;em&gt;slow down&lt;/em&gt;. I don&apos;t plan on traveling any less, or spending less time with my family. I&apos;d just like to walk slower, smell the good ol&apos; Rocky Mountain air more and enjoy life. I believe our raft will help us facilitate this and we&apos;re already planning trips to the &lt;a href=&quot;http://www.tagalong.com/index.php?page=greeno&quot;&gt;Green River&lt;/a&gt; in Utah and &lt;a href=&quot;http://www.montanaliving.com/Outdoors/Schafer_Meadows_a_wilderness_trip_of_a_lifetime_97-097&quot;&gt;Schafer Meadows&lt;/a&gt; in the Bob.&lt;/p&gt;
&lt;p&gt;The big event for the year will be Trish and my wedding this summer. We&apos;ll be doing it in my hometown in Montana and we expect it to be quite the shindig. Afterward, we plan on &lt;a href=&quot;https://twitter.com/mraible/status/264452753596751874&quot;&gt;traveling the world&lt;/a&gt; for our honeymoon.&lt;/p&gt;
&lt;p&gt;Of course, if the bus gets finished, that&apos;s a huge bonus too.&lt;/p&gt;
&lt;p&gt;Professionally, I&apos;m starting an exciting project at Taleo that will involve heavy JavaScript, CSS3 and maybe even Canvas. I have speaking engagements lined up at &lt;a href=&quot;http://www.meetup.com/DenverJavaUsersGroup/events/93932082/&quot;&gt;Denver JUG in February&lt;/a&gt; and &lt;a href=&quot;http://www.meetup.com/HTML5-Denver-Users-Group/&quot;&gt;HTML5 Denver&lt;/a&gt; in April. Also, I just submitted a couple talks to &lt;a href=&quot;http://www.devoxx.com/display/FR13/Home&quot;&gt;Devoxx France&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;For AppFuse, I&apos;d love to get 3-4 releases out this year, but 2 is probably more realistic. The &lt;a href=&quot;http://appfuse.org/display/APF/Roadmap&quot;&gt;AppFuse Roadmap&lt;/a&gt; shows our future releases + features. I&apos;d also like to work a bit more on my Play 2 app; finishing the mobile client and possibly switching from Anorm to Slick or Spring Data.&lt;/p&gt;
&lt;p&gt;While Oracle has been good to me, I look forward to finding and working for a new client in September.&lt;/p&gt;
&lt;p&gt;Last year &lt;a href=&quot;http://raibledesigns.com/rd/entry/2011_a_year_in_review&quot;&gt;at this time&lt;/a&gt;, we watched the Broncos execute the &lt;em&gt;Mile High Miracle&lt;/em&gt; over the Steelers. With tickets to both this week&apos;s game (vs. The Ravens) and next week&apos;s game (vs. The Patriots), I wouldn&apos;t be surprised if January turns out to be a great month. However, with the Powder Days, The Super Bowl, the raft trips, the Bus Shows and The Wedding, there&apos;s a good chance that all the months in 2013 are epic. &lt;img src=&quot;https://raibledesigns.com/images/smileys/smile.gif&quot; class=&quot;smiley&quot; alt=&quot;:)&quot; title=&quot;:)&quot; /&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/improving_appfuse_s_pagespeed_with</id>
        <title type="html">Improving AppFuse&apos;s PageSpeed with Apache</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/improving_appfuse_s_pagespeed_with"/>
        <published>2012-12-04T09:25:05-07:00</published>
        <updated>2012-12-05T02:34:08-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="contegix" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apache" scheme="http://roller.apache.org/ns/tags/" />
        <category term="pagespeed" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;One of the most important things when developing webapps is to make them &lt;em&gt;fast&lt;/em&gt;. With AppFuse, we&apos;ve tried to incorporate many of the &lt;a href=&quot;http://stevesouders.com/hpws/rules.php&quot;&gt;14 rules for faster-loading websites&lt;/a&gt;. We had a gzip filter before it was cool (2003) and replaced it with &lt;a href=&quot;http://ehcache.org/documentation/user-guide/web-caching&quot;&gt;the one from EhCache&lt;/a&gt;. However, users experienced issues with both of these, both &lt;a href=&quot;http://issues.appfuse.org/browse/APF-863&quot;&gt;with XFire/CXF&lt;/a&gt; and &lt;a href=&quot;http://issues.appfuse.org/browse/APF-1037&quot;&gt;WebWork/Struts 2 and JSPs&lt;/a&gt;. Because of these issues, we disabled gzipping a few releases ago. &lt;/p&gt;

&lt;p&gt;This article is designed to show you how you can make your AppFuse webapp faster, without modifying any code. The good news is this applies to any webapp that you can deploy behind Apache. &lt;/p&gt;

&lt;p&gt;Last Friday, I sent an email to the good folks at &lt;a href=&quot;http://contegix.com&quot;&gt;Contegix&lt;/a&gt; to see if they could install &lt;a href=&quot;https://developers.google.com/speed/pagespeed/mod&quot;&gt;mod_pagespeed&lt;/a&gt; on the Apache server that sits in front of *.appfuse.org. My goal was to improve the YSlow and PageSpeed scores of the apps hosted on &lt;a href=&quot;http://demo.appfuse.or&quot;&gt;demo.appfuse.org&lt;/a&gt;. I discovered they were getting a dismal score of 24 and figured we could do a lot better. mod_pagespeed speeds up your site and reduces page load time by automatically applying web performance best practices. It seemed like an easy solution.
&lt;/p&gt;

&lt;p&gt;Unfortunately, we were unable to use mod_pagespeed. From the guys at Contegix:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;Attempting to install mod_pagespeed as you requested, we find that it requires Apache httpd 2.2 and libstdc++ 4.1.2, both of which are unsupported in RHEL4. To get mod_pagespeed to work on your present operating system basically means re-rolling the core components, which would make them unsupported. I&apos;m afraid mod_pagespeed is simply not an option on your present configuration.&lt;/p&gt;

&lt;p&gt;Since I still wanted to improve performance, I opted for another route instead: using mod_deflate (for gzipping) and mod_expires (for expires headers). I also turned on KeepAlive as recommended by &lt;a href=&quot;https://developers.google.com/speed/docs/insights/using_chrome&quot;&gt;PageSpeed Insights&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mod_deflate&lt;/strong&gt;&lt;br&gt;mod_deflate was already installed in Apache (version 2.0.52), so all I had to do was configure it. On RHEL4, Apache is installed at /etc/httpd and there&apos;s a &lt;em&gt;conf.d&lt;/em&gt; directory that contains all the configuration files. I created a file at &lt;em&gt;/etc/httpd/conf.d/deflate.conf&lt;/em&gt; and populated it with the following:&lt;/p&gt;

&lt;pre&gt;#
# mod_deflate configuration
#
&amp;lt;IfModule mod_deflate.c&gt;
    SetOutputFilter DEFLATE
    
    AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript
    
    DeflateCompressionLevel 9
    
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    
    DeflateFilterNote Input instream
    DeflateFilterNote Output outstream
    DeflateFilterNote Ratio ratio
    
    LogFormat &apos;&quot;%r&quot; %{outstream}n/%{instream}n (%{ratio}n%%)&apos; deflate
    
&amp;lt;/IfModule&gt;&lt;/pre&gt;

&lt;p&gt;At first, I had separate lines for all the different content types (as recommended by &lt;a href=&quot;http://www.g-loaded.eu/2008/05/10/use-mod_deflate-to-compress-web-content-delivered-by-apache/&quot;&gt;this article&lt;/a&gt;). The Contegix support crew figured out the solution (everything needed to be on one line) in 14 minutes, updated the config and verified it worked using &lt;a href=&quot;http://www.whatsmyip.org/http-compression-test/&quot;&gt;an http compression testing page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mod_expires&lt;/strong&gt;&lt;br&gt;mod_expires was already installed, so I added a config file at &lt;em&gt;/etc/httpd/conf.d/expires.conf&lt;/em&gt;. I used &lt;a href=&quot;http://www.howtoforge.com/make-browsers-cache-static-files-with-mod_expires-on-apache2-debian-squeeze&quot;&gt;this howto&lt;/a&gt; and asked Contegix for help when it didn&apos;t work. Their response took quite a bit longer this time (49 minutes), but they once again figured it out:&lt;/p&gt;

&lt;p class=&quot;quote&quot;&gt;It appears that FilesMatch does not like to play will JkMount. It does work using content type.&lt;/p&gt;

&lt;p&gt;My final config for &lt;em&gt;expires.conf&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;IfModule mod_expires.c&gt;
    ExpiresActive On
    
    &amp;lt;FilesMatch &quot;\.(jpe?g|png|gif|js|css)$&quot;&gt;
        ExpiresDefault &quot;access plus 1 week&quot;
    &amp;lt;/FilesMatch&gt;
    
    ExpiresByType image/jpeg &quot;access plus 1 week&quot;
    ExpiresByType image/png &quot;access plus 1 week&quot;
    ExpiresByType image/gif &quot;access plus 1 week&quot;
    ExpiresByType text/css &quot;access plus 1 week&quot;
    ExpiresByType application/javascript &quot;access plus 1 week&quot;
    ExpiresByType application/x-javascript &quot;access plus 1 week&quot;
&amp;lt;/IfModule&gt;
&lt;/pre&gt;

&lt;p&gt;I used &quot;1 week&quot; because we&apos;re changing things quite a bit right now and we haven&apos;t integrated &lt;a href=&quot;http://www.operatornew.com/2012/10/adding-web-resource-fingerprinting-to.html&quot;&gt;resource fingerprinting&lt;/a&gt; yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KeepAlive&lt;br&gt;&lt;/strong&gt;The last thing I did to improve performance was to turn on KeepAlive by editing &lt;em&gt;/etc/httpd/conf/httpd.conf &lt;/em&gt;and changing &lt;em&gt;Off &lt;/em&gt;to &lt;em&gt;On&lt;/em&gt;.&lt;/p&gt;
&lt;pre&gt;#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to &quot;Off&quot; to deactivate.
#
KeepAlive On&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;br&gt;&lt;/strong&gt;As a result of these changes, our PageSpeed score went from 24 to 96 and YSlow went from a 90 to a 98. When I started this experiment, I was only trying to fix demo.appfuse.org. However, it also improved the speed of all the other *.appfuse.org sites, including &lt;a href=&quot;http://appfuse.org&quot;&gt;Confluence&lt;/a&gt;, &lt;a href=&quot;http://builds.appfuse.or&quot;&gt;Bamboo&lt;/a&gt;, &lt;a href=&quot;http://issues.appfuse.or&quot;&gt;JIRA&lt;/a&gt; and &lt;a href=&quot;http://source.appfuse.org&quot;&gt;FishEye&lt;/a&gt;. Thanks for all the help Contegix! There&apos;s a good chance you&apos;ve given me back a few minutes in each day.&lt;/p&gt;
&lt;p style=&quot;text-align: right; font-size: .95em; margin-top: -10px&quot;&gt;&lt;em&gt;Originally posted &lt;a href=&quot;http://appfuse.org/display/APF/2012/12/04/Improving+AppFuse%27s+PageSpeed+with+Apache&quot;&gt;on the AppFuse Blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/why_the_bias_against_jsf</id>
        <title type="html">Why the bias against JSF?</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/why_the_bias_against_jsf"/>
        <published>2012-11-08T09:24:27-07:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jvm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jsf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">In my last post about &lt;a href=&quot;http://raibledesigns.com/rd/entry/infoq_s_top_20_web&quot;&gt;InfoQ&apos;s Top 20 Web Frameworks for the JVM&lt;/a&gt;, I received a thought-provoking &lt;a href=&quot;http://raibledesigns.com/rd/entry/infoq_s_top_20_web#comment-1352305197000&quot;&gt;comment&lt;/a&gt; from &lt;a href=&quot;http://henk53.wordpress.com/&quot;&gt;henk53&lt;/a&gt;:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
There is one little thing that does bother me in those presentations, and that&apos;s your fairly obvious bias against JSF. &lt;br/&gt;...&lt;br/&gt;
If you are presenting yourself as, more or less, an authority on comparing web frameworks, then having a fairly obvious biased against one of them is just peculiar. I, all of my team, and various clients distrust your ranking of JSF. We do look at your data if the choice is between other frameworks, but as soon as JSF comes into the picture we just look elsewhere.
&lt;br/&gt;&lt;br/&gt;
I&apos;m not really sure where this bias comes from. Yes, JSF 1.0 sucked and 1.2 was only marginally better, but 2.0 is really cool and productive and there are SUPERB component and utility libraries now like PrimeFaces and OmniFaces. As a researcher of this topic I think you should keep up the date and not stick to some old grudge.
&lt;/p&gt;
&lt;p&gt;This is true, I am biased against JSF. It all started with my &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_jsf_experience&quot;&gt;first JSF experience&lt;/a&gt; back in August 2004. If you remember correctly, 2004 was a big year: JSF 1.0, Spring 1.0 and Flex 1.0 were all released. The &quot;AJAX&quot; term was coined in &lt;a href=&quot;http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications&quot;&gt;early 2005&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/4378559350/&quot; title=&quot;History of Web Frameworks by mraible, on Flickr&quot;&gt;&lt;img src=&quot;//farm5.staticflickr.com/4067/4378559350_13f0755403.jpg&quot; width=&quot;500&quot; height=&quot;234&quot; alt=&quot;History of Web Frameworks&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;By &lt;a href=&quot;http://raibledesigns.com/rd/entry/jsf_still_sucks&quot;&gt;2007&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/what_s_wrong_with_jsf&quot;&gt;2008&lt;/a&gt;, JSF still hadn&apos;t gotten any better. In late 2009, JSF 2.0 was released and &lt;a href=&quot;http://raibledesigns.com/rd/entry/upgrading_to_jsf_2&quot;&gt;I upgraded in March 2011&lt;/a&gt;. As you can see from the aforementioned post, I ran into quite a few issues upgrading. JSF was also the &lt;a href=&quot;http://raibledesigns.com/rd/entry/implementing_extensionless_urls_with_tapestry&quot;&gt;hardest one to get working with extension-less URLs&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Most of my issues with JSF come from having maintained an application built with it since 2004. If I were to start a new application without any legacy migration issues, I imagine it wouldn&apos;t be as difficult. However, if you compare it to Struts 2 and Spring MVC, I&apos;ve had little-to-no issues upgrading those applications over the years. &lt;/p&gt;
&lt;p&gt;Also, I&apos;m not just biased against JSF, but most component-based web frameworks. Just ask the Tapestry and Wicket folks. They&apos;ve felt my criticisms over the years. My reason for preferring request-based frameworks like Struts 2/Spring MVC and Grails/Play has been because I&apos;ve never seen the appeal in component-based frameworks. Often I&apos;ve found that their components are just widgets that you can get from any decent JavaScript framework. And chances are that JavaScript framework can work with &lt;em&gt;any&lt;/em&gt; web framework. Also, I&apos;ve worked on a lot of high-traffic web applications that require statelessness for scalability.&lt;/p&gt;
&lt;p&gt;I see the value in component-based frameworks, I just don&apos;t think components should be authored on the server-side. Most of the Java-based component frameworks require 2+ files for components (one for the component, one for the view, possibly one for the config). I love GWT&apos;s component concept in that you can just extract a class and re-use it. With JS frameworks, you can often just include a script. These days, when I think of good component-based frameworks, I think of jQuery UI and Twitter Bootstrap.&lt;/p&gt;
&lt;p&gt;All that being said, there&apos;s a lot of folks praising JSF 2 (and &lt;a href=&quot;http://primefaces.org/&quot;&gt;PrimeFaces&lt;/a&gt; moreso). That&apos;s why I&apos;ll be integrating it (or merging your pull request) into the 2.3 release of AppFuse. Since PrimeFaces contains a Bootstrap theme, I hope this is a pleasant experience and my overall opinion of JSF improves.&lt;/p&gt;
&lt;p&gt;In other component-based frameworks in AppFuse news, Tapestry 5 has gotten &lt;em&gt;really fast&lt;/em&gt; in the last year. I imagine this is because we have a Tapestry expert, &lt;a href=&quot;http://www.linkedin.com/in/sergeeby&quot;&gt;Serge Eby&lt;/a&gt;, working on it. And we&apos;re planning on adding Wicket in the 2.3 release. &lt;/p&gt;
&lt;p&gt;So even though I &lt;em&gt;prefer&lt;/em&gt; request-based frameworks with REST support and Bootstrap, that doesn&apos;t mean everyone does. I&apos;ll do my best to be less-biased in the future. However, please remember that my view on web frameworks is as a developer, not an analyst. And aren&apos;t developers &lt;em&gt;supposed&lt;/em&gt; to be opinionated? &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;)&quot; title=&quot;;)&quot; /&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/infoq_s_top_20_web</id>
        <title type="html">InfoQ&apos;s Top 20 Web Frameworks for the JVM</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/infoq_s_top_20_web"/>
        <published>2012-11-06T12:04:28-07:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="infoq" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jvm" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Back in early October, InfoQ.com published a community research article titled &lt;a href=&quot;http://www.infoq.com/research/jvm-web-frameworks&quot;&gt;Top 20 Web Frameworks for the JVM&lt;/a&gt;. Their goal seemed to be fairly simple:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
Using the new community research tool, we at InfoQ want to get YOUR opinions on the relative importance and maturity of a variety of web frameworks that are targeted for the JVM. Please vote by dragging each practice across two dimensions &#8211; how important is the framework relative to the other frameworks, and how much is it actually used in real teams and projects.
&lt;/p&gt;
&lt;p&gt;When I first saw this article, I noticed some strange web frameworks listed. Namely, Netty, SiteMesh and Spark. I haven&apos;t heard of many folks using &lt;a href=&quot;https://netty.io/&quot;&gt;Netty&lt;/a&gt; for a web framework, but I&apos;m sure it&apos;s possible. SiteMesh is certainly not a web framework and I&apos;ve never even heard of Spark. And where is GWT and Vaadin? Regardless of the choices, I went ahead and voted.&lt;/p&gt;
&lt;p&gt;Last week, InfoQ posted their top content for October on Facebook. &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/research/jvm-web-frameworks&quot;&gt;Top 20 Web Frameworks for the JVM&lt;/a&gt; 25,992 PV&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/news/2012/10/Ruby-on-Rails-Node-js-LinkedIn&quot;&gt;Ruby on Rails vs. Node.js at LinkedIn&lt;/a&gt; 11,904 PV&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/presentations/Mobile-Web-Development&quot;&gt;Mobile Webdev: The Horror&lt;/a&gt; 11,150 PV&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/articles/rest-introduction&quot;&gt;A Brief Introduction to REST&lt;/a&gt; 8,872 PV
&lt;li&gt;&lt;a href=&quot;http://www.infoq.com/minibooks/kanban-scrum-minibook&quot;&gt;Kanban and Scrum - making the most of both&lt;/a&gt; 7,665 PV&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;First of all, it&apos;s interesting to see that JVM Web Frameworks is still a hot topic for developers. Whenever I do my Comparing JVM Web Frameworks talk at conferences, I always see a few jabs about &quot;he&apos;s &lt;em&gt;still&lt;/em&gt; doing that talk!?&quot; Yes, it seems strange that a talk I first did in 2004 is still in high demand. &lt;/p&gt;
&lt;p&gt;Secondly, I think InfoQ does good in showing how the frameworks ranked and showing their &lt;em&gt;heatmaps&lt;/em&gt;. Below are their rankings from 1109 participants. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/mraible/8161758257/&quot; title=&quot;InfoQ&apos;s Top 20 Web Frameworks for the JVM&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8197/8161758257_ef6d919f5d.jpg&quot; width=&quot;500&quot; height=&quot;395&quot; alt=&quot;InfoQ&apos;s Top 20 Web Frameworks for the JVM&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;According to this research, the top 5 web frameworks for the JVM are Spring MVC, Play, Grails, JSF and Struts (I hope those surveyed meant Struts 2, not Struts 1).&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-jfokus-2012&quot;&gt;my research from last February&lt;/a&gt; (slide 21), I ranked them (with no particular weightings) as Grails, GWT, JRuby on Rails, Spring MVC and Vaadin. So I guess you could say I got 2 out of 5 right (Grails and Spring MVC). Not bad considering InfoQ didn&apos;t even consider GWT and Vaadin.&lt;/p&gt;
&lt;p&gt;Another intriguing data point in this study is each frameworks&apos; heatmap. For example, below are heatmaps for the top 4 frameworks. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/8161758501/&quot; href=&quot;http://farm8.staticflickr.com/7247/8161758501_151b1a839c.jpg&quot; title=&quot;Spring MVC Heatmap&quot; rel=&quot;lightbox[infotop20webframeworks]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7247/8161758501_151b1a839c_m.jpg&quot; width=&quot;240&quot; height=&quot;215&quot; alt=&quot;Spring MVC Heatmap&quot;&gt;&lt;/a&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mraible/8161762845/&quot; href=&quot;http://farm8.staticflickr.com/7125/8161762845_12cfdc076c.jpg&quot; title=&quot;Grails Heatmap&quot; rel=&quot;lightbox[infotop20webframeworks]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7125/8161762845_12cfdc076c_m.jpg&quot; width=&quot;240&quot; height=&quot;215&quot; alt=&quot;Grails Heatmap&quot; style=&quot;margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/8161758399/&quot; href=&quot;http://farm8.staticflickr.com/7255/8161758399_505e8cf4db.jpg&quot; title=&quot;Play Heatmap&quot; rel=&quot;lightbox[infotop20webframeworks]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7255/8161758399_505e8cf4db_m.jpg&quot; width=&quot;240&quot; height=&quot;215&quot; alt=&quot;Play Heatmap&quot;&gt;&lt;/a&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mraible/8161758341/&quot; href=&quot;http://farm8.staticflickr.com/7256/8161758341_7e1d37e1ea.jpg&quot; title=&quot;JSF Heatmap&quot; rel=&quot;lightbox[infotop20webframeworks]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7256/8161758341_7e1d37e1ea_m.jpg&quot; width=&quot;240&quot; height=&quot;215&quot; alt=&quot;JSF Heatmap&quot; style=&quot;margin-left: 10px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Notice how Grails and Spring MVC are both &lt;em&gt;hotter&lt;/em&gt; in the bottom right corner? It seems the community&apos;s overall opinions of these two frameworks are more aligned than JSF and Play, which a fair amount of folks rank as hyped and unimportant. &lt;/p&gt;
&lt;p&gt;What I really like about this research is it&apos;s the community&apos;s opinions, visualized. It also confirms that some of my favorite frameworks are still on top. I don&apos;t know if JSF belongs as a top framework, however it seems a lot of folks do. I recently &lt;a href=&quot;http://appfuse.547863.n4.nabble.com/Drop-JSF-Support-td4655648.html&quot;&gt;thought about removing it from AppFuse&lt;/a&gt;, but decided to keep it (at least for the next release). I hope InfoQ does more research projects like this, especially if they get their list of web frameworks right. </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/we_bought_a_boat</id>
        <title type="html">We bought a boat!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/we_bought_a_boat"/>
        <published>2012-09-05T11:12:02-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="golfing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <category term="downriver" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rafting" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maidenvoyage" scheme="http://roller.apache.org/ns/tags/" />
        <category term="boat" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">I&apos;ve always enjoyed whitewater rafting. I think the first time I did it was in college and I immediately fell in love. Through the years, I&apos;ve been on many trips with family and friends. However, it wasn&apos;t until this summer that I realized it was something I should do more often. It was Trish&apos;s friends, Chris and Bryce, that started it all. They bought a raft last year and we floated down the Colorado River with them a couple times over Memorial Day Weekend. Then we went to Montana and enjoyed a couple days on the Middle Fork of the Flathead with Dr. Barton and a bunch of raft guides. That weekend in July, we realized we&apos;d done more rafting than any other outdoor activities (mountain biking, camping and even golfing). That&apos;s when we decided to buy our own.
&lt;/p&gt;
&lt;p&gt;We had a lot of help in the process of buying a raft. First of all, I sat down with my friend Dr. Barton and made a list of all the things we&apos;d need. The good doctor was a whitewater guide in Montana for 5 years, has rescued trips from the wilderness and has even rafted the Grand Canyon - so I considered him a good source of information. After composing the list of necessary gear, we headed to &lt;a href=&quot;http://downriverequip.com/&quot;&gt;Down River Equipment&lt;/a&gt; on August 26th, the last day of their end-of-season sale. It took us an hour to pick out the raft we wanted (a &lt;a href=&quot;http://downriverequip.com/index.php/boats/rafts/down-river-pro-series/pro-140.html&quot;&gt;Pro 140&lt;/a&gt;) and gather up all the gear (frame, cooler, oars, dry box/bags, lifejackets, koozies, etc.). We asked them to have it ready by Friday and headed home.&lt;/p&gt;
&lt;p&gt;Last Friday, we picked up a raft trailer from &lt;a href=&quot;http://trailersourceinc.com/&quot;&gt;Trailer Source&lt;/a&gt; an hour before they closed, then journeyed to Down River where Mike (the owner) and Matt (the guy who helped us the previous Sunday) helped us setup our oars and load up our new boat. There was much rejoicing.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7937703060/&quot; href=&quot;http://farm9.staticflickr.com/8312/7937703060_65f420692e.jpg&quot; title=&quot;We bought a boat!&quot; rel=&quot;lightbox[weboughtaboat]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8312/7937703060_65f420692e_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;We bought a boat!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7937703702/&quot; href=&quot;http://farm9.staticflickr.com/8449/7937703702_df6db5bb4a.jpg&quot; title=&quot;Thanks to Mike and Matt from Down River&quot; rel=&quot;lightbox[weboughtaboat]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8449/7937703702_df6db5bb4a_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Thanks to Mike and Matt from Down River&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Saturday, we took it on its Maiden Voyage on the Colorado River, floating from Radium to Rancho del Rio. According to &lt;a href=&quot;http://www.blm.gov/co/st/en/fo/kfo/recreation_opportunities/rafting.html&quot;&gt;this page&lt;/a&gt;, there were some Class III rapids, but they all felt like Class II. I guided and rowed the boat most of the time while our &lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7921929062/in/photostream/&quot; href=&quot;http://farm9.staticflickr.com/8460/7921929062_9bcf7d15f0.jpg&quot; rel=&quot;lightbox[weboughtaboat]&quot; title=&quot;The Maiden Voyage Crew&quot;&gt;7 passengers (and 2 dogs)&lt;/a&gt; enjoyed cold beverages, great scenery and relaxing in the sun. It took us a bit longer (4 hours) than expected (2 hours), but we all thought it was well worth it.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7921917130/&quot; href=&quot;http://farm9.staticflickr.com/8041/7921917130_7389475dea.jpg&quot; title=&quot;Abbie with our new boat by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[weboughtaboat]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8041/7921917130_7389475dea.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Abbie with our new boat&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abbie&apos;s First Golf Game&lt;/strong&gt;&lt;br/&gt;After a long day of floating on Saturday, we decided to chill on Sunday with a little golf. We split the kids up for the weekend (Jack went with his mom), so we figured the proper way to treat our &lt;em&gt;only child&lt;/em&gt; was to take Abbie to play her first &lt;em&gt;real&lt;/em&gt; game of golf at &lt;a href=&quot;http://www.polecreekgolf.com/&quot;&gt;Pole Creek&lt;/a&gt;. We played 9 holes and both Abbie and I had a great time trying out our new clubs. We received a nice kids golfing tip from someone at the driving range: have them tee off from the 150 marker so they have a chance to par the hole.
&lt;/p&gt;
&lt;p&gt;
The course had a 50% discount for kids and we never saw anyone behind us the entire game. We were especially impressed when the course photographer offered us a framed set of Abbie pics for $15.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7937704316/&quot; href=&quot;http://farm9.staticflickr.com/8317/7937704316_ee30d6bc55.jpg&quot; title=&quot;Nice form kiddo!&quot; rel=&quot;lightbox[weboughtaboat]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8317/7937704316_ee30d6bc55_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Nice form kiddo!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7937705606/&quot; href=&quot;http://farm9.staticflickr.com/8318/7937705606_9d754545de.jpg&quot; title=&quot;Great day of golf at Pole Creek. Got a sweet framed set of Abbie pics at the end too!&quot; rel=&quot;lightbox[weboughtaboat]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8318/7937705606_9d754545de_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Great day of golf at Pole Creek. Got a sweet framed set of Abbie pics at the end too!&quot; style=&quot;border: 1px solid black; margin-left: 10px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7921909282/&quot; href=&quot;http://farm9.staticflickr.com/8454/7921909282_4ed3363133.jpg&quot; title=&quot;Abbie frolicking on the golf course by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[weboughtaboat]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8454/7921909282_4ed3363133.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Abbie frolicking on the golf course&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We don&apos;t know how many more days of rafting we&apos;ll get in this year, but next year should be epic. We&apos;re hoping to do multi-day trips on the &lt;a href=&quot;http://www.utah.com/raft/rivers/green.htm&quot;&gt;Green River&lt;/a&gt;, the &lt;a href=&quot;http://www.bigskyfishing.com/River-Fishing/Central-MT-Rivers/smith-river/smith_floating.php&quot;&gt;Smith River&lt;/a&gt; and fly into &lt;a href=&quot;http://www.montanaliving.com/Outdoors/Schafer_Meadows_a_wilderness_trip_of_a_lifetime_97-097&quot;&gt;Schafer Meadows&lt;/a&gt; for a journey through the &lt;a href=&quot;http://en.wikipedia.org/wiki/Bob_Marshall_Wilderness&quot;&gt;Bob Marshall Wilderness&lt;/a&gt;. I grew up only 10 miles from &quot;The Bob&quot; and I&apos;ve never been in it. I can&apos;t wait! &lt;img src=&quot;https://raibledesigns.com/images/smileys/grin.gif&quot; class=&quot;smiley&quot; alt=&quot;:-D&quot; title=&quot;:-D&quot; /&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/refreshing_taleo_s_ui_with</id>
        <title type="html">Refreshing Taleo&apos;s UI with HTML5, Twitter Bootstrap and CSS3</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/refreshing_taleo_s_ui_with"/>
        <published>2012-08-20T12:27:21-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/The Web" label="The Web" />
        <category term="taleo" scheme="http://roller.apache.org/ns/tags/" />
        <category term="css3" scheme="http://roller.apache.org/ns/tags/" />
        <category term="html5" scheme="http://roller.apache.org/ns/tags/" />
        <category term="twitterbootstrap" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Back in December, I wrote about &lt;a href=&quot;http://raibledesigns.com/rd/entry/what_have_i_been_working&quot;&gt;what I&apos;ve been working on at Taleo&lt;/a&gt;. Shortly after finishing up the Profile Picture, Talent Card and Org Chart features for TBE, I spent two weeks doing page speed optimization. By following &lt;a href=&quot;http://code.google.com/speed/page-speed/docs/rules_intro.html&quot;&gt;Web Performance Best Practices&lt;/a&gt;, I was able to make the TBE application twice as fast and improve its score into the low 90s. 
&lt;/p&gt;
&lt;p&gt;
Next, I started working on a new project - refreshing the UI. &lt;a href=&quot;http://www.linkedin.com/pub/nick-morgan/1/449/637&quot;&gt;Nick&lt;/a&gt;, the Lead UX Designer at Taleo (at the time), had developed a number of mockups and presented it to the developers and product folks in early November. I listened to a WebEx of that meeting and learned that everyone thought it&apos;d take 6-9 months to complete the work. They figured they could release the new design in Q3 2012.  
&lt;/p&gt;
&lt;p&gt;Since I like to provide high-value for my clients, I offered to help with the redesign and do a spike to help estimate. They agreed it&apos;d be a good use of my time and I started working on it the week before Christmas. Since I&apos;d used &lt;a href=&quot;http://twitter.github.com/bootstrap/&quot;&gt;Twitter Bootstrap&lt;/a&gt; for my &lt;a href=&quot;http://raibledesigns.com/rd/entry/migrating_to_play_2_and&quot;&gt;&lt;em&gt;Play More!&lt;/em&gt; app&lt;/a&gt;, I recommended we use it as a foundation of the redesign. They agreed and I went to work. By the end of the week, I&apos;d made good progress and told them I thought the redesign was possible in 2-3 months (including QA and cross-browser compatibility).&lt;/p&gt;
&lt;p&gt;When I came back to work in January, we decided to split the redesign into two phases. Rather than moving elements around and introducing new features, we decided to do that in the 2nd phase. The 1st phase would entail simply re-skinning the existing UI, with minimal HTML changes. I spent a week refining my spike and integrating it into a branch. The next week, I switched images from individual images to &lt;a href=&quot;http://www.alistapart.com/articles/sprites&quot;&gt;CSS sprites&lt;/a&gt;. Next, I implemented a new theming system with different colors/icons and got everything looking good in Chrome, Safari and IE8/9. 
&lt;/p&gt;
&lt;p&gt;The result is something I&apos;m quite proud of. IE8 doesn&apos;t have the rounded corners (via border-radius), but it still looks good. Forms look much better thanks to Bootstrap&apos;s styling and even jQuery UI&apos;s widgets look good thanks to &lt;a href=&quot;http://addyosmani.github.com/jquery-ui-bootstrap/&quot;&gt;jQuery UI Bootstrap&lt;/a&gt;. I did have to override quite a few Bootstrap styles in the process, but the result is something that doesn&apos;t look too &lt;em&gt;bootstrappy&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;One technique I found to be extremely useful during this process was to pair with Nick (the designer) as mentioned in &lt;a href=&quot;http://www.alistapart.com/articles/building-twitter-bootstrap/&quot;&gt;Building Twitter Bootstrap&lt;/a&gt;. At one point, when we were trying to refine slight nuances and spacing in the UI, I paired with the Product Manager and found this to be a real time-saving effort as well.&lt;/p&gt;

&lt;p&gt;Taleo&apos;s UI Refresh project has been a great experience for me in sharpening my CSS skills. I used quite a bit of &lt;a href=&quot;http://css-tricks.com/child-and-sibling-selectors/&quot;&gt;child and sibling selectors&lt;/a&gt;, which work great in all the browser&apos;s we&apos;re supporting. Also, by using CSS sprites and colors (vs. images), I was able to get the manual theme-creation process down to around 15 minutes. After getting the manual process greatly reduced, I wrote a Theme Generator (based on Ant, LESS and &lt;a href=&quot;http://code.google.com/p/wro4j/&quot;&gt;wro4j&lt;/a&gt;) and got it down to mere minutes. I found &lt;a href=&quot;http://www.spritecow.com/&quot;&gt;Sprite Cow&lt;/a&gt; to be an invaluable resources for working with CSS sprites.
&lt;/p&gt;
&lt;p&gt;Below are some before and after shots of what we&apos;ve been able to accomplish in the first quarter of this year.
&lt;/p&gt;  
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm8.staticflickr.com/7159/6777477811_66d6401bd9_b.jpg&quot; rel=&quot;lightbox[taleo-uirefresh]&quot; title=&quot;Old UI - My View&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7159/6777477811_66d6401bd9_m.jpg&quot; width=&quot;240&quot; height=&quot;148&quot; alt=&quot;Old UI - My View&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;http://farm8.staticflickr.com/7007/6777477639_4ca42665a7_b.jpg&quot; rel=&quot;lightbox[taleo-uirefresh]&quot; title=&quot;Old UI - New Employee&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7007/6777477639_4ca42665a7_m.jpg&quot; style=&quot;margin-left: 10px&quot; width=&quot;240&quot; height=&quot;148&quot; alt=&quot;Old UI - New Employee&quot;&gt;&lt;/a&gt;
&lt;p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  
  &lt;a href=&quot;http://farm8.staticflickr.com/7022/6777477527_b1abb3b204_b.jpg&quot; rel=&quot;lightbox[taleo-uirefresh]&quot; title=&quot;New UI - My View&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7022/6777477527_b1abb3b204_m.jpg&quot; width=&quot;240&quot; height=&quot;148&quot; alt=&quot;New UI - My View&quot;&gt;&lt;/a&gt;
  
  &lt;a href=&quot;http://farm8.staticflickr.com/7162/6777477443_37241a4e85_b.jpg&quot; rel=&quot;lightbox[taleo-uirefresh]&quot; title=&quot;New UI - New Employee&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7162/6777477443_37241a4e85_m.jpg&quot; style=&quot;margin-left: 10px&quot; width=&quot;240&quot; height=&quot;148&quot; alt=&quot;New UI - New Employee&quot;&gt;&lt;/a&gt;  
  &lt;/p&gt;
  &lt;p&gt;
I originally wrote this post at the end of January. We ran into some stumbling blocks shorty after its original composition: Nick (the designer) moved onto &lt;a href=&quot;http://www.salesforce.com/&quot;&gt;greener pastures&lt;/a&gt; and &lt;a href=&quot;http://www.businessweek.com/news/2012-02-10/oracle-buys-taleo-for-1-9-billion-adds-human-resource-tool.html&quot;&gt;Oracle bought Taleo&lt;/a&gt;. What I didn&apos;t expect when I wrote this was to spend the next two months fixing slight bugs that occurred with spacing, alignment and dependent applications I didn&apos;t know about at the time. And then there was IE7. We didn&apos;t realize we needed to support it until mid-March. Then it took us around a month to make it all work &lt;em&gt;good enough&lt;/em&gt;. 
&lt;/p&gt;
&lt;p&gt;The good news is the UI Refresh was released a few months ago and seems to be humming along just fine. Sure, there were slight nuances and customizations we had conflicts with (clashing CSS classes), but overall it seems to have gone well. I can&apos;t thank the Bootstrap developers enough for motivating us to move to HTML5 and CSS3. Also, cheers to the excellent co-workers that helped make this happen: &lt;a href=&quot;http://www.linkedin.com/in/mnewton&quot;&gt;Murray Newton&lt;/a&gt; (Product Manager) and &lt;a href=&quot;http://www.linkedin.com/in/vladimirbazarsky&quot;&gt;Vladimir Bazarsky&lt;/a&gt;. I couldn&apos;t have done it without you guys.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_first_day_of_school2</id>
        <title type="html">The First Day of School</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_first_day_of_school2"/>
        <published>2012-08-16T13:01:30-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="school" scheme="http://roller.apache.org/ns/tags/" />
        <category term="firstday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">The first day of school always marks a big change for my family. We have to start getting up early, start our scouting adventures and figure out some sports to play. This year, it seemed to come faster than ever. I&apos;m sure that had nothing to do with the fact that &lt;a href=&quot;http://raibledesigns.com/rd/entry/summer_vacation_2012_in_montana&quot;&gt;we were gone most of the summer&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Abbie and Jack&apos;s first day of school was yesterday and they couldn&apos;t be happier. Abbie is now a 4th grader and Jack is in the 3rd grade. Heck, they even seem to have some fashion sense!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7795952628/&quot; href=&quot;http://farm9.staticflickr.com/8294/7795952628_c0be6bc4ca.jpg&quot; title=&quot;Abbie and Jack on the First Day of School 2012 by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[firstdayofschool2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8294/7795952628_c0be6bc4ca_n.jpg&quot; width=&quot;209&quot; height=&quot;320&quot; alt=&quot;Abbie and Jack on the First Day of School 2012&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;For fall activities, Abbie is doing horseback riding and Jack will be playing lacrosse at DU. Both are pumped about their sports and Abbie had her first lesson last night. She looks pretty good on a horse if you ask me.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/7796181678/&quot; href=&quot;http://farm9.staticflickr.com/8288/7796181678_186807c06a.jpg&quot; title=&quot;Abbie&apos;s first horseback riding lesson by McGinityPhoto, on Flickr&quot; rel=&quot;lightbox[firstdayofschool2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8288/7796181678_186807c06a_n.jpg&quot; width=&quot;320&quot; height=&quot;208&quot; alt=&quot;Abbie&apos;s first horseback riding lesson&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In other life news, our house is a disaster (we&apos;re halfway through getting our kitchen remodeled), our deck project is almost done and The Bus will be finished in just a &lt;em&gt;few more weeks&lt;/em&gt;. 
&lt;/p&gt;
&lt;p&gt;
OK, I made that last part up - one can dream, right? &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;)&quot; title=&quot;;)&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_first_day_of_school1&quot;&gt;First Day of School 2010&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_first_day_of_school1&quot;&gt;First Day of School 2007&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/10_years_ago</id>
        <title type="html">10 Years Ago...</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/10_years_ago"/>
        <published>2012-08-02T12:47:19-06:00</published>
        <updated>2012-08-16T15:05:01-06:00</updated> 
        <category term="/Roller" label="Roller" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogiversary" scheme="http://roller.apache.org/ns/tags/" />
        <category term="10years" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Wouldn&apos;t you know it, I missed my 10-year blogiversary. 10 years ago yesterday, I wrote my &lt;a href=&quot;http://raibledesigns.com/rd/entry/roller_installed_successfully&quot;&gt;first blog post&lt;/a&gt;. This was shortly after reading &lt;a href=&quot;http://rollerweblogger.org/roller&quot;&gt;Dave Johnson&apos;s&lt;/a&gt; &lt;a href=&quot;http://rollerweblogger.org/roller/entry/10_years_ago&quot;&gt;article about Roller&lt;/a&gt;. I originally started this blog to share a bunch of tips and tricks I&apos;d learn while doing web development, particularly with Java and Struts. Since then, I&apos;ve written 3,086 entries and received 13,462 comments.
&lt;/p&gt;
&lt;p&gt;
I found that writing technical blog posts was a great way to remember things and share knowledge. According to Google Analytics (which doesn&apos;t track my RSS/Atom feeds), here&apos;s my most-visited blog posts since 2006.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/tips_for_productivity_and_happiness&quot;&gt;Tips for Productivity and Happiness at Work&lt;/a&gt; - April 14, 2006&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/play_2_0_a_web&quot;&gt;Play 2.0, A web framework for a new era&lt;/a&gt; - November 16, 2011&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/ajax_framework_analysis_results&quot;&gt;Ajax Framework Analysis Results&lt;/a&gt; - April 23, 2009&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://raibledesigns.com/rd/entry/re_moving_from_spring_to&quot;&gt;RE: Moving from Spring to Java EE 6: The Age of Frameworks is Over&lt;/a&gt; - October 16, 2010&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I also started it to document my life, so I could remember the details of significant life events and fun family vacations. I wrote about &lt;a href=&quot;http://raibledesigns.com/rd/entry/our_little_girl_has_arrived1&quot;&gt;Abbie&apos;s&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/our_little_boy_has_arrived&quot;&gt;Jack&apos;s&lt;/a&gt; arrival. I penned a story about growing up at &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_cabin&quot;&gt;the cabin&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_cabin_part_ii&quot;&gt;twice&lt;/a&gt;. In April 2004, I wrote about buying a &lt;a href=&quot;http://raibledesigns.com/rd/entry/vw_bus_could_this_be&quot;&gt;1966 21-window VW Bus&lt;/a&gt;. Yes, I&apos;m still restoring it. No, I don&apos;t know when it&apos;ll be done. This year I hope.
&lt;/p&gt;
&lt;p&gt;I blogged about Abbie and Jack&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_first_day_of_school&quot;&gt;first day of school&lt;/a&gt;, 
I wrote about &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_9th_birthday_abbie&quot;&gt;almost all of Abbie&apos;s birthdays&lt;/a&gt;; Jack&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack3&quot;&gt;5th&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack2&quot;&gt;4th&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack1&quot;&gt;3rd&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/happy_birthday_jack&quot;&gt;1st&lt;/a&gt;. Some of my favorite comments are on &lt;a href=&quot;http://raibledesigns.com/rd/entry/jack_s_got_a_bead&quot;&gt;Jack&apos;s got a bead stuck in his nose!&lt;/a&gt; 
I blogged about &lt;a href=&quot;http://raibledesigns.com/rd/entry/5_years&quot;&gt;getting a divorce&lt;/a&gt; 5 years ago. I wrote about visiting the &lt;a href=&quot;http://raibledesigns.com/rd/entry/oktoberfest_best_vacation_ever&quot;&gt;&lt;em&gt;real&lt;/em&gt; Oktoberfest&lt;/a&gt; the next year. 
&lt;/p&gt;
&lt;p&gt;
I wrote about &lt;a href=&quot;http://raibledesigns.com/rd/entry/congratulations_on_retiring_dad&quot;&gt;my Dad&apos;s retirement&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_sister_s_fabulous_wedding&quot;&gt;my sister&apos;s wedding&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/celebrating_my_mom_s_retirement&quot;&gt;my Mom&apos;s retirement&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
I met Trish in June of 2010 and mentioned her name for the first time in &lt;a href=&quot;http://raibledesigns.com/rd/entry/an_epic_weekend_in_estes&quot;&gt;September 2010&lt;/a&gt;. I introduced her to the kids in &lt;a href=&quot;http://raibledesigns.com/rd/entry/abbie_s_8th_birthday_and&quot;&gt;November&lt;/a&gt; and we started traveling the world together. We journeyed to &lt;a href=&quot;http://raibledesigns.com/rd/entry/an_awesome_trip_to_amsterdam&quot;&gt;Antwerp/Amsterdam&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/a_fun_week_in_florida&quot;&gt;Fort Lauderdale/Key West&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/crested_butte&quot;&gt;Crested Butte&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_greatest_snow_on_earth&quot;&gt;Alta&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/livin_it_up_in_vegas&quot;&gt;Las Vegas&lt;/a&gt;, a &lt;a href=&quot;http://raibledesigns.com/rd/entry/peter_estin_hut_trip_in&quot;&gt;hut trip in the Rockies&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/two_opening_days_with_a&quot;&gt;Krak&#243;w&lt;/a&gt;. And that was just in the first 6 months! We &lt;a href=&quot;http://raibledesigns.com/rd/entry/our_engaging_trip_to_paris&quot;&gt;got engaged last November&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I summarized the years several times, in &lt;a href=&quot;http://raibledesigns.com/rd/entry/2005_a_year_in_review&quot;&gt;2005&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/2006_a_year_in_review&quot;&gt;2006&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/2008_a_year_in_review&quot;&gt;2008&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/2009_a_year_in_review&quot;&gt;2009&lt;/a&gt;, &lt;a href=&quot;http://raibledesigns.com/rd/entry/2010_a_year_in_review&quot;&gt;2010&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/2011_a_year_in_review&quot;&gt;2011&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Last, but certainly not least, I&apos;d like to thank the ones that made the last 10 years possible:&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;Keith at &lt;a href=&quot;http://kgbinternet.com/&quot;&gt;KGB Internet&lt;/a&gt;. Hosted here since day 1, for $20 month*.&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;http://rollerweblogger.org&quot;&gt;Dave Johnson&lt;/a&gt;, for creating &lt;a href=&quot;http://roller.apache.org/&quot;&gt;Roller&lt;/a&gt; and continuing to maintain it all these years.&lt;/li&gt;
        &lt;li&gt;Java and Tomcat, for your rock-solid stability through the years.&lt;/li&gt;
        &lt;li&gt;The Open Source Movement, for providing so much to write about.&lt;/li&gt;
        &lt;li&gt;My Family, for giving me with so many adventures and memories.&lt;/li&gt;
    &lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;color: #666; font-size: .9em&quot;&gt;&lt;b&gt;*&lt;/b&gt; Thank goodness he doesn&apos;t charge me for bandwidth. It&apos;s a &lt;a href=&quot;http://raibledesigns.com/stats&quot; style=&quot;color: #666&quot;&gt;little heavy on the bits&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; As part of this 10-year celebration, I&apos;ve &lt;a href=&quot;http://raibledesigns.com/rd/entry/new_look_and_feel_designed&quot;&gt;updated the look-and-feel with help from Gillen&apos;s Army&lt;/a&gt;. </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/father_s_day_weekend_at</id>
        <title type="html">Father&apos;s Day Weekend at The Oregon Coast</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/father_s_day_weekend_at"/>
        <published>2012-07-02T09:44:00-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="fathersday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="montana" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="thecabin" scheme="http://roller.apache.org/ns/tags/" />
        <category term="oregon" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">For the 5-year anniversary of our &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_father_s_day_camping&quot;&gt;Father&apos;s Day Camping Trip&lt;/a&gt;, we decided to mix things up a bit. My parents were in Oregon for a friend&apos;s wedding, so we decided to fly to meet them there instead of flying them to Colorado. My sister hopped on &quot;Buttercup&quot; (her Harley) and drove to meet us from Washington. We also invited our good friends Clint and Autumn (who you might remember from &lt;a href=&quot;http://raibledesigns.com/rd/entry/costa_rica_was_awesome&quot;&gt;Costa Rica&lt;/a&gt;) and had a great time staying at &lt;a href=&quot;http://www.gearhartcottages.com/&quot;&gt;Gearhart Cottages&lt;/a&gt;. 
&lt;/p&gt;
We didn&apos;t feel too bad about skipping camping since Trish held a &quot;Boot Camp&quot; with the kids and their friends at Stillwater Campground the week before. You might remember Stillwater from &lt;a href=&quot;http://raibledesigns.com/rd/entry/good_times_on_the_annual&quot;&gt;last year&apos;s Father&apos;s Day trip&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Trish&apos;s Uncle John drove out to the coast to meet us and we did a really fun hike along Indian Beach to Ecola State Park. It was a real treat! It was also really fun to meet Clint and Autumn&apos;s 9 month old Brodie. As usual, Trish snapped some &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157634190527810/&quot;&gt;incredible photos&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a data-href=&quot;http://farm8.staticflickr.com/7284/9071981163_9ecc04ec8f_c.jpg&quot; title=&quot;View from Ecola State Park Oregon&quot; rel=&quot;lightbox[fathersday2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7284/9071981163_9ecc04ec8f.jpg&quot; width=&quot;500&quot; height=&quot;332&quot; alt=&quot;View from Ecola State Park Oregon&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9071962289/&quot; href=&quot;http://farm4.staticflickr.com/3675/9071962289_a7fc891f15_c.jpg&quot; title=&quot;Raible Family on the Oregon coast&quot; rel=&quot;lightbox[fathersday2012]&quot;&gt;&lt;img src=&quot;//farm4.staticflickr.com/3675/9071962289_a7fc891f15_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Raible Family on the Oregon coast&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9074185440/&quot; href=&quot;http://farm8.staticflickr.com/7404/9074185440_eebccb9acf_c.jpg&quot; title=&quot;Abbie and Jack frolicking in the waves&quot; rel=&quot;lightbox[fathersday2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7404/9074185440_eebccb9acf_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Abbie and Jack frolicking in the waves&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;

&lt;a data-href=&quot;http://www.flickr.com/photos/mcginityphoto/9074188854/&quot; href=&quot;http://farm3.staticflickr.com/2814/9074188854_f0b09a43ca_c.jpg&quot; title=&quot;Kalin and Joe on the beach&quot; rel=&quot;lightbox[fathersday2012]&quot;&gt;&lt;img src=&quot;//farm3.staticflickr.com/2814/9074188854_f0b09a43ca_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Kalin and Joe on the beach&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;That was two weeks ago. We returned to Colorado, had some fun at &lt;a href=&quot;http://raibledesigns.com/rd/entry/play_vs_grails_smackdown_at&quot;&gt;&#220;berConf&lt;/a&gt;, rocked out at a Def Leppard concert then enjoyed a few Rockies games before hopping in the car and heading to Montana. We spent the night at &lt;a href=&quot;http://www.usparklodging.com/yellowstone/roosevelt_lodge_cabins.php&quot;&gt;Roosevelt Lodge Cabins in Yellowstone&lt;/a&gt; and saw a plethora of buffalo, a couple bears and even a beaver while driving through.&lt;/p&gt;
&lt;p&gt;This morning, we woke up at &lt;a href=&quot;http://raibledesigns.com/rd/entry/the_cabin&quot;&gt;the cabin I was born in&lt;/a&gt;. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm9.staticflickr.com/8160/7487341754_795f6ed123.jpg&quot; title=&quot;The Cabin 2012&quot; rel=&quot;lightbox[fathersday2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8160/7487341754_795f6ed123_n.jpg&quot; width=&quot;320&quot; height=&quot;238&quot; alt=&quot;The Cabin 2012&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We&apos;ll be working on my parent&apos;s retirement cabin, getting a float ready for the Swan Valley Parade and having a good ol&apos; time with great friends for the next two weeks. After that, we&apos;re taking the kids to Hawaii for the first time. 
&lt;/p&gt;
&lt;p&gt;
Here&apos;s to summer vacations. I hope yours is spent with great people in beautiful places too.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/play_vs_grails_smackdown_at</id>
        <title type="html">Play vs. Grails Smackdown at &#220;berConf</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/play_vs_grails_smackdown_at"/>
        <published>2012-06-25T07:10:57-06:00</published>
        <updated>2013-10-04T17:28:17-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="uberconf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="grails" scheme="http://roller.apache.org/ns/tags/" />
        <category term="comparison" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">Play and Grails have been hyped as the most productive JVM Web Frameworks for the last couple of years. That hype has recently grown thanks to both frameworks&apos; 2.0 releases. That&apos;s why &lt;a href=&quot;http://jamesward.com&quot;&gt;James Ward&lt;/a&gt; and I decided to do a presentation at &lt;a href=&quot;http://uberconf.com&quot;&gt;&#220;berConf&lt;/a&gt; comparing the two. In April, we proposed the talk to Jay Zimmerman, got accepted and went to work.
&lt;/p&gt;
&lt;p id=&quot;how&quot;&gt;&lt;strong&gt;How we did it&lt;/strong&gt;&lt;br/&gt;
In the beginning of May, we met at a &lt;a href=&quot;http://www.wynkoop.com/&quot;&gt;brewery in LoDo&lt;/a&gt; and sketched out the app we wanted to build. We also came up with a schedule for development and a plan for the presentation. We decided to build two different webapps, each with little-to-no Ajax functionality and a few features that we could use to load test and compare the applications. 
&lt;/p&gt;
&lt;p&gt;
We started out with the name &#8220;Happy Trails&#8221; since we both liked trails and happy hours. Later, James found that www.ubertracks.com was available and purchased the domain. We setup the Grails app to be on bike.ubertracks.com and Play/Java to be on hike.ubertracks.com. We managed our &lt;a href=&quot;https://github.com/jamesward/happytrails&quot;&gt;source code on GitHub&lt;/a&gt;, continuously tested on &lt;a href=&quot;http://www.cloudbees.com/&quot;&gt;CloudBees&lt;/a&gt; and deployed to &lt;a href=&quot;http://heroku.com&quot;&gt;Heroku&lt;/a&gt;. Two weeks ago, when we were finishing up our apps, we hired a friend (&lt;a href=&quot;http://www.linkedin.com/pub/linsay-shirley/1/5a0/b4&quot;&gt;Linsay Shirley&lt;/a&gt;) to do QA. 
&lt;/p&gt;
&lt;p&gt;
After fixing bugs, I emailed &lt;a href=&quot;http://blog.lightbody.net/&quot;&gt;Patrick Lightbody&lt;/a&gt;, got some &#8220;cloud dollars&#8221; for &lt;a href=&quot;https://browsermob.com/performance-testing&quot;&gt;Neustar Web Performance&lt;/a&gt; and started running load tests. The Wednesday before last, at 2 in the morning, I recorded &lt;a href=&quot;https://wm2-testscripts-scripts-prod.s3.amazonaws.com/script/b1b78d4286054d159888bc4135379b86/script.js?versionId=J4E28EFR5PzDNnAgPPPfoelw3AhMqI9A&quot;&gt;a simple browsing regions and routes script&lt;/a&gt; and set it to go to 50 users over a 5 minute period and then sustain 50 for another 5 minutes. It was fun to watch the log messages whiz through my console so fast they got blurry. About halfway through testing the Grails app, there was an OOM issue, but it eventually recovered. Limiting db connections to 4 and scaling to 5 Dynos in future tests helped alleviate any issues. 
&lt;/p&gt;
&lt;p&gt;
We took our development experience, the load/performance testing data, and a bunch of ecosystem stats and built &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/Play_vs_Grails_Smackdown_UberConf2012/&quot;&gt;our smackdown presentation&lt;/a&gt;. We used &lt;a href=&quot;http://lab.hakim.se/reveal-js/&quot;&gt;reveal.js&lt;/a&gt;, &lt;a href=&quot;http://www.jamesward.com/2012/06/15/dynamically-rendering-github-files-in-web-pages&quot;&gt;GitHub Files&lt;/a&gt; and &lt;a href=&quot;https://developers.google.com/chart/&quot;&gt;Google Charts&lt;/a&gt; to make things more dynamic.
&lt;/p&gt;
&lt;p id=&quot;conclusions&quot;&gt;&lt;strong&gt;What we found&lt;/strong&gt;&lt;br/&gt;
We arrived at a number of &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/Play_vs_Grails_Smackdown_UberConf2012/#/10&quot;&gt;conclusions&lt;/a&gt; after doing our research:
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;From a code perspective, Play 2 and Grails 2 are very similar frameworks.&lt;/li&gt;
&lt;li&gt;Code authoring was good in both, but lacking IDE support for Play 2&apos;s Scala Templates.&lt;/li&gt;
&lt;li&gt;Grails Plugin Ecosystem is excellent.&lt;/li&gt;
&lt;li&gt;TDD-Style Development is easy with both.&lt;/li&gt;
&lt;li&gt;Type-safety in Play 2 was really useful, especially routes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Statistical Analysis&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Grails has better support for FEO (YSlow, PageSpeed)&lt;/li&gt;
&lt;li&gt;Grails has less LOC! (6 lines less, but 40% more files)&lt;/li&gt;
&lt;li&gt;1 Dyno - Grails had 2x transactions!
&lt;ul style=&quot;margin-bottom: 0&quot;&gt;
&lt;li&gt;Grails experienced OOM about halfway through.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Apache Benchmark with 10K requests:
&lt;ul style=&quot;margin-bottom: 0&quot;&gt;
&lt;li style=&quot;text-decoration:line-through&quot;&gt;Play: ~10% failed requests, Grails: 0&lt;/li&gt;
&lt;li style=&quot;text-decoration:line-through&quot;&gt;Requests per second: {Play: 170, Grails: 198}&lt;/li&gt;
&lt;li&gt;Requests per second: {Play: 251, Grails: 198}&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Load Test with 100 Real Users:
&lt;ul style=&quot;margin-bottom: 0&quot;&gt;
&lt;li&gt;Grails: 10% more transactions, 0 errors&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ecosystem Analysis&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Play&quot; is difficult to search for.&lt;/li&gt;
&lt;li&gt;Grails is more mature.&lt;/li&gt;
&lt;li&gt;Play has momentum issues.&lt;/li&gt;
&lt;li&gt;LinkedIn: more people know Grails than Spring MVC.&lt;/li&gt;
&lt;li&gt;Play has 3x user mailing list traffic.&lt;/li&gt;
&lt;li&gt;We had similar experiences with documentation and questions.&lt;/li&gt;
&lt;li&gt;Outdated documentation is a problem for both.&lt;/li&gt;
&lt;li&gt;Play has &lt;em&gt;way&lt;/em&gt; more hype!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
We figured we spent around 100 hours developing the apps, gathering data and creating the presentation. The good news is it&apos;s all open source! This means you can &lt;a href=&quot;https://github.com/jamesward/happytrails&quot;&gt;clone the project on GitHub&lt;/a&gt; (Grails is in the &lt;em&gt;grails2&lt;/em&gt; branch, Play is in the &lt;em&gt;play2_java&lt;/em&gt; branch) and help us improve it. The presentation is in the master branch in the &lt;em&gt;preso&lt;/em&gt; directory. 
&lt;/p&gt;
&lt;p&gt;
All the data we gathered is open for debate and we&#8217;d love to tune our apps to handle more requests per second. In fact, we already had a contributor &lt;a href=&quot;http://twitter.com/pk11/status/216186997126070272&quot;&gt;discover an issue&lt;/a&gt; and &lt;a href=&quot;https://gist.github.com/2973705&quot;&gt;provide a fix&lt;/a&gt; for Play that increases its throughput from 170 req/second to 252 req/second!
&lt;/p&gt;
&lt;p&gt;
Regardless of what the stats and pretty graphs say, we both enjoyed our experiences with Play 2 and Grails 2. If you haven&apos;t tried them yourself, we encourage you to do so.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/migrating_to_play_2_and</id>
        <title type="html">Migrating to Play 2 and My &#220;berConf Presentation</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/migrating_to_play_2_and"/>
        <published>2012-06-21T16:09:22-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="github" scheme="http://roller.apache.org/ns/tags/" />
        <category term="scala" scheme="http://roller.apache.org/ns/tags/" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="anorm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="heroku" scheme="http://roller.apache.org/ns/tags/" />
        <category term="play-more" scheme="http://roller.apache.org/ns/tags/" />
        <category term="uberconf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="iphone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jqtouch" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">In my &lt;a href=&quot;http://raibledesigns.com/rd/entry/upgrading_to_play_2_anorm&quot;&gt;last post&lt;/a&gt; about migrating to Play 2, I said I&apos;d write another post on the rest of my experience. While I&apos;m not completely finished with migrating to Play 2, I feel like I&apos;ve done enough to talk about the issues I encountered.
&lt;/p&gt;
&lt;p id=&quot;validation&quot;&gt;&lt;strong&gt;Validation and Displaying Errors&lt;/strong&gt;&lt;br/&gt;
With Play 1, I can&apos;t help but think validation was a bit more intuitive. For example, here&apos;s how I populated an object from request parameters, converted a value and validated its data was fit to put in a database.
&lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
var workout = params.get(&quot;workout&quot;, classOf[Workout])

// change duration to time
var duration = params.get(&quot;workout.duration&quot;)
workout.duration = convertWatchToTime(duration)

Validation.valid(&quot;workout&quot;, workout)

if (Validation.hasErrors) {
  renderArgs.put(&quot;template&quot;, &quot;Profile/edit&quot;)
  edit(id);
  ...
} else { // put into db
&lt;/pre&gt;
&lt;p&gt;With Play Scala 2, you have to define a &lt;a href=&quot;http://www.playframework.org/documentation/2.0/ScalaForms&quot;&gt;Form structure&lt;/a&gt; and bind it from the request. Based on what I was able to conjure up, I ended up writing the following code to accomplish the same thing:
&lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
val workoutForm = Form(
  mapping(
    &quot;id&quot; -&gt; ignored(NotAssigned: anorm.Pk[Long]),
    &quot;title&quot; -&gt; text,
    &quot;description&quot; -&gt; text,
    &quot;duration&quot; -&gt; nonEmptyText,
    &quot;distance&quot; -&gt; nonEmptyText,
    &quot;postedAt&quot; -&gt; optional(date),
    &quot;athleteId&quot; -&gt; optional(longNumber)
  )((id, title, description, duration, distance, postedAt, athleteId) =&gt;
    Workout(id, title, description, convertWatchToTime(duration), distance.toDouble, null, 0))
    ((w: Workout) =&gt;
      Some((w.id, w.title, w.description, w.duration.toString, w.distance.toString, null, Some(0))))
)
...
workoutForm.bindFromRequest.fold(
  form =&gt; {
    Ok(Scalate(&quot;/Profile/edit.jade&quot;).render(request, &apos;errors -&gt; form.errors))
  },
  workout =&gt; { // put into db
&lt;/pre&gt;
&lt;p&gt;First of all, the Play 2 version is quite a bit more verbose, but most of that comes from the re-defining of my model object as a form. It seems strange that the Java API allows you to &lt;a href=&quot;http://www.playframework.org/documentation/2.0/JavaForms&quot;&gt;do it in one line&lt;/a&gt; whereas the Scala version does not. Also, I was unable to figure out how to get the data from my &quot;form&quot; back into the request so I could refill input fields. I&apos;ll admit, I didn&apos;t spend a lot of time trying to figure it out, but it did fail the 10 minute test. Note to self: &lt;a href=&quot;http://wufoo.com/html5/attributes/09-required.html&quot;&gt;use HTML5&apos;s &lt;em&gt;required&lt;/em&gt; attribute&lt;/a&gt; to reduce the need for server-side validation on modern browsers.
&lt;/p&gt;
&lt;p&gt;On a more positive note, I did like the way I was able to use routes in my Jade templates. It was as simple as importing the routes class and using it as you would in Play&apos;s Scala Templates:
&lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
-import controllers._

form(method=&quot;post&quot; class=&quot;form-stacked&quot; id=&quot;workoutForm&quot;
  action={routes.Profile.postWorkout(workout.map(_.id.get))})
  input(type=&quot;hidden&quot; name=&quot;id&quot; value=&quot;#{workout.map(_.id)}&quot;)
&lt;/pre&gt;
&lt;p id=&quot;securesocial&quot;&gt;&lt;strong&gt;Secure Social&lt;/strong&gt;&lt;br/&gt;After getting most of my UI working, I started looking at the &lt;a href=&quot;https://github.com/jaliss/securesocial&quot;&gt;Secure Social Module for Play 2&lt;/a&gt;. Below are the steps I had to go through to install it:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Cloned &lt;a href=&quot;https://github.com/jaliss/securesocial&quot;&gt;GitHub project&lt;/a&gt; to my hard drive.&lt;/li&gt;
    &lt;li&gt;Copied &lt;code&gt;module-code/*&lt;/code&gt; into my projects&apos; &lt;code&gt;modules/securesocial&lt;/code&gt; directory.&lt;/li&gt;
    &lt;li&gt;Modified &lt;code&gt;project/Build.scala&lt;/code&gt; to add secureSocial and dependsOn to my project.
&lt;pre class=&quot;brush: scala&quot;&gt;
val secureSocial = PlayProject(
  appName + &quot;-securesocial&quot;, appVersion, mainLang = SCALA, path = file(&quot;modules/securesocial&quot;)
)

val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
  // Add your own project settings here
).dependsOn(secureSocial).aggregate(secureSocial)
&lt;/pre&gt;
    &lt;/li&gt;
    &lt;li&gt;Added a &lt;a href=&quot;https://github.com/jaliss/securesocial/blob/master/samples/scala/demo/conf/securesocial.conf&quot;&gt;conf/securesocial.conf&lt;/a&gt; and included it in my application.conf with the following line:
&lt;pre style=&quot;margin-top: 5px&quot;&gt;
include &quot;securesocial.conf&quot;
&lt;/pre&gt;&lt;/li&gt;
    &lt;li&gt;Added a conf/play.plugins with the following to get Twitter to load as a provider:
&lt;pre style=&quot;margin-top: 5px&quot;&gt;
10000:securesocial.core.providers.TwitterProvider
&lt;/pre&gt;
    &lt;/li&gt;
    &lt;li&gt;Created an &lt;a href=&quot;https://github.com/jaliss/securesocial/blob/master/samples/scala/demo/app/service/InMemoryUserService.scala&quot;&gt;InMemoryUserService.scala&lt;/a&gt; and referenced it in my play.plugins file:
&lt;pre style=&quot;margin-top: 5px&quot;&gt;
9999:services.InMemoryUserService
&lt;/pre&gt;&lt;/li&gt;
    &lt;li&gt;Added &lt;a href=&quot;https://github.com/jaliss/securesocial/blob/master/samples/scala/demo/conf/routes&quot;&gt;Secure Social&apos;s routes&lt;/a&gt; to my conf/routes file.
        &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once I&apos;d finished all these steps, I fired up my app and was pleasantly surprised to find I could navigate to /login and successfully authenticate via Twitter. Installing Secure Social in a Play 2 app is quite a bit harder than adding it as a dependency in Play 1, but I was thankful that I got it to work in under 10 minutes.
&lt;/p&gt;
&lt;p id=&quot;heroku&quot;&gt;
&lt;strong&gt;Heroku&lt;/strong&gt;&lt;br/&gt;
The next thing I did was attempt to deploy my app to Heroku. I knew there might be some issues with Scalate after reading &lt;a href=&quot;http://janhelwich.wordpress.com/2012/04/22/getting-play-2-with-scalate-to-run-on-heroku/&quot;&gt;Jan Helwich&apos;s blog post&lt;/a&gt; about Scalate on Heroku. The first things I encountered were 1) a successful startup and 2) an error in my browser.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;img src=&quot;//farm6.staticflickr.com/5346/7416344424_b25593ccdc_n.jpg&quot; width=&quot;320&quot; height=&quot;253&quot; alt=&quot;Action not found&quot;&gt;
&lt;/p&gt;
&lt;p&gt;I was able to reproduce this issue locally by running &quot;play clean stage&quot; and starting the app with &quot;target/start&quot;. After 30 minutes of banging my head against the wall, I guessed it might be caused by Secure Social. Removing Secure Social solved the problem and I was back in business. However, this time when I deployed, I received the error that Jan had mentioned might happen.
&lt;/p&gt;
&lt;pre&gt;
2012-06-21T07:07:12+00:00 app[web.1]: [error] o.f.s.l.DefaultLayoutStrategy - Unhandled: org.fusesource.scalate.TemplateException: target/../tmp/src/app/target/../app/views/layouts/default.jade.scala (No such file or directory)
2012-06-21T07:07:12+00:00 app[web.1]: [error] application - 
2012-06-21T07:07:12+00:00 app[web.1]: 
2012-06-21T07:07:12+00:00 app[web.1]: ! @6amfgf02h - Internal server error, for request [GET /] -&gt;
2012-06-21T07:07:12+00:00 app[web.1]: 
2012-06-21T07:07:12+00:00 app[web.1]: play.core.ActionInvoker$$anonfun$receive$1$$anon$1: Execution exception [[TemplateException: target/../tmp/src/app/target/../app/views/layouts/default.jade.scala (No such file or directory)]]
2012-06-21T07:07:12+00:00 app[web.1]:   at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:134) [play_2.9.1-2.0.1.jar:2.0.1]
2012-06-21T07:07:12+00:00 app[web.1]:   at play.core.ActionInvoker$$anonfun$receive$1.apply(Invoker.scala:115) [play_2.9.1-2.0.1.jar:2.0.1]
2012-06-21T07:07:12+00:00 app[web.1]:   at akka.actor.Actor$class.apply(Actor.scala:311) [akka-actor-2.0.1.jar:2.0.1]
2012-06-21T07:07:12+00:00 app[web.1]:   at play.core.ActionInvoker.apply(Invoker.scala:113) [play_2.9.1-2.0.1.jar:2.0.1]
2012-06-21T07:07:12+00:00 app[web.1]:   at akka.actor.ActorCell.invoke(ActorCell.scala:619) [akka-actor-2.0.1.jar:2.0.1]
2012-06-21T07:07:12+00:00 app[web.1]:   at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:196) [akka-actor-2.0.1.jar:2.0.1]
2012-06-21T07:07:12+00:00 app[web.1]: Caused by: org.fusesource.scalate.TemplateException: target/../tmp/src/app/target/../app/views/layouts/default.jade.scala (No such file or directory)
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:834) ~[scalate-core-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:691) ~[scalate-core-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.TemplateEngine.liftedTree1$1(TemplateEngine.scala:411) ~[scalate-core-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:405) ~[scalate-core-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.TemplateEngine.load(TemplateEngine.scala:475) ~[scalate-core-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.layout.DefaultLayoutStrategy.org$fusesource$scalate$layout$DefaultLayoutStrategy$$tryLayout(DefaultLayoutStrategy.scala:77) ~[scalate-core-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]: Caused by: java.io.FileNotFoundException: target/../tmp/src/app/target/../app/views/layouts/default.jade.scala (No such file or directory)
2012-06-21T07:07:12+00:00 app[web.1]:   at java.io.FileOutputStream.open(Native Method) ~[na:1.6.0_20]
2012-06-21T07:07:12+00:00 app[web.1]:   at java.io.FileOutputStream.&lt;init&gt;(FileOutputStream.java:209) ~[na:1.6.0_20]
2012-06-21T07:07:12+00:00 app[web.1]:   at java.io.FileOutputStream.&lt;init&gt;(FileOutputStream.java:160) ~[na:1.6.0_20]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.util.IOUtil$.writeBinaryFile(IOUtil.scala:111) ~[scalate-util-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.TemplateEngine.compileAndLoad(TemplateEngine.scala:747) ~[scalate-core-1.5.3.jar:1.5.3]
2012-06-21T07:07:12+00:00 app[web.1]:   at org.fusesource.scalate.TemplateEngine.compileAndLoadEntry(TemplateEngine.scala:691) ~[scalate-core-1.5.3.jar:1.5.3]
&lt;/pre&gt;
&lt;p&gt;
I tried his suggestion (removing the first slash on my Scalate paths) but it didn&apos;t work. I tried adding in Scalate pre-compilation, but that didn&apos;t solve the problem either. The good news is I did solve it this afternoon by &lt;a href=&quot;https://github.com/mraible/play-more/commit/3e981ab4f31c6333ee0276cd2d84b44cba47b7c8&quot;&gt;changing my Scalate object to use a canonical path&lt;/a&gt; instead of an absolute one.
&lt;/p&gt;
&lt;p id=&quot;iphone-app&quot;&gt;&lt;strong&gt;iPhone App&lt;/strong&gt;&lt;br/&gt;
In addition to the changes mentioned here, I re-wrote the iPhone app for Play More. I upgraded it to &lt;a href=&quot;http://phonegap.com/2012/06/13/phonegap-1-8-1-released/&quot;&gt;PhoneGap 1.8.1&lt;/a&gt;, used &lt;a href=&quot;http://www.jqtouch.com/&quot;&gt;jQTouch&lt;/a&gt;, developed with &lt;a href=&quot;http://www.jetbrains.com/objc/&quot;&gt;AppCode&lt;/a&gt; (instead of Xcode) and had a pretty good experience. The only issue I ran into was with the &lt;a href=&quot;https://github.com/DataZombies/jQTouch&quot;&gt;jqt.bars extension from
DataZombies&lt;/a&gt;. I briefly tried to integrate it and then decided not to. However, I left all its JS and CSS in my page and this caused scrolling to not work and made the app sluggish. Removing the files solved the problem. The other big improvement I made was moving all the static assets (JS, CSS, images) into the mobile app instead of referencing them from http://play-more.com. This reduced the startup time from 30-40 seconds to 3-4 seconds!&lt;/p&gt;
&lt;p&gt;
&lt;p id=&quot;presentation&quot;&gt;&lt;strong&gt;Presentation and Source Code&lt;/strong&gt;&lt;br/&gt;
I presented all of these findings and told my story at &lt;a href=&quot;http://uberconf.com&quot;&gt;&#220;berConf&lt;/a&gt; this morning. In addition, I announced that the code is now &lt;a href=&quot;http://github.com/mraible/play-more&quot;&gt;open source and available on GitHub&lt;/a&gt;. You can view my presentation below or &lt;a href=&quot;http://www.slideshare.net/mraible/html5-with-play-scala-coffeescript-and-jade-uberconf-2012&quot;&gt;on Slideshare&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/13410673?rel=0&quot; width=&quot;510&quot; height=&quot;426&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC;border-width:1px 1px 0&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p id=&quot;conclusion&quot;&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br/&gt;
Would I do it again? Learning Scala was my primary motivator for digging into Play. When Play 2 was announced, I thought migrating my app to the new version would be easy. Unfortunately, the Play Developers decided to break backwards-compatibility and wrote a whole new framework that still seems to be in its infancy. I think you can see from my last couple of posts that migrating from Play 1.x to 2.x was not an easy task. It&apos;s been nice to learn more about Play and Scala in the process, but living on the bleeding edge was also quite frustrating at times. Play Scala 1.x seemed to be quite a bit more productive than Play 2, especially because of the Magic[T] in Anorm, but also because it required less code in Controllers. 
&lt;/p&gt;
&lt;p&gt;I found Anorm and Scalate to be &lt;em&gt;huge&lt;/em&gt; time sinks and don&apos;t know if I&apos;d recommend using either one in a Play 2 project. I&apos;m sure Scalate will be easier to use as its Play 2 integration gets more refined, but I don&apos;t know if there&apos;s any hope for a JDBC abstraction that doesn&apos;t produce error messages when things go south.
&lt;/p&gt;
&lt;p&gt;On the upside, my experience with HTML5 and CoffeeScript was wonderful. They did what I asked them to do and didn&apos;t cause much pain. When a browser-based webapp couldn&apos;t handle geo running in the background, PhoneGap came to the rescue. 
&lt;/p&gt;
&lt;p&gt;
I plan on continuing to develop &lt;a href=&quot;http://play-more.com&quot;&gt;&lt;em&gt;Play More!&lt;/em&gt;&lt;/a&gt; If you&apos;d like to help, checkout the &lt;a href=&quot;https://github.com/mraible/play-more/issues?state=open&quot;&gt;open issues&lt;/a&gt; and viva la open source!  </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/upgrading_to_play_2_anorm</id>
        <title type="html">Upgrading to Play 2: Anorm and Testing</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/upgrading_to_play_2_anorm"/>
        <published>2012-06-05T20:55:40-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="specs2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="uberconf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="play2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="anorm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="scala" scheme="http://roller.apache.org/ns/tags/" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="play-more" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://playframework.org&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7234/7158522999_066b0e26a1_t.jpg&quot; width=&quot;100&quot; height=&quot;33&quot; class=&quot;picture&quot; style=&quot;border: 0&quot;/&gt;&lt;/a&gt;
This time last year, I decided I wanted to learn Scala. I chose the &lt;a href=&quot;http://www.playframework.org/&quot;&gt;Play Framework&lt;/a&gt; as my vehicle for learning and I added &lt;a href=&quot;http://coffeescript.org/&quot;&gt;CoffeeScript&lt;/a&gt; and &lt;a href=&quot;http://scalate.fusesource.org/documentation/jade.html&quot;&gt;Jade&lt;/a&gt; to the mix. I packaged it all up, learned a bunch and &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_html5_with_play_scala&quot;&gt;presented it at Devoxx 2011&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;In January, I added SecureSocial, JSON Services and worked a bit on the mobile client. I presented my findings &lt;a href=&quot;http://raibledesigns.com/rd/entry/comparing_web_frameworks_and_html5&quot;&gt;at Jfokus&lt;/a&gt; shortly after. As part of my aforementioned post, I wrote:&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
Right before we left for Jfokus, I was able to get everything to work, but didn&apos;t spend as much time as I&apos;d like working on the mobile client. If this talk gets accepted for Devoxx France, I plan on spending most of my time enhancing the mobile client.
&lt;/p&gt;
&lt;p&gt;I had some complications (a.k.a. too much &lt;a href=&quot;http://raibledesigns.com/rd/entry/cruising_around_the_western_caribbean&quot;&gt;vacation&lt;/a&gt;) with Devoxx France and wasn&apos;t able to attend. To make up for it, I submitted the talk to &lt;a href=&quot;http://uberconf.com/conference/denver/2012/06/home&quot;&gt;&#220;berConf&lt;/a&gt;. It got accepted and I started working on my app a couple weeks ago. So far, I&apos;ve spent about 8 hours upgrading it to Play 2 and I hope to start re-writing the mobile client later this week. I plan on using &lt;a href=&quot;http://incubator.apache.org/cordova/&quot;&gt;Cordova&lt;/a&gt;, &lt;a href=&quot;http://www.jqtouch.com/&quot;&gt;jQTouch&lt;/a&gt; and releasing it in the App Store sometime this month.
&lt;/p&gt;
&lt;p&gt;
&lt;p id=&quot;upgrading-to-play2&quot;&gt;&lt;strong&gt;Upgrading to Play 2&lt;/strong&gt;&lt;br/&gt;
When I heard about Play 2, I thought it was a great thing. The developers were re-writing the framework to use Scala at the core and I was already using Scala in my app. Then I learned they were going to throw backwards compatibility out the window and I groaned. &quot;Really? Another web framework (like Tapestry of old) screwing its users and making them learn everything again?!&quot;, I thought. &quot;Maybe they should call it &lt;em&gt;Run&lt;/em&gt; instead of &lt;em&gt;Play&lt;/em&gt;, leaving the old framework that everyone loves intact.&quot; 
&lt;/p&gt;
&lt;p&gt;However, after hearing about it at &lt;a href=&quot;http://raibledesigns.com/rd/entry/play_2_0_a_web&quot;&gt;Devoxx&lt;/a&gt; and &lt;a href=&quot;http://raibledesigns.com/rd/entry/play_framework_2_0_with&quot;&gt;Jfokus&lt;/a&gt;, I figured I should at least &lt;em&gt;try&lt;/em&gt; to migrate. I downloaded Play 2.0.1, created a new project and went to work.
&lt;/p&gt;
&lt;p&gt;The first thing I learned about &lt;em&gt;upgrading&lt;/em&gt; from Play 1.x to Play 2.x is &lt;em&gt;there&apos;s no such thing&lt;/em&gt;. It&apos;s like saying you upgraded from Struts 1 to Struts 2 or Tapestry 4 to Tapestry 5. It&apos;s a migration, with a whole new project.
&lt;/p&gt;
&lt;p id=&quot;evolutions&quot;&gt;&lt;strong&gt;Evolutions&lt;/strong&gt;&lt;br/&gt;
I started by looking around to see if anyone had documented a similar migration. I found two very useful resources right off the bat:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://janhelwich.wordpress.com/2012/03/13/play-2-0-with-scala-and-scaml-part1-setup-of-test-infrastructure-model-and-persistence-with-anorm/&quot;&gt;Play 2.0 with Scala and Scaml, Part1: Setup of test infrastructure, model and persistence with Anorm&lt;/a&gt; by Jan Helwich&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.jamesward.com/2012/02/21/play-framework-2-with-scala-anorm-json-coffeescript-jquery-heroku&quot;&gt;Tutorial: Play Framework 2 with Scala, Anorm, JSON, CoffeeScript, jQuery &amp;amp; Heroku&lt;/a&gt; by James Ward&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From Jan&apos;s Blog, I learned to copy my evolutions from my Play 1.x project into &lt;em&gt;conf/evolutions/default&lt;/em&gt;. I changed my &lt;em&gt;application.conf&lt;/em&gt; to use PostgreSQL and wrote an EvolutionsTest.scala to verify creating the tables worked.
&lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
import org.specs2.mutable._

import play.api.db.DB
import play.api.Play.current

import anorm._

import play.api.test._
import play.api.test.Helpers._

class EvolutionsTest extends Specification {

  &quot;Evolutions&quot; should {
    &quot;be applied without errors&quot; in {
      evolutionFor(&quot;default&quot;)
      running(FakeApplication()) {
        DB.withConnection {
          implicit connection =&gt;
            SQL(&quot;select count(1) from athlete&quot;).execute()
            SQL(&quot;select count(1) from workout&quot;).execute()
            SQL(&quot;select count(1) from comment&quot;).execute()
        }
      }
      success
    }
  }
}
&lt;/pre&gt;
&lt;p&gt;Then I began looking for how to load seed data with Play 2.x. In Play 1.x, you could use a BootStrap job that would load sample data with YAML.
&lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
import play.jobs._
import play.Play

@OnApplicationStart
class BootStrap extends Job {

  override def doJob() {

    import models._
    import play.test._

    // Import initial data if the database is empty
    if (Athlete.count().single() == 0) {
      Yaml[List[Any]](&quot;initial-data.yml&quot;).foreach {
        _ match {
          case a: Athlete =&gt; Athlete.create(a)
          case w: Workout =&gt; Workout.create(w)
          case c: Comment =&gt; Comment.create(c)
        }
      }
    }
  }
}
&lt;/pre&gt;
&lt;p&gt;This is no longer a recommended practice in Play 2. Instead, they &lt;a href=&quot;https://groups.google.com/d/msg/play-framework/4pVUPZIRFFM/vh4nVQ-v9UcJ&quot;&gt;recommend you turn your YAML into code&lt;/a&gt;. 10 minutes later, I had a Global.scala that loaded seed data.
  &lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
import models._
import play.api._
import play.api.Play.current

import anorm._

object Global extends GlobalSettings {

  override def onStart(app: Application) {
    InitialData.insert()
  }
}

/**
 * Initial set of data to be loaded
 */
object InitialData {

  def date(str: String) = new java.text.SimpleDateFormat(&quot;yyyy-MM-dd&quot;).parse(str)

  def insert() {

    if (Athlete.count() == 0) {

      Seq(
        Athlete(Id(1), &quot;mraible@gmail.com&quot;, &quot;beer&quot;, &quot;Matt&quot;, &quot;Raible&quot;),
        Athlete(Id(2), &quot;trishmcginity@gmail.com&quot;, &quot;whiskey&quot;, &quot;Trish&quot;, &quot;McGinity&quot;)
      ).foreach(Athlete.create)

      Seq(
        Workout(Id(1), &quot;Chainsaw Trail&quot;,
          &quot;&quot;&quot;
            A beautiful fall ride: cool breezes, awesome views and yellow leaves.

            Would do it again in a heartbeat.
          &quot;&quot;&quot;, 7, 90, date(&quot;2011-10-13&quot;), 1),
        Workout(Id(2), &quot;Monarch Lake Trail&quot;,
          &quot;Awesome morning ride through falling yellow leaves and cool fall breezes.&quot;,
          4, 90, date(&quot;2011-10-15&quot;), 1),
        Workout(Id(3), &quot;Creekside to Flume to Chainsaw&quot;,
          &quot;Awesome morning ride through falling yellow leaves and cool fall breezes.&quot;,
          12, 150, date(&quot;2011-10-16&quot;), 2)
      ).foreach(Workout.create)

      Seq(
        Comment(1, &quot;Jim&quot;, &quot;Nice day for it!&quot;),
        Comment(2, &quot;Joe&quot;, &quot;Love that trail.&quot;),
        Comment(2, &quot;Jack&quot;, &quot;Where there any kittens there?&quot;)
      ).foreach(Comment.create)
    }
  }
}
&lt;/pre&gt;
&lt;p id=&quot;anorm&quot;&gt;&lt;strong&gt;Anorm&apos;s Missing Magic&lt;/strong&gt;&lt;br/&gt;
Before starting with Play 2, I knew it had lost some of its magic. After all, the developers had mentioned they &lt;em&gt;wanted&lt;/em&gt; to get ride of the magic and moving to Scala allowed them to do that. However, I didn&apos;t think I&apos;d miss &lt;a href=&quot;http://www.playframework.org/modules/scala-0.9.1/anorm#AddingsomeMagicT&quot;&gt;Magic[T]&lt;/a&gt; as much as I do. Like &lt;a href=&quot;http://martinfowler.com/bliki/OrmHate.html&quot;&gt;Martin Fowler&lt;/a&gt;, I like ORMs and having to use SQL again seems painful. It seems like a strange shift for Play to reduce type-safety on the backend, but increase it in its templates. Oh well, to each their own. I may eventually move to &lt;a href=&quot;http://squeryl.org&quot;&gt;Squery&lt;/a&gt;, but I wanted to do a side-by-side comparison as part of my migration.
&lt;/p&gt;
&lt;p&gt;Using the aforementioned tutorial from James and Jan&apos;s blog posts, as well as Guillaume&apos;s &lt;a href=&quot;https://gist.github.com/2788715&quot;&gt;Play 2.0/Anorm&lt;/a&gt;, I set about creating new model objects. I wrote a bunch of SQL, typed up some &lt;a href=&quot;http://stackoverflow.com/questions/9371227/there-are-many-similar-dao-methods-in-anorm-is-it-right&quot;&gt;new finders&lt;/a&gt; and migrated my tests from ScalaTest to the new default, &lt;a href=&quot;http://etorreborre.github.com/specs2/&quot;&gt;specs2&lt;/a&gt;. The Mosh Pit&apos;s &lt;a href=&quot;http://tech.mindcandy.com/2012/05/migrating-a-play-1-2-website-to-play-2-0/&quot;&gt;Migrating a Play 1.2 website to Play 2.0&lt;/a&gt; was a great help in migrating tests.&lt;/p&gt;

&lt;p&gt;That&apos;s when I started &lt;a href=&quot;https://groups.google.com/d/topic/play-framework/-oJrmLWYGcg/discussion&quot;&gt;having issues&lt;/a&gt; with Anorm and figuring out how its parser syntax works. After struggling for a few days, I finally found &lt;a href=&quot;https://github.com/kenichiro22/yabe-play20-scala&quot;&gt;yabe-play20-scala&lt;/a&gt;. Since I&apos;d used the &lt;a href=&quot;http://www.playframework.org/documentation/1.2.3/guide1&quot;&gt;yabe tutorial from Play 1.x&lt;/a&gt;, it was familiar and helped me get past my problems. Now, things aren&apos;t perfect (Workouts aren&apos;t ordered by their posted date), but everything compiles and tests pass.
&lt;/p&gt;
&lt;p&gt;To illustrate how little code was required for Anorm 1.x, checkout &lt;a href=&quot;https://gist.github.com/2879214&quot;&gt;Workout.scala in Play 1.x vs. Play 2.x&lt;/a&gt;. The Play 1.x version is 66 lines; Play 2.x requires 193 lines. I don&apos;t know about you, but I kinda like a little magic in my frameworks to reduce the amount of code I have to maintain.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;I was pleasantly surprised by specs2. First of all, it was an easy migration from ScalaTest. Secondly, &lt;a href=&quot;http://www.playframework.org/documentation/2.0/ScalaTest&quot;&gt;Play&apos;s FakeApplication&lt;/a&gt; made it very easy to write unit tests. The line count on my &lt;a href=&quot;https://gist.github.com/2879222&quot;&gt;UnitTests.scala in Play 1.x vs. Play 2.x&lt;/a&gt; is almost identical.
&lt;/p&gt;
&lt;p&gt;&lt;a name=&quot;summary&quot;&gt;&lt;/a&gt;
&lt;strong&gt;Summary&lt;/strong&gt;&lt;br/&gt;
The first few hours of developing with Play 2 were frustrating, mostly because I felt like I had to learn everything over again. However, I was pleased to find good references on migrating from Play 1.x. Last night, I migrated all my Controllers, integrated Scalate and got most of my views rendering. I still have issues &lt;a href=&quot;https://groups.google.com/d/msg/play-framework/J3lXeRyti4M/UjzzYJnMAuQJ&quot;&gt;rendering validation errors&lt;/a&gt;, but I hope to figure that out soon. The last 2 hours have been &lt;em&gt;much&lt;/em&gt; more fun and I feel like my Scala skills are coming along. I think if the Play Team could eliminate those first few hours of struggling (and provide almost instant joy like Play 1.x) they&apos;d really be onto something.
&lt;/p&gt;
&lt;p&gt;As soon as I figure out how to validation and how to add a body class based on the URL, I&apos;ll write another post on the rest of my migration. A Play 2-compatible version of &lt;a href=&quot;https://github.com/jaliss/securesocial&quot;&gt;SecureSocial&lt;/a&gt; just came out this evening, so I may integrate that as well. In the meantime, I&apos;ll be working on the iPhone app and finishing up a Grails 2 application for James Ward and my &lt;a href=&quot;http://uberconf.com/conference/denver/2012/06/session?id=25584&quot;&gt;Grails vs. Play Smackdown&lt;/a&gt;.</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/school_s_out_for_summer</id>
        <title type="html">School&apos;s Out for Summer!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/school_s_out_for_summer"/>
        <published>2012-06-05T10:25:54-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="lacrosse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="basketball" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">One of the main reasons I started this blog was to document my life. I like writing technical blog posts because it allows me to save knowledge in my brain and open up space for new stuff. It&apos;s been a couple months since I wrote any tech posts, but rest assured there will be a flurry in the near future. In the meantime, I&apos;d like to reflect on my kids and how proud I am of them.&lt;/p&gt;
&lt;p&gt;They both finished school two weeks ago today and I made sure and played Alice Cooper&apos;s &lt;a href=&quot;http://en.wikipedia.org/wiki/School&apos;s_Out_(song)&quot;&gt;School&apos;s Out&lt;/a&gt; several times that day.
&lt;/p&gt;
&lt;p&gt;Loudly.&lt;/p&gt;
&lt;p&gt;I love how the song tries to capture the &quot;greatest three minutes of your life&quot;.
&lt;/p&gt;
&lt;p&gt;Abbie and Jack had an athletic spring; both participating in their sport of choice. Jack chose lacrosse and learned how to play some mean defense. Abbie chose basketball and scored her first hoop in a game. I think I was in 5th grade before I scored in a game, so she&apos;s one up on me. Below are their team pictures. Lookin&apos; good kids!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm9.staticflickr.com/8018/7156626325_28fbd701c7.jpg&quot; rel=&quot;lightbox[springsports2012]&quot; title=&quot;Jack&apos;s loves Lacrosse&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8018/7156626325_28fbd701c7_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Jack&apos;s loves Lacrosse&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;http://farm8.staticflickr.com/7089/7341830910_99d16e0e92.jpg&quot; rel=&quot;lightbox[springsports2012]&quot; title=&quot;Abbie loves Basketball&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7089/7341830910_99d16e0e92_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Abbie loves Basketball&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;http://farm8.staticflickr.com/7071/7156626767_fbc9a9a84d.jpg&quot; rel=&quot;lightbox[springsports2012]&quot;  title=&quot;Jack&apos;s Lacrosse Team&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7071/7156626767_fbc9a9a84d_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Jack&apos;s Lacrosse Team&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;http://farm8.staticflickr.com/7234/7341831390_aa9bb691cc.jpg&quot; rel=&quot;lightbox[springsports2012]&quot;  title=&quot;Abbie&apos;s Basketball Team&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7234/7341831390_aa9bb691cc_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Abbie&apos;s Basketball Team&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
In addition to sports, both kids were involved with Cub/Girl Scouts and performed in the school&apos;s talent show. I guess they like to be in front of an audience. I wonder where they get that from? &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;)&quot; title=&quot;;)&quot; /&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/cruising_around_the_western_caribbean</id>
        <title type="html">Cruising around the Western Caribbean</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/cruising_around_the_western_caribbean"/>
        <published>2012-04-15T18:05:57-06:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/General" label="General" />
        <category term="disney" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="legoland" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="dad" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mom" scheme="http://roller.apache.org/ns/tags/" />
        <category term="cruise" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;style type=&quot;text/css&quot;&gt;
img.picture { margin-top: 5px }
&lt;/style&gt;
I&apos;ve heard great things about &lt;a href=&quot;http://disneycruise.disney.go.com/&quot;&gt;Disney Cruise Lines&lt;/a&gt; from friends, especially as a fun adventure for kids. That&apos;s why I was super pumped to talk my family into going on a Western Caribbean Cruise for Spring Break. As you might&apos;ve read in my &lt;a href=&quot;http://raibledesigns.com/rd/entry/spring_break&quot;&gt;last post&lt;/a&gt;, we spent a week in Crested Butte before embarking on our cruise. 
&lt;/p&gt;
&lt;p&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7058699527/&quot; href=&quot;http://farm8.staticflickr.com/7119/7058699527_fd6376755f.jpg&quot; title=&quot;ShotSki Research at The Secret Stash&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7119/7058699527_fd6376755f_t.jpg&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;ShotSki Research at The Secret Stash&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;
While in Crested Butte, I enjoyed the &lt;a href=&quot;http://www.mindviewinc.com/Conferences/JavaPosseRoundup/&quot;&gt;Java Posse Roundup&lt;/a&gt;, but unfortunately had to do client work most of the week. However, that didn&apos;t stop &lt;a href=&quot;http://jamesward.com&quot;&gt;James Ward&lt;/a&gt;, &lt;a href=&quot;http://mcginityphoto.com&quot;&gt;Trish&lt;/a&gt; and me from building a Shot-Ski and doing a 5-minute lightning talk on it. We had a great time doing research, getting locals to help us out and beta testing it with JPR attendees. I&apos;ll write a blog post on what we learned in the near future. In the meantime, you can check out Trish&apos;s &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157629825646555/&quot;&gt;Making a Shot-Ski photos&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;We left Crested Butte on Thursday (March 29th) and drove back to Denver to meetup with my parents (who drove down from Montana). Friday morning we hopped on a plane and flew to Orlando, Florida and took a bus to &lt;a href=&quot;http://www.portcanaveral.com/&quot;&gt;Port Canaveral&lt;/a&gt;. Abbie and Jack were at their Grandma&apos;s in West Palm Beach, so Trish&apos;s parents picked them up on their drive up from Naples. We all met with near perfect timing and boarded the &lt;a href=&quot;http://disneycruise.disney.go.com/ships-activities/ships/magic/&quot;&gt;Disney Magic&lt;/a&gt; around 4 o&apos;clock Friday afternoon.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358223863/&quot; href=&quot;http://farm9.staticflickr.com/8092/8358223863_5b7c2d31eb.jpg&quot; title=&quot;Raible&apos;s and McGinity&apos;s welcome to our Disney Cruise! by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8092/8358223863_5b7c2d31eb.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Raible&apos;s and McGinity&apos;s welcome to our Disney Cruise!&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center; margin-top: 10px&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/6913165196/&quot; href=&quot;http://farm8.staticflickr.com/7110/6913165196_3852220c54.jpg&quot; title=&quot;The Joes&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7110/6913165196_3852220c54_t.jpg&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;The Joes&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059248379/&quot; href=&quot;http://farm8.staticflickr.com/7067/7059248379_48dc7faa8f.jpg&quot; title=&quot;Maureen and Abbie&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7067/7059248379_48dc7faa8f_t.jpg&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;Maureen and Abbie&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/6913166028/&quot; href=&quot;http://farm8.staticflickr.com/7139/6913166028_525167a03e.jpg&quot; title=&quot;Leaving Port Canaveral&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7139/6913166028_525167a03e_t.jpg&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;Leaving Port Canaveral&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059249129/&quot; href=&quot;http://farm6.staticflickr.com/5454/7059249129_73faf0346e.jpg&quot; title=&quot;First Dinner!&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm6.staticflickr.com/5454/7059249129_73faf0346e_t.jpg&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;First Dinner!&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a rev=&quot;http://www.flickr.com/photos/mraible/6913168284/&quot; href=&quot;http://farm8.staticflickr.com/7189/6913168284_21978748ef.jpg&quot; title=&quot;My Dad&apos;s Stateroom&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7189/6913168284_21978748ef_t.jpg&quot; width=&quot;100&quot; height=&quot;75&quot; alt=&quot;My Dad&apos;s Stateroom&quot; class=&quot;picture&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
We were immediately impressed with our rooms (we had 3 staterooms next to each other on the 5th floor forward) and their nice portal windows. We saw dolphins jumping in Port Canaveral as we departed and witnessed a horn battle between our ship and the Disney Fantasy. The Disney Fantasy was embarking on its maiden voyage and we saw it many times throughout the trip. That evening, we ventured to the first dinner seating (at 17:45). We were pleased to find out we&apos;d have the same servers all week, at different restaurants throughout the ship.&lt;/p&gt;
&lt;p id=&quot;key-west&quot;&gt;&lt;strong&gt;Key West&lt;/strong&gt;&lt;br/&gt;
Saturday morning, we arrived in Key West and had from 12am-9pm to explore. We took a tour in Key West and learned a lot about the history and architecture of the town. &lt;a href=&quot;http://raibledesigns.com/rd/entry/a_fun_week_in_florida&quot;&gt;Last time we visited Key West&lt;/a&gt;, I was super impressed with &lt;a href=&quot;http://www.melfisher.org/&quot;&gt;Mel Fisher Maritime Museum&lt;/a&gt;. It was fun to show it to everyone and we savored some tasty beverages at Margaritaville afterward. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358246099/&quot; href=&quot;http://farm9.staticflickr.com/8496/8358246099_ced7e505fb.jpg&quot; title=&quot;Abbie on stage in Margaritaville Key West Florida by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8496/8358246099_ced7e505fb_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Abbie on stage in Margaritaville Key West Florida&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358247879/&quot; href=&quot;http://farm9.staticflickr.com/8218/8358247879_bcb948daa2.jpg&quot; title=&quot;Jimmy Buffet mural at Margaritaville Key West Florida by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8218/8358247879_bcb948daa2_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Jimmy Buffet mural at Margaritaville Key West Florida&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We returned to the ship for dinner that evening and enjoyed the service of Omar (our main server) and Marijah (his assistant) once again. A couple hours laster, the boys (minus Jack) returned to shore to do some bonding. We wandered about, set a match to some cigars and made it back on the ship before it departed. We spent the remainder of the evening in the ship&apos;s Sports Bar watching March Madness and talking about Trish and my upcoming wedding.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059251353/&quot; href=&quot;http://farm8.staticflickr.com/7137/7059251353_c391fa2b97.jpg&quot; title=&quot;Bonding in Key West&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7137/7059251353_c391fa2b97_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Bonding in Key West&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059251961/&quot; href=&quot;http://farm8.staticflickr.com/7037/7059251961_6ed875ca80.jpg&quot; title=&quot;Key West Memories&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7037/7059251961_6ed875ca80_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Key West Memories&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059252187/&quot; href=&quot;http://farm6.staticflickr.com/5156/7059252187_b845e44508.jpg&quot; title=&quot;Bonding Night with the Queen&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm6.staticflickr.com/5156/7059252187_b845e44508_q.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; alt=&quot;Bonding Night with the Queen&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Sunday was a day at sea and we made the most of it. Lots of swimming, relaxing, playing with kids and enjoying each other&apos;s company. The ship had two different places that you could drop your kids off and Abbie (9) had a lot of fun attending their activities. Jack wasn&apos;t that into it and spent most of his day visiting the soft-serve ice cream machine. That evening, Trish and I journeyed to a romantic dinner at the ship&apos;s 18-and-older restaurant and celebrated our 1-year &quot;moved in together&quot; &lt;a href=&quot;http://raibledesigns.com/rd/entry/two_opening_days_with_a&quot;&gt;anniversary&lt;/a&gt;. 
&lt;/p&gt;
&lt;p id=&quot;grand-cayman&quot;&gt;&lt;strong&gt;Grand Cayman&lt;/strong&gt;&lt;br/&gt;
Monday, we arrived at Grand Cayman early in the morning and were ashore by 8am. We had a snorkeling expedition planned so promptly gathered and headed out to sea on a snorkeling boat. The weather was beautiful, the water was warm and snorkeling around a shipwreck was a very memorable experience.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358605930/&quot; href=&quot;http://farm9.staticflickr.com/8504/8358605930_10faae13ec.jpg&quot; title=&quot;Abbie and Jack arrive in Grand Cayman Islands by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8504/8358605930_10faae13ec_m.jpg&quot; width=&quot;160&quot; height=&quot;240&quot; alt=&quot;Abbie and Jack arrive in Grand Cayman Islands&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358610968/&quot; href=&quot;http://farm9.staticflickr.com/8083/8358610968_81fe3ffc3c.jpg&quot; title=&quot;Baba is excited to go snorkeling! by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8083/8358610968_81fe3ffc3c_m.jpg&quot; width=&quot;160&quot; height=&quot;240&quot; alt=&quot;Baba is excited to go snorkeling!&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center; margin-top: 10px&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358614606/&quot; href=&quot;http://farm9.staticflickr.com/8517/8358614606_bc30e195ae.jpg&quot; title=&quot;Barb and Joe going shipwreck snorkeling in Grand Cayman by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8517/8358614606_bc30e195ae_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Barb and Joe going shipwreck snorkeling in Grand Cayman&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358611866/&quot; href=&quot;http://farm9.staticflickr.com/8189/8358611866_c6465a4b55.jpg&quot; title=&quot;Abbie is a little nervous about the shipwreck by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8189/8358611866_c6465a4b55_m.jpg&quot; width=&quot;240&quot; height=&quot;160&quot; alt=&quot;Abbie is a little nervous about the shipwreck&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;We visited the Hard Rock cafe to get my Dad a t-shirt, purchased some Tobago Rum Cakes and finished with a tour of the new &lt;a href=&quot;http://www.museum.ky/&quot;&gt;Cayman Islands National Museum&lt;/a&gt;. We were back on the ship by 4 so our parents could have their own romantic dinner that evening.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358600474/&quot; href=&quot;http://farm9.staticflickr.com/8213/8358600474_ea26b2cc90.jpg&quot; title=&quot;Raible and McGinity dinner by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8213/8358600474_ea26b2cc90.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Raible and McGinity dinner&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p id=&quot;cozumel&quot;&gt;&lt;strong&gt;Cozumel&lt;/strong&gt;&lt;br/&gt;
Tuesday morning, we woke up in Cozumel. Trish and my parents headed to shore for some exploring while I slept in with the kids and ate at the &quot;something for everyone&quot; breakfast buffet. In the afternoon, we all headed to shore for a submarine ride. The submarine adventure was very cool, going down 120 ft. and even taking us to the edge of a cliff on the ocean floor. We got to see several schools of fish, loads of coral reef and even a sea turtle swimming along the bottom.
&lt;/p&gt;
&lt;p style=&quot;text-align: center; style=&quot;margin-top: 10px&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059257183/&quot; href=&quot;http://farm6.staticflickr.com/5346/7059257183_2255c37bbb.jpg&quot; title=&quot;Cute Kids&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm6.staticflickr.com/5346/7059257183_2255c37bbb_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Cute Kids&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/6913175048/&quot; href=&quot;http://farm8.staticflickr.com/7191/6913175048_89a5099d94.jpg&quot; title=&quot;Submariners&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7191/6913175048_89a5099d94_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Submariners&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8359352848/&quot; href=&quot;http://farm9.staticflickr.com/8503/8359352848_935f576bbe.jpg&quot; title=&quot;Disney Double Date! by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8503/8359352848_935f576bbe_m.jpg&quot; width=&quot;240&quot; height=&quot;179&quot; alt=&quot;Disney Double Date!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8358526648/&quot; href=&quot;http://farm9.staticflickr.com/8336/8358526648_9fd9f4deb7.jpg&quot; title=&quot;Mimi and Baba Monkeys by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8336/8358526648_9fd9f4deb7_m.jpg&quot; width=&quot;240&quot; height=&quot;179&quot; alt=&quot;Mimi and Baba Monkeys&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The highlight of Cozumel was Manuel. After the submarine ride, we took a taxi to a restaurant with a great view and had a couple margaritas and some excellent steak tacos. While we were finishing up, a man walked up to us and asked if we wanted him to play us a song on his guitar. We said yes and gave him our small change ($1.75) for his serenade. 
&lt;/p&gt;
&lt;p&gt;
Shortly after, we got up to leave the restaurant and walk back to the ship. That&apos;s when Trish came up with a brilliant idea and asked Manuel if he&apos;d be willing to walk with us around town and play music the whole time. She offered him $20 and he quickly agreed. 
&lt;/p&gt;
&lt;p&gt;What followed was lots of laughs, smiling and dancing through the streets of Cozumel. Not only from us, but also from many of the locals. Manuel was an excellent mariachi musician and provided an exciting sense of celebration around us for the next 20 minutes.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/6913177494/&quot; href=&quot;http://farm6.staticflickr.com/5160/6913177494_f52f14d798.jpg&quot; title=&quot;Trish paid Manuel $20 to walk with us and play...&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm6.staticflickr.com/5160/6913177494_f52f14d798_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Trish paid Manuel $20 to walk with us and play...&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/6913177864/&quot; href=&quot;http://farm8.staticflickr.com/7111/6913177864_6f6e4a2156.jpg&quot; title=&quot;Trish paid Manuel $20 to walk with us and play...&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7111/6913177864_6f6e4a2156_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Trish paid Manuel $20 to walk with us and play...&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center; margin-top: 10px&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8357526297/&quot; href=&quot;http://farm9.staticflickr.com/8463/8357526297_2b44023ebb.jpg&quot; title=&quot;Our posse with our Guitarr&#243;n Amigo in the Plaza Cozumel Mexico by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8463/8357526297_2b44023ebb.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Our posse with our Guitarr&#243;n Amigo in the Plaza Cozumel Mexico&quot; style=&quot;margin-left: 10px; border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Wednesday was another day at sea as we traveled from Cozumel to Disney&apos;s private island in the Bahamas: Castaway Cay. We got a kick out of the ship&apos;s activities, from Beer Tasting to watching the John Carter movie in 3D. I snapped some sweet photos that night as we were watching the sun set over the horizon.
  &lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059262891/&quot; href=&quot;http://farm6.staticflickr.com/5234/7059262891_9670e6a376.jpg&quot; title=&quot;A thing of beauty&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm6.staticflickr.com/5234/7059262891_9670e6a376.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;A thing of beauty&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
  &lt;p style=&quot;text-align: center; padding-top: 5px&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mraible/7059263233/&quot; href=&quot;http://farm8.staticflickr.com/7139/7059263233_c1db64df83.jpg&quot; title=&quot;Long Lasting Love&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm8.staticflickr.com/7139/7059263233_c1db64df83.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;Long Lasting Love&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p id=&quot;castaway-cay&quot;&gt;&lt;strong&gt;Castaway Cay&lt;/strong&gt;&lt;br/&gt;
At first, I thought Castaway Cay was going to be like Disney World, just on an island. I was expecting all kinds of rides and an amusement park. I was surprised to find it was nothing like that, but more of a private beach with all kinds of bars, games, water sports and even a water slide. The kids had a blast building sand castles, learning how to play checkers and exploring the island. I had a massage to the sound of ocean waves in the afternoon and we hopped back on the ship around 5 that afternoon. 
&lt;/p&gt;
&lt;p&gt;
That night, we had to pack up our luggage by 10 and put it out so it could be checked into our flight the next day. Disney did an awesome job of handling our luggage both to and from the cruise. All we had to do was attach bag tags in Denver and our bags arrived at our room shortly after boarding. On the way home, we gave them our bags on Thursday night and didn&apos;t see them until arriving in Denver.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a rev=&quot;http://www.flickr.com/photos/mcginityphoto/8359355716/&quot; href=&quot;http://farm9.staticflickr.com/8234/8359355716_54dc5b7a31.jpg&quot; title=&quot;Our crew on the Disney Magic! by Trish, on Flickr&quot; rel=&quot;lightbox[cruise2012]&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8234/8359355716_54dc5b7a31.jpg&quot; width=&quot;500&quot; height=&quot;333&quot; alt=&quot;Our crew on the Disney Magic!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
The last morning on the Disney Magic was a bit early. We had to be at breakfast at 6:45, were off the ship by 8 and at the Orlando airport by 9. Our flight was at 7 that night, so we suddenly found ourselves with 9 hours of free time and nothing to do. 
&lt;/p&gt;
&lt;p id=&quot;legoland&quot;&gt;&lt;strong&gt;LEGOLAND&lt;/strong&gt;&lt;br/&gt;
Last year around this time, Jack was struggling in school and getting in trouble almost every-other-day. In an attempt to promote good behavior, I told him I&apos;d take him to LEGOLAND if he had 10 days in a row of good behavior. This didn&apos;t seem to help and we ended the school year with no trip planned. However, when this school year started, he had excellent behavior (which has continued all year) and quickly remembered my promise.
&lt;/p&gt;
&lt;p&gt;As we were sitting in Orlando&apos;s airport, I remembered this promise and 30 minutes later we had a car rented and were driving to see some legos. We spent a joyous day there, riding the few rides they had and marveling over all the things you could build with legos. It was a &lt;a href=&quot;http://www.flickr.com/photos/mraible/sets/72157629772999213/&quot; title=&quot;Matt&apos;s LEGOLAND photos&quot;&gt;fun&lt;/a&gt; &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157632468036047/&quot; title=&quot;Trish&apos;s LEGOLAND photos&quot;&gt;way&lt;/a&gt; to end our wonderful vacation. &lt;/p&gt;
&lt;p&gt;This cruise was a first for myself, my kids and my parents. We were extremely impressed with Disney&apos;s Customer Service and have never felt more pampered in our lives. All the crew we interacted with knew our names by the second days and were some of the most kid-friendly people I&apos;ve ever met. The food was excellent, the weather was beautiful and the activities were plentiful. It wasn&apos;t until the last night that we realized there were 15 bars on the ship, and by that time it was too late for a pub crawl. Oh well, there&apos;s always next time. &lt;img src=&quot;https://raibledesigns.com/images/smileys/wink.gif&quot; class=&quot;smiley&quot; alt=&quot;;-)&quot; title=&quot;;-)&quot; /&gt;
&lt;p&gt;For more pictures from our Disney Magic voyage, see &lt;a href=&quot;http://www.flickr.com/photos/mraible/sets/72157629408393014&quot; title=&quot;Matt&apos;s Western Caribbean Cruise photos&quot;&gt;our&lt;/a&gt; &lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/sets/72157632459738307/&quot; title=&quot;Trish&apos;s Western Caribbean Cruise photos&quot;&gt;photos&lt;/a&gt; on Flickr. </content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/comparing_web_frameworks_and_html5</id>
        <title type="html">Comparing Web Frameworks and HTML5 with Play Scala at Jfokus 2012</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/comparing_web_frameworks_and_html5"/>
        <published>2012-02-16T00:01:05-07:00</published>
        <updated>2014-05-08T19:47:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jfokus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="html5" scheme="http://roller.apache.org/ns/tags/" />
        <category term="scala" scheme="http://roller.apache.org/ns/tags/" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/8355301175/&quot; title=&quot;Riddenholm Church by McGinityPhoto, on Flickr&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8330/8355301175_36050ce11c_t.jpg&quot; width=&quot;66&quot; height=&quot;100&quot; alt=&quot;Riddenholm Church&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;
Stockholm seems a lot like Denver this time of year. Cold, snowy and beautiful. &lt;a href=&quot;http://www.mcginityphoto.com/&quot;&gt;Trish&lt;/a&gt; and I arrived in Stockholm (Sweden) on Monday for the &lt;a href=&quot;http://jfokus.se&quot;&gt;Jfokus&lt;/a&gt; conference and we&apos;re traveling to Madrid today for the &lt;a href=&quot;http://springio.net/&quot;&gt;Spring I/O&lt;/a&gt; conference. I was invited to Jfokus within minutes of delivering my &lt;a href=&quot;http://raibledesigns.com/rd/entry/my_html5_with_play_scala&quot;&gt;HTML5 with Play Scala talk at Devoxx&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Both the Jfokus and Spring I/O Organizers were interested in my Comparing JVM Web Frameworks talk, so I updated it to reflect my latest thoughts. First of all, I mentioned that there&apos;s a lot of great frameworks out there and I think the reason people are so apprehensive to choose one is because they&apos;ve chosen badly at one point. This might&apos;ve been Struts back in the day (even thought it was one of the best frameworks at the time) or it might be because a vendor talked them into it. However, if you look at the modern JVM frameworks today, you should be able to see that they&apos;re all pretty awesome.
&lt;/p&gt;
&lt;p&gt;
I mentioned how I think &lt;em&gt;Web&lt;/em&gt; developers should know JavaScript and CSS. If you&apos;re a &lt;em&gt;Java&lt;/em&gt; developer and you call yourself a web developer, you&apos;re letting your framework do too much of the work for you. I mentioned Rich Manalang&apos;s &lt;a href=&quot;http://blogs.atlassian.com/2012/01/modern-principles-in-web-development/&quot;&gt;Modern Principles in Web Development&lt;/a&gt;, where he talks about his core web development principles.
&lt;ul&gt;
&lt;li&gt;Designing for mobile first (even if you&#8217;re not building a mobile app)&lt;/li&gt;
&lt;li&gt;Build only single page apps&lt;/li&gt;
&lt;li&gt;Create and use your own REST API&lt;/li&gt;
&lt;li&gt;&#8220;Sex sells&#8221; applies to web apps&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;ve found these principles to be true in my own experience and suggested that if you want to be a web developer, the frameworks you might want to learn are not traditional JVM web frameworks, but rather &lt;a href=&quot;http://paulhammant.com/2012/02/13/client-side-mvc-frameworks-compared/&quot;&gt;client-side MVC frameworks&lt;/a&gt;. For those Java developers that don&apos;t want to be web developers, I suggest they strengthen their services development knowledge by reading &lt;a href=&quot;http://www.infoq.com/articles/webber-rest-workflow&quot;&gt;Hot to GET a Cup of Coffee&lt;/a&gt;.
&lt;/p&gt;
You can see my updated presentation below, &lt;a href=&quot;http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-jfokus-2012&quot;&gt;on Slideshare&lt;/a&gt; or as a &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/Comparing_JVM_Web_Frameworks_Jfokus2012.pdf&quot;&gt;downloadable PDF&lt;/a&gt;. You can also &lt;a href=&quot;http://www.jfokus.se/jfokus/video.jsp?v=3084&quot;&gt;watch the video&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt; &lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/11581955?rel=0&quot; width=&quot;510&quot; height=&quot;426&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;I delivered my 2nd presentation on HTML5 with Play Scala, CoffeeScript and Jade on Wednesday morning. This talk is one of my favorites and I prepared for it over the last several weeks by adding &lt;a href=&quot;http://raibledesigns.com/rd/entry/secure_json_services_with_play&quot;&gt;JSON CRUD Services and SecureSocial&lt;/a&gt; to my HTML5 Fitness Tracking application. Right before we left for Jfokus, I was able to get everything to work, but didn&apos;t spend as much time as I&apos;d like working on the mobile client. If this talk gets accepted for &lt;a href=&quot;http://www.devoxx.com/display/FR12/Accueil&quot;&gt;Devoxx France&lt;/a&gt;, I plan on spending most of my time enhancing the mobile client. After my latest experience developing, I can see how Rich&apos;s first principle (above) makes a lot of sense.
&lt;/p&gt;
&lt;p&gt;Below is my presentation for this talk. Of course, it&apos;s &lt;a href=&quot;http://www.slideshare.net/mraible/html5-with-play-scala-coffeescript-and-jade-jfokus-2012&quot;&gt;on Slideshare&lt;/a&gt; and &lt;a href=&quot;http://static.raibledesigns.com/repository/presentations/HTML5_with_Play_Scala_CoffeeScript_and_Jade_Jfokus2012.pdf&quot;&gt;downloadable as a PDF&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/11582395?rel=0&quot; width=&quot;510&quot; height=&quot;426&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;I also updated the &lt;a href=&quot;http://vimeo.com/36826202&quot;&gt;Developing Play More demo video&lt;/a&gt; to show my latest efforts.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;iframe src=&quot;//player.vimeo.com/video/36826202?title=0&amp;amp;byline=0&amp;amp;portrait=0&quot; width=&quot;510&quot; height=&quot;287&quot; frameborder=&quot;0&quot; webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;Delivering these talks at Jfokus was a lot of fun. Yes, it was a lot of work and stress to prepare them. However, I also learned a lot creating them and I hope the audience benefitted from that. 
&lt;/p&gt;
&lt;p&gt;  
&lt;a href=&quot;http://www.flickr.com/photos/mcginityphoto/8350751579/&quot; title=&quot;Jfokus 2012 by McGinityPhoto, on Flickr&quot;&gt;&lt;img src=&quot;//farm9.staticflickr.com/8371/8350751579_33fe72872a_t.jpg&quot; width=&quot;67&quot; height=&quot;100&quot; alt=&quot;Jfokus 2012&quot; style=&quot;border: 1px solid black; float: left; margin: 0 10px 0 0&quot;&gt;&lt;/a&gt;
The conference itself was incredible. I got to meet &lt;a href=&quot;https://twitter.com/peterhilton&quot;&gt;Peter Hilton&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/javahelena&quot;&gt;Helena Hjert&#233;n&lt;/a&gt; as I was registering.
The speaker&apos;s dinner at &lt;a href=&quot;http://f12.se/&quot;&gt;F12&lt;/a&gt; was off-the-hook good and I had the pleasure of finally meeting &lt;a href=&quot;http://rickardoberg.wordpress.com/&quot;&gt;Rickard &#214;berg&lt;/a&gt;. 

&lt;/p&gt;
&lt;p&gt;I also attended some fantastic presentations, including Peter Hilton&apos;s &lt;a href=&quot;http://raibledesigns.com/rd/entry/play_framework_2_0_with&quot;&gt;Play Framework 2.0&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/bodiltv&quot;&gt;Bodil Stokke&apos;s&lt;/a&gt; &lt;a href=&quot;http://bodil.github.com/coffeescript/#landing-slide&quot;&gt;CoffeeScript: JavaScript without the Fail&lt;/a&gt;, &lt;a href=&quot;http://twitter.com/pamelafox&quot;&gt;Pamela Fox&apos;s&lt;/a&gt; &lt;a href=&quot;http://client-side-storage.appspot.com&quot;&gt;Client-side Storage&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/hseeberger&quot;&gt;Heiko Seeberger&apos;s&lt;/a&gt; Scala in Action. I don&apos;t know if Heiko has published any slides, but I&apos;m guessing not since most of his presentation was live coding. 
&lt;/p&gt;
&lt;p&gt;I have lots of good memories from Jfokus. Many thanks to &lt;a href=&quot;http://twitter.com/matkar&quot;&gt;Mattias&lt;/a&gt; for inviting me!</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/play_framework_2_0_with</id>
        <title type="html">Play Framework 2.0 with Peter Hilton at Jfokus</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/play_framework_2_0_with"/>
        <published>2012-02-14T07:17:08-07:00</published>
        <updated>2012-02-14T13:19:40-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="playframework" scheme="http://roller.apache.org/ns/tags/" />
        <category term="webframeworks" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jfokus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="scala" scheme="http://roller.apache.org/ns/tags/" />
        <category term="http" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This week, I&apos;m at &lt;a href=&quot;http://jfokus.se&quot;&gt;Jfokus&lt;/a&gt; in Stockholm, Sweden. After a fun speaker&apos;s dinner last night, I got up this morning and polished up my presentations and demo before attending the conference. The first session I attended was &lt;a href=&quot;http://twitter.com/PeterHilton&quot;&gt;Peter Hilton&apos;s&lt;/a&gt; &lt;a href=&quot;http://www.jfokus.se/jfokus/talks.jsp#Play%20Framework%202.0&quot;&gt;Play Framework 2.0&lt;/a&gt; presentation. Below are my notes from this talk.
&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 10px&quot;&gt;Peter is a Senior &lt;em&gt;Web&lt;/em&gt; Developer, not a Java Developer. His first slide states the following:&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&quot;Play brings type safe high-productivity web development to the JVM.&quot;
&lt;/p&gt;
&lt;p&gt;
New features in Play 2.0: type-safety, template syntax, compile-time checking and asynchronous HTTP programming. Java, Scala - the language you use is less important than the fact that Play is a &lt;em&gt;web&lt;/em&gt; framework. It&apos;s a full-stack framework and has everything you need out-of-the-box to build a web application. Play focuses on HTTP and doesn&apos;t try to hide it. It&apos;s designed &lt;em&gt;by&lt;/em&gt; web developers &lt;em&gt;for&lt;/em&gt; web developers.
&lt;/p&gt;
&lt;p&gt;
With Play, the Back button just works. Your web framework shouldn&apos;t break the first button on your browser&apos;s toolbar. The Reload button also works: make a change, hit reload and your changes (even in Scala classes) are shown. You design the URLs and you can use &quot;clean&quot; URLs. DX (Developer eXperience) is Peter&apos;s new term. Usability matters: as a developer, you deserve a framework that provides a good experience.
&lt;/p&gt;
&lt;p&gt;
Play doesn&apos;t fight HTTP or the browser. It&apos;s stateless and HTTP-centric. A few years ago, it seemed like a good idea to try and keep state on the server. It sounded like a good idea, but in practice, it&apos;s a really bad idea - especially for things like the back button. Play matches the web&apos;s stateless HTTP architecture. 
&lt;/p&gt;
&lt;p&gt;
As a Java EE developer, PHP and Rails developers have been laughing at us for years. Like Father Christmas, Peter&apos;s heard of class-reloading, but he hasn&apos;t actually seen it. Code reloading is the most important part of DX and about achieving high-productivity in web development. 
&lt;/p&gt;
&lt;p&gt;
URLs want to be loved too. REST architecture isn&apos;t just for web service APIs. When you have clean URLs, you can tweet them, post them and email them. 
&lt;/p&gt;
&lt;p&gt;
&quot;You would need to be a super-hero to successfully use some web frameworks.&quot; They show you a blank screen in the browser and you have to look at your console&apos;s stack trace to figure it out. With Play, the error is shown in your browser and you can see the exact line it happens on.
&lt;/p&gt;
&lt;p&gt;
In Play 1.x, there was a lot of magic and a lot of bytecode enhancement at runtime. This allowed the API to be a lot nicer than traditional Java APIs. However, it caused issues when users viewed the enhanced source and it also caused issues in IDEs. With Play 2.0, the framework itself is implemented in Scala. Scala removes the need for so much bytecode enhancement. There is less &apos;magic&apos; and strangeness in the API. The code you see in the IDE is the code that runs. Scala source code is not necessarily harder to read. 1.x had some pretty hairy Java code, and you could tell when you dug into it. Especially when you were deep into the source code and saw that a lot of the comments were in French.
&lt;/p&gt;
&lt;p&gt;
Play 2.0&apos;s template system is based on Scala. It&apos;s similar to the lightweight template syntax in Play 1.x. Templates are compiled into class files for run-time speed. For example:
&lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
@(products: Seq[Product])

&amp;lt;ul&gt;
@for(product &amp;lt;- products) {
  &amp;lt;li&gt;@product.name&amp;lt;/li&gt;
}
&amp;lt;/ul&gt;

@summary(products)
&lt;/pre&gt;
&lt;p&gt;We used to think XML-based templates were great, but it turns out it&apos;s a terrible idea. Mostly because you end up having to invent an expression language to create valid XML (to avoid putting XML in your HTML attributes). With Play 2.0&apos;s templates, you can define tags in your templates as regular Scala methods.
&lt;/p&gt;
&lt;pre class=&quot;brush: scala&quot;&gt;
@display(product: models.Product) ={
 &amp;lt;a href=&quot;@routes.Product.details(product.id)&quot;&gt;@product.name&amp;lt;/a&gt; 
}

@for(product &amp;lt;- products) {
  @display(product)
}
&lt;/pre&gt;
&lt;p&gt;The compile-time checking in Play 2.0 is not just for Java and Scala classes. It also compiles your HTTP routes file (which maps requests to controller actions). Furthermore, it compiles your templates, JavaScript files (using Google Closure Compiler), CoffeeScript files and LESS stylesheets. 
&lt;/p&gt;
&lt;p&gt;
Play supports modern web development. It&apos;s designed to work with HTML5, but there&apos;s no constraints on HTML output. It&apos;s front-end developer friendly and has great DX. UI components belong in the client, e.g. jQuery UI. It also has built-in support for improvements to CSS (LESS) and JavaScript (CoffeeScript).
&lt;/p&gt;
&lt;p&gt;
A few years ago, it seemed like a really good idea to hide JavaScript from the web developer. Web frameworks used to say &quot;You don&apos;t need to see the JavaScript or the HTML, we&apos;ll handle generating your components for you.&quot; Now, if you&apos;re building a web application and you don&apos;t know any jQuery, you doing it the hard way. You should learn how to work with front-end developers or learn how to do it yourself. And make sure your web framework allows this sort of development. 
&lt;/p&gt;
&lt;p&gt;
The future of web programming is asynchronous. You&apos;ll perform simultaneous web service requests. You&apos;ll process streams of data, instead of filling up memory or disk. You&apos;ll publish real-time data and have predictable and minimal resource consumption. In the long term, this changes everything. The future of the web is real-time and asynchronous. With Play 2.0, it&apos;s not just another feature, it&apos;s a fundamental aspect of the architecture. Play&apos;s internal architecture uses a reactive model based on Iteratee IO. 
&lt;/p&gt;
&lt;p&gt;In summary, use Play 2, use HTML5, deploy to the Cloud. There&apos;s two forthcoming books on Play (both from Manning) and Play 2.0 RC1 will be released today.&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; padding-top: 10px&quot;&gt;
I think Peter did a good job of summarizing the new features in Play 2.0, especially how templates work. I enjoyed his emphasis on HTTP and how Play leverages the browser (back, reload and as a console). I liked his humorous speaking style, and agree with his emphasis that client-side development skills are important for modern web applications. I think Play 2.0 is making a big bet on Scala and asynchronous programming, but if they live up to the hype, it should be a very enjoyable web framework to develop with.</content>
    </entry>
</feed>

