<?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 [free sex movies for men  non blog] in weblog rd</title>
    <subtitle type="html">Search results for [free sex movies for men  non blog] within weblog Raible Designs</subtitle>
    <id>https://raibledesigns.com/rd/feed/entries/atom?q=free+sex+movies+for+men++non+blog</id>

    <link rel="self" type="application/atom+xml" 
        href="https://raibledesigns.com/rd/feed/entries/atom?q=free+sex+movies+for+men++non+blog" />

    <link rel="alternate" type="text/html" 
        href="https://raibledesigns.com/rd/search?q=free+sex+movies+for+men++non+blog" />

    <link rel="search" type="application/opensearchdescription+xml" 
        href="https://raibledesigns.com/roller-services/opensearch/rd" />
    <opensearch:Query role="request" searchTerms="free sex movies for men  non blog" startPage="1" />

    <link rel="first" type="application/atom+xml" href="https://raibledesigns.com/rd/feed/entries/atom?q=free+sex+movies+for+men++non+blog" />
    <link rel="next" type="application/atom+xml" href="https://raibledesigns.com/rd/feed/entries/atom?q=free+sex+movies+for+men++non+blog&amp;page=1" />
    <updated>2026-05-25T13:53:18-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/2024_a_year_in_review</id>
        <title type="html">2024 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2024_a_year_in_review"/>
        <published>2025-01-31T08:44:59-07:00</published>
        <updated>2025-01-31T16:13:44-07:00</updated> 
        <category term="/General" label="General" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="crowdstrike" 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="2024" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" 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;
    Last year brought a few challenges and misfortunes. From changing companies to broken bones, Trish and I learned more
    about ourselves and our abilities than we ever anticipated. I had seven months off from the beginning of
    February through the end of July. Trish returned to her passion for horses and started competing near the end of
    my funemployment. A few months later, her saddle malfunctioned, and she found herself with a broken wrist
    &lt;em&gt;and&lt;/em&gt; a broken ankle.&lt;/p&gt;
&lt;p&gt;
    From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2023_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 only have one goal for 2024: &lt;strong&gt;breathe&lt;/strong&gt;.
&lt;/blockquote&gt;
&lt;p&gt;
    I had plenty of time to breathe, so this turned out to be an excellent goal. Whether it was on the ski slopes or
    mountain biking, I had lots of heavy breathing in the first half of the year thanks to a nice severance package and
    a zest for adventure.
&lt;p&gt;I&apos;m gonna review 2024 using the following perspectives:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2024_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/2024_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;//raibledesigns.com/rd/entry/2024_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/2024_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/2024_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/2024_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/2024_a_year_in_review#2025&quot;&gt;2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
        <content type="html">&lt;p&gt;
    Last year brought a few challenges and misfortunes. From changing companies to broken bones, Trish and I learned more
    about ourselves and our abilities than we ever anticipated. I had seven months off from the beginning of
    February through the end of July. Trish returned to her passion for horses and started competing near the end of
    my funemployment. A few months later, her saddle malfunctioned, and she found herself with a broken wrist
    &lt;em&gt;and&lt;/em&gt; a broken ankle.&lt;/p&gt;
&lt;p&gt;
    From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2023_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 only have one goal for 2024: &lt;strong&gt;breathe&lt;/strong&gt;.
&lt;/blockquote&gt;
&lt;p&gt;
    I had plenty of time to breathe, so this turned out to be an excellent goal. Whether it was on the ski slopes or
    mountain biking, I had lots of heavy breathing in the first half of the year thanks to a nice severance package and
    a zest for adventure.
&lt;p&gt;I&apos;m gonna review 2024 using the following perspectives:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2024_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/2024_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;//raibledesigns.com/rd/entry/2024_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/2024_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/2024_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/2024_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/2024_a_year_in_review#2025&quot;&gt;2025&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;
&lt;p&gt;
    The year started with a trip to Cabo San Lucas. Trish and I have a friend with a condo down there, so we joined them
    for a weekend in mid-January. I stayed the following week, working remotely. Another friend flew in, and we golfed
    on some of the most beautiful courses I&apos;d ever seen: &lt;a href=&quot;https://www.palmillagc.com/&quot;&gt;Palmilla&lt;/a&gt; and &lt;a
        href=&quot;https://www.solmargolf.com/&quot;&gt;Solmar&lt;/a&gt;. Both were all-inclusive, which I didn&apos;t even know existed. It
    basically means that all drinks and snacks are included. On Sunday, we went deep-sea fishing and caught a couple of
    Marlin. You haven&apos;t experienced forearm pain until you&apos;ve spent 45 minutes trying to reel in a huge fish. The first
    one got away at the end, but we successfully landed the second one.
&lt;/p&gt;
&lt;p&gt;
    Shortly after, my &lt;a href=&quot;https://raibledesigns.com/rd/entry/funemployment_2024&quot;&gt;funemployment&lt;/a&gt; began.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682973576_d2437c6351_c.jpg&quot; title=&quot;Fun day with the Fesser&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53682973576/in/album-72177720316530125/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53682973576_d2437c6351_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Fun day with the Fesser&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682107307_b841ee178e_c.jpg&quot; title=&quot;Powder Day!&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53682107307/in/album-72177720316530125/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53682107307_b841ee178e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Powder Day!&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/53686522082_417d62151d_c.jpg&quot; title=&quot;Casa Bonita with the fam!&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53686522082/in/album-72177720316530125/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53686522082_417d62151d_c.jpg&quot; width=&quot;500&quot;
            alt=&quot;Casa Bonita with the fam!&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/53683194418_f04d23745b_c.jpg&quot; title=&quot;Go Rockies!&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53683194418/in/album-72177720316530125/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53683194418_f04d23745b.jpg&quot; width=&quot;500&quot; alt=&quot;Go Rockies!&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/53682965591_befc47111f_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682965591/in/album-72177720316530125&quot; title=&quot;Apres Ski&quot; rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682965591_befc47111f.jpg&quot; width=&quot;500&quot; alt=&quot;Apres Ski&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/53686520152_8a6f4f4835_c.jpg&quot; title=&quot;Balcony views&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53686520152/in/album-72177720316530125/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53686520152_8a6f4f4835.jpg&quot; width=&quot;500&quot; alt=&quot;Balcony views&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/53686519387_f3eaa35b6f_c.jpg&quot; title=&quot;Spring Break in Cabo!&quot;
       rel=&quot;lightbox[yearinreview2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53686519387/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53686519387_f3eaa35b6f.jpg&quot; width=&quot;500&quot; alt=&quot;Spring Break in Cabo!&quot;
            style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I started looking for a new gig in April. Since finding a job is often about who you know, not what you know, I flew
    to Atlanta for Devnexus and networking. There, I attended the JUG Leaders Summit and the Java Champions Summit
    before the conference. I spoke about micro frontends with JHipster and stayed for the speaker festivities after. You
    can read about this experience in &lt;a href=&quot;https://raibledesigns.com/rd/entry/a_delightful_trip_to_devnexus&quot;&gt;A
    Delightful Trip to 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/53692860576_a3966de850_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53692860576/in/album-72177720316633407/&quot;
       title=&quot;#Java leaders Summit team photo at Devnexus 2024. Credit: Ken Fogel&quot; rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53692860576_a3966de850_z.jpg&quot; width=&quot;640&quot;
            style=&quot;border: 1px solid black&quot; alt=&quot;#Java leaders Summit team photo at Devnexus 2024. Credit: Ken Fogel&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The following week, I did a &lt;a href=&quot;https://raibledesigns.com/rd/entry/my_marvelous_road_trip_to&quot;&gt;marvelous road
    trip to the Utah JUG&lt;/a&gt; in Stout the Syncro. I skied at Copper, mountain biked at Fruita and Moab, and skied at
    Snowbird and Alta before my talk. Then, I hit Steamboat and Winter Park on the way home.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53737267230_e0088e393b_c.jpg&quot;
       title=&quot;Sweet singletrack in Fruita named Joe&apos;s Ridge. You have to work for it, but it&apos;s spectacular on the way down! #RoadTrip #FunEmployment&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53737267230/in/album-72177720317166395/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53737267230_e0088e393b_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Sweet singletrack in Fruita named Joe&apos;s Ridge. You have to work for it, but it&apos;s spectacular on the way down! #RoadTrip #FunEmployment&quot;
            style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53735913967_625d708ab0_c.jpg&quot; title=&quot;Dino-Flow at Klondike Bluffs&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53735913967/in/album-72177720317166395/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53735913967_625d708ab0_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Dino-Flow at Klondike Bluffs&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/53737037573_8f5db25ee6_c.jpg&quot;
       title=&quot;Cruisin&apos; blues &amp;#x26F7;&amp;#xFE0F; at Snowbird the Utah JUG meetup&quot; rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53737037573/in/album-72177720317166395/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53737037573_8f5db25ee6_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Cruisin&apos; blues &amp;#x26F7;&amp;#xFE0F; at Snowbird the Utah JUG meetup&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53736836766_5c30bba68d_c.jpg&quot;
       title=&quot;#StoutTheSyncro made it to Steamboat!&quot; rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53736836766/in/album-72177720317166395/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53736836766_5c30bba68d_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;#StoutTheSyncro made it to Steamboat!&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We attended our niece&apos;s graduation from Michigan in May, watched the Nuggets lose to the Timberwolves in the
    playoffs, almost won a fowling (bowling with a football) tournament, and my job search started heating up. At one
    point, I had 15 interviews in one week and interviewing felt like a full-time job.&lt;/p&gt;
&lt;p&gt;We did some fun rafting trips on the Colorado River in June. Our rafting family didn&apos;t win any permits in the
    lottery, so there were no week-long trips.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53818437492_d7efca7dfb_c.jpg&quot; title=&quot;Father&apos;s Day Rafting on the UC&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53818437492/in/album-72177720318306944/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53818437492_d7efca7dfb_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Father&apos;s Day Rafting on the UC&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819330631_b454fd401d_c.jpg&quot; title=&quot;Captain TMac&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53819330631/in/album-72177720318306944/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53819330631_b454fd401d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Captain TMac&quot;
            style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
    I wrote about our &lt;a href=&quot;https://raibledesigns.com/rd/entry/farewell_to_the_2023_2024&quot;&gt;ski season&lt;/a&gt; in late June.
    My only trip outside the Rockies was to a friend&apos;s birthday celebration in Sugarbush, Vermont. The conditions
    were less optimal than I&apos;m used to. When it snowed a foot on the last day, the power went out and the lifts didn&apos;t
    work. &amp;#x1F605;&lt;/p&gt;
&lt;p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819675874_f6c5e8446b_c.jpg&quot;
       title=&quot;The ski conditions are a bit different from Colorado&quot; rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53819675874/in/album-72177720318306944/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53819675874_f6c5e8446b_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;The ski conditions are a bit different from Colorado&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819584063_8e5bfd28b1_c.jpg&quot; title=&quot;Besties&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53819584063/in/album-72177720318306944/&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/53819584063_8e5bfd28b1_m.jpg&quot; width=&quot;240&quot; alt=&quot;Besties&quot;
            style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    July brought a trip to Montana, my 50th birthday celebration, and Trish started competing with horses again. I
    started a new job with CrowdStrike at the very end of the month. You can read about these happenings in &lt;a
        href=&quot;https://raibledesigns.com/rd/entry/life_update_new_job_same&quot;&gt;Life Update: New Job, Same House, and Same
    Awesome Family!&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[yearinreview2024]&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_m.jpg&quot; width=&quot;240&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;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[yearinreview2024]&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/54140764661_5bccdd1469_c.jpg&quot; title=&quot;Happy Anniversary! &amp;#x1F495;&quot;
       rel=&quot;lightbox[yearinreview2024]&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_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;Happy Anniversary! &amp;#x1F495;&quot; style=&quot;border: 1px solid black&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[yearinreview2024]&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_m.jpg&quot; width=&quot;240&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;
    Jack &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_jack13&quot;&gt;turned 20 in August&lt;/a&gt;. He didn&apos;t try out
    for the CU basketball team, but still plays a lot. Near the end of the year, he made things official with a love
    interest and is experiencing a whole new range of emotions.
&lt;/p&gt;
&lt;p&gt;
    Abbie &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie18&quot;&gt;celebrated 22 in November&lt;/a&gt;. It&apos;s her
    senior year at CU and she shocked us over the Christmas break by breaking up with her boyfriend of five years. Her
    puppy, Gracie, has been a good emotional support companion.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&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[yearinreview2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54120350913_ee9f5d87d4.jpg&quot;
                                         height=&quot;500&quot; alt=&quot;Strike a pose&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&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;
    We rested Stout the Syncro again for most of the year, save for my Utah JUG road trip and a weekend adventure to
    &lt;a href=&quot;https://rhythmsontherio.com/&quot;&gt;Rhythms on the Rio&lt;/a&gt; in southern Colorado&lt;/a&gt;. They had a VW-only camping
    section right next to the stage, which made the community aspect all the more enjoyable.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141041753_05e53b1d9d_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/54141041753/&quot; title=&quot;Banjo Enthusiast Extraordinaire&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141041753_05e53b1d9d_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Banjo Enthusiast Extraordinaire&quot;
                                             style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54139909202_58668545a8_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/54139909202/&quot; title=&quot;Bus Camp&quot; rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/54139909202_58668545a8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Bus Camp&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/54141042088_dcab967077_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/54141042088/in/photostream/&quot;
       title=&quot;Rhythms on the Rio was fantastic!&quot; rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/54141042088_dcab967077.jpg&quot; width=&quot;500&quot;
            alt=&quot;Rhythms on the Rio was fantastic!&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Hefe the Bus kept truckin&apos; along. He didn&apos;t win any trophies at VWs on the Green this year, but we still had a great
    time.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819670114_416f2d2029_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53819670114/&quot; title=&quot;Hefe at VWs on the Green&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819670114_416f2d2029_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Hefe at VWs on the Green&quot;
                                             style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53818412517_1cd61bd854_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/53818412517/&quot; title=&quot;Hefe at VWs on the Green&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53818412517_1cd61bd854_m.jpg&quot;
                                             width=&quot;240&quot; alt=&quot;Hefe at VWs on the Green&quot;
                                             style=&quot;border: 1px solid black; margin-left: 15px&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We did a cruise to Red Rocks with the Colorado VW Bus Club.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54139900762_17afe6a7bd_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/54139900762/&quot;
       title=&quot;Colorado VW Bus club cruise through Red Rocks. &amp;#x262E;&amp;#xFE0F;&quot; rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img
            src=&quot;https://live.staticflickr.com/65535/54139900762_17afe6a7bd.jpg&quot; width=&quot;500&quot;
            alt=&quot;Colorado VW Bus club cruise through Red Rocks. &amp;#x262E;&amp;#xFE0F;&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;And I replaced our mailbox with something more stylish.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/54141032573_286d62dd1c_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/54141032573/&quot; title=&quot;Hefe Mailbox&quot;
       rel=&quot;lightbox[yearinreview2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54141032573_286d62dd1c.jpg&quot;
                                             width=&quot;500&quot; alt=&quot;Hefe Mailbox&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;
    With a new job at CrowdStrike, most of my time was spent getting up to speed on cybersecurity and CrowdStrike&apos;s
    Falcon-related products. I created &lt;a href=&quot;https://developer.crowdstrike.com&quot;&gt;developer.crowdstrike.com&lt;/a&gt;
    (powered by &lt;a href=&quot;https://gohugo.io/&quot;&gt;Hugo&lt;/a&gt;) in my first month. I&apos;ve been practicing Go and Python and
    published two blog posts:
&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;li&gt;
        &lt;a href=&quot;https://developer.crowdstrike.com/blog/get-started-with-falcon-fusion-soar/&quot;&gt;Get Started with Falcon
            Fusion SOAR&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I&apos;ve started working on screencasts too, but none have been published yet.
&lt;/p&gt;
&lt;p&gt;
    I studied for and achieved a &lt;a href=&quot;https://cloudsecurityalliance.org/education/ccsk&quot;&gt;CCSK&lt;/a&gt; (Certificate of
    Cloud Security Knowledge) certification. I also got my CCFA (CrowdStrike Certified Falcon Administrator)
    certification last week, but &lt;em&gt;technically&lt;/em&gt; that didn&apos;t happen in 2024.
&lt;/p&gt;
&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;
    According to TripIt, I took 13 trips to 15 cities in two countries. Only two trips were for conferences: Devnexus
    and KC/DC. Normally, I&apos;d say they were work-related, but since I was unemployed at the time, community-related is
    probably a better term.
&lt;/p&gt;
&lt;h3 id=&quot;community&quot;&gt;Community&lt;/h3&gt;
&lt;p&gt;
    I continued helping the &lt;a href=&quot;https://www.djug.org/&quot;&gt;Denver JUG&lt;/a&gt; find speakers and a venue for our meetups. We
    switched to meeting in south Denver, at &lt;a href=&quot;https://www.thriveworkplace.com/centennial/&quot;&gt;Thrive Centennial&lt;/a&gt;.
    This was mostly my decision because they have a larger room and it&apos;s closer to my house. We return to &lt;a
        href=&quot;https://www.thriveworkplace.com/cherry-creek/&quot;&gt;Thrive Cherry Creek&lt;/a&gt; when the Centennial location is
    booked.
&lt;/p&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;
    The main open source project I worked on in 2024 was &lt;a href=&quot;https://jhipster.tech&quot;&gt;JHipster&lt;/a&gt;. I became a
    project co-lead in the spring, mostly to help do releases in a timely manner. JHipster had &lt;a
        href=&quot;https://www.jhipster.tech/releases/&quot;&gt;10 releases&lt;/a&gt; and &lt;a
        href=&quot;https://npm-stat.com/charts.html?package=generator-jhipster&amp;from=2024-01-01&amp;to=2024-12-31&quot;&gt;~2 million
    downloads&lt;/a&gt; in 2024 (up 700K from 2023). Our most downloaded release was &lt;a
        href=&quot;https://www.jhipster.tech/2024/11/01/jhipster-release-8.7.3.html&quot;&gt;JHipster 8.7.3 on November 1st&lt;/a&gt;. We
    started updating and releasing blueprints before announcing releases.
&lt;/p&gt;
&lt;p&gt;
    I love the &lt;a
        href=&quot;https://www.linkedin.com/posts/mraible_the-new-jhipster-website-is-live-this-activity-7234716558671929345-pxBE/&quot;&gt;new
    website we published on August 28th&lt;/a&gt; and releasing &lt;a
        href=&quot;https://www.linkedin.com/posts/mraible_java-jhipster-springboot-activity-7277455519441674240-9BII/&quot;&gt;JHipster
    8.8.0&lt;/a&gt; (with Spring Boot 3.4 and Angular 19 support) on Christmas Eve was a nice way to end the year.
&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
&lt;iframe src=&quot;https://www.linkedin.com/embed/feed/update/urn:li:share:7234716557661085697&quot; height=&quot;647&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;h2 id=&quot;2025&quot;&gt;2025&lt;/h2&gt;
&lt;p&gt;
    Professionally, I&apos;ll be writing (and helping others publish) more blog posts about CrowdStrike&apos;s Foundry, Fusion,
    and Next-Gen SIEM. I &lt;em&gt;might&lt;/em&gt; speak at a conference or two. I&apos;ve submitted to a couple of CFPs and got
    accepted, but getting approval to speak has been a challenge. As one of the top cybersecurity companies, we
    traditionally make our documentation and tutorials only available to customers. When folks talk about our APIs and
    (open source) SDKs, it&apos;s at one of our &lt;a href=&quot;https://www.crowdstrike.com/events/fal-con/&quot;&gt;Fal.Con&lt;/a&gt; conferences.
&lt;/p&gt;
&lt;p&gt;
    My leadership team would prefer I do talks and workshops about Foundry, Fusion, and Next-Gen SIEM. Since these are
    products we sell, I feel like any talk I&apos;d do about them would be a vendor pitch, even if I live-coded the whole
    time. This is a no-go for most developer conferences. It should work nicely for Fal.Con, though. And that might be
    all that&apos;s required since it sells out every year.
&lt;/p&gt;
&lt;p&gt;
    Personally, our big family vacation already happened with a visit to Puerto Rico in early January. I&apos;ll write about
    that in a blog post shortly. Abbie graduates from CU in May and starts her career this summer. We&apos;ll be celebrating,
    supporting, and planning some adventures with her when she moves back in. We hope to work remotely from Winter
    Park in June and Montana in July. We figure if we can work East Coast hours, we can have some fun
    rafting/biking/golfing adventures in the afternoons and evenings. &lt;/p&gt;
&lt;p&gt;
    I have only one goal for 2025: &lt;strong&gt;be grateful&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
    I have a lot to be thankful for with an awesome family, a gorgeous place to live, adventurous hobbies, and fun VWs to
    drive. &lt;em&gt;And&lt;/em&gt;, Trish got us VIP tickets to &lt;a href=&quot;https://www.thesphere.com/shows/dead-and-company&quot;&gt;Dead
    &amp;amp; Company at the Sphere&lt;/a&gt; in May! She started following the Grateful Dead in the 90s with multi-day shows
    and wanted to finish her long strange trip in a similar fashion.&lt;/p&gt;
&lt;p&gt;
    If you want 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;.
&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/farewell_to_the_2023_2024</id>
        <title type="html">Farewell to the 2023-2024 Ski Season</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/farewell_to_the_2023_2024"/>
        <published>2024-06-27T09:30:45-06:00</published>
        <updated>2024-06-27T09:33:51-06:00</updated> 
        <category term="/General" label="General" />
        <category term="skiing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <category term="winterpark" scheme="http://roller.apache.org/ns/tags/" />
        <category term="utah" scheme="http://roller.apache.org/ns/tags/" />
        <category term="skiseason" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maryjane" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="steamboat" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    This year&apos;s ski season was delightful! This was largely due to our acquisition of a new condo in the mountains, lots of free time to ski, and some epic powder days with friends. I achieved 30 days of skiing, with 19 being alpine and 11 being cross-country. The season started for me on October 30 when we got enough snow to go cross-country skiing in our backyard.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819799355_f7a154fc3e_c.jpg&quot; title=&quot;First ski of the season&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819799355/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819799355_f7a154fc3e.jpg&quot; width=&quot;500&quot; alt=&quot;First ski of the season&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We didn&apos;t make it up to the mountains for downhill skiing until mid-December. That&apos;s when we closed on our condo, nicely coinciding with Trish&apos;s birthday weekend.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819332936_edea511c8d_c.jpg&quot; title=&quot;Sunset on Fraser River Trail&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819332936/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819332936_edea511c8d_q.jpg&quot; width=&quot;150&quot; alt=&quot;Sunset on Fraser River Trail&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819672329_1d0d14b297_c.jpg&quot; title=&quot;Fraser Sunset&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819672329/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819672329_1d0d14b297_q.jpg&quot; width=&quot;150&quot; alt=&quot;Fraser Sunset&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819672684_5ee8655a39_c.jpg&quot; title=&quot;Corduroy at Winter Park&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819672684/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819672684_5ee8655a39_q.jpg&quot; width=&quot;150&quot; alt=&quot;Corduroy at Winter Park&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
    This year&apos;s ski season was delightful! This was largely due to our acquisition of a new condo in the mountains, lots of free time to ski, and some epic powder days with friends. I achieved 30 days of skiing, with 19 being alpine and 11 being cross-country. The season started for me on October 30 when we got enough snow to go cross-country skiing in our backyard.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819799355_f7a154fc3e_c.jpg&quot; title=&quot;First ski of the season&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819799355/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819799355_f7a154fc3e.jpg&quot; width=&quot;500&quot; alt=&quot;First ski of the season&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We didn&apos;t make it up to the mountains for downhill skiing until mid-December. That&apos;s when we closed on our condo, nicely coinciding with Trish&apos;s birthday weekend.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819332936_edea511c8d_c.jpg&quot; title=&quot;Sunset on Fraser River Trail&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819332936/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819332936_edea511c8d_q.jpg&quot; width=&quot;150&quot; alt=&quot;Sunset on Fraser River Trail&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819672329_1d0d14b297_c.jpg&quot; title=&quot;Fraser Sunset&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819672329/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819672329_1d0d14b297_q.jpg&quot; width=&quot;150&quot; alt=&quot;Fraser Sunset&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819672684_5ee8655a39_c.jpg&quot; title=&quot;Corduroy at Winter Park&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819672684/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819672684_5ee8655a39_q.jpg&quot; width=&quot;150&quot; alt=&quot;Corduroy at Winter Park&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&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;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Happy Birthday to my winter-loving Wonder Woman, &lt;a href=&quot;https://twitter.com/TrishPhoto?ref_src=twsrc%5Etfw&quot;&gt;@TrishPhoto&lt;/a&gt;! &amp;#x1F389;&amp;#x2764;&amp;#xFE0F; &lt;a href=&quot;https://t.co/1Ec60gLlN4&quot;&gt;pic.twitter.com/1Ec60gLlN4&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1736477182707237171?ref_src=twsrc%5Etfw&quot;&gt;December 17, 2023&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/53818413892_b3d8af1c7b_c.jpg&quot; title=&quot;It&apos;s the Birthday Girl!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53818413892/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53818413892_b3d8af1c7b_m.jpg&quot; width=&quot;240&quot; alt=&quot;It&apos;s the Birthday Girl!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819333511_f9b4ebe43b_c.jpg&quot; title=&quot;Winter Park at Twilight&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819333511/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819333511_f9b4ebe43b_m.jpg&quot; width=&quot;240&quot; alt=&quot;Winter Park at Twilight&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I started my &lt;a href=&quot;https://raibledesigns.com/rd/entry/funemployment_2024&quot;&gt;Funemployment experience&lt;/a&gt; on February 1st and spent the following week in Winter Park, skiing with glee and my newfound freedom. I skied nine days in February, mostly during the week.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682110667_daf96871d9_c.jpg&quot; title=&quot;Powder Day!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53682110667_daf96871d9_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682110667_daf96871d9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Powder Day!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682973576_d2437c6351_c.jpg&quot; title=&quot;Fun day with the Fesser&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53682973576_d2437c6351_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682973576_d2437c6351_q.jpg&quot; width=&quot;150&quot; alt=&quot;Fun day with the Fesser&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683428795_f836b960d9_c.jpg&quot; title=&quot;Bluebird day!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53683428795_f836b960d9_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683428795_f836b960d9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Bluebird day!&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/53683428160_0d68fb068d_c.jpg&quot; title=&quot;Can&apos;t get enough of Eagle Wind&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53683428160_0d68fb068d_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683428160_0d68fb068d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Can&apos;t get enough of Eagle Wind&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682108802_c45477d05a_c.jpg&quot; title=&quot;Sunset over Byers Peak&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53682108802_c45477d05a_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682108802_c45477d05a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sunset over Byers Peak&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/53683338674_8657f61671_c.jpg&quot; title=&quot;Beautiful views while skijoring for the first time today!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53683338674_8657f61671_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683338674_8657f61671_m.jpg&quot; width=&quot;240&quot; alt=&quot;Beautiful views while skijoring for the first time today!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682107307_b841ee178e_c.jpg&quot; title=&quot;Powder Day!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53682107307_b841ee178e_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682107307_b841ee178e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Powder Day!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    In March, I flew to Vermont and went skiing at Sugarbush for a friend&apos;s birthday.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819336211_2868080555_c.jpg&quot; title=&quot;Sugarbush Resort&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819336211/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819336211_2868080555_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sugarbush Resort&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819675874_f6c5e8446b_c.jpg&quot; title=&quot;The ski conditions are a bit different from Colorado&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819675874/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819675874_f6c5e8446b_m.jpg&quot; width=&quot;240&quot; alt=&quot;The ski conditions are a bit different from Colorado&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/53819584063_8e5bfd28b1_c.jpg&quot; title=&quot;Besties&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819584063/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819584063_8e5bfd28b1_m.jpg&quot; width=&quot;240&quot; alt=&quot;Besties&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819780725_e3abbd387a_c.jpg&quot; title=&quot;Sunset at Sugarbush&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819780725/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819780725_e3abbd387a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sunset at Sugarbush&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;
    We frolicked in Winter Park and Steamboat during Spring Break.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819332556_a94275fb1d_c.jpg&quot; title=&quot;Let&apos;s go DU!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819332556/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819332556_a94275fb1d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Let&apos;s go DU!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819336881_dc3e719e07_c.jpg&quot; title=&quot;Skiing in Steamboat with Janene and Trish&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819336881/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819336881_dc3e719e07_m.jpg&quot; width=&quot;240&quot; alt=&quot;Skiing in Steamboat with Janene and Trish&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I threatened to not purchase the kids&apos; ski passes for next year if they didn&apos;t ski four days. They both fulfilled that obligation in April and we had some fun family weekends on the slopes.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819336846_ec236f4ae4_c.jpg&quot; title=&quot;Bluebird day at Winter Park with Abbie&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819336846/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819336846_ec236f4ae4_m.jpg&quot; width=&quot;240&quot; alt=&quot;Bluebird day at Winter Park with Abbie&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819337176_e462c3f7de_c.jpg&quot; title=&quot;Happy Abbie!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819337176/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819337176_e462c3f7de_m.jpg&quot; width=&quot;240&quot; alt=&quot;Happy Abbie!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I did a &lt;a href=&quot;https://raibledesigns.com/rd/entry/my_marvelous_road_trip_to&quot;&gt;marvelous road trip to the Utah JUG&lt;/a&gt;, hitting Copper, Snowbird, Alta, and Steamboat along the way.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819585563_ebdf48a8d3_c.jpg&quot; title=&quot;Found 18&amp;quot; (46cm) freshies at Copper this morning! &amp;#x2603;&amp;#xFE0F;&amp;#x1F606;&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819585563/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819585563_ebdf48a8d3_q.jpg&quot; width=&quot;150&quot; alt=&quot;Found 18&amp;quot; (46cm) freshies at Copper this morning! &amp;#x2603;&amp;#xFE0F;&amp;#x1F606;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53818419557_948a507829_c.jpg&quot; title=&quot;Cruisin&apos; blues &amp;#x26F7;&amp;#xFE0F; at Snowbird before the Utah JUG meetup&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53818419557/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53818419557_948a507829_q.jpg&quot; width=&quot;150&quot; alt=&quot;Cruisin&apos; blues &amp;#x26F7;&amp;#xFE0F; at Snowbird before the Utah JUG meetup&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53818420652_2d5e917e74_c.jpg&quot; title=&quot;The mountains of #Alta&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53818420652/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53818420652_2d5e917e74_q.jpg&quot; width=&quot;150&quot; alt=&quot;The mountains of #Alta&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/53819339746_23858838c0_c.jpg&quot; title=&quot;#StoutTheSyncro made it to Steamboat!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819339746/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819339746_23858838c0_m.jpg&quot; width=&quot;240&quot; alt=&quot;#StoutTheSyncro made it to Steamboat!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819339931_204ef1a03e_c.jpg&quot; title=&quot;It&apos;s t-shirt weather at #Steamboat today! &amp;#x1F603;&amp;#x26F7;&amp;#xFE0F;&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819339931/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819339931_204ef1a03e_m.jpg&quot; width=&quot;240&quot; alt=&quot;It&apos;s t-shirt weather at #Steamboat today! &amp;#x1F603;&amp;#x26F7;&amp;#xFE0F;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We celebrated our final weekend of skiing with a tailgate in the parking lot at Mary Jane on Saturday and a bluebird day on Sunday.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53737170364_7cc4a9a328_c.jpg&quot; title=&quot;Early bird gets a prime parking spot! #SpringSkiing #MaryJane #GoNuggets&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53737170364_7cc4a9a328_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53737170364_7cc4a9a328_m.jpg&quot; width=&quot;240&quot; alt=&quot;Early bird gets a prime parking spot! #SpringSkiing #MaryJane #GoNuggets&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53736835131_a97f7a9ab0_c.jpg&quot; title=&quot;Spring skiing party crew! &amp;#x2764;&amp;#xFE0F;&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53736835131_a97f7a9ab0_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53736835131_a97f7a9ab0_m.jpg&quot; width=&quot;240&quot; alt=&quot;Spring skiing party crew! &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/53737033543_ffd6a5a15f_c.jpg&quot; title=&quot;Bluebird day on the last day of our ski season!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53737033543_ffd6a5a15f_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53737033543_ffd6a5a15f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Bluebird day on the last day of our ski season!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53736834656_f04f38463e_c.jpg&quot; title=&quot;Happy Kids at Trestle&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://live.staticflickr.com/65535/53736834656_f04f38463e_c.jpg&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53736834656_f04f38463e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Happy Kids at Trestle&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Now we&apos;re in the dawn of summer and I&apos;m excited for car show, mountain biking, golf, and rafting season. Hefe looked smashing at the VWs on the Green car show in May!
&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;It&amp;#39;s showtime at VWs on The Green! &amp;#x1F603; &lt;a href=&quot;https://twitter.com/hashtag/vwotg?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#vwotg&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/VG0QcEgvYF&quot;&gt;pic.twitter.com/VG0QcEgvYF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1792214775235002729?ref_src=twsrc%5Etfw&quot;&gt;May 19, 2024&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 especially like this photo I captured that afternoon.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819330156_726c1fdac4_c.jpg&quot; title=&quot;Hefe is ready for summer!&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819330156/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819330156_726c1fdac4.jpg&quot; width=&quot;500&quot; alt=&quot;Hefe is ready for summer!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We went rafting a few times on the Upper Colorado in June. On Father&apos;s Day weekend, the &lt;abbr title=&quot;Cubic Feet per Second&quot;&gt;CFS&lt;/abbr&gt; was above 5300!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819578283_e4c97396b4_c.jpg&quot; title=&quot;Rafting on the Upper Colorado for Father&apos;s Day&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819578283/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819578283_e4c97396b4_m.jpg&quot; width=&quot;240&quot; alt=&quot;Rafting on the Upper Colorado 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/53818437492_d7efca7dfb_c.jpg&quot; title=&quot;Father&apos;s Day Rafting on the UC&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53818437492/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53818437492_d7efca7dfb_m.jpg&quot; width=&quot;240&quot; alt=&quot;Father&apos;s Day Rafting on the UC&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/53819330631_b454fd401d_c.jpg&quot; title=&quot;Captain TMac&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819330631/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819330631_b454fd401d.jpg&quot; width=&quot;500&quot; alt=&quot;Captain TMac&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The mountain biking has been excellent in the high country and the views are magnificent.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819329686_8fa7fe5249_c.jpg&quot; title=&quot;Creekside in Fraser&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819329686/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819329686_8fa7fe5249.jpg&quot; width=&quot;500&quot; alt=&quot;Creekside in Fraser&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/53818411137_f0e126f93d_c.jpg&quot; title=&quot;Abbie and Gracie gazing at the view&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53818411137/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53818411137_f0e126f93d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Gracie gazing at the view&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53819577273_8d7712e332_c.jpg&quot; title=&quot;Nice view from the trail&quot; rel=&quot;lightbox[skiseason2023-24]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53819577273/in/album-72177720318306944/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53819577273_8d7712e332_m.jpg&quot; width=&quot;240&quot; alt=&quot;Nice view from the trail&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I &amp;#x2764;&amp;#xFE0F; Colorado! For more ski season photos, see my &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72177720318306944&quot;&gt;2023-24 Ski Season album on Flickr&lt;/a&gt;.
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/funemployment_2024</id>
        <title type="html">Funemployment 2024</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/funemployment_2024"/>
        <published>2024-04-30T11:02:06-06:00</published>
        <updated>2024-05-01T12:44:57-06:00</updated> 
        <category term="/General" label="General" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="unemployment" scheme="http://roller.apache.org/ns/tags/" />
        <category term="layoffs" scheme="http://roller.apache.org/ns/tags/" />
        <category term="funemployment" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;On February 1, I woke up to an unexpected email from my employer.&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;&amp;quot;Today, Okta made the decision to eliminate a number of positions across multiple organizations. Unfortunately, your position has been eliminated as part of this reduction.&amp;quot;&lt;br&gt;&lt;br&gt;Not exactly the kind of email you want to read when you first wake up. But, I&amp;#39;m excited for the future!&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1753070760237858957?ref_src=twsrc%5Etfw&quot;&gt;February 1, 2024&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 laughed out loud at first, then smiled and felt an overwhelming sense of freedom. I went through a wide range of emotions that morning, but despair was never one of them. As a high performer on my team, I did not expect to be laid off. However, looking back over the last several months, there were a few indicators that it might happen.&lt;/p&gt;
&lt;p&gt;
    I quickly realized the bright side of my situation:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;It was the middle of ski season, and&lt;/li&gt;
    &lt;li&gt;I had nothing to do.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
    I was laid off on a Thursday morning and was scheduled to leave for &lt;a href=&quot;https://jfokus.se/&quot;&gt;Jfokus&lt;/a&gt; that Saturday. I was supposed to do a workshop, a talk, and help at the Okta booth. Since my talks used Okta products and it&apos;d be weird to represent a company that just laid you off, I had to back out of the conference. It just didn&apos;t feel right.&lt;/p&gt;
&lt;p&gt;The reason I had nothing to do is all of the activities I did on my computer were Okta-related. I didn&apos;t even have a personal computer. I did all my work on the company laptop and all of my open source contributions had a relationship to my work.
&lt;/p&gt;
&lt;p&gt;I received many inquiries from my tweet above and &lt;a href=&quot;https://www.linkedin.com/posts/mraible_today-okta-made-the-decision-to-eliminate-activity-7158836938752290817-sbSd&quot;&gt;my LinkedIn post with the same message&lt;/a&gt;. I told everyone I was going to take a couple weeks to process things and skiing was my top priority. I&apos;ve been unemployed in the past, but I never received any sort of severance, let alone one that lasted for &lt;em&gt;months&lt;/em&gt;. I knew that this was the opportunity of a lifetime. Funemployment is the condition of a person who takes advantage of being out of a job to have the time of their life. This is my funemployment story.&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;On February 1, I woke up to an unexpected email from my employer.&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;&amp;quot;Today, Okta made the decision to eliminate a number of positions across multiple organizations. Unfortunately, your position has been eliminated as part of this reduction.&amp;quot;&lt;br&gt;&lt;br&gt;Not exactly the kind of email you want to read when you first wake up. But, I&amp;#39;m excited for the future!&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1753070760237858957?ref_src=twsrc%5Etfw&quot;&gt;February 1, 2024&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 laughed out loud at first, then smiled and felt an overwhelming sense of freedom. I went through a wide range of emotions that morning, but despair was never one of them. As a high performer on my team, I did not expect to be laid off. However, looking back over the last several months, there were a few indicators that it might happen.&lt;/p&gt;
&lt;p&gt;
    I quickly realized the bright side of my situation:
&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;It was the middle of ski season, and&lt;/li&gt;
    &lt;li&gt;I had nothing to do.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
    I was laid off on a Thursday morning and was scheduled to leave for &lt;a href=&quot;https://jfokus.se/&quot;&gt;Jfokus&lt;/a&gt; that Saturday. I was supposed to do a workshop, a talk, and help at the Okta booth. Since my talks used Okta products and it&apos;d be weird to represent a company that just laid you off, I had to back out of the conference. It just didn&apos;t feel right.&lt;/p&gt;
&lt;p&gt;The reason I had nothing to do is all of the activities I did on my computer were Okta-related. I didn&apos;t even have a personal computer. I did all my work on the company laptop and all of my open source contributions had a relationship to my work.
&lt;/p&gt;
&lt;p&gt;I received many inquiries from my tweet above and &lt;a href=&quot;https://www.linkedin.com/posts/mraible_today-okta-made-the-decision-to-eliminate-activity-7158836938752290817-sbSd&quot;&gt;my LinkedIn post with the same message&lt;/a&gt;. I told everyone I was going to take a couple weeks to process things and skiing was my top priority. I&apos;ve been unemployed in the past, but I never received any sort of severance, let alone one that lasted for &lt;em&gt;months&lt;/em&gt;. I knew that this was the opportunity of a lifetime. Funemployment is the condition of a person who takes advantage of being out of a job to have the time of their life. This is my funemployment story.&lt;/p&gt;
&lt;p&gt;First, I headed to Winter Park to stay at our Ski Chalet. There were several powder days and a few friends that joined in the festivities.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682110667_daf96871d9_c.jpg&quot; title=&quot;Powder Day!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682110667/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682110667_daf96871d9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Powder Day!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682973576_d2437c6351_c.jpg&quot; title=&quot;Fun day with the Fesser&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682973576/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682973576_d2437c6351_q.jpg&quot; width=&quot;150&quot; alt=&quot;Fun day with the Fesser&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683428795_f836b960d9_c.jpg&quot; title=&quot;Bluebird day!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683428795/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683428795_f836b960d9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Bluebird day!&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/53683428160_0d68fb068d_c.jpg&quot; title=&quot;Can&apos;t get enough of Eagle Wind&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683428160/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683428160_0d68fb068d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Can&apos;t get enough of Eagle Wind&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682108802_c45477d05a_c.jpg&quot; title=&quot;Sunset over Byers Peak&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682108802/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682108802_c45477d05a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sunset over Byers Peak&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/53683338674_8657f61671_c.jpg&quot; title=&quot;Beautiful views while skijoring for the first time today!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683338674/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683338674_8657f61671_m.jpg&quot; width=&quot;240&quot; alt=&quot;Beautiful views while skijoring for the first time today!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682107307_b841ee178e_c.jpg&quot; title=&quot;Powder Day!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682107307/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682107307_b841ee178e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Powder Day!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;I returned home that Friday to attend a local Chi Phi Fraternity reunion in downtown Denver.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683197213_f14859be72_c.jpg&quot; title=&quot;Chi Phi Reunion&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683197213/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683197213_f14859be72.jpg&quot; width=&quot;500&quot; alt=&quot;Chi Phi Reunion&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Then, Trish and I enjoyed a Pitbull concert at Ball Arena and I sent back my laptop and stickers.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53686522397_da95e25b8b_c.jpg&quot; title=&quot;All dressed up for Pitbull!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53686522397/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53686522397_da95e25b8b_m.jpg&quot; width=&quot;240&quot; alt=&quot;All dressed up for Pitbull!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53687614368_6817ea8fe8_c.jpg&quot; title=&quot;Perfect seats in 1st row, 2nd level&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53687614368/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53687614368_6817ea8fe8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Perfect seats in 1st row, 2nd level&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/53683196903_d6e3d6cd2e_c.jpg&quot; title=&quot;I hope you enjoy the stickers!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683196903/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683196903_d6e3d6cd2e.jpg&quot; width=&quot;500&quot; alt=&quot;I hope you enjoy the stickers!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;My parents came to visit for 10 days in mid-February. We hung out with Abbie and Jack a few nights, including a night at &lt;a href=&quot;https://www.casabonitadenver.com/&quot;&gt;Casa Bonita&lt;/a&gt;, the self-proclaimed &quot;Greatest Restaurant in the World!&quot;&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682970236_cd30b02a8c_c.jpg&quot; title=&quot;Dinner with the kids in Boulder&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682970236/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682970236_cd30b02a8c.jpg&quot; width=&quot;500&quot; alt=&quot;Dinner with the kids in Boulder&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/53686522082_417d62151d_c.jpg&quot; title=&quot;Casa Bonita with the fam!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53686522082/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53686522082_417d62151d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Casa Bonita with the fam!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53687613428_d276b12bbd_c.jpg&quot; title=&quot;Fun times with family&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53687613428/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53687613428_d276b12bbd_m.jpg&quot; width=&quot;240&quot; alt=&quot;Fun times with family&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/53682969516_aa574a9c5f_c.jpg&quot; title=&quot;Cliff Divers&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682969516/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682969516_aa574a9c5f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Cliff Divers&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682969431_6b84d75b4f_c.jpg&quot; title=&quot;Fun face painting&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682969431/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682969431_6b84d75b4f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Fun face painting&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/53683196058_5a28303efc_c.jpg&quot; title=&quot;Friday lunch!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683196058/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683196058_5a28303efc_m.jpg&quot; width=&quot;240&quot; alt=&quot;Friday lunch!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683336384_ccddcf46f7_c.jpg&quot; title=&quot;CU Men&apos;s Basketball game&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683336384/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683336384_ccddcf46f7_m.jpg&quot; width=&quot;240&quot; alt=&quot;CU Men&apos;s Basketball game&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;I got a couple more powder days in at the end of February. &lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683195123_27c567fc36_c.jpg&quot; title=&quot;Happy Matt&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683195123/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683195123_27c567fc36_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Matt&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683423705_9ff8ac6aa7_c.jpg&quot; title=&quot;A quiet evening at the Ski Chalet&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683423705/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683423705_9ff8ac6aa7_q.jpg&quot; width=&quot;150&quot; alt=&quot;A quiet evening at the Ski Chalet&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682104822_8bd34f7e42_c.jpg&quot; title=&quot;Another bluebird day with Ryan!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682104822/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682104822_8bd34f7e42_q.jpg&quot; width=&quot;150&quot; alt=&quot;Another bluebird day with Ryan!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;My sister proposed we go to Spring Training in Arizona and I leapt at the opportunity. I&apos;d never been before and it seemed like fun. I &lt;em&gt;highly&lt;/em&gt; recommend it if you&apos;ve never been, especially the one in Scottsdale, Arizona. There are several baseball games every day, they&apos;re all within driving distance, and the weather is gorgeous.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683335419_cb1ab6f732_c.jpg&quot; title=&quot;My first time to Spring Training!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683335419/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683335419_cb1ab6f732_q.jpg&quot; width=&quot;150&quot; alt=&quot;My first time to Spring Training!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53682968346_c4b86b4c3e_c.jpg&quot; title=&quot;Cubs Field in Scottsdale, Arizona&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682968346/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682968346_c4b86b4c3e_q.jpg&quot; width=&quot;150&quot; alt=&quot;Cubs Field in Scottsdale, Arizona&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683334849_2266909a30_c.jpg&quot; title=&quot;Beautiful Botanical Gardens&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683334849/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683334849_2266909a30_q.jpg&quot; width=&quot;150&quot; alt=&quot;Beautiful Botanical Gardens&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/53683194418_f04d23745b_c.jpg&quot; title=&quot;Go Rockies!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683194418/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683194418_f04d23745b.jpg&quot; width=&quot;500&quot; alt=&quot;Go Rockies!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Before flying home on March 5th, I made sure to announce my plans for the rest of the month. All these trips had been planned for months, except for Spring Training.
&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;Hello, March!&lt;br&gt;&lt;br&gt;&amp;#x26BE;&amp;#xFE0F;? Spring Training in Arizona with my sister&lt;br&gt;&amp;#x26F7;&amp;#xFE0F;? Celebrating a friend&#8217;s birthday in Vermont&lt;br&gt;&amp;#x1F334; Visiting &lt;a href=&quot;https://twitter.com/TrishPhoto?ref_src=twsrc%5Etfw&quot;&gt;@TrishPhoto&lt;/a&gt;&#8217;s family in Florida&lt;br&gt;&amp;#x2600;&amp;#xFE0F; Spring Break with friends in Cabo San Lucas&lt;br&gt;&amp;#x2603;&amp;#xFE0F;  Spring Break Part II in Winter Park and Steamboat&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1765063903447527594?ref_src=twsrc%5Etfw&quot;&gt;March 5, 2024&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
My friend Chris Morse&apos;s birthday at Sugarbush was outstanding. I expected a bit more snow, but we had fun anyway.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683333569_170841090f_c.jpg&quot; title=&quot;Sugarbush: where you have to stay on the runs for the snow&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683333569/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683333569_170841090f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sugarbush: where you have to stay on the runs for the snow&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683192573_86524688c2_c.jpg&quot; title=&quot;Happy 50th, Chris!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683192573/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683192573_86524688c2_m.jpg&quot; width=&quot;240&quot; alt=&quot;Happy 50th, Chris!&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/53682965591_befc47111f_c.jpg&quot; title=&quot;Apres Ski&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682965591/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682965591_befc47111f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Apres Ski&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683192313_6cf4b01982_c.jpg&quot; title=&quot;Chris and Julie &amp;#x2764;&amp;#xFE0F;&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683192313/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683192313_6cf4b01982_m.jpg&quot; width=&quot;240&quot; alt=&quot;Chris and Julie &amp;#x2764;&amp;#xFE0F;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Then, I joined Trish in Naples, Florida for St. Paddy&apos;s Day with her family.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53686520152_8a6f4f4835_c.jpg&quot; title=&quot;Balcony views&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53686520152/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53686520152_8a6f4f4835.jpg&quot; width=&quot;500&quot; alt=&quot;Balcony views&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/53687389621_76ecf8fd42_c.jpg&quot; title=&quot;Ready for St. Paddy&apos;s Day Parade&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53687389621/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53687389621_76ecf8fd42_m.jpg&quot; width=&quot;240&quot; alt=&quot;Ready for St. Paddy&apos;s Day Parade&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53686519872_b4965365bc_c.jpg&quot; title=&quot;Parade Crew&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53686519872/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53686519872_b4965365bc_m.jpg&quot; width=&quot;240&quot; alt=&quot;Parade Crew&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;We teamed up with Bruce and Janene Snyder for Spring Break. They&apos;re empty nesters like us, our kids are both at CU, and shared the same Spring Break. When we originally planned our trip to Cabo San Lucas, we expected our kids might join us. We didn&apos;t mind going without them when they declined.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683190143_ae15117c0d_c.jpg&quot; title=&quot;Spring Break in Cabo!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683190143/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683190143_ae15117c0d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Spring Break in Cabo!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53686519387_f3eaa35b6f_c.jpg&quot; title=&quot;Spring Break in Cabo!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53686519387/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53686519387_f3eaa35b6f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Spring Break in Cabo!&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/53687388546_2e3cb27872_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53687388546/in/album-72177720316530125/&quot; title=&quot;Spring Break crew at Todos Santos&quot; rel=&quot;lightbox[funemployment2024]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53687388546_2e3cb27872.jpg&quot; width=&quot;500&quot; alt=&quot;Spring Break crew at Todos Santos&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/53686517407_5b11502777_c.jpg&quot; title=&quot;We&apos;re on a boat!&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53686517407/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53686517407_5b11502777_z.jpg&quot; width=&quot;500&quot; alt=&quot;We&apos;re on a boat!&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/53682962131_84fc3a7193_c.jpg&quot; title=&quot;View from Jazz on the Rocks at Sunset Point&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53682962131/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53682962131_84fc3a7193.jpg&quot; width=&quot;500&quot; alt=&quot;View from Jazz on the Rocks at Sunset Point&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;After a week in Cabo, we returned to Colorado and spent the weekend skiing at Winter Park and Steamboat.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53687387176_30bbd2c0f8_c.jpg&quot; title=&quot;Spring Break continues on the slopes&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53687387176/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53687387176_30bbd2c0f8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Spring Break continues on the slopes&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53683417310_093291e5f9_c.jpg&quot; title=&quot;Skiing in Steamboat with Janene and Trish&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683417310/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683417310_093291e5f9_m.jpg&quot; width=&quot;240&quot; alt=&quot;Skiing in Steamboat with Janene and Trish&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/53683187883_d8f897dbf6_c.jpg&quot; title=&quot;Besties&quot; rel=&quot;lightbox[funemployment2024]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53683187883/in/album-72177720316530125/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53683187883_d8f897dbf6.jpg&quot; width=&quot;500&quot; alt=&quot;Besties&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/72177720316530125&quot;&gt;Funemployment 2024&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
    April arrived quickly and I aggressively started looking for my next gig. By aggressively, I mean I updated my resume and started applying to jobs the old-fashioned way. I haven&apos;t needed a resume since 2007. It&apos;s nostalgic to look back at the &lt;a href=&quot;https://raibledesigns.com/MattRaible_Resume.pdf&quot;&gt;last one I used in 2007&lt;/a&gt;. For the last decade and a half, I&apos;ve relied on my reputation and &lt;a href=&quot;https://linkedin.com/in/mraible&quot;&gt;LinkedIn profile&lt;/a&gt;. You can find my &lt;a href=&quot;https://raibledesigns.com/MattRaible-Resume.pdf&quot;&gt;current resume here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
    Throughout April, I&apos;ve been talking with several companies. I also attended &lt;a href=&quot;https://devnexus.com/&quot;&gt;Devnexus&lt;/a&gt; and did a road trip to speak at the Utah JUG. Both trips deserve their own blog posts, so watch for those soon. In the meantime, if you&apos;re hiring exceptional software engineers or developer advocates, I&apos;d love to chat!
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2023_a_year_in_review</id>
        <title type="html">2023 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2023_a_year_in_review"/>
        <published>2024-01-06T18:16:02-07:00</published>
        <updated>2024-01-07T23:55:39-07:00</updated> 
        <category term="/General" label="General" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2023" 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/" />
        <summary type="html">&lt;p&gt;
    2023 started with a &lt;a href=&quot;https://raibledesigns.com/rd/entry/celebrating_love_in_the_philippines&quot;&gt;celebration of love in the Philippines&lt;/a&gt;. Trish and I traveled with friends to El Nido and Manila to celebrate their 25th wedding anniversary. It was a two-week trip that filled our souls with lasting memories.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/52625567410_bd516a31cb_c.jpg&quot; title=&quot;Sunset by Trish McGinity&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52625567410/in/album-72177720305227549/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52625567410_bd516a31cb.jpg&quot; width=&quot;240&quot; alt=&quot;Sunset by Trish McGinity&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/52625621583_c7238c2280_c.jpg&quot; title=&quot;The Whole Crew&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52625621583/in/album-72177720305227549/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52625621583_c7238c2280.jpg&quot; width=&quot;240&quot; alt=&quot;The Whole Crew&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;2023 was a milestone year for our family. It&apos;s the year Jack graduated from high school!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/52928337481_ca4c45ac59_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52928337481/in/album-72177720308591927/&quot; title=&quot;It takes a village&quot; rel=&quot;lightbox[yearinreview2023]&quot; &gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52928337481_ca4c45ac59.jpg&quot; width=&quot;500&quot; alt=&quot;It takes a village&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Then, the Denver Nuggets won the NBA Championship, Jack started college at CU, and we became empty nesters. It was quite the year!&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
    2023 started with a &lt;a href=&quot;https://raibledesigns.com/rd/entry/celebrating_love_in_the_philippines&quot;&gt;celebration of love in the Philippines&lt;/a&gt;. Trish and I traveled with friends to El Nido and Manila to celebrate their 25th wedding anniversary. It was a two-week trip that filled our souls with lasting memories.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/52625567410_bd516a31cb_c.jpg&quot; title=&quot;Sunset by Trish McGinity&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52625567410/in/album-72177720305227549/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52625567410_bd516a31cb.jpg&quot; width=&quot;240&quot; alt=&quot;Sunset by Trish McGinity&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/52625621583_c7238c2280_c.jpg&quot; title=&quot;The Whole Crew&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52625621583/in/album-72177720305227549/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52625621583_c7238c2280.jpg&quot; width=&quot;240&quot; alt=&quot;The Whole Crew&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;2023 was a milestone year for our family. It&apos;s the year Jack graduated from high school!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/52928337481_ca4c45ac59_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52928337481/in/album-72177720308591927/&quot; title=&quot;It takes a village&quot; rel=&quot;lightbox[yearinreview2023]&quot; &gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52928337481_ca4c45ac59.jpg&quot; width=&quot;500&quot; alt=&quot;It takes a village&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Then, the Denver Nuggets won the NBA Championship, Jack started college at CU, and we became empty nesters. It was quite the year!&lt;/p&gt;
&lt;p&gt;
    From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2022_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 only have one goal for 2023: &lt;strong&gt;be present&lt;/strong&gt;.
&lt;/blockquote&gt;
&lt;p&gt;
    I live where I work, so this was easy enough on a physical level. However, I was forced to be even more present in Q4 of the year. My manager asked me to step up and be more present on my team in October. Then, sickness struck me down in mid-November after seven weeks of travel, allowing for some quality one-on-one time with Trish.
&lt;/p&gt;
&lt;p&gt; I will look back on 2023 using the following categories.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2023_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/2023_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;//raibledesigns.com/rd/entry/2023_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/2023_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/2023_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/2023_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/2023_a_year_in_review#2024&quot;&gt;2024&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;
&lt;p&gt;
    The &lt;a href=&quot;https://raibledesigns.com/rd/entry/farewell_to_the_2022_2023&quot;&gt;ski season was excellent&lt;/a&gt; with trips to Winter Park, Devil&apos;s Thumb Ranch, Crested Butte, and Steamboat.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53029335594_8c118e6d83_c.jpg&quot; title=&quot;Cross-country with the pups at Devil&apos;s Thumb Ranch&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53029335594/in/album-72177720309602725/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53029335594_8c118e6d83.jpg&quot; width=&quot;500&quot; alt=&quot;Cross-country with the pups at Devil&apos;s Thumb Ranch&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We celebrated my sister&apos;s St. Paddy&apos;s Day birthday with a week in New Orleans. We visited my parents in Montana for Mother&apos;s Day.
&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;Recharging in the backwoods of Montana with family. Started the day with coffee, mimosas, and huckleberry pancakes. &amp;#x2615;&amp;#xFE0F;&amp;#x1F942;&amp;#x1F60B;&lt;br&gt;&lt;br&gt;Happy Mother&amp;#39;s Day to all the incredible moms out there! &amp;#x2764;&amp;#xFE0F;? &lt;a href=&quot;https://t.co/sjmChuzNpo&quot;&gt;pic.twitter.com/sjmChuzNpo&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1657812856707112960?ref_src=twsrc%5Etfw&quot;&gt;May 14, 2023&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 jumped for joy during Jack&apos;s High School Graduation at the end of May!
&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;We celebrated our son Jack&amp;#39;s high school graduation this week and had a fabulous time with family and friends. Here are a few of my favorite photos. &lt;br&gt;&lt;br&gt;See the full album on Flickr with Julie and Trish&amp;#39;s awesome photos: &lt;a href=&quot;https://t.co/XSoUZnjOSk&quot;&gt;https://t.co/XSoUZnjOSk&lt;/a&gt;&lt;br&gt;&lt;br&gt;Congratulations, Jack! &amp;#x1F973; &lt;a href=&quot;https://t.co/1Ea1LZrFML&quot;&gt;pic.twitter.com/1Ea1LZrFML&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1662256516798324738?ref_src=twsrc%5Etfw&quot;&gt;May 27, 2023&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
    The Nuggets playoff run was magical, and our half-season tickets came in quite handy. The Denver Nuggets won the NBA Championship on June 12th. Crying from joy is a wonderful feeling. &amp;#x1F979;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/53029154966_aec0a137ed_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53029154966/&quot; title=&quot;It&amp;#x27;s concert season!&quot; rel=&quot;lightbox[yearinreview2023]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53029154966_aec0a137ed.jpg&quot; width=&quot;500&quot; alt=&quot;It&amp;#x27;s concert season!&quot; style=&quot;border: 1px solid black&quot;/&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I took a long summer vacation for the fourth year in a row. Thanks, Okta&apos;s unlimited vacation policy!
&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;In 24 hours, I&apos;ll be starting my summer vacation. &lt;a
            href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; has an unlimited vacation policy, and I&amp;#39;m
        taking full advantage with a month off! &amp;#x1F603;&lt;br&gt;&lt;br&gt;What will I do?&lt;br&gt;&lt;br&gt;&amp;#x26F3;&amp;#xFE0F; Golf, raft, and
        bike&lt;br&gt;&amp;#x1F6F6; Live down by the river in a van&lt;br&gt;&amp;#x26F0;&amp;#xFE0F; Shoot the breeze in Montana&lt;br&gt;&amp;#x1F30A;
        Tour Cape Cod&lt;a href=&quot;https://twitter.com/hashtag/LifeAtOkta?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#LifeAtOkta&lt;/a&gt;
    &lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
            href=&quot;https://twitter.com/mraible/status/1679629527985577984?ref_src=twsrc%5Etfw&quot;&gt;July 13, 2023&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 wrote about my summer vacation adventures in &lt;a href=&quot;https://raibledesigns.com/rd/entry/summer_2023_colorado_montana_and&quot;&gt;Summer 2023: Colorado, Montana, and Cape Cod&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267368836_71d5de19c6_c.jpg&quot; title=&quot;Canoeing on Holland Lake&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267368836/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267368836_71d5de19c6.jpg&quot; width=&quot;500&quot; alt=&quot;Canoeing on Holland Lake&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/53267719159_2e48a09ba9_c.jpg&quot; title=&quot;Beautiful ladies!&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267719159/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267719159_2e48a09ba9.jpg&quot; width=&quot;500&quot; alt=&quot;Beautiful ladies!&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/53266475262_3dd011267d_c.jpg&quot; title=&quot;Cape Cod Sunset&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53266475262/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53266475262_3dd011267d.jpg&quot; width=&quot;500&quot; alt=&quot;Cape Cod 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/53266470672_5eff20187a_c.jpg&quot; title=&quot;So glad to have these people in my life&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53266470672/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53266470672_5eff20187a.jpg&quot; width=&quot;500&quot; alt=&quot;So glad to have these people in my life&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Jack started college at the University of Colorado on &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_jack12&quot;&gt;his birthday&lt;/a&gt;. We loved the Coach Prime and CU football experience in September, while the Broncos were terrible. When CU started sucking at halftime during the Stanford game, the teams seemed to swap fates. We relished in the Broncos winning streak in October and November as our CU football fandom waned.
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie17&quot;&gt;Abbie turned 21&lt;/a&gt; in early November. We celebrated at the CU vs. Oregon State game and again in Las Vegas the following weekend.
&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/Czh3cxQhSJE/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;14&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/Czh3cxQhSJE/?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&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;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&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/Czh3cxQhSJE/?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; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by Matt Raible (@vwsforlife)&lt;/a&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;p&gt;The last months of the year were dominated by real estate transactions. We &lt;a href=&quot;https://raibledesigns.com/rd/entry/goodbye_du_house_thanks_for&quot;&gt;sold our rental house&lt;/a&gt; near the University of Denver in early November.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53349729900_a86e6fe011_c.jpg&quot; title=&quot;Thanks for all the memories!&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53349729900/in/album-72177720312862730/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53349729900_a86e6fe011.jpg&quot; width=&quot;500&quot; alt=&quot;Thanks for all the memories!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;And we bought a new &lt;em&gt;ski chalet&lt;/em&gt; near Winter Park in December. It has mountain views with a river nearby and close proximity to many miles of mountain bike trails. We plan to rent it most of the time. We&apos;ve experienced many misty-eyed moments of joy in it already. &lt;/p&gt;
&lt;p&gt;We spent &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72177720313692774/&quot;&gt;Christmas in Florida&lt;/a&gt; with Abbie, Jack, and Trish&apos;s whole family. The sunsets were gorgeous.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53427687570_ec31c44f57_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53427687570/in/album-72177720313692774/&quot; title=&quot;Pelican Bay Sunset&quot; rel=&quot;lightbox[yearinreview2023]&quot; &gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53427687570_ec31c44f57.jpg&quot; width=&quot;500&quot; alt=&quot;Pelican Bay Sunset&quot; style=&quot;border: 1px solid black;&quot;/&gt;&lt;/a&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;We gave Stout the Syncro a lot of rest this year. We bought a relatively new Chevy Suburban as a new tow vehicle for our whitewater rafts. We celebrated our 10-year anniversary by rafting on the Upper Colorado River with both vehicles.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53299465568_fd63d09d19_c.jpg&quot; title=&quot;Rigs for Pirates of the Pumphouse&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53299465568/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53299465568_fd63d09d19_m.jpg&quot; width=&quot;240&quot; alt=&quot;Rigs for Pirates of the Pumphouse&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53299589614_735d6fbc66_c.jpg&quot; title=&quot;10 years!&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53299589614/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53299589614_735d6fbc66_m.jpg&quot; width=&quot;240&quot; alt=&quot;10 years!&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/53299465573_32bfb0b34d_c.jpg&quot; title=&quot;Pebbles got some new tubes!&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53299465573/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53299465573_32bfb0b34d.jpg&quot; width=&quot;500&quot; alt=&quot;Pebbles got some new tubes!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Hefe the Bus purred along with no issues. He won runner-up in his class this year at the Colorado Bug-In!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267374776_e7a36bd0d1_c.jpg&quot; title=&quot;Back in time for the Bug-In at Bandimere!&quot; rel=&quot;lightbox[yearinreview2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267374776/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267374776_e7a36bd0d1.jpg&quot; width=&quot;500&quot; alt=&quot;Back in time for the Bug-In at Bandimere!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&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://developer.auth0.com&quot;&gt;Okta&lt;/a&gt;. My title is officially &quot;Developer Advocate Architect&quot; and all the code
    I write is open source.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
    This year, my main focus was leading the Java Community team as part of Auth0 by Okta Developer Relations. I worked with &lt;a href=&quot;https://twitter.com/deepu105&quot;&gt;Deepu K Sasidharan&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/indiepopart&quot;&gt;Jimena Garbarino&lt;/a&gt; to come up with ideas, write blog posts, and author tutorials for the &lt;a href=&quot;https://developer.auth0.com/&quot;&gt;Auth0 Developer Center&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    My Americas Developer Relations team has one main function: cultivating relationships with developers via events. Personally, I like creating content more than events, yet I&apos;ve also found they go hand-in-hand. The content I create often gets turned into conference talks, so I find it important to create new content if I want new talks. I mention this because it&apos;s not my main job to produce content. There&apos;s another team that does content, but they currently have no Java specialists.
&lt;/p&gt;
&lt;p&gt;I published two blog posts on the &lt;a href=&quot;https://auth0.com/blog/&quot;&gt;Auth0 blog&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://auth0.com/blog/spring-boot-angular-crud/&quot;&gt;Build a Beautiful CRUD App with Spring Boot and Angular&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://auth0.com/blog/java-spring-boot-microservices/&quot;&gt;Java Microservices with Spring Boot and Spring Cloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    We used the microservices post as the basis for Deepu and my &lt;a href=&quot;https://a.to/devoxx&quot;&gt;Securing Spring Boot Microservices with OAuth and OpenID Connect workshop&lt;/a&gt; at Devoxx Belgium.
&lt;/p&gt;
&lt;p&gt;On the &lt;a href=&quot;https://youtube.com/oktadev&quot;&gt;OktaDev YouTube Channel&lt;/a&gt;, I created four screencasts (down from 12 in 2022). &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=haTQ1xJKQQ8&quot;&gt;Micro Frontends for Java Microservices&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=8v2m2eoKVnM&quot;&gt;Build a Simple CRUD App with Spring Boot and Vue.js&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=UsXcWXg216E&quot;&gt;Getting Started with Spring Boot and SAML&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=HHJXAtR1tSY&quot;&gt;Build a Beautiful CRUD App using Spring Boot and Angular&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My most popular video was Spring Boot + Vue, with 8.6K views.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/8v2m2eoKVnM?si=FUYyLpJoRkorIlqX&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p style=&quot;font-style: italic&quot;&gt;
    My &lt;a href=&quot;https://www.youtube.com/watch?v=B5tcZoNyqGI&quot;&gt;Use React and Spring Boot to Build a Simple CRUD App&lt;/a&gt; screencast has 22K views, but it was published on December 29, 2022, so it doesn&apos;t count for 2023.
&lt;/p&gt;
&lt;p&gt;While at Devoxx Belgium, Deepu and I interviewed a bunch of Java community legends.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/wIVibsFaKR0&quot;&gt;Interview: James Gosling&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/isfvGPMgCq8&quot;&gt;Interview: Stephan Janssen&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/LpLsamqjlME&quot;&gt;What is your biggest gripe about Java?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/weFvmiggH8U&quot;&gt;How many times have you been to Devoxx?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/Jj_OcoIw3-g&quot;&gt;What excites you about the future of programming?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/fhW36C4Yk_o&quot;&gt;Do you know the most common password?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&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;We had a lot of fun interviewing &lt;a href=&quot;https://twitter.com/errcraft?ref_src=twsrc%5Etfw&quot;&gt;@errcraft&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/Stephan007?ref_src=twsrc%5Etfw&quot;&gt;@Stephan007&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/hashtag/Devoxx?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Devoxx&lt;/a&gt; Belgium. &amp;#x1F929; &lt;a href=&quot;https://t.co/XtIij77YI8&quot;&gt;pic.twitter.com/XtIij77YI8&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1710728209409687951?ref_src=twsrc%5Etfw&quot;&gt;October 7, 2023&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 did a couple more interviews with the OpenFGA team at KubeCon.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/FfxoRI2JqyQ&quot;&gt;Interview: Jonathan Whitaker on OpenFGA (Fine Grained Authorization)&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/shorts/DgGWpfV8TsA&quot;&gt;Interview: Andres Aguiar What is OpenFGA?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I updated and released new versions of the JHipster and Angular Mini-Books with the help of InfoQ and awesome tech editors.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v7&quot;&gt;The JHipster Mini-Book v7.0 Released!&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/the_angular_mini_book_3&quot;&gt;The Angular Mini-Book 3.0 is now available!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;InfoQ allows publishing them on other sites after six months, so they&apos;re both available online at &lt;a href=&quot;https://jhipster-book.org&quot;&gt;jhipster-book.org&lt;/a&gt; and &lt;a href=&quot;https://angular-book.org&quot;&gt;angular-book.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;
    According to TripIt, I took 21 trips to 37 cities in eight countries. Nine trips were work-related; the rest involved traveling to see family or attending Celebration of Life events. That&apos;s three fewer trips than in 2022, and I had 109 days on the road (-14 from 2022). United 1K was enjoyed; I did not qualify for it in 2024.&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://speakerdeck.com/mraible&quot;&gt;My Speaker Deck profile&lt;/a&gt; shows 18 presentations at 17 events. Thirteen of
    those were in person. I also attended KubeCon to help the OpenFGA project. My most-viewed presentation was &lt;a href=&quot;https://speakerdeck.com/mraible/comparing-native-java-rest-api-frameworks-chicago-jug-2023&quot;&gt;Comparing Native Java REST API Frameworks&lt;/a&gt; from the Chicago JUG in August. It had 1.2K views.
&lt;/p&gt;
&lt;table style=&quot;margin: -10px auto&quot;&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
        &lt;td style=&quot;vertical-align: top&quot;&gt;
            &lt;ol&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/boulderjavausersgroup/&quot;&gt;Boulder JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.djug.org/&quot;&gt;Denver JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://tanzu.vmware.com/developer/tv/golden-path/9/&quot;&gt;The Golden Path to SpringOne&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=z2Bt971k1EE&quot;&gt;IntelliJ IDEA LiveStream&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://extra.codemotion.com/live-conference-madrid-2023/&quot;&gt;Codemotion Madrid&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://www.meetup.com/omahajava/&quot;&gt;Omaha JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://kcjug.github.io/&quot;&gt;Kansas City JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://2023.europe.jcon.one/&quot;&gt;JCON Europe&lt;/a&gt;&lt;/li&gt;
                
            &lt;/ol&gt;
        &lt;/td&gt;
        &lt;td style=&quot;vertical-align: top&quot;&gt;
            &lt;ol start=&quot;10&quot;&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.meetup.com/chicagojug/&quot;&gt;Chicago 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://www.meetup.com/phillyjug/&quot;&gt;Philly JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://gsjug.org/&quot;&gt;Garden State JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/javasig/&quot;&gt;NY Java SIG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/&quot;&gt;KubeCon + CloudNativeCon&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/sfjava/&quot;&gt;San Francisco JUG&lt;/a&gt;&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
    While the Midwest and Northeast JUG tours were a lot of fun, the highlight of the year was interviewing James Gosling at Devoxx Belgium.
&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;Digging into all things &lt;a href=&quot;https://twitter.com/java?ref_src=twsrc%5Etfw&quot;&gt;@Java&lt;/a&gt; with the founder himself, James Gosling! &lt;br&gt;&lt;br&gt;Developer Advocate &lt;a href=&quot;https://twitter.com/mraible?ref_src=twsrc%5Etfw&quot;&gt;@mraible&lt;/a&gt; had an insightful chat covering &lt;a href=&quot;https://twitter.com/Devoxx?ref_src=twsrc%5Etfw&quot;&gt;@Devoxx&lt;/a&gt;, Java and everything in between! &amp;#x1F680; &lt;a href=&quot;https://t.co/2pfRIlZVhi&quot;&gt;pic.twitter.com/2pfRIlZVhi&lt;/a&gt;&lt;/p&gt;&amp;mdash; OktaDev (@oktadev) &lt;a href=&quot;https://twitter.com/oktadev/status/1729201645521694790?ref_src=twsrc%5Etfw&quot;&gt;November 27, 2023&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 id=&quot;community&quot;&gt;Community&lt;/h3&gt;
&lt;p&gt;
    We stopped live-streaming &lt;a href=&quot;http://www.djug.org/&quot;&gt;Denver JUG&lt;/a&gt; meetups because we wanted to encourage folks to join us in person and grow our community. We&apos;re grateful to the folks at &lt;a href=&quot;https://www.thriveworkplace.com/&quot;&gt;Thrive Workplace&lt;/a&gt; for donating their space. We hope to start meeting at their new downtown location near Union Station sometime this year.
&lt;/p&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;
    I continued to maintain &lt;a href=&quot;https://github.com/oktadev/schematics&quot;&gt;OktaDev Schematics&lt;/a&gt; in 2023. The project had four releases. According to &lt;a href=&quot;https://npm-stat.com/charts.html?package=%40oktadev%2Fschematics&amp;from=2023-01-01&amp;to=2023-12-31&quot;&gt;npm-stat.com&lt;/a&gt;,
    it had ~42K downloads in 2023 (-20K from 2022).
&lt;/p&gt;
&lt;p&gt;I updated my &lt;a href=&quot;https://github.com/mraible/ng-demo/&quot;&gt;Bare Bones Angular tutorial&lt;/a&gt; for Angular 17.&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;I updated my Bare Bones &amp;#x1F9B4; Angular tutorial to use &lt;a href=&quot;https://twitter.com/hashtag/Angular?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Angular&lt;/a&gt; 17. &lt;br&gt;&lt;br&gt;?? &lt;a href=&quot;https://t.co/7fsyzOOaNP&quot;&gt;https://t.co/7fsyzOOaNP&lt;/a&gt;&lt;br&gt;&lt;br&gt;It includes:&lt;br&gt;&lt;br&gt;&amp;#x2705; New syntax for control flow&lt;br&gt;&amp;#x2705; Standalone components&lt;br&gt;&amp;#x2705; Unit, e2e, and CI testing&lt;br&gt;&amp;#x2728; Bonus: Angular Material, Bootstrap, and &lt;a href=&quot;https://twitter.com/auth0?ref_src=twsrc%5Etfw&quot;&gt;@auth0&lt;/a&gt;&lt;br&gt;&lt;br&gt;I hope you find it useful!&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1731781577560981662?ref_src=twsrc%5Etfw&quot;&gt;December 4, 2023&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 also helped with the &lt;a href=&quot;https://jhipster.tech&quot;&gt;JHipster project&lt;/a&gt;. It &lt;a href=&quot;https://twitter.com/juliendubois/status/1715255172518035958&quot;&gt;turned 10 in October&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;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Can you believe that &lt;a href=&quot;https://twitter.com/jhipster?ref_src=twsrc%5Etfw&quot;&gt;@jhipster&lt;/a&gt; is 10 years old today?!&lt;br&gt;&lt;br&gt;Happy Birthday, JHipster! And congratulations to its proud Papa, &lt;a href=&quot;https://twitter.com/juliendubois?ref_src=twsrc%5Etfw&quot;&gt;@juliendubois&lt;/a&gt;! &amp;#x1F38A;&lt;br&gt;&lt;br&gt;&amp;#x2B50;? 21K stars on GitHub&lt;br&gt;&amp;#x1F91D; 52.4K used by&lt;br&gt;&amp;#x2764;&amp;#xFE0F; 696 contributors&lt;br&gt;&lt;br&gt;It&amp;#39;s been an excellent adventure! &amp;#x1F913; &lt;a href=&quot;https://t.co/VqZdoDRtBS&quot;&gt;https://t.co/VqZdoDRtBS&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1715715929760206971?ref_src=twsrc%5Etfw&quot;&gt;October 21, 2023&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;JHipster had &lt;a href=&quot;https://www.jhipster.tech/releases/&quot;&gt;eight releases&lt;/a&gt; and &lt;a href=&quot;https://npm-stat.com/charts.html?package=generator-jhipster&amp;from=2023-01-01&amp;to=2023-12-31&quot;&gt;~1.3 million downloads&lt;/a&gt; in 2023 (down 200K from 2022). Our biggest release was &lt;a href=&quot;https://x.com/jhipster/status/1720100589118390479&quot;&gt;JHipster 8.0.0&lt;/a&gt; on November 2nd. We released &lt;a href=&quot;https://twitter.com/deepu105/status/1734199476527464455&quot;&gt;8.1.0&lt;/a&gt; in early December, and I updated my &lt;a href=&quot;https://github.com/mraible/jhipster8-demo&quot;&gt;Get Started with JHipster 8&lt;/a&gt; tutorial to use it.
&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;My Getting Started with JHipster 8 tutorial is now available! &lt;br&gt;&lt;br&gt;&amp;#x1F913; &lt;a href=&quot;https://t.co/6nBfPR33Dk&quot;&gt;https://t.co/6nBfPR33Dk&lt;/a&gt;&lt;br&gt;&lt;br&gt;Features:&lt;br&gt;&lt;br&gt;&amp;#x1F339; Enhanced UI with Angular&lt;br&gt;&amp;#x1F510; Increased security with ownership checks&lt;br&gt;&amp;#x1F49C; Deployment to Heroku&lt;br&gt;&amp;#x1F920; CI/CD with GitHub Actions&lt;a href=&quot;https://twitter.com/hashtag/jhipster?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#jhipster&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;a href=&quot;https://twitter.com/hashtag/typescript?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#typescript&lt;/a&gt; &lt;a href=&quot;https://t.co/xE8Ra9E9w6&quot;&gt;pic.twitter.com/xE8Ra9E9w6&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1735283925763703253?ref_src=twsrc%5Etfw&quot;&gt;December 14, 2023&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 also published a &lt;a href=&quot;https://www.youtube.com/watch?v=IfyjKCt6YHE&quot;&gt;screencast of the tutorial&lt;/a&gt; just before Christmas.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/IfyjKCt6YHE?si=KUgLOn9Dh1zsJiIY&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h2 id=&quot;2024&quot;&gt;2024&lt;/h2&gt;
&lt;p&gt;
    Professionally, I&apos;m starting the year with two of my favorite conferences, Jfokus and Devnexus. Then, I&apos;m doing a JUG tour in April to Salt Lake City, Dallas, Tampa, Nashville, and Detroit. I&apos;m trying to make Spring I/O and JNation happen too. September&apos;s &lt;a href=&quot;https://twitter.com/mraible/status/1732577565884273145&quot;&gt;dev2next&lt;/a&gt; is sure to be a fun conference in Denver. You can see where my whole team will be on &lt;a href=&quot;https://developer.auth0.com/events&quot;&gt;our events page&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    Personally, Trish and I hope to visit the Ski Chalet frequently. The mountains are calling, and we must go. I&apos;ll be a half-century old in July. That&apos;s sure to be a good party, especially if it&apos;s during another month-long summer vacation.
&lt;/p&gt;
&lt;p&gt;
    I have only one goal for 2024: &lt;strong&gt;breathe&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
    I often pause, breathe, and smile when I&apos;m skiing, mountain biking, rafting, and frolicking in the great outdoors. Sometimes it&apos;s nature&apos;s beauty that causes this, but often it&apos;s my own satisfaction with the situation.
&lt;/p&gt;
&lt;p&gt;
    If you want to watch me connect with developers and opt outside, 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;on 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/summer_2023_colorado_montana_and</id>
        <title type="html">Summer 2023: Colorado, Montana, and Cape Cod</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/summer_2023_colorado_montana_and"/>
        <published>2023-10-30T23:45:21-06:00</published>
        <updated>2023-11-02T07:26:25-06:00</updated> 
        <category term="/General" label="General" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="montana" scheme="http://roller.apache.org/ns/tags/" />
        <category term="summervacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="colorado" scheme="http://roller.apache.org/ns/tags/" />
        <category term="capecod" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rafting" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    I&apos;ve been remiss in writing about my month-long summer vacation. Mostly because life moves pretty fast with Jack heading
    off to college, things getting busy at work, and lots of wonderful weekends along the way. I&apos;m finally looking around and sitting down
    to write this post at the end of October. Now is better than never!
&lt;/p&gt;
&lt;p&gt;
    This year, I took a month off from mid-June to mid-August. How did I take so much time off? Okta has a magnificent
    unlimited vacation policy.
&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;In 24 hours, I&apos;ll be starting my summer vacation. &lt;a
            href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; has an unlimited vacation policy, and I&amp;#39;m
        taking full advantage with a month off! &amp;#x1F603;&lt;br&gt;&lt;br&gt;What will I do?&lt;br&gt;&lt;br&gt;&amp;#x26F3;&amp;#xFE0F; Golf, raft, and
        bike&lt;br&gt;&amp;#x1F6F6; Live down by the river in a van&lt;br&gt;&amp;#x26F0;&amp;#xFE0F; Shoot the breeze in Montana&lt;br&gt;&amp;#x1F30A;
        Tour Cape Cod&lt;a href=&quot;https://twitter.com/hashtag/LifeAtOkta?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#LifeAtOkta&lt;/a&gt;
    &lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
            href=&quot;https://twitter.com/mraible/status/1679629527985577984?ref_src=twsrc%5Etfw&quot;&gt;July 13, 2023&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;
    The adventure started with a birthday golf tournament that Saturday to celebrate my 49th.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267644733_ee5b19d7bd_c.jpg&quot; title=&quot;Saturday was my Birthday Golf Debacle with this awesome crew!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267644733/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267644733_ee5b19d7bd.jpg&quot; width=&quot;500&quot; alt=&quot;Saturday was my Birthday Golf Debacle with this awesome crew!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We had a nice family dinner at Sushi Den on Sunday.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267717339_d0b01b4fb0_c.jpg&quot; title=&quot;Family photo time!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267717339/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267717339_d0b01b4fb0.jpg&quot; width=&quot;500&quot; alt=&quot;Family photo time!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
</summary>
        <content type="html">&lt;p&gt;
    I&apos;ve been remiss in writing about my month-long summer vacation. Mostly because life moves pretty fast with Jack heading
    off to college, things getting busy at work, and lots of wonderful weekends along the way. I&apos;m finally looking around and sitting down
    to write this post at the end of October. Now is better than never!
&lt;/p&gt;
&lt;p&gt;
    This year, I took a month off from mid-June to mid-August. How did I take so much time off? Okta has a magnificent
    unlimited vacation policy.
&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;In 24 hours, I&apos;ll be starting my summer vacation. &lt;a
            href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; has an unlimited vacation policy, and I&amp;#39;m
        taking full advantage with a month off! &amp;#x1F603;&lt;br&gt;&lt;br&gt;What will I do?&lt;br&gt;&lt;br&gt;&amp;#x26F3;&amp;#xFE0F; Golf, raft, and
        bike&lt;br&gt;&amp;#x1F6F6; Live down by the river in a van&lt;br&gt;&amp;#x26F0;&amp;#xFE0F; Shoot the breeze in Montana&lt;br&gt;&amp;#x1F30A;
        Tour Cape Cod&lt;a href=&quot;https://twitter.com/hashtag/LifeAtOkta?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#LifeAtOkta&lt;/a&gt;
    &lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
            href=&quot;https://twitter.com/mraible/status/1679629527985577984?ref_src=twsrc%5Etfw&quot;&gt;July 13, 2023&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;
    The adventure started with a birthday golf tournament that Saturday to celebrate my 49th.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267644733_ee5b19d7bd_c.jpg&quot; title=&quot;Saturday was my Birthday Golf Debacle with this awesome crew!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267644733/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267644733_ee5b19d7bd.jpg&quot; width=&quot;500&quot; alt=&quot;Saturday was my Birthday Golf Debacle with this awesome crew!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We had a nice family dinner at Sushi Den on Sunday.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267717339_d0b01b4fb0_c.jpg&quot; title=&quot;Family photo time!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267717339/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267717339_d0b01b4fb0.jpg&quot; width=&quot;500&quot; alt=&quot;Family photo time!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://production.builder.blurb.com/pdf-processing/files/P17044395-7e8e0ce64f8d373d9baa91ec55fa8275c5745aac78b2d72612406007be981160?Expires=1703824731&quot; rel=&quot;lightbox[summer2023]&quot;&gt;&lt;img src=&quot;https://production.builder.blurb.com/pdf-processing/files/P17044395-7e8e0ce64f8d373d9baa91ec55fa8275c5745aac78b2d72612406007be981160?Expires=1703824731&quot; class=&quot;picture&quot; width=&quot;200&quot; alt=&quot;The Good Life, Volume II cover&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    For the two weeks after that, I went on bike rides and worked on a 10-year anniversary present for Trish: a book
    about our wedding and honeymoon. I wrote about these events in previous blog posts.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/matrimony_in_montana&quot;&gt;Matrimony in Montana&lt;/a&gt;&lt;/li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/matrimony_in_montana&quot;&gt;
&lt;/a&gt;&lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/matrimony_in_montana&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/around_the_world_honeymoon_1st&quot;&gt;Around The World Honeymoon: 1st
    Stop, Ireland&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/around_the_world_honeymoon_2nd&quot;&gt;Around The World Honeymoon: 2nd
        Stop, Italy&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/around_the_world_honeymoon_3rd&quot;&gt;Around The World Honeymoon: 3rd
        Stop, Thailand&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/rd/entry/around_the_world_honeymoon_last&quot;&gt;Around The World Honeymoon: Last
        Stop, Fiji&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    Because of these posts and pictures, writing the text wasn&apos;t difficult, but finding high-res images was. In the end,
    I succeeded by getting Trish&apos;s credentials to &lt;a href=&quot;https://www.mcginityphoto.com/&quot;&gt;her website&lt;/a&gt; and finding
    the photos in her archives.
&lt;/p&gt;
&lt;p&gt;I wrote the book using &lt;a href=&quot;https://blurb.com&quot;&gt;Blurb&lt;/a&gt; and you can buy a hardcover version of &lt;a href=&quot;https://www.blurb.com/b/11667302-the-good-life-volume-ii&quot;&gt;The Good Life, Volume II&lt;/a&gt;. I&apos;m proud to say I
    finished the rough draft just hours before she arrived home from a trip the evening before our anniversary.
&lt;/p&gt;
&lt;p&gt;The weekend before our anniversary, I went on a father-son rafting trip with Jack and friends.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267364906_5dc086362d_c.jpg&quot; title=&quot;On the Upper Colorado!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267364906/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267364906_5dc086362d.jpg&quot; width=&quot;500&quot; alt=&quot;On the Upper Colorado!&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/53267715649_390dfe4423_c.jpg&quot; title=&quot;Jack and Fesser&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267715649/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267715649_390dfe4423_m.jpg&quot; width=&quot;240&quot; alt=&quot;Jack and Fesser&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53266470287_f14f1b8d8d_c.jpg&quot; title=&quot;The hot tub was packed!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53266470287/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53266470287_f14f1b8d8d_m.jpg&quot; width=&quot;240&quot; alt=&quot;The hot tub was packed!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;We made it home in time to show Hefe at the &lt;a href=&quot;https://bandimere.com/event/bugin/&quot;&gt;Colorado Bug-In at
    Bandimere&lt;/a&gt; on July 23rd. We ended up winning runner-up in our class! There were lots of magnificent VWs at this
    event, so I encourage you to checkout &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72177720312038669&quot;&gt;my
        summer vacation album&lt;/a&gt;.
&lt;/p&gt;&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267374776_e7a36bd0d1_c.jpg&quot; title=&quot;Back in time for the Bug-In at Bandimere!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267374776/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267374776_e7a36bd0d1.jpg&quot; width=&quot;500&quot; alt=&quot;Back in time for the Bug-In at Bandimere!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;We celebrated our anniversary by rafting on the Upper Colorado River with the Pirates of the Pumphouse.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53299465568_fd63d09d19_c.jpg&quot; title=&quot;Rigs for Pirates of the Pumphouse&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53299465568/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53299465568_fd63d09d19_m.jpg&quot; width=&quot;240&quot; alt=&quot;Rigs for Pirates of the Pumphouse&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53299589614_735d6fbc66_c.jpg&quot; title=&quot;10 years!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53299589614/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53299589614_735d6fbc66_m.jpg&quot; width=&quot;240&quot; alt=&quot;10 years!&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/53299465573_32bfb0b34d_c.jpg&quot; title=&quot;Pebbles got some new tubes!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53299465573/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53299465573_32bfb0b34d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Pebbles got some new tubes!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53299589624_f37b3823a8_c.jpg&quot; title=&quot;The best pirate ship&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53299589624/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53299589624_f37b3823a8_m.jpg&quot; width=&quot;240&quot; alt=&quot;The best pirate ship&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;I visited Montana the next week and had fun with my fabulous family and their wonderful homestead.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53267715339_d6c3979060_c.jpg&quot; title=&quot;My parent&apos;s awesome porch&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267715339/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267715339_d6c3979060_q.jpg&quot; width=&quot;150&quot; alt=&quot;My parent&apos;s awesome porch&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53267719159_2e48a09ba9_c.jpg&quot; title=&quot;Beautiful ladies!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267719159/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267719159_2e48a09ba9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Beautiful ladies!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53267827995_eca19801f2_c.jpg&quot; title=&quot;The Homestead at night&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267827995/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267827995_eca19801f2_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Homestead at night&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/53267644383_4f8e71833c_c.jpg&quot; title=&quot;Such a beautiful home&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267644383/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267644383_4f8e71833c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Such a beautiful home&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53267368836_71d5de19c6_c.jpg&quot; title=&quot;Canoeing on Holland Lake&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267368836/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267368836_71d5de19c6_m.jpg&quot; width=&quot;240&quot; alt=&quot;Canoeing on Holland Lake&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Our last adventure was to Cape Cod to spend a week with Trish&apos;s family. We marveled at the sunsets, went on many boat
    rides, and appreciated each other&apos;s company.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/53266475262_3dd011267d_c.jpg&quot; title=&quot;Cape Cod Sunset&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53266475262/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53266475262_3dd011267d_q.jpg&quot; width=&quot;150&quot; alt=&quot;Cape Cod Sunset&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53267366281_7ab36d93c5_c.jpg&quot; title=&quot;Happy Crew&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267366281/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267366281_7ab36d93c5_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy 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/53267655073_c03a2b724a_c.jpg&quot; title=&quot;Beach day!&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267655073/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267655073_c03a2b724a_q.jpg&quot; width=&quot;150&quot; alt=&quot;Beach day!&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/53266470672_5eff20187a_c.jpg&quot; title=&quot;So glad to have these people in my life&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53266470672/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53266470672_5eff20187a_m.jpg&quot; width=&quot;240&quot; alt=&quot;So glad to have these people in my life&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://live.staticflickr.com/65535/53267718084_fc19a2fbf7_c.jpg&quot; title=&quot;Cousins&quot; rel=&quot;lightbox[summer2023]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/53267718084/in/album-72177720312038669/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53267718084_fc19a2fbf7_m.jpg&quot; width=&quot;240&quot; alt=&quot;Cousins&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;These photos are just a sampling of the 100+ that I polished and published. I think photos are a great way to tell a
    story, so I added captions to all of them in my &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72177720312038669&quot;&gt;Summer 2023 Album&lt;/a&gt;.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v7</id>
        <title type="html">The JHipster Mini-Book v7.0 Released!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v7"/>
        <published>2023-03-07T15:43:37-07:00</published>
        <updated>2023-03-08T16:43:30-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="infoq" scheme="http://roller.apache.org/ns/tags/" />
        <category term="writing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster-mini-book" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="book" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;The JHipster Mini-Book v7.0 is &lt;a href=&quot;https://www.infoq.com/minibooks/jhipster-mini-book-7&quot;&gt;now available as a free download from InfoQ&lt;/a&gt;. Get it while it&apos;s hot! &amp;#128293; You can read more about this release on the &lt;a href=&quot;https://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-v7&quot;&gt;JHipster Mini-Book blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/52733117829_c47b74d73f_b.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52733117829/&quot; title=&quot;JHipster Mini-Book v7.0 Cover&quot; rel=&quot;lightbox[jmb7]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52733117829_c47b74d73f.jpg&quot; width=&quot;500&quot; alt=&quot;JHipster Mini-Book v5.0 Cover&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The source code for the application developed in the book (21-Points Health) is &lt;a href=&quot;https://github.com/mraible/21-points&quot;&gt;available on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to the &lt;a href=&quot;http://www.infoq.com&quot;&gt;InfoQ&lt;/a&gt; publishing team, &lt;a href=&quot;https://twitter.com/jeetgajjarr&quot;&gt;Jeet Gajjar&lt;/a&gt; for tech editing, Maureen Spencer for copy editing, and Ana Ciobotaru for publishing it to production.&lt;/p&gt;
&lt;p&gt;And most of all, thank you &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt; for making the publishing process so easy!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2022_a_year_in_review</id>
        <title type="html">2022 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2022_a_year_in_review"/>
        <published>2023-02-10T09:34:31-07:00</published>
        <updated>2023-02-12T01:39:47-07:00</updated> 
        <category term="/General" label="General" />
        <category term="covid" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" 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="2022" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stoutthesyncro" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
  When 2022 started, I was excited to start traveling again. We started things off with a trip to Mexico and worked remotely from the Cabo San Lucas marina for a couple of weeks. In March, the kids and I ventured to the Cayman Islands for spring break. We arrived home to a red-hot DU hockey team and followed them all the way to the Frozen Four. I went to college at DU, aka the University of Denver, and I&apos;m a proud alumnus.
&lt;/p&gt;
&lt;p&gt;
  I made my way to Boston to work on a presentation with a co-worker, nicely coinciding with the Frozen Four tournament. A few friends and I had the time of our lives watching DU win the NCAA championship. After staying up late and celebrating, I felt awful the next day. I flew home and still felt terrible on Monday. Figuring it was a bad cold from over-indulgence, I took a COVID test, tested negative, and hopped on a plane to Devnexus on Tuesday. That week did not end well.
&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;I tested positive for COVID this morning. I&amp;#39;m so sorry to all the people and friends I came in contact with at &lt;a href= &quot;https://twitter.com/devnexus?ref_src=twsrc%5Etfw&quot;&gt;@devnexus&lt;/a&gt; this week. I feel like such an ass. &lt;br&gt;&lt;br&gt;I thought I was OK because I tested negative Tuesday morning and never lost my sense of taste and smell. &lt;a href=&quot;https://t.co/lR5tdOM2gP&quot;&gt;https://t.co/lR5tdOM2gP&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1514988938083057668?ref_src=twsrc%5Etfw&quot;&gt;April 15, 2022&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;
  From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2021_a_year_in_review&quot;&gt;last year&apos;s year in review&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
  I only have one goal for 2022: &lt;strong&gt;smile more&lt;/strong&gt;.
&lt;/blockquote&gt;
&lt;p&gt;
I rediscovered one of the things that makes me smile a lot: in-person meetups with friends. I had so much fun at Devnexus seeing old friends from the conference circuit. This continued at Spring I/O in Barcelona and at JavaOne in the fall. Being with family always makes me smile too. A trip to Alaska to celebrate my parent&apos;s 50th wedding anniversary was a highlight of the year!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/52258188360_0ef8cbac60_c.jpg&quot; title=&quot;Alaska from the road&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52258188360/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52258188360_0ef8cbac60.jpg&quot; width=&quot;500&quot; alt=&quot;Alaska from the road&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt; I will look back on 2022 using the following categories.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2022_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/2022_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/2022_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/2022_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/2022_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/2022_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;//raibledesigns.com/rd/entry/2022_a_year_in_review#2023&quot;&gt;2023&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
        <content type="html">&lt;p&gt;
  When 2022 started, I was excited to start traveling again. We started things off with a trip to Mexico and worked remotely from the Cabo San Lucas marina for a couple of weeks. In March, the kids and I ventured to the Cayman Islands for spring break. We arrived home to a red-hot DU hockey team and followed them all the way to the Frozen Four. I went to college at DU, aka the University of Denver, and I&apos;m a proud alumnus.
&lt;/p&gt;
&lt;p&gt;
  I made my way to Boston to work on a presentation with a co-worker, nicely coinciding with the Frozen Four tournament. A few friends and I had the time of our lives watching DU win the NCAA championship. After staying up late and celebrating, I felt awful the next day. I flew home and still felt terrible on Monday. Figuring it was a bad cold from over-indulgence, I took a COVID test, tested negative, and hopped on a plane to Devnexus on Tuesday. That week did not end well.
&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;I tested positive for COVID this morning. I&amp;#39;m so sorry to all the people and friends I came in contact with at &lt;a href= &quot;https://twitter.com/devnexus?ref_src=twsrc%5Etfw&quot;&gt;@devnexus&lt;/a&gt; this week. I feel like such an ass. &lt;br&gt;&lt;br&gt;I thought I was OK because I tested negative Tuesday morning and never lost my sense of taste and smell. &lt;a href=&quot;https://t.co/lR5tdOM2gP&quot;&gt;https://t.co/lR5tdOM2gP&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1514988938083057668?ref_src=twsrc%5Etfw&quot;&gt;April 15, 2022&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;
  From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2021_a_year_in_review&quot;&gt;last year&apos;s year in review&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
  I only have one goal for 2022: &lt;strong&gt;smile more&lt;/strong&gt;.
&lt;/blockquote&gt;
&lt;p&gt;
I rediscovered one of the things that makes me smile a lot: in-person meetups with friends. I had so much fun at Devnexus seeing old friends from the conference circuit. This continued at Spring I/O in Barcelona and at JavaOne in the fall. Being with family always makes me smile too. A trip to Alaska to celebrate my parent&apos;s 50th wedding anniversary was a highlight of the year!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/52258188360_0ef8cbac60_c.jpg&quot; title=&quot;Alaska from the road&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52258188360/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52258188360_0ef8cbac60.jpg&quot; width=&quot;500&quot; alt=&quot;Alaska from the road&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt; I will look back on 2022 using the following categories.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2022_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/2022_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/2022_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/2022_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/2022_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/2022_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;//raibledesigns.com/rd/entry/2022_a_year_in_review#2023&quot;&gt;2023&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://developer.auth0.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;
&lt;p&gt;
  This year, I focused on creating YouTube videos more than blog posts. On the &lt;a href=&quot;https://youtube.com/c/oktadev&quot;&gt;OktaDev
  YouTube Channel&lt;/a&gt;, I created 12 videos (same as 2021). My most popular video (11K views) was based on a blog post
  I wrote in January called &lt;a href= &quot;https://auth0.com/blog/full-stack-java-with-react-spring-boot-and-jhipster/&quot;&gt;Full Stack Java with React, Spring Boot, and JHipster&lt;/a&gt;.
&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/PECnQs5bVbQ&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
  I published the &lt;a href=&quot;https://raibledesigns.com/rd/entry/the_angular_mini_book_2&quot;&gt;Angular Mini-Book 2.0&lt;/a&gt;. When writing blog posts, I focused mostly on Java, REST APIs, and JHipster, with a bit of JavaScript too. I authored 11 blog posts on the &lt;a href=&quot;https://developer.okta.com/blog&quot;&gt;Okta developer blog&lt;/a&gt;:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/01/06/native-java-helidon&quot;&gt;Build REST APIs and Native Java Apps with Helidon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/03/03/spring-native-jhipster&quot;&gt;Introducing Spring Native for JHipster: Serverless Full-Stack Made Easy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/04/22/github-actions-graalvm&quot;&gt;Use GitHub Actions to Build GraalVM Native Images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/05/12/ionic-angular-jhipster&quot;&gt;Build Secure Ionic Apps with Angular and JHipster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/05/23/java-rest-api-quarkus&quot;&gt;Kickstart a Java REST API with Quarkus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/05/25/java-rest-api-spring-boot&quot;&gt;Start a Java REST API with Spring Boot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/05/31/java-rest-api-micronaut&quot;&gt;Launch a Java REST API with Micronaut&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/06/02/java-rest-api-helidon&quot;&gt;Create a Java REST API with Helidon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/06/16/oauth-java&quot;&gt;OAuth for Java Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/06/17/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;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/08/05/spring-boot-saml&quot;&gt;Get Started with Spring Boot and SAML&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I published four blog posts to the &lt;a href=&quot;https://auth0.com/blog/&quot;&gt;Auth0 blog&lt;/a&gt;. 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://auth0.com/blog/add-oidc-to-angular-apps-quickly/&quot;&gt;Add OpenID Connect to Angular Apps Quickly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://auth0.com/blog/integrate-react-native-and-spring-boot-securely/&quot;&gt;Integrate React Native and Spring Boot Securely&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://auth0.com/blog/micro-frontends-for-java-microservices/&quot;&gt;Micro Frontends for Java Microservices&lt;/a&gt;
&lt;li&gt;&lt;a href=&quot;https://auth0.com/blog/quick-javascript-authentication/&quot;&gt;Quick JavaScript Authentication with OktaDev Schematics&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
  Last year, I was celebrating new teammates &lt;a
    href=&quot;https://twitter.com/deepu105&quot;&gt;Deepu K Sasidharan&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/alisaduncan&quot;&gt;Alisa
  Duncan&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/qedunham&quot;&gt;E. Dunham&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/tanay1337&quot;&gt;Tanay
  Pant&lt;/a&gt;. This summer, I moved to the Auth0 DevRel team and have a plethora of new teammates to collaborate with. I&apos;m excited to help grow Auth0 usage in the Java community, and I&apos;m pumped to work closely with Deepu to make it happen.
&lt;/p&gt;
&lt;p&gt;
  I continued to stream meetups for the Denver/Boulder JUG and Denver Open Source Users Group (DOSUG). We used &lt;a
    href= &quot;https://streamyard.com/&quot;&gt;StreamYard&lt;/a&gt; and YouTube to broadcast our meetups. We published nine videos to the &lt;a
    href= &quot;https://www.youtube.com/denverjug&quot;&gt;Denver JUG YouTube Channel&lt;/a&gt;. We only published two videos to the &lt;a
    href= &quot;https://www.youtube.com/denveropensource&quot;&gt;Denver Open Source Users Group Channel&lt;/a&gt;, but we did meet in-person! We&apos;re grateful to the folks at &lt;a href=&quot;https://www.thriveworkplace.com/&quot;&gt;Thrive
  Workplace&lt;/a&gt; for donating their space.
&lt;/p&gt;
&lt;p&gt;Denver JUG is now up to 3,688 members. Our most popular video in 2022 was from Gordon Weakliem on &lt;a
    href= &quot;https://www.youtube.com/watch?v=3LH9tJ6qSGQ&quot;&gt;Coding Interviews for Java Developers&lt;/a&gt;.
&lt;/p&gt;

&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;
  According to TripIt, I took 24 trips, to 45 cities, in 11 countries. 13 trips were work-related, and the rest involved traveling to see family. That&apos;s 11 more trips than in 2021, and I had 123 days on the road (+46 from 2021). United 1K was achieved. 
&lt;/p&gt;
&lt;p&gt;
  &lt;a href= &quot;https://speakerdeck.com/mraible&quot;&gt;My Speaker Deck profile&lt;/a&gt; shows 12 presentations at 12 events. 11 of
  those were in-person. I missed Devoxx France because I caught COVID in April at the NCAA Frozen Four tournament. I later &lt;a href= &quot;https://www.youtube.com/watch?v=dp3YbdIEyWU&quot;&gt;live-streamed my presentation on Comparing Native Java REST API Frameworks&lt;/a&gt;. This was also my &lt;a
    href=&quot;https://speakerdeck.com/mraible/comparing-native-java-rest-api-frameworks-devoxx-france-2022&quot;&gt;most-viewed presentation on Speaker Deck&lt;/a&gt; with 3.1K views.
&lt;/p&gt;
&lt;table style=&quot;margin: -10px auto&quot;&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
    &lt;td&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;a href=&quot;https://devnexus.org/&quot;&gt;Devnexus&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.devoxx.fr/&quot;&gt;Devoxx France&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://2022.springio.net/&quot;&gt;Spring I/O&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.seajug.org/&quot;&gt;Seattle JUG&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://corkjug.ie/&quot;&gt;Cork JUG&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;/ol&gt;
    &lt;/td&gt;
    &lt;td&gt;
      &lt;ol start=&quot;7&quot;&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;http://www.apachecon.com/&quot;&gt;ApacheCon North America&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://javaone.com&quot;&gt;JavaOne&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/ManchesterUK-Java-Community/&quot;&gt;Manchester JUG&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Londonjavacommunity/&quot;&gt;London JUG&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.djug.org/&quot;&gt;Denver JUG&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 had a full room of attendees for my talk on Reactive Microservices at Spring I/O in Barcelona. Even the &lt;a href=&quot;https://twitter.com/xeraa/status/1529766569873637377&quot;&gt;overflow room was packed&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;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;My &lt;a href=&quot;https://twitter.com/jhipster?ref_src=twsrc%5Etfw&quot;&gt;@jhipster&lt;/a&gt; talk at &lt;a href=&quot;https://twitter.com/spring_io?ref_src=twsrc%5Etfw&quot;&gt;@spring_io&lt;/a&gt; had a lot of awesome people in it! Thank you all for your enthusiasm and smiles. &amp;#x1F603; &lt;a href=&quot;https://t.co/u4pOtOSbkl&quot;&gt;pic.twitter.com/u4pOtOSbkl&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1529782041126088704?ref_src=twsrc%5Etfw&quot;&gt;May 26, 2022&lt;/a&gt;&lt;/blockquote&gt; 
&lt;/div&gt;
&lt;p&gt;
  I had a lot of fun doing a September JUG tour in Ireland. My folks tagged along. It was a fast-moving trip with new hotels most nights. At their age, they&apos;ll unlikely join me for a JUG tour again. &amp;#x1F605;
&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;We stopped by the &lt;a href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; Dublin office this morning in the Bloodstone building. Great location with a fun vibe about it. &amp;#x1F44D; &lt;a href=&quot;https://t.co/vvaeswAvT0&quot;&gt;pic.twitter.com/vvaeswAvT0&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1575432335230730240?ref_src=twsrc%5Etfw&quot;&gt;September 29, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;JavaOne returned in October and was held in Las Vegas for the first time. I spoke about &lt;a href=&quot;https://speakerdeck.com/mraible/micro-frontends-for-java-developers-javaone-2022&quot;&gt;Micro Frontends for Java Microservices&lt;/a&gt; and loved spending time with the Java community.&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;The community at &lt;a href=&quot;https://twitter.com/hashtag/JavaOne?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#JavaOne&lt;/a&gt; is amazing! &lt;a href=&quot;https://t.co/IwOdr3V7gx&quot;&gt;pic.twitter.com/IwOdr3V7gx&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1582579074400063488?ref_src=twsrc%5Etfw&quot;&gt;October 19, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;Late October brought me to the UK for another JUG tour. It was a lot of fun hosting it at the Okta office there.&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;It was a pleasure talking with the &lt;a href=&quot;https://twitter.com/ljcjug?ref_src=twsrc%5Etfw&quot;&gt;@ljcjug&lt;/a&gt; tonight about web app security for Java developers. The &lt;a href=&quot;https://twitter.com/hashtag/Java?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Java&lt;/a&gt; community is strong in London! &amp;#x1F4AA; &lt;br&gt;&lt;br&gt;Thanks to &lt;a href=&quot;https://twitter.com/OctopusDeploy?ref_src=twsrc%5Etfw&quot;&gt;@OctopusDeploy&lt;/a&gt; for sponsoring and &lt;a href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; for hosting. It was fun to see a full house with all the seats filled by the end. &amp;#x1F603; &lt;a href=&quot;https://t.co/SmtvRgw1Jh&quot;&gt;pic.twitter.com/SmtvRgw1Jh&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1585743684749828096?ref_src=twsrc%5Etfw&quot;&gt;October 27, 2022&lt;/a&gt;&lt;/blockquote&gt; 
&lt;/div&gt;
&lt;p&gt;I originally planned my UK JUG tour to coincide with the Broncos playing in London, but their record was so bad by then that I flew home early. Coincidentally, they won that weekend.&lt;/p&gt;
&lt;p&gt;Oktane followed soon after. It was the first time meeting some of my teammates in-person. I wore an &lt;a href=&quot;https://twitter.com/okta/status/1590509668685733895&quot;&gt;{ okta } cape&lt;/a&gt; and thoroughly enjoyed the developer track we assembled.&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;Excited for the developer keynote at &lt;a href=&quot;https://twitter.com/hashtag/Oktane22?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Oktane22&lt;/a&gt;! &lt;a href=&quot;https://t.co/Jy2XPDoIxx&quot;&gt;pic.twitter.com/Jy2XPDoIxx&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1590488396983840769?ref_src=twsrc%5Etfw&quot;&gt;November 9, 2022&lt;/a&gt;&lt;/blockquote&gt; 
&lt;/div&gt;
&lt;p&gt;
  In December, we had our first in-person Denver JUG meetup since the pandemic began. It was awesome seeing everyone again!
&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;Had a blast at the &lt;a href=&quot;https://twitter.com/denverjug?ref_src=twsrc%5Etfw&quot;&gt;@denverjug&lt;/a&gt; holiday party tonight! Thanks to all the local &lt;a href= &quot;https://twitter.com/java?ref_src=twsrc%5Etfw&quot;&gt;@java&lt;/a&gt; folks that joined in the fun. &amp;#x1F600; &lt;a href=&quot;https://t.co/sI9tsbrlk7&quot;&gt;pic.twitter.com/sI9tsbrlk7&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1603247609258319873?ref_src=twsrc%5Etfw&quot;&gt;December 15, 2022&lt;/a&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt; We&apos;ve had a couple of meetups since then but are still looking for a nice venue to gather. Frank Delporte recently interviewed the organizers for the Boulder and Denver JUGs on the Foojay Podcast. Check out &lt;a href=&quot; https://foojay.io/today/foojay-podcast-13/&quot;&gt;Episode #13&lt;/a&gt; if you&apos;re interested in hearing about our group&apos;s history.
&lt;/p&gt;
&lt;h3 id=&quot;community&quot;&gt;Community&lt;/h3&gt;
&lt;p&gt;
  In the past, I used this section to talk about meetups I&apos;ve started, like &lt;a
    href= &quot;https://www.meetup.com/dev-ski-days/&quot;&gt;Developer Ski Days&lt;/a&gt; and &lt;a
    href= &quot;https://www.meetup.com/Devoxx4Kids-Denver/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt;. We didn&apos;t host any events in 2022, but I
  might organize a developer ski day soon. Right before COVID hit, we had a &lt;a href= &quot;https://www.amtrak.com/winter-park-express&quot;&gt;ski train&lt;/a&gt; to Winter Park adventure planned. It was supposed to happen right after Venkat&apos;s dev.next conference. I&apos;d love to try and do that again.
&lt;/p&gt;

&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;

&lt;p&gt;I continued to maintain &lt;a href=&quot;https://github.com/oktadev/schematics&quot;&gt;OktaDev Schematics&lt;/a&gt; in 2022. The
  project had five releases. I added &lt;a href= &quot;https://auth0.com/blog/quick-javascript-authentication/&quot;&gt;support for Auth0&apos;s SDKs&lt;/a&gt;, which helps ensure I know how to use the latest versions. According to &lt;a
      href= &quot;https://npm-stat.com/charts.html?package=%40oktadev%2Fschematics&amp;from=2022-01-01&amp;to=2022-12-31&quot;&gt;npm-stat.com&lt;/a&gt;,
  it had ~62K downloads in 2022 (+2K from 2021).&lt;/p&gt;

&lt;p&gt;My other projects are related to &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt;. I helped &lt;a href=&quot;https://github.com/jhipster/generator-jhipster/issues/19782&quot;&gt;upgrade the main generator to Spring Boot 3&lt;/a&gt; and did a lot of QA for micro frontends. We had &lt;a
      href=&quot;https://www.jhipster.tech/releases/&quot;&gt;eight releases&lt;/a&gt; and &lt;a
      href=&quot;https://npm-stat.com/charts.html?package=generator-jhipster&amp;from=2022-01-01&amp;to=2022-12-31&quot;&gt;~1.5 million
    downloads&lt;/a&gt; in 2022 (down 300K from 2021). We&apos;ve worked hard on JHipster 8 and hope to release an alpha version soon.&lt;/p&gt;
&lt;p&gt;
  I spent most of the year (in fits and spurts) working on the JHipster Mini-Book.
  &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;My author *finally* finished updating my intro and chapter 1 for &lt;a href=&quot;https://twitter.com/jhipster?ref_src=twsrc%5Etfw&quot;&gt;@jhipster&lt;/a&gt; 7. He started working on this PR in March!&lt;a href=&quot;https://t.co/R0h09xXle2&quot;&gt;https://t.co/R0h09xXle2&lt;/a&gt;&lt;br&gt;&lt;br&gt;What took so long? &amp;#x1F9F5;&lt;/p&gt;&amp;mdash; The JHipster Mini-Book (@jhipster_book) &lt;a href=&quot;https://twitter.com/jhipster_book/status/1598760081390084096?ref_src=twsrc%5Etfw&quot;&gt;December 2, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
  I sent the book to tech editing just before Christmas vacation and got it back from the copy editors at InfoQ this week. Hopefully, it&apos;ll be available for download by the end of this month!
&lt;/p&gt;
&lt;p&gt;
  I helped create the &lt;a href= &quot;https://github.com/jhipster/generator-jhipster-native&quot;&gt;JHipster Native&lt;/a&gt; blueprint in early 2022 and wrote about how to use it in &lt;a href= &quot;https://developer.okta.com/blog/2022/03/03/spring-native-jhipster&quot;&gt;Introducing Spring Native for JHipster: Serverless Full-Stack Made Easy&lt;/a&gt;.
  We converted &lt;a href=&quot;https://github.com/jhipster/generator-jhipster-ionic&quot;&gt;Ionic for JHipster&lt;/a&gt; into a blueprint and updated &lt;a href=&quot;https://github.com/jhipster/generator-jhipster-react-native&quot;&gt;JHipster React Native&lt;/a&gt;. I wrote about them both on the OktaDev and Auth0 blogs:
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2022/05/12/ionic-angular-jhipster&quot;&gt;Build Secure Ionic Apps with Angular and JHipster&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://auth0.com/blog/integrate-react-native-and-spring-boot-securely/&quot;&gt;Integrate React Native and Spring Boot Securely&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;
&lt;p&gt;
  We started the year with a trip to Cabo San Lucas with my parents and sisters. My parents like to do a &quot;chasing the sun&quot; trip in the midst of winter because they live in the backwoods of Montana, and the sun doesn&apos;t shine a whole lot.
&lt;/p&gt;
&lt;p style= &quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51984135336_482f528eb2_c.jpg&quot; title=&quot;Trish made it!&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/51984135336/in/album-72177720297877216/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51984135336_482f528eb2_q.jpg&quot; width=&quot;150&quot; alt=&quot;Trish made it!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51984706870_7088ce0541_c.jpg&quot; title=&quot;Awesome ladies!&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/51984706870/in/album-72177720297877216/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51984706870_7088ce0541_q.jpg&quot; width=&quot;150&quot; alt=&quot;Awesome ladies!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51983135892_6e38f1467a_c.jpg&quot; title=&quot;Golfing Sweethearts&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/51983135892/in/album-72177720297877216/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51983135892_6e38f1467a_q.jpg&quot; width=&quot;150&quot; alt=&quot;Golfing Sweethearts&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  I had &lt;a href= &quot;https://raibledesigns.com/rd/entry/how_to_renew_your_passport&quot;&gt;difficulties getting my passport renewed&lt;/a&gt; in March, but succeeded after learning a local government official can help expedite things. Once I got a new passport, Abbie, Jack, and I had a blast with Trish&apos;s brother&apos;s family in Grand Cayman.
&lt;/p&gt;
&lt;p style= &quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51984510474_5fc5ef872f_c.jpg&quot; title=&quot;Awesome family crew for Spring Break 2022!&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/51984510474/in/album-72177720297875885/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51984510474_5fc5ef872f.jpg&quot; width=&quot;500&quot; alt=&quot;Awesome family crew for Spring Break 2022!&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_2021_2022&quot;&gt;2021-2022 ski season&lt;/a&gt; was pretty good. This year is shaping up to be &lt;em&gt;much better&lt;/em&gt;! I already have 24 days in, and we&apos;re only halfway through the season!
&lt;/p&gt;
&lt;p&gt;For the third year in a row, I took a long summer vacation thanks to Okta&apos;s unlimited vacation policy.&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;In 24 hours, I&apos;ll be starting my summer vacation. &lt;a href= &quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; has an unlimited vacation policy and I&apos;m taking full advantage with a month off! &amp;#x1F603;&lt;br&gt;&lt;br&gt;What will I do?&lt;br&gt;&lt;br&gt;&amp;#x1F3D4; A week in Alaska&lt;br&gt;&amp;#x1F920; A RV trip to Montana&lt;br&gt;&amp;#x1F6F6; A week-long rafting trip&lt;br&gt;&amp;#x1F918; Def Leppard / M&#246;tley Cr&#252;e concert&lt;a href=&quot;https://twitter.com/hashtag/LifeAtOkta?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#LifeAtOkta&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1537571220752764933?ref_src=twsrc%5Etfw&quot;&gt;June 16, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;Celebrating my parent&apos;s &lt;a href=&quot;https://raibledesigns.com/rd/entry/summer_2022_family_adventures_in&quot;&gt;50th in Alaska&lt;/a&gt; was fantastic!&lt;/p&gt;
&lt;p style= &quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/52257727878_8d8e1a6758_c.jpg&quot; title=&quot;Abbie and Jack are ready for adventure!&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52257727878/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52257727878_8d8e1a6758_q.jpg&quot; width=&quot;150&quot; alt=&quot;Abbie and Jack are ready for adventure!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/52256699527_bc9567196c_c.jpg&quot; title=&quot;Family photo!&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52256699527/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52256699527_bc9567196c_q.jpg&quot; width=&quot;150&quot; alt=&quot;Family photo!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/52256669447_bcbba2397c_c.jpg&quot; title=&quot;Happy Mom and Trish!&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52256669447/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52256669447_bcbba2397c_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Mom and Trish!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;And so was the Colorado Avalanche&apos;s Stanley Cup victory. &amp;#x1F973;&lt;/p&gt;
&lt;p style= &quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/52256730797_f4ae9a23ba_c.jpg&quot; title=&quot;Avs Parade&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52256730797/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52256730797_f4ae9a23ba.jpg&quot; width=&quot;500&quot; alt=&quot;Avs Parade&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We managed to go rafting a lot in July. Five nights camping on the Green River was our favorite trip.&lt;/p&gt;
&lt;p style= &quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/52256616337_ce96e53883_c.jpg&quot; title=&quot;Planning Committee&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52256616337/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52256616337_ce96e53883.jpg&quot; width=&quot;500&quot; alt=&quot;Planning Committee&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/52257984110_3d629e6fdd_c.jpg&quot; title=&quot;The Green River&quot; rel=&quot;lightbox[yearinreview2022]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52257984110/in/album-72177720300991585/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52257984110_3d629e6fdd.jpg&quot; width=&quot;500&quot; alt=&quot;The Green River&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I celebrated &lt;a href=&quot;https://raibledesigns.com/rd/entry/20_years_of_blogging&quot;&gt;20 years of blogging&lt;/a&gt; in August. Jack &lt;a href= &quot;https://raibledesigns.com/rd/entry/happy_birthday_jack11&quot;&gt;turned 18&lt;/a&gt; at the end of the month.&lt;/p&gt;
&lt;p&gt;I took the kids to the first game of the Broncos&apos; season in Seattle. Their stadium had a sweet view of the city. We did not expect to lose that game.&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;We enjoyed a beautiful &lt;a href=&quot;https://twitter.com/Broncos?ref_src=twsrc%5Etfw&quot;&gt;@Broncos&lt;/a&gt; sunset in Seattle last night. &amp;#x1F60A; &lt;a href=&quot;https://t.co/OVchzB6zYe&quot;&gt;pic.twitter.com/OVchzB6zYe&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1569337055997759488?ref_src=twsrc%5Etfw&quot;&gt;September 12, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;The fall was filled with a disappointing Broncos season, &lt;a href= &quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie16&quot;&gt; Abbie&apos;s 20th birthday&lt;/a&gt;, and an even more disappointing CU Buffaloes football season. We have elevated hopes for both the CU Buffs and the Denver Broncos in 2023!&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;We had a blast celebrating &lt;a href=&quot;https://twitter.com/AbbieRaible?ref_src=twsrc%5Etfw&quot;&gt;@AbbieRaible&lt;/a&gt;&amp;#39;s birthday this weekend! &amp;#x1F973; &lt;a href=&quot;https://t.co/69AKuDOp17&quot;&gt;pic.twitter.com/69AKuDOp17&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1589421089322840066?ref_src=twsrc%5Etfw&quot;&gt;November 7, 2022&lt;/a&gt;&lt;/blockquote&gt; 
&lt;/div&gt;

&lt;p&gt;In the meantime, we&apos;re big Nuggets and Avalanche fans and are excited for their playoff runs this spring.&lt;/p&gt;

&lt;p&gt;Trish and I ended the year &lt;a href=&quot;https://raibledesigns.com/rd/entry/celebrating_love_in_the_philippines&quot;&gt;celebrating love in the Philippines&lt;/a&gt;.&lt;/p&gt;
&lt;p style= &quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/52625567410_bd516a31cb_c.jpg&quot;
     title=&quot;Sunset by Trish McGinity&quot; rel=&quot;lightbox[yearinreview2022]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/52625567410/in/album-72177720305227549/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/52625567410_bd516a31cb.jpg&quot; width=&quot;500&quot; alt=&quot;Sunset by Trish McGinity&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&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;
  Stout the Syncro&apos;s Subaru engine died in February. Because of this, I decided it was a good time to restore him like Hefe with a new paint job, interior, and other improvements. We hauled him to our favorite Vanagon mechanics, &lt;a href= &quot;https://www.mrmechanic.biz/&quot;&gt;Mr. Mechanic&lt;/a&gt;, to install a new Subaru Outback engine. Trish bought me a temporary Tesla to tide me over because we figured the restoration might take six months to a year. I named it White Lightning. 
&lt;/p&gt;
&lt;p&gt;
As luck would have it, we couldn&apos;t find anyone to do the bodywork and paint, so we ended up getting it back with a new engine in June. After experiencing several expensive adjustments &lt;em&gt;after&lt;/em&gt; the new engine, I&apos;m still driving my temporary Tesla, and Stout is parked in our barn. Trish wants to trade White Lightning for an RV (a 20-year dream of hers), while I&apos;m hoping to swap it for an ID Buzz.
&lt;/p&gt;
&lt;p&gt;The year&apos;s VW highlight was the Colorado Bug-In at Bandimere Speedway. Stout won runner-up in his class, while Hefe won the whole kit and kaboodle: Best in Class, Best Interior, and Best of Show!! &amp;#x1F606;
&lt;/p&gt;
&lt;p style= &quot;text-align: center&quot;&gt;
  &lt;a href= &quot;https://live.staticflickr.com/65535/52256667992_18bf882743_c.jpg&quot; title= &quot;Hefe is all shined up and ready for the Colorado Bug-In at Bandimere!&quot; rel=&quot; lightbox[yearinreview2022]&quot; data-href=&quot; https://www.flickr.com/photos/mraible/52256667992/in/album-72177720300991585/&quot;&gt;&lt;img src= &quot;https://live.staticflickr.com/65535/52256667992_18bf882743.jpg&quot; width= &quot;500&quot; alt= &quot;Hefe is all shined up and ready for the Colorado Bug-In at Bandimere!&quot; style=&quot;border: 1px solid black;&quot;&gt;&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;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I&amp;#39;m back from summer vacation today and feeling fantastic! &lt;a href= &quot;https://twitter.com/hashtag/HefeTheBus?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#HefeTheBus&lt;/a&gt; won Best of Show, Best Interior, and his class at the Colorado Bug-In yesterday!!&lt;br&gt;&lt;br&gt;Winning Best of Show at the Bug-In was a bucket list item for me when I bought him way back in 2004. So proud! &amp;#x1F973; &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://t.co/Vm4p1KQNcl&quot;&gt;pic.twitter.com/Vm4p1KQNcl&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1551613875728125954?ref_src=twsrc%5Etfw&quot;&gt;July 25, 2022&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;We&apos;re still featured on the &lt;a href=&quot;https://bandimere.com/bugin-show-winners/&quot;&gt;Bandimere website&lt;/a&gt; as the Best of Show winners.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/52257942130_23bb0c7e30_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/52257942130/in/album-72177720300991585/&quot; title=&quot;Wahoo!&quot; rel=&quot; lightbox[yearinreview2022]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52257942130_23bb0c7e30.jpg&quot; width=&quot;500&quot; alt=&quot;Wahoo!&quot;  style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id=&quot;2023&quot;&gt;2023&lt;/h2&gt;
&lt;p&gt;Professionally, I hope to do some JUG tours in the US this year. I joined the Auth0 product unit at Okta in August, and they&apos;re much more regionally focused than my former OktaDev team was. This is largely because we have developer advocates worldwide, and it&apos;s more sustainable if Deepu hits the Java conferences in Europe while I focus on the US. If you&apos;re interested in seeing where my team will be in 2023, see &lt;a href= &quot;https://developer.auth0.com/events&quot;&gt;developer.auth0.com/events&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This will be a big year for our family. Jack graduates high school in May, and we&apos;ll become empty nesters in August. He got accepted to CU a couple of weeks ago and will join his sister up in Boulder! With Coach Prime on board, we&apos;re hoping for some good CU football games this season. Because it&apos;s his last six months at home, I&apos;m &lt;a href=&quot;https://twitter.com/mraible/status/1577299138592624640&quot;&gt;skipping conferences that happen while he&apos;s at our house&lt;/a&gt;.
&lt;p&gt;
  I only have one goal for 2023: &lt;strong&gt;be present&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt; I&apos;ve noticed that this is easy if I&apos;m playing with friends or visiting family. Putting down my phone, listening, and paying attention on Zoom calls is my jam this year. &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;on 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/questions_about_jhipster_jhipster_lite</id>
        <title type="html">Questions about JHipster, JHipster Lite, and Spring Boot 3</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/questions_about_jhipster_jhipster_lite"/>
        <published>2022-12-14T08:07:27-07:00</published>
        <updated>2022-12-14T14:07:28-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="jhipsterlite" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springboot3" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">I&apos;m a big fan of &lt;a href=&quot;https://www.linkedin.com&quot;&gt;LinkedIn&lt;/a&gt;. I&apos;m biased because I worked there from 2007-8, have alumni privileges like a free pro account, and learned how to unsubscribe from all their emails over a decade ago. 
&lt;/p&gt;
&lt;p&gt;
I communicate with a lot of developers via LinkedIn. I recently received a message from &lt;a href=&quot;https://www.linkedin.com/in/raymond-meester-475b79147/&quot;&gt;Raymond Meester&lt;/a&gt; about the &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt; project. Raymond asked many poignant questions, and I thought it&apos;d be helpful to share my responses with y&apos;all. Of course, I got permission from Raymond before posting this. You can find &lt;a href=&quot;https://raymondmeester.medium.com/&quot;&gt;his blog on Medium&lt;/a&gt;.
&lt;/p&gt;</summary>
        <content type="html">I&apos;m a big fan of &lt;a href=&quot;https://www.linkedin.com&quot;&gt;LinkedIn&lt;/a&gt;. I&apos;m biased because I worked there from 2007-8, have alumni privileges like a free pro account, and learned how to unsubscribe from all their emails over a decade ago. 
&lt;/p&gt;
&lt;p&gt;
I communicate with a lot of developers via LinkedIn. I recently received a message from &lt;a href=&quot;https://www.linkedin.com/in/raymond-meester-475b79147/&quot;&gt;Raymond Meester&lt;/a&gt; about the &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt; project. Raymond asked many poignant questions, and I thought it&apos;d be helpful to share my responses with y&apos;all. Of course, I got permission from Raymond before posting this. You can find &lt;a href=&quot;https://raymondmeester.medium.com/&quot;&gt;his blog on Medium&lt;/a&gt;.
&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
Hi Matt,
&lt;br/&gt;&lt;br/&gt;
I was reading through some threads on the dev mailing list:
&lt;br/&gt;&lt;br/&gt;
&lt;a href=&quot;https://groups.google.com/g/jhipster-dev&quot;&gt;https://groups.google.com/g/jhipster-dev&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
I&apos;m not part of the dev team, but I thought I just share some of my thoughts with you. &lt;img src=&quot;https://raibledesigns.com/images/smileys/smile.gif&quot; class=&quot;smiley&quot; alt=&quot;:)&quot; title=&quot;:)&quot; /&gt;
&lt;br/&gt;&lt;br/&gt;
On the mailing list, there is an interesting discussion about JHipster vs JHipster Lite. Personally, I don&apos;t fully understand the debate. In my opinion, there could be one base that could be used for several kinds of generators. Say:
&lt;br/&gt;&lt;br/&gt;
- Catered (default)&lt;br/&gt;
- A la carte (lite)
&lt;br/&gt;&lt;br/&gt;
As far as I can see (at least that&apos;s the case for myself), I have more use cases for the first than the second. Just a generator with a few questions on what type of application and then the frameworks to choose (like Spring/Quarkus/Micronaut for the backend and Angular/React/Vue for the frontend) is enough in most cases.
&lt;br/&gt;&lt;br/&gt;
Now that I am more experienced, I definitely want to use lite as well. It&apos;s an exciting project with some smart choices, but I don&apos;t think that it will become the majority of the users.
&lt;br/&gt;&lt;br/&gt;
I do think JHL can be a new base for the normal JHipster as well. Only the generator (whether it&apos;s the CLI or GUI) on top of it will be different.
&lt;br/&gt;&lt;br/&gt;
JHL could also provide a simple generator where I have the top three choices for a specific technology. Of course, when the architecture of JHipster Lite is set up well, it will be easy to add other choices (by blueprints) or change the default top 3 when popularity of a frameworks changes.
&lt;br/&gt;&lt;br/&gt;
Currently, as far as I can see, there are two separate teams improving both JHipster and JHipster Lite. Good to try out different directions, but in the end, a waste of resources.
&lt;br/&gt;&lt;br/&gt;
What I currently miss in JHipster (the main project) is regular updates. As an end user, I just want the latest versions when generating a new application, but lately there are huge gaps of three months between releases.
&lt;br/&gt;&lt;br/&gt;
I really would like to see a monthly minor version with just dependencies updates (I understand that there is more to be done for major versions like the transition to Spring Boot 3. But even when nothing big changes it is good to have the latest libraries).
&lt;br/&gt;&lt;br/&gt;
I agree with how Julien originally set up JHipster as simple as possible for end-users. But currently, Deepu seems one of the few that still stresses this point.
&lt;br/&gt;&lt;br/&gt;
JHipster as it evolved is not only practicable to try out different frameworks, but also as a base for further development. Contrary to what seems to be the current belief about JHipster, it&apos;s not the speed, ease of use or the choices of generation that is the most important feature, but more that for the generated application the architecture is sound, a lot of best practices are used and the code is clean. This saves so much time for me as developer later on.
&lt;br/&gt;&lt;br/&gt;
I also have a question about JHipster Native now that Spring Boot 3 has arrived. Spring removed the Spring Native library, which is not part of the framework itself. What does this mean for JHipster Native?
&lt;br/&gt;&lt;br/&gt;
Keep up the good work!
&lt;/p&gt;
&lt;p&gt;This was a heavy message to receive early on a Tuesday morning. It was heavy because Raymond&apos;s questions were exact, and I thought they deserved a similar response.&lt;/p&gt;
&lt;p class=&quot;smokey&quot; style=&quot;background-color: #ffd&quot;&gt;
&lt;strong&gt;&gt; Currently, as far as I can see, two separate teams are improving both JHipster and JHipster Lite. Good to try out different directions, but in the end, a waste of resources.&lt;/strong&gt;
&lt;br/&gt;&lt;br/&gt;
Possibly, but as far as I can tell, the same people aren&apos;t working on the same project. I believe that JHipster Lite was created because Pascal and others understand Java better than JavaScript, and they were lost in the JHipster codebase and wanted a Java version. JHL also emphasizes DDD and is not interested in CRUD, AFAICT.
&lt;br/&gt;&lt;br/&gt;
In reality, I think many of the contributors have had difficulty figuring out how things work. However, we&apos;ve always had JavaScript heroes to bail us out. In the beginning, Julien knew everything, so he could fix things quickly. Then, it was Deepu - who has admitted to me he rewrote the JHipster core a few times when he was super active. Now it&apos;s Marcelo, and I think he&apos;s doing a great job.
&lt;br/&gt;&lt;br/&gt;
I don&apos;t really look at the JHipster Lite project. I haven&apos;t even watched &lt;a href=&quot;https://www.youtube.com/watch?v=RnLGnY-vzLI&quot;&gt;Julien&apos;s video from Devoxx&lt;/a&gt;, though I&apos;ve been meaning to.
&lt;br/&gt;&lt;br/&gt;
Marcelo, myself, and many others have done a lot with JHipster in 2022. I&apos;ve focused on getting popular blueprints in good shape rather than the core. We&apos;ve released the Spring Native blueprint this year and updates for Ionic and React Native. There&apos;s also been quite a bit of work done on the Quarkus and Micronaut blueprints, and I believe those are just a few hours away from new releases.
&lt;br/&gt;&lt;br/&gt;
&lt;strong&gt;&gt; What I currently miss in JHipster (the main project) is regular updates. As an end user, I just want the latest versions when generating a new application, but lately, there are huge gaps of three months between releases.
&lt;/strong&gt;
&lt;br/&gt;&lt;br/&gt;
Three months between releases seems pretty good to me! If you&apos;re just looking for dependency updates, you should be able to do some of those in your project w/o relying on a new version of JHipster. 
&lt;br/&gt;&lt;br/&gt;
I started updating the JHipster Mini-Book in March of this year, and the current 7.9.3 version is the first version that&apos;s bug-free enough for me to complete the updates.
&lt;br/&gt;&lt;br/&gt;
&lt;strong&gt;&gt; What does this mean for JHipster Native?&lt;/strong&gt;
&lt;br/&gt;&lt;br/&gt;
It means it&apos;s only necessary for JHipster apps with Spring Boot 2.x. JHipster 8 apps will have native support by default since it&apos;s built-in to Spring Boot 3. Related to Spring Boot 3: we started upgrading in late September, and I believe we&apos;ve made great progress. In the past, it&apos;s taken us six months to a year to upgrade between major Spring versions. I &lt;a href=&quot;https://twitter.com/mraible/status/1597248481596706816&quot;&gt;tweeted our current status&lt;/a&gt; recently.
&lt;/p&gt;
&lt;p&gt;Raymond and I had a bit of back and forth regarding upgrades.&lt;/p&gt;
&lt;p class=&quot;smokey&quot;&gt;
I also think you missed my point on upgrading JHipster on a regular basis (say, a monthly interval).
&lt;br/&gt;&lt;br/&gt;
My idea behind this is as follows:
&lt;br/&gt;&lt;br/&gt;
1. Creating/Generating a new project happens only once, while upgrading happens dozens of times over the lifecycle of the software.&lt;br/&gt;
2. Applications (and also JHipster-generated apps) have a lot of dependencies. I rather don&apos;t want to manage those dependencies by hand (even with stuff like Dependabot).&lt;br/&gt;
3. It&apos;s important to be on the latest version for security, fixes, and to make dependencies work with modern frameworks (say JDK17).&lt;br/&gt;
4. Dependencies must work together well, and this must be tested.
&lt;br/&gt;&lt;br/&gt;
I work mostly alone on my open source projects. It&apos;s my goal to work as much as I can on the &apos;business code/specific use cases and not be bothered too much about technologies and dependencies.
&lt;br/&gt;&lt;br/&gt;
That&apos;s why I think it&apos;s so critical to start a project with the latest available dependencies when starting a new project, but also for using the latest versions when upgrading.
&lt;br/&gt;&lt;br/&gt;
I let JHipster upgrade hundreds of dependencies for me. By this I am ensured that they work together and are safe to use, while I only need to focus on upgrading JHipster, instead of single dependencies.
&lt;br/&gt;&lt;br/&gt;
Upgrading JHipster is btw not always that easy. Though I developed some scripts for it now. That&apos;s also why I discussed this topic at the beginning of the year on the discussion board of JHipster Lite:
&lt;br/&gt;&lt;br/&gt;
&lt;a href=&quot;https://github.com/jhipster/jhipster-lite/discussions/512&quot;&gt;https://github.com/jhipster/jhipster-lite/discussions/512&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
For now, both JH and JHL focus on generating new projects and not so much on upgrading projects made with older versions. That&apos;s fair, but I believe there is still a gap in the market here, just as significant as JHipster once filled for generating projects.
&lt;br/&gt;&lt;br/&gt;
For me, the monthly releases could be just patch releases with only upgrades of minor dependencies (so nothing fancy like a major upgrade to Spring Framework 6/Spring Boot 3). Those major or even minor upgrades (with some added functionality and fixes) could be every three months (minor) or yearly (major).
&lt;br/&gt;&lt;br/&gt;
I know JHipster is a community project, but I think that, for example the predictability of a release every six months with LTS releases is very nice.
&lt;/p&gt;
&lt;p&gt;I agreed that making upgrades seamless is not our strong suit. I&apos;ve struggled many times when trying to upgrade &lt;a href=&quot;https://www.21-points.com&quot;&gt;21-Points Health&lt;/a&gt; with &lt;code&gt;npx jhipster upgrade&lt;/code&gt;. Sometimes, it works. Often, it does not. I think this is difficult to test because it can only be done after releases have happened. I wish I had a better answer. I suggested Raymond use some of his learnings to improve our upgrade sub-generator.&lt;/p&gt;
&lt;p&gt;My responses are my opinions. I wanted to see what the &lt;a href=&quot;https://www.jhipster.tech/team/&quot;&gt;JHipster project leads&lt;/a&gt; thought of my perspective, so I sent them a draft of this blog post. Pascal Grimaud responded with several excellent points.&lt;/p&gt;
&lt;p class=&quot;smokey&quot; style=&quot;background-color: #cfc&quot;&gt;
&lt;strong&gt;&gt; Possibly, but as far as I can tell, the same people aren&apos;t working on the same project. I believe that JHipster Lite
was created because Pascal and others understand Java better than JavaScript, and they were lost in the JHipster codebase and
wanted a Java version. JHL also emphasizes DDD and is not interested in CRUD, AFAICT.&lt;/strong&gt;
&lt;br/&gt;&lt;br/&gt;
Sorry Matt, but it&apos;s wrong.
I didn&apos;t start JHLite because of technologies, Java or Javascript. It&apos;s the same; I don&apos;t care.
I started JHLite to solve &lt;a href=&quot;https://docs.google.com/presentation/d/1i0LOJ0GSWNG2-x0zY220IbQc0PVQ2pndQWEuQKGu8n0&quot;&gt;these problems I mentioned more than one year ago&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;
Problem #1: too many generated files.&lt;br/&gt;
Problem #2: hard to customize. Only a few users (less than 10) in the world maintain a blueprint. I know dozens of companies using JHipster (generator-jhipster). And none of them uses a blueprint.&lt;br/&gt;
Problem #3: too many options, too hard to maintain, so no new contributors for months. For an open source project, it&apos;s really sad.&lt;br/&gt;
Problem #4: complex templates.&lt;br/&gt;
&lt;br/&gt;
A real story between a dev and me:&lt;br/&gt;
- dev: I found a bug in the SecurityConfiguration class. There is a missing line of code --&gt; &quot;xxxxx&quot;.&lt;br/&gt;
- me: Nice! We should apply it to our projects. Can you contribute back to generator-jhipster, too, please?&lt;br/&gt;
- dev: Good idea, it will be my first contribution to an open-source project! Let me try.&lt;br/&gt;
(hours later ...)&lt;br/&gt;
- dev: I don&apos;t understand. What&apos;s this f*cking &lt;a href=&quot;https://github.com/jhipster/generator-jhipster/blob/main/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs&quot;&gt;SecurityConfiguration.java.ejs&lt;/a&gt; file?&lt;br/&gt;
- me: It&apos;s the template for managing security configuration for all existing options.&lt;br/&gt;
- dev: Should I apply it for JWT, too? for Session? Should I apply it for reactive too? Should I apply it for microservice?&lt;br/&gt;
- me: Yes, and you should test each config, please.&lt;br/&gt;
- dev: I don&apos;t care about these options, and as it&apos;s too complex, I gave up. As you&apos;re in the core team, you can do it yourself.&lt;br/&gt;
- me: OK, let&apos;s apply it only to our projects.&lt;br/&gt;
&lt;br/&gt;
Problem #5: Too many projects, resulting in complex releases.&lt;br/&gt;
Problem #6: Yeoman, maintained only by Marcelo.&lt;br/&gt;
&lt;br/&gt;
I started JHLite because:&lt;br/&gt;
- I don&apos;t use generator-jhipster anymore for my real projects, for real customers, because it doesn&apos;t fit.&lt;br/&gt;
- JHLite allows me to design my applications around BUSINESS instead of infrastructure.&lt;br/&gt;
- Modular approach, so it fits my needs.&lt;br/&gt;
- The quality of code, as each module is small, it&apos;s easy to have the best quality possible.&lt;br/&gt;
&lt;br/&gt;
&lt;strong&gt;&gt; In reality, I think many of the contributors have had difficulty figuring out how things work. However, we&apos;ve always had
JavaScript heroes to bail us out. In the beginning, Julien knew everything, so he could fix things quickly. Then, it was Deepu -
who has admitted to me he rewrote the JHipster core a few times when he was super active. Now it&apos;s Marcelo, and I think he&apos;s
doing a great job.&lt;/strong&gt;
&lt;br/&gt;&lt;br/&gt;
It&apos;s a big single point of failure!
A big open source project like JHipster needs a community + contributors, not a hero.
&lt;/p&gt;
&lt;p&gt;Related to JHipster, I recently &lt;a href=&quot;https://twitter.com/mraible/status/1599156653785780224&quot;&gt;asked&lt;/a&gt; &lt;a href=&quot;https://chat.openai.com/chat&quot;&gt;ChatGPT&lt;/a&gt; to write a poem about it.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://www.flickr.com/photos/mraible/52558039836/in/dateposted-public/&quot; title=&quot;JHipster Poem&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52558039836_7395e9ff4e_z.jpg&quot; width=&quot;400&quot; alt=&quot;JHipster Poem&quot; style=&quot;border: 1px solid silver&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I also asked it to compare JHipster versus JHipster Lite.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://www.flickr.com/photos/mraible/52558334644/in/dateposted-public/&quot; title=&quot;JHipster vs JHipster Lite&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/52558334644_a63a53cf25_z.jpg&quot; width=&quot;640&quot; alt=&quot;JHipster vs JHipster Lite&quot; style=&quot;border: 1px solid silver&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Wow, I&apos;m impressed with both answers! &amp;#x1F929;&lt;/p&gt;
&lt;p&gt;If you have additional questions about JHipster, hit me up on &lt;a href=&quot;https://www.linkedin.com/in/mraible/&quot;&gt;LinkedIn&lt;/a&gt; or ask your question on Stack Overflow with a &lt;a href=&quot;https://stackoverflow.com/questions/tagged/jhipster&quot;&gt;jhipster&lt;/a&gt; tag.&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/20_years_of_blogging</id>
        <title type="html">20 Years of blogging!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/20_years_of_blogging"/>
        <published>2022-08-02T13:09:09-06:00</published>
        <updated>2022-08-02T19:15:16-06:00</updated> 
        <category term="/Roller" label="Roller" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blog" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">This blog was started on &lt;a href=&quot;https://raibledesigns.com/rd/date/20020801&quot;&gt;August 1, 2002&lt;/a&gt; &amp;mdash; 20 years ago yesterday! It&apos;s amazing to look back at &lt;a href=&quot;https://raibledesigns.com/rd/page/archives?date=200208&quot;&gt;my first month of blogging&lt;/a&gt; and see how many times I&apos;d post per day. Most posts are only a sentence or two with no comments because Roller didn&apos;t have that feature yet.&lt;/p&gt;
&lt;p&gt;Other fun facts:
&lt;ul&gt;
&lt;li&gt;This blog has used &lt;a href=&quot;https://roller.apache.org/&quot;&gt;Apache Roller&lt;/a&gt; and Tomcat from day one.&lt;/li&gt;
&lt;li&gt;I&apos;ve had the same hosting provider, &lt;a href=&quot;http://kgbinternet.com/&quot;&gt;KGB Internet Solutions&lt;/a&gt;, the whole time.&lt;/li&gt;
&lt;li&gt;I&apos;ve authored 3,284 blog posts over the years and received 13,970 comments.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://raibledesigns.com/stats/&quot;&gt;Stats&lt;/a&gt; show I still get around 5K visits per day, serve up 30-40 GB per month, and receive over a million hits per month.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to all of you that have read this blog over the years. I appreciate you!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2021_a_year_in_review</id>
        <title type="html">2021 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2021_a_year_in_review"/>
        <published>2022-01-02T22:38:01-07:00</published>
        <updated>2022-01-03T04:38:02-07:00</updated> 
        <category term="/General" label="General" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefethebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="covid" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2021" 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="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stoutthesyncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
  I didn&apos;t expect to travel much in 2021, mostly because of my promise to myself to take a year off. When I got
  fully-vaxxed in April, I expected things to return to normal and we&apos;d all be traveling to conferences again by early
  fall.
&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;I&amp;#39;m happy to announce that I&amp;#39;m &lt;a
      href=&quot;https://twitter.com/hashtag/FullyVaccinated?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#FullyVaccinated&lt;/a&gt;. Had 2nd
    &lt;a href=&quot;https://twitter.com/pfizer?ref_src=twsrc%5Etfw&quot;&gt;@pfizer&lt;/a&gt; shot on Apr 14. I feel lucky &amp;#x1F340; to have
    experienced no symptoms other than extreme joy. &amp;#x1F973;&lt;a
        href=&quot;https://twitter.com/TrishPhoto?ref_src=twsrc%5Etfw&quot;&gt;@TrishPhoto&lt;/a&gt; and I just finished a 23-day sugar
    detox too. We&amp;#39;re feeling good!! &amp;#x270C;&amp;#xFE0F; &lt;a
        href=&quot;https://t.co/6chqkFbPB7&quot;&gt;pic.twitter.com/6chqkFbPB7&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1387543112252334081?ref_src=twsrc%5Etfw&quot;&gt;April 28, 2021&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;
  2021 was a milestone year for our family. It&apos;s the year Abbie graduated from high school!
  We planned and executed a fun party with family and friends at the Raible Ranch in early June.
&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;She did it! Congratulations &lt;a
      href=&quot;https://twitter.com/AbbieRaible?ref_src=twsrc%5Etfw&quot;&gt;@AbbieRaible&lt;/a&gt;!! &amp;#x1F973; &lt;a
      href=&quot;https://t.co/G1Zz3QTHa4&quot;&gt;pic.twitter.com/G1Zz3QTHa4&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1400854943427219457?ref_src=twsrc%5Etfw&quot;&gt;June 4, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;</summary>
        <content type="html">&lt;p&gt;
  I didn&apos;t expect to travel much in 2021, mostly because of my promise to myself to take a year off. When I got
  fully-vaxxed in April, I expected things to return to normal and we&apos;d all be traveling to conferences again by early
  fall.
&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;I&amp;#39;m happy to announce that I&amp;#39;m &lt;a
      href=&quot;https://twitter.com/hashtag/FullyVaccinated?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#FullyVaccinated&lt;/a&gt;. Had 2nd
    &lt;a href=&quot;https://twitter.com/pfizer?ref_src=twsrc%5Etfw&quot;&gt;@pfizer&lt;/a&gt; shot on Apr 14. I feel lucky &amp;#x1F340; to have
    experienced no symptoms other than extreme joy. &amp;#x1F973;&lt;a
        href=&quot;https://twitter.com/TrishPhoto?ref_src=twsrc%5Etfw&quot;&gt;@TrishPhoto&lt;/a&gt; and I just finished a 23-day sugar
    detox too. We&amp;#39;re feeling good!! &amp;#x270C;&amp;#xFE0F; &lt;a
        href=&quot;https://t.co/6chqkFbPB7&quot;&gt;pic.twitter.com/6chqkFbPB7&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1387543112252334081?ref_src=twsrc%5Etfw&quot;&gt;April 28, 2021&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;
  2021 was a milestone year for our family. It&apos;s the year Abbie graduated from high school!
  We planned and executed a fun party with family and friends at the Raible Ranch in early June.
&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;She did it! Congratulations &lt;a
      href=&quot;https://twitter.com/AbbieRaible?ref_src=twsrc%5Etfw&quot;&gt;@AbbieRaible&lt;/a&gt;!! &amp;#x1F973; &lt;a
      href=&quot;https://t.co/G1Zz3QTHa4&quot;&gt;pic.twitter.com/G1Zz3QTHa4&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1400854943427219457?ref_src=twsrc%5Etfw&quot;&gt;June 4, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
  From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2020_a_year_in_review&quot;&gt;last year&apos;s year in review&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
  I only have one goal for 2021: &lt;strong&gt;dance more&lt;/strong&gt; &amp;#x1F57A;
&lt;/blockquote&gt;
&lt;p&gt;
  When I mentioned this to Trish, she laughed and pointed to our living room, which she recently re-arranged to open up
  a nice dance floor. I &lt;em&gt;probably&lt;/em&gt; danced more in 2021 than 2020, but that&apos;s not saying much. My favorite concert
  this year was &lt;a href=&quot;https://www.greenskybluegrass.com/&quot;&gt;Greensky Bluegrass&lt;/a&gt; at Red Rocks. It helped that I was
  with old friends Bruce Snyder and Matt Good and Bruce got us front row seats.
&lt;/p&gt;
&lt;p&gt;We tried to go to Jazz Fest in October, but it got cancelled because of COVID.&lt;/p&gt;
&lt;p&gt;I&apos;m going to look back on 2021 using the following categories.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2021_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/2021_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/2021_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/2021_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/2021_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/2021_a_year_in_review#abbie-graduates&quot;&gt;Abbie Graduates!&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2021_a_year_in_review#stout-and-hefe&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;//raibledesigns.com/rd/entry/2021_a_year_in_review#2022&quot;&gt;2022&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://developer.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;
&lt;p&gt;
  This year, I focused on creating YouTube videos more than blog posts. On the &lt;a href=&quot;https://youtube.com/c/oktadev&quot;&gt;OktaDev
  YouTube Channel&lt;/a&gt;, I published 12 videos (-8 from 2020). My most popular video (13K views) was based on a blog post
  I published in January called &lt;a href=&quot;https://developer.okta.com/blog/2021/01/20/reactive-java-microservices&quot;&gt;Reactive
  Java Microservices with Spring Boot and JHipster&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/clkEUHWT9-M&quot;
          frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot;
          allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
  I only published &lt;a href=&quot;https://developer.okta.com/blog/authors/matt-raible/&quot;&gt;five blog posts&lt;/a&gt; to the &lt;a
    href=&quot;https://developer.okta.com&quot;&gt;Okta developer blog&lt;/a&gt;. You can see that I focused on Spring Boot, JHipster, and
  GraalVM.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2021/01/20/reactive-java-microservices&quot;&gt;Reactive Java Microservices with
    Spring Boot and JHipster&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2021/06/01/kubernetes-spring-boot-jhipster&quot;&gt;Kubernetes to the Cloud with
    Spring Boot and JHipster&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2021/06/18/native-java-framework-comparison&quot;&gt;Build Native Java Apps with
    Micronaut, Quarkus, and Spring Boot&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href=&quot;https://developer.okta.com/blog/2021/09/16/spring-native-okta-starter&quot;&gt;Spring Native in Action with the
      Okta Spring Boot Starter&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2021/11/22/full-stack-java&quot;&gt;Full Stack Java with React, Spring Boot, and
    JHipster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&apos;s interesting to look back and see I didn&apos;t author any JavaScript topics. I like to think that&apos;s because I spent
  all my JavaScript time working on the &lt;a href=&quot;https://raibledesigns.com/rd/entry/the_angular_mini_book_1&quot;&gt;Angular
    Mini-Book&lt;/a&gt;. I smiled a lot after finishing v1.0 in November.
&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;The Angular Mini-Book 1.0 is now available! &amp;#x1F973;&lt;br&gt;&lt;br&gt;&amp;#x1F170;&amp;#xFE0F;
    &lt;a href=&quot;https://t.co/JEKxQ2A9hr&quot;&gt;https://t.co/JEKxQ2A9hr&lt;/a&gt;&lt;a
        href=&quot;https://twitter.com/hashtag/angular?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#angular&lt;/a&gt; &lt;a
        href=&quot;https://twitter.com/hashtag/typescript?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#typescript&lt;/a&gt; &lt;a
        href=&quot;https://twitter.com/hashtag/springboot?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#springboot&lt;/a&gt; &lt;a
        href=&quot;https://twitter.com/hashtag/kotlin?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#kotlin&lt;/a&gt; &lt;a
        href=&quot;https://t.co/MYcXH5fQ1i&quot;&gt;pic.twitter.com/MYcXH5fQ1i&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1461090415503974408?ref_src=twsrc%5Etfw&quot;&gt;November 17, 2021&lt;/a&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
  My team published &lt;a href=&quot;https://developer.okta.com/blog/tags/javascript/&quot;&gt;12 JavaScript-related blog posts&lt;/a&gt; in
  2021. To compare, we published &lt;a href=&quot;https://developer.okta.com/blog/tags/java/&quot;&gt;20 Java-related posts&lt;/a&gt;. We hope
  to publish more posts for both topics and many others in 2022. I&apos;m super excited to work with new teammates &lt;a
    href=&quot;https://twitter.com/deepu105&quot;&gt;Deepu K Sasidharan&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/alisaduncan&quot;&gt;Alisa
  Duncan&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/qedunham&quot;&gt;E. Dunham&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/tanay1337&quot;&gt;Tanay
  Pant&lt;/a&gt;!
&lt;/p&gt;
&lt;p&gt;
  I continued to record meetups for the Denver/Boulder JUG and Denver Open Source Users group (DOSUG). We used &lt;a
    href=&quot;https://streamyard.com/&quot;&gt;StreamYard&lt;/a&gt; and YouTube to broadcast our meetups. We published 10 videos to the &lt;a
    href=&quot;https://www.youtube.com/denverjug&quot;&gt;Denver JUG YouTube Channel&lt;/a&gt;. We only published three videos to the &lt;a
    href=&quot;https://www.youtube.com/denveropensource&quot;&gt;Denver Open Source Users Group Channel&lt;/a&gt;, but we did successfully
  hold two of those meetups in-person! We&apos;re grateful to the folks at &lt;a href=&quot;https://www.thriveworkplace.com/&quot;&gt;Thrive
  Workplace&lt;/a&gt; for donating their space.
&lt;/p&gt;
&lt;p&gt;Denver JUG is now up to 3,618 members. Our most popular video in 2021 was from yours truly on &lt;a
    href=&quot;https://www.youtube.com/watch?v=8OuZMFyh0xE&quot;&gt;Reactive Microservices with Spring Boot and JHipster&lt;/a&gt;.
  &amp;#x1F973;&lt;/p&gt;
&lt;p&gt;
  In 2020, I published 15 blog posts on the Okta developer blog. In 2021, I only published five. My reduction in content
  can be explained
  by a three-month gap in publishing where I worked on updating 200+ blog posts to use the &lt;a
    href=&quot;https://cli.okta.com&quot;&gt;Okta CLI&lt;/a&gt; (because our admin
  UI changed). My lack of thought leadership posts didn&apos;t help either. 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. They&apos;re usually quicker to write, and I plan to write more in 2022.
&lt;/p&gt;
&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;
  According to TripIt, I took 13 trips, to 15 cities, in one country (USA). Only a few were work-related. That&apos;s three
  more trips than 2020, and I had 77 days on the road (-8 from 2020).
&lt;/p&gt;
&lt;p&gt;
  &lt;a href=&quot;https://speakerdeck.com/mraible&quot;&gt;My Speaker Deck profile&lt;/a&gt; shows 16 presentations at 14 events. Four of
  those were in-person, the rest were virtual.
&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://jchampionsconf.com/&quot;&gt;jChampions Conferences&lt;/a&gt; with Ray Tsang&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.javaland.eu/en/home/&quot;&gt;JavaLand&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/csopensource/&quot;&gt;Colorado Springs Open Source Users Group&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/GatewayJUG/&quot;&gt;St. Louis Java User&apos;s Group&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/DenverJavaUsersGroup/&quot;&gt;Denver Java Users Group&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://springone.io/&quot;&gt;SpringOne&lt;/a&gt; with Brian Demers&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/td&gt;
    &lt;td&gt;
      &lt;ol start=&quot;8&quot; style=&quot;margin-top: 0&quot;&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/DOSUG1/&quot;&gt;Denver Open Source Users Group&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/sfjava/&quot;&gt;The San Francisco Java User Group&lt;/a&gt; with Josh Long&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://uberconf.com/&quot;&gt;&#220;berConf&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://jokerconf.com/&quot;&gt;Joker&amp;lt;?&gt;&lt;/a&gt; with Brian Demers&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://2021.connect.tech/&quot;&gt;Connect.Tech&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;li&gt;&lt;a href=&quot;https://gsjug.org/&quot;&gt;Garden State Java User Group&lt;/a&gt; with Josh Long&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;My most-viewed presentation was &lt;a
    href=&quot;https://speakerdeck.com/mraible/java-rest-api-framework-comparison-pwx-2021&quot;&gt;Java REST API Framework
  Comparison&lt;/a&gt; from the Progressive Web Experience with 3.1K views.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;iframe class=&quot;speakerdeck-iframe&quot; frameborder=&quot;0&quot;
          src=&quot;https://speakerdeck.com/player/dbca5693cbdf47a39b96576557ef4971&quot;
          title=&quot;Java REST API Framework Comparison - PWX 2021&quot; allowfullscreen=&quot;true&quot; mozallowfullscreen=&quot;true&quot;
          webkitallowfullscreen=&quot;true&quot;
          style=&quot;border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 700px; height: 394px;&quot;
          data-ratio=&quot;1.78343949044586&quot;&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;
  My favorite conference experience was &lt;a href=&quot;https://www.summertechforum.com/&quot;&gt;Summer Tech Forum&lt;/a&gt; in Crested
  Butte. My involvement was inspired by &lt;a href=&quot;https://twitter.com/_JamesWard&quot;&gt;James Ward&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;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Look ?? -- I found &lt;a
      href=&quot;https://twitter.com/_JamesWard?ref_src=twsrc%5Etfw&quot;&gt;@_JamesWard&lt;/a&gt; in the woods today! &lt;a
      href=&quot;https://twitter.com/hashtag/CrestedButte?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#CrestedButte&lt;/a&gt; &lt;a
      href=&quot;https://twitter.com/hashtag/Singletrack?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Singletrack&lt;/a&gt; &lt;a
      href=&quot;https://twitter.com/hashtag/Colorado?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Colorado&lt;/a&gt; &lt;a
      href=&quot;https://twitter.com/hashtag/SummerTechForum?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#SummerTechForum&lt;/a&gt; &lt;a
      href=&quot;https://t.co/rKbSMbbOa9&quot;&gt;pic.twitter.com/rKbSMbbOa9&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1427827174149611525?ref_src=twsrc%5Etfw&quot;&gt;August 18, 2021&lt;/a&gt;
  &lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
  I thouroughly enjoyed traveling to San Francisco to &lt;a
    href=&quot;https://www.linkedin.com/pulse/jhipster-works-spring-native-matt-raible/&quot;&gt;speak with Josh Long at the San
  Francisco JUG&lt;/a&gt;. It was a virtual event, but we spoke together from his home.&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;Let the games begin with &lt;a
      href=&quot;https://twitter.com/starbuxman?ref_src=twsrc%5Etfw&quot;&gt;@starbuxman&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;a
      href=&quot;https://twitter.com/hashtag/SpringNative?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#SpringNative&lt;/a&gt; &lt;a
      href=&quot;https://twitter.com/hashtag/JHipster?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#JHipster&lt;/a&gt; &lt;a
      href=&quot;https://t.co/0KSRTd89e5&quot;&gt;pic.twitter.com/0KSRTd89e5&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1442698739563446276?ref_src=twsrc%5Etfw&quot;&gt;September 28, 2021&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 hope to do more of this in 2022. &#220;berConf, Connect.Tech, and the Progressive Web Experience were also in-person.
  Hanging out with fellow speakers (especially James Ward and Pratik Patel) after speaking was a rejuvenating
  experience for my soul. &amp;#x1F917;
&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;There&amp;#39;s even some &lt;a
      href=&quot;https://twitter.com/hashtag/UsualSuspects?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#UsualSuspects&lt;/a&gt; here! Good
    to see you &lt;a href=&quot;https://twitter.com/_JamesWard?ref_src=twsrc%5Etfw&quot;&gt;@_JamesWard&lt;/a&gt; and &lt;a
        href=&quot;https://twitter.com/knight_cloud?ref_src=twsrc%5Etfw&quot;&gt;@knight_cloud&lt;/a&gt;. &amp;#x1F600; &lt;a
        href=&quot;https://t.co/2CSBTRvG7U&quot;&gt;pic.twitter.com/2CSBTRvG7U&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a
      href=&quot;https://twitter.com/mraible/status/1446152020784816131?ref_src=twsrc%5Etfw&quot;&gt;October 7, 2021&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 id=&quot;community&quot;&gt;Community&lt;/h3&gt;
&lt;p&gt;
  In the past, I used this section to talk about meetups I&apos;ve started like &lt;a
    href=&quot;https://www.meetup.com/dev-ski-days/&quot;&gt;Developer Ski Days&lt;/a&gt; and &lt;a
    href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt;. We didn&apos;t host any events in 2021, but I
  might try to organize a developer ski day soon.
&lt;/p&gt;

&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;

&lt;p&gt;I continued to maintain &lt;a href=&quot;https://github.com/oktadeveloper/schematics&quot;&gt;OktaDev Schematics&lt;/a&gt; in 2021. The
  project had 16 releases. Working on it helps me keep up with changes in Angular, React, Vue, Ionic, and React Native
  and helps ensure I know how to use the latest Okta SDKs. According to &lt;a
      href=&quot;https://npm-stat.com/charts.html?package=%40oktadev%2Fschematics&amp;from=2021-01-01&amp;to=2021-12-31&quot;&gt;npm-stat.com&lt;/a&gt;,
  it had ~60K downloads in 2021.&lt;/p&gt;

&lt;p&gt;My other projects are related to &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt;. I didn&apos;t contribute anything
  significant, but I helped QA Micro Frontends support and Spring Boot upgrades. We had &lt;a
      href=&quot;https://www.jhipster.tech/releases/&quot;&gt;eight releases&lt;/a&gt; and &lt;a
      href=&quot;https://npm-stat.com/charts.html?package=generator-jhipster&amp;from=2021-01-01&amp;to=2021-12-31&quot;&gt;~1.8 million
    downloads&lt;/a&gt; in 2021. &amp;#x1F913;&lt;/p&gt;

&lt;p&gt;I did not work on the JHipster Mini-Book in 2021, but I hope to update it for JHipster 7 this year. I said that
  last
  year, but it&apos;s actually on my calendar for February 1. You can watch my progress &lt;a
      href=&quot;https://github.com/mraible/jhipster-book&quot;&gt;on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/jhipster/generator-jhipster-ionic&quot;&gt;Ionic for JHipster&lt;/a&gt; had four releases in 2021 and
  around ~12K downloads.
&lt;/p&gt;
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;
&lt;p&gt;
  My parents are city kids that retired in the backwoods of Montana. They can&apos;t explain why they did it, but they know
  that a &lt;em&gt;chasing the sun&lt;/em&gt; trip is part of what makes them happy in the winter. We started doing this family
  trip
  in the last few years, starting with &lt;a href=&quot;https://raibledesigns.com/rd/entry/january_jaunts_to_new_orleans&quot;&gt;New
  Orleans in 2020&lt;/a&gt; and continuing with Hawaii in 2021.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51794398697_125511bd67_c.jpg&quot; title=&quot;The Hawaii Crew&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217117041/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51794398697_125511bd67.jpg&quot; width=&quot;500&quot; alt=&quot;The Hawaii Crew&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/51217142501_a0f8327d5d_c.jpg&quot; title=&quot;My Double Rainbow&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217142501/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217142501_a0f8327d5d_m.jpg&quot; width=&quot;240&quot; alt=&quot;My Double Rainbow&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217347023_37e8d1c33d_c.jpg&quot; title=&quot;My fabulous parents&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217347023/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217347023_37e8d1c33d_m.jpg&quot; width=&quot;240&quot; alt=&quot;My fabulous parents&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  I was gung ho for &lt;a href=&quot;https://raibledesigns.com/rd/entry/farewell_to_the_2020_21&quot;&gt;ski season last year&lt;/a&gt; and
  rented a condo for six weeks in downtown Winter Park to ski during the week. My stats for the season were decent: 28
  days cross-country skiing, 23 days downhill. I had 51 combined days!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216438512_e14756b1f9_c.jpg&quot; title=&quot;Happy Friday!&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216438512/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216438512_e14756b1f9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Friday!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216438042_18b5ac0752_c.jpg&quot; title=&quot;Abbie&apos;s ready for some turns&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216438042/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216438042_18b5ac0752_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Abbie&apos;s ready for some turns&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217362143_d840979e9e_c.jpg&quot;
     title=&quot;Cross-country at Devil&apos;s Thumb Ranch&quot; rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217362143/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217362143_d840979e9e_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Cross-country at Devil&apos;s Thumb Ranch&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/51218158655_e87505d722_c.jpg&quot; title=&quot;Family cross-country day!&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218158655/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218158655_e87505d722.jpg&quot; width=&quot;500&quot; alt=&quot;Family cross-country day!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&quot;abbie-graduates&quot;&gt;Abbie Graduates!&lt;/h3&gt;
&lt;p&gt;Shortly after ski season is high school graduations. We had a graduate this year and couldn&apos;t be prouder of Abbie!
  Jack was looking pretty suave too.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216407727_573975b091_c.jpg&quot; title=&quot;Abbie&apos;s last day of high school!&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216407727/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216407727_573975b091_n.jpg&quot; width=&quot;240&quot;
      alt=&quot;Abbie&apos;s last day of high school!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217122246_6fb1898913_c.jpg&quot;
     title=&quot;Jack&apos;s last day of sophomore year! ??&quot; rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217122246/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217122246_6fb1898913_n.jpg&quot; width=&quot;240&quot;
      alt=&quot;Jack&apos;s last day of sophomore year! ??&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We enjoyed a rafting trip near Salida on Father&apos;s Day.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/mraible/51409070893/&quot;
     title=&quot;Abbie and Jack on the Arkansas&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51409070893_53b16aa82d.jpg&quot;
                                                 width=&quot;500&quot; alt=&quot;Abbie and Jack on the Arkansas&quot;
                                                 style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  I took July off and we traveled to &lt;a href=&quot;https://raibledesigns.com/rd/entry/summer_2021_family_fun_in&quot;&gt;Washington,
  Montana, and Cape Cod&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a rel=&quot;lightbox[2021yearinreview]&quot; href=&quot;https://live.staticflickr.com/65535/51427936751_381746f3be_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51427936751&quot; title=&quot;Happy Ladies&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51427936751_381746f3be_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Ladies&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a rel=&quot;lightbox[2021yearinreview]&quot; href=&quot;https://live.staticflickr.com/65535/51428192248_39b177da11_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51428192248&quot; title=&quot;Congratulations!&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51428192248_39b177da11_q.jpg&quot; width=&quot;150&quot; alt=&quot;Congratulations!&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a rel=&quot;lightbox[2021yearinreview]&quot; href=&quot;https://live.staticflickr.com/65535/51428705969_e3457143e6_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51428705969&quot; title=&quot;Awesome Family&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51428705969_e3457143e6_q.jpg&quot; width=&quot;150&quot; alt=&quot;Awesome Family&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  Abbie moved on to college at the &lt;a
    href=&quot;https://www.colorado.edu/business/undergraduate-programs/additional-programs/business-and-computer-science-program&quot;&gt;University
  of Colorado at Boulder&lt;/a&gt;. It&apos;s been really nice having her close (60 minute drive) and far enough away that she
  doesn&apos;t
  plan parties at our house. Jack planned his birthday party at the ranch this year. It exceeded all expectations.
&lt;/p&gt;
&lt;p&gt;
  We lost one of our cats, Mittens, while we were in Hawaii. Sagan, our crazy border collie, passed away this fall.
  They both lived full lives and made us smile a lot. &amp;#x1F622;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a rel=&quot;lightbox[2021yearinreview]&quot; href=&quot;https://live.staticflickr.com/3562/3506709142_21fa103252_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/3506709142/&quot; title=&quot;Abbie and Mittens&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/3562/3506709142_21fa103252_m.jpg&quot; width=&quot;240&quot; style=&quot;border: 1px solid black&quot;
      alt=&quot;Abbie and Mittens&quot;&gt;&lt;/a&gt;
  &lt;a rel=&quot;lightbox[2021yearinreview]&quot; href=&quot;https://www.flickr.com/photos/mraible/35387365284/&quot;
     title=&quot;Sagan, The Crazy One&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/4320/35387365284_522f0dff9f_m.jpg&quot;
                                       width=&quot;240&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;
                                       alt=&quot;Sagan, The Crazy One&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&quot;stout-and-hefe&quot;&gt;Hefe the Bus and Stout the Syncro&lt;/h3&gt;
&lt;p&gt;
  We didn&apos;t do much with Hefe and Stout this year show-wise. I did enter both of them in the &lt;a
    href=&quot;https://govwec.org/&quot;&gt;VWs on the Green&lt;/a&gt; virtual show. They both won
  first place in their respective categories. I have high hopes for more events in 2022! My favorite car-related event
  of the year was when I talked some fraternity brothers into bringing their cars to a show in my backyard. If you
  have
  a classic car and live in Colorado, you should join us next year. Search for &quot;Chenango Car Show&quot;. It&apos;s typically in
  early August.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217328833_82ac03f4e4_c.jpg&quot;
     title=&quot;Hefe the Bus is ready to go cruisin! #vwbus #HefeTheBus&quot; rel=&quot;lightbox[2021yearinreview]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217328833/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217328833_82ac03f4e4_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Hefe the Bus is ready to go cruisin! #vwbus #HefeTheBus&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51428645559_7f83a39bfc_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51428645559/&quot; title=&quot;Trusty steeds&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51428645559_7f83a39bfc_m.jpg&quot;
                                           width=&quot;240&quot; alt=&quot;Trusty steeds&quot;
                                           style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id=&quot;2022&quot;&gt;2022&lt;/h2&gt;
&lt;p&gt;
  Professionally, I hope to travel a bit this year. Okta is expanding globally, and I&apos;d love to visit Australia and
  Japan
  to help make that happen. I have Devnexus, Devoxx France, and Spring I/O on my radar for conferences.
&lt;/p&gt;
&lt;p&gt;
  I hope to contribute frequently to JHipster. Microfrontends support works excellent for Angular; I hope to see
  the same for React and Vue. My Q1 goal is to make Spring Native work with JHipster. I also hope to help integrate
  GraphQL. I said that last year, but now Spring has &lt;a
    href=&quot;https://spring.io/blog/2021/07/06/introducing-spring-graphql&quot;&gt;official support&lt;/a&gt; with &lt;a
    href=&quot;https://spring.io/projects/spring-graphql&quot;&gt;Spring GraphQL&lt;/a&gt;!
&lt;/p&gt;
&lt;p&gt;I&apos;ll be on summer vacation for a month, once again. It&apos;s a tradition I started a couple of years ago to prove that
  full-time can be as good as contracting (because of unlimited time off). This year&apos;s adventure will start with a
  trip to
  Alaska to celebrate my parents&apos; 50th anniversary!
&lt;/p&gt;
&lt;p&gt;Last year, I said I&apos;d like to ski 42 days for both downhill and nordic. Looking back, that seems a bit ambitious. I
  ended up with 28 days of cross-country skiing and 23 days downhill. That doesn&apos;t seem too bad. For 2022, I&apos;ve
  purchased
  both the Epic and Ikon ski passes, and I hope to exceed my stats from last year. Heck, I&apos;ll be happy with 20 days of
  each! The snow conditions have been terrible until two weeks ago.
&lt;/p&gt;
&lt;p&gt;
  Last year, we failed to pull any rafting permits. That means we had no lengthy family trips with our rafting family.
  We had a few day trips, but were often left with a longing for more. Our rafting family is anxious to rendezvous in
  2022.
&lt;/p&gt;
&lt;p&gt;COVID motivated us to become homebodies and our landscaping project turned out quite nice. We now have several
  beautiful flower gardens, trees, a fabulous fire pit, a basketball court, and a new carport.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51428669859_f804349401_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51428669859/in/album-72157719832602065/&quot;
     rel=&quot;lightbox[2021yearinreview]&quot;
     title=&quot;New landscaping is finished!&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51428669859_f804349401.jpg&quot;
                                               width=&quot;500&quot; alt=&quot;New landscaping is finished!&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/51428864295_9398f94941_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51428864295/in/album-72157719832602065/&quot;
     title=&quot;What a fun night!&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51428864295_9398f94941.jpg&quot; width=&quot;500&quot; alt=&quot;What a fun night!&quot;
      style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  I only have one goal for 2022: &lt;strong&gt;smile more&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
  I think that goal will be easily accomplished if I see your smiling faces. I hope 2022 is your best year! &amp;#x1F973;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51795794464_8f8e48fee6_c.jpg&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51795794464/&quot; rel=&quot;lightbox[2021yearinreview]&quot;
     title=&quot;Happy New Year!&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/51795794464_8f8e48fee6.jpg&quot; width=&quot;500&quot;
                                  alt=&quot;Happy New Year!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&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;on 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/announcing_angular_crud_2_0</id>
        <title type="html">Announcing Angular CRUD 2.0</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/announcing_angular_crud_2_0"/>
        <published>2021-09-27T16:29:15-06:00</published>
        <updated>2021-09-27T22:31:13-06:00</updated> 
        <category term="/Open Source" label="Open Source" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="crud" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;Friends shouldn&apos;t let friends write CRUD apps. At least, not by hand. That&apos;s why I used a schematic called Angular CRUD in one of my last &lt;a href=&quot;https://developer.okta.com/blog/2020/01/06/crud-angular-9-spring-boot-2&quot;&gt;Angular + Spring Boot blog posts&lt;/a&gt;.  That post is kinda old (January 2020), but the combination of Angular and Spring Boot remains popular. That&apos;s why I decided to turn the series into an Angular Mini-Book for InfoQ.&lt;/p&gt;
&lt;p&gt;The book has five different sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build an Angular App&lt;/li&gt;
&lt;li&gt;Integrate Angular with Spring Boot&lt;/li&gt;
&lt;li&gt;Beautiful Angular Apps with Bootstrap&lt;/li&gt;
&lt;li&gt;Angular Deployment&lt;/li&gt;
&lt;li&gt;Angular and Docker&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
My goal with the book is to show you everything you need to get your Angular + Spring Boot app to production. But, what about &lt;a href=&quot;https://jhipster.tech&quot;&gt;JHipster&lt;/a&gt;? &lt;/p&gt;
&lt;p&gt;
Of course, you can just use JHipster, but I&apos;ve found that a lot of beginners are intimidated by all the code it generates. That&apos;s why I wanted to create a bare-bones Angular guide that uses Spring Boot for its API.
&lt;/p&gt;
&lt;p&gt;
I published the news on Twitter at the end of June.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I&amp;#39;m happy to announce that I&amp;#39;ve finished the first draft of the &lt;a href=&quot;https://twitter.com/angular?ref_src=twsrc%5Etfw&quot;&gt;@Angular&lt;/a&gt; Mini-Book! After the editing process, you&amp;#39;ll be able to find it at a local &lt;a href=&quot;https://twitter.com/InfoQ?ref_src=twsrc%5Etfw&quot;&gt;@InfoQ&lt;/a&gt; website.&lt;br&gt;&lt;br&gt;Hopefully, they&amp;#39;ll create a better cover for it. &amp;#x1F605; &lt;a href=&quot;https://twitter.com/hashtag/angular?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#angular&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/springboot?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#springboot&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/asciidoctor?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#asciidoctor&lt;/a&gt; &lt;a href=&quot;https://t.co/el20GCS24s&quot;&gt;pic.twitter.com/el20GCS24s&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1410413147765325826?ref_src=twsrc%5Etfw&quot;&gt;July 1, 2021&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;
As part of creating the book, I updated &lt;a href=&quot;https://twitter.com/ManfredSteyer&quot;&gt;Manfred Styer&apos;s&lt;/a&gt; &lt;a href=&quot;https://github.com/manfredsteyer/angular-crud&quot;&gt;Angular CRUD&lt;/a&gt; project and released &lt;a href=&quot;https://github.com/manfredsteyer/angular-crud/releases/tag/v2.0.0&quot;&gt;v2.0&lt;/a&gt;. The 2.0 release adds support for Bootstrap and Angular Material for CSS framework aficionados, like me. 
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;Friends shouldn&apos;t let friends write CRUD apps. At least, not by hand. That&apos;s why I used a schematic called Angular CRUD in one of my last &lt;a href=&quot;https://developer.okta.com/blog/2020/01/06/crud-angular-9-spring-boot-2&quot;&gt;Angular + Spring Boot blog posts&lt;/a&gt;.  That post is kinda old (January 2020), but the combination of Angular and Spring Boot remains popular. That&apos;s why I decided to turn the series into an Angular Mini-Book for InfoQ.&lt;/p&gt;
&lt;p&gt;The book has five different sections:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build an Angular App&lt;/li&gt;
&lt;li&gt;Integrate Angular with Spring Boot&lt;/li&gt;
&lt;li&gt;Beautiful Angular Apps with Bootstrap&lt;/li&gt;
&lt;li&gt;Angular Deployment&lt;/li&gt;
&lt;li&gt;Angular and Docker&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
My goal with the book is to show you everything you need to get your Angular + Spring Boot app to production. But, what about &lt;a href=&quot;https://jhipster.tech&quot;&gt;JHipster&lt;/a&gt;? &lt;/p&gt;
&lt;p&gt;
Of course, you can just use JHipster, but I&apos;ve found that a lot of beginners are intimidated by all the code it generates. That&apos;s why I wanted to create a bare-bones Angular guide that uses Spring Boot for its API.
&lt;/p&gt;
&lt;p&gt;
I published the news on Twitter at the end of June.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I&amp;#39;m happy to announce that I&amp;#39;ve finished the first draft of the &lt;a href=&quot;https://twitter.com/angular?ref_src=twsrc%5Etfw&quot;&gt;@Angular&lt;/a&gt; Mini-Book! After the editing process, you&amp;#39;ll be able to find it at a local &lt;a href=&quot;https://twitter.com/InfoQ?ref_src=twsrc%5Etfw&quot;&gt;@InfoQ&lt;/a&gt; website.&lt;br&gt;&lt;br&gt;Hopefully, they&amp;#39;ll create a better cover for it. &amp;#x1F605; &lt;a href=&quot;https://twitter.com/hashtag/angular?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#angular&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/springboot?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#springboot&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/asciidoctor?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#asciidoctor&lt;/a&gt; &lt;a href=&quot;https://t.co/el20GCS24s&quot;&gt;pic.twitter.com/el20GCS24s&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1410413147765325826?ref_src=twsrc%5Etfw&quot;&gt;July 1, 2021&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;
As part of creating the book, I updated &lt;a href=&quot;https://twitter.com/ManfredSteyer&quot;&gt;Manfred Styer&apos;s&lt;/a&gt; &lt;a href=&quot;https://github.com/manfredsteyer/angular-crud&quot;&gt;Angular CRUD&lt;/a&gt; project and released &lt;a href=&quot;https://github.com/manfredsteyer/angular-crud/releases/tag/v2.0.0&quot;&gt;v2.0&lt;/a&gt;. The 2.0 release adds support for Bootstrap and Angular Material for CSS framework aficionados, like me. 
&lt;/p&gt;
&lt;p&gt;
You can see the &lt;a href=&quot;https://github.com/manfredsteyer/angular-crud#tutorial-getting-started&quot;&gt;getting started tutorial&lt;/a&gt; for how to use it in your projects. To inspire you, I&apos;ve included some screenshots of the new Bootstrap and Angular Material support.
&lt;/p&gt;
&lt;h3&gt;Angular CRUD + Bootstrap&lt;/h3&gt;
&lt;table style=&quot;width: 100%; margin-bottom: 20px&quot;&gt;
&lt;tr&gt;
  &lt;td style=&quot;vertical-align: top&quot;&gt;&lt;a href=&quot;https://imgur.com/8KICSze.png&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/70cef827ab68234b0cf51046eacf6d9f8c1b2699b878a5428328eeb70c7052e4/68747470733a2f2f696d6775722e636f6d2f384b4943537a652e706e67&quot; alt=&quot;Bootstrap List&quot; data-canonical-src=&quot;https://imgur.com/8KICSze.png&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;td style=&quot;vertical-align: top&quot;&gt;&lt;a href=&quot;https://camo.githubusercontent.com/40fec5afdc6e795f15eec13e5fb15c9a3e089a644ecaa8e06ca60734aa6b8297/68747470733a2f2f696d6775722e636f6d2f5658446f5562422e706e67&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/40fec5afdc6e795f15eec13e5fb15c9a3e089a644ecaa8e06ca60734aa6b8297/68747470733a2f2f696d6775722e636f6d2f5658446f5562422e706e67&quot; alt=&quot;Bootstrap Detail View&quot; data-canonical-src=&quot;https://imgur.com/VXDoUbB.png&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Angular CRUD + Angular Material&lt;/h3&gt;
&lt;p&gt;This theme is based on &lt;a href=&quot;https://zoaibkhan.com/blog/create-a-responsive-sidebar-menu-with-angular-material/&quot;&gt;Create a responsive sidebar menu with Angular Material&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/zoaibdev&quot;&gt;Zoaib Khan&lt;/a&gt;.
&lt;table style=&quot;width: 100%; margin-bottom: 20px&quot;&gt;
&lt;tr&gt;
  &lt;td style=&quot;vertical-align: top&quot;&gt;&lt;a href=&quot;https://camo.githubusercontent.com/a69145407e91ac02664c2f40782a7a3f7f517d2a0829a4d9e18eae90723cb9eb/68747470733a2f2f696d6775722e636f6d2f663466554543452e706e67&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/a69145407e91ac02664c2f40782a7a3f7f517d2a0829a4d9e18eae90723cb9eb/68747470733a2f2f696d6775722e636f6d2f663466554543452e706e67&quot; alt=&quot;Angular Material List&quot; data-canonical-src=&quot;https://imgur.com/f4fUECE.png&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;td style=&quot;vertical-align: top&quot;&gt;&lt;a href=&quot;https://camo.githubusercontent.com/754ee14d548dab0c2a7eb3840a128b5e1a42fb0578d36c61387cb76914e53e14/68747470733a2f2f696d6775722e636f6d2f56547669754d532e706e67&quot;&gt;&lt;img src=&quot;https://camo.githubusercontent.com/754ee14d548dab0c2a7eb3840a128b5e1a42fb0578d36c61387cb76914e53e14/68747470733a2f2f696d6775722e636f6d2f56547669754d532e706e67&quot; alt=&quot;Angular Material Detail View&quot; data-canonical-src=&quot;https://imgur.com/VTviuMS.png&quot; style=&quot;max-width: 100%;&quot;&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Introduction to Angular CRUD Video&lt;/h3&gt;
&lt;p&gt;
I also published an &lt;a href=&quot;https://youtu.be/3mqWrmZtefE&quot;&gt;Introduction to Angular CRUD video&lt;/a&gt; that shows how it works.
&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/3mqWrmZtefE&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
You might ask, &quot;When will the Angular Mini-Book be published?&quot;
&lt;/p&gt;
&lt;p&gt;
We&apos;re about halfway through tech editing. I hope to finish that in the next month, pass it on to copy editing, and publish before the end of the year.&lt;/p&gt;
&lt;p&gt;Keep an eye on &lt;a href=&quot;https://www.infoq.com/minibooks/&quot;&gt;InfoQ&apos;s Mini-Books&lt;/a&gt; and follow me &lt;a href=&quot;https://twitter.com/mraible&quot;&gt;@mraible&lt;/a&gt; on Twitter for updates. 
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/farewell_to_the_2020_21</id>
        <title type="html">Farewell to the 2020-21 Ski Season</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/farewell_to_the_2020_21"/>
        <published>2021-06-02T13:31:07-06:00</published>
        <updated>2021-06-02T19:33:05-06:00</updated> 
        <category term="/General" label="General" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="maryjane" scheme="http://roller.apache.org/ns/tags/" />
        <category term="winterpark" scheme="http://roller.apache.org/ns/tags/" />
        <category term="skiseason" scheme="http://roller.apache.org/ns/tags/" />
        <category term="skiing" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;This ski season was &lt;em&gt;interesting&lt;/em&gt; to say the least. Because of COVID-19, most Colorado ski resorts required reservations in order to ski. This wasn&apos;t too painful because we did most of our skiing during the week.&lt;/p&gt;

&lt;p&gt;We recognized that social distancing might be an issue on weekends, so we rented a condo in Winter Park for the season. This allowed us to ski weekdays while working remotely. We didn&apos;t have it the whole season, just a week every month.&lt;/p&gt;

&lt;p&gt;The ski season started for me on November 24, 2020, with some backyard cross-country skiing.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217096056_555d157e86_c.jpg&quot; title=&quot;Sunset dog ski&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217096056/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217096056_555d157e86.jpg&quot; width=&quot;500&quot; alt=&quot;Sunset dog ski&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;I was super pumped when I drove our Syncro Westy to the condo and discovered it fit in the garage! My first day on the slopes was Friday, December 4th. &lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51217853574_5a647d63ba_c.jpg&quot; title=&quot;The van fits!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217853574/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217853574_5a647d63ba_q.jpg&quot; width=&quot;150&quot; alt=&quot;The van fits!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51217301858_e0dae34bb4_c.jpg&quot; title=&quot;Ugh, lines...&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217301858/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217301858_e0dae34bb4_q.jpg&quot; width=&quot;150&quot; alt=&quot;Ugh, lines...&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51217094696_6daa88d99b_c.jpg&quot;
     title=&quot;It&apos;s a beautiful first day on the mountain!&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217094696/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217094696_6daa88d99b_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;It&apos;s a beautiful first day on the mountain!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;This ski season was &lt;em&gt;interesting&lt;/em&gt; to say the least. Because of COVID-19, most Colorado ski resorts required reservations in order to ski. This wasn&apos;t too painful because we did most of our skiing during the week.&lt;/p&gt;

&lt;p&gt;We recognized that social distancing might be an issue on weekends, so we rented a condo in Winter Park for the season. This allowed us to ski weekdays while working remotely. We didn&apos;t have it the whole season, just a week every month.&lt;/p&gt;

&lt;p&gt;The ski season started for me on November 24, 2020, with some backyard cross-country skiing.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217096056_555d157e86_c.jpg&quot; title=&quot;Sunset dog ski&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217096056/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217096056_555d157e86.jpg&quot; width=&quot;500&quot; alt=&quot;Sunset dog ski&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;I was super pumped when I drove our Syncro Westy to the condo and discovered it fit in the garage! My first day on the slopes was Friday, December 4th. &lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51217853574_5a647d63ba_c.jpg&quot; title=&quot;The van fits!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217853574/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217853574_5a647d63ba_q.jpg&quot; width=&quot;150&quot; alt=&quot;The van fits!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51217301858_e0dae34bb4_c.jpg&quot; title=&quot;Ugh, lines...&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217301858/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217301858_e0dae34bb4_q.jpg&quot; width=&quot;150&quot; alt=&quot;Ugh, lines...&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51217094696_6daa88d99b_c.jpg&quot;
     title=&quot;It&apos;s a beautiful first day on the mountain!&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217094696/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217094696_6daa88d99b_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;It&apos;s a beautiful first day on the mountain!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;
  The Fraser River Trail was just across the road from our condo, so it was easy to get some cross-country skiing in too.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217093286_ca3490d70c_c.jpg&quot; title=&quot;Fraser River Trail&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217093286/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217093286_ca3490d70c.jpg&quot; width=&quot;500&quot; alt=&quot;Fraser River Trail&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;That weekend, Trish and Jack joined me and we went Nordic skiing at &lt;a href=&quot;https://snowmountainranch.org/nordic-center/&quot;&gt;Snow Mountain Ranch&apos;s Nordic Center&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218158655_e87505d722_c.jpg&quot; title=&quot;Family cross-country day!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218158655/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218158655_e87505d722.jpg&quot; width=&quot;500&quot; alt=&quot;Family cross-country day!&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/51218156275_a73f33d13e_c.jpg&quot; title=&quot;Keep one cow apart&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218156275/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218156275_a73f33d13e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Keep one cow apart&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51218155995_88e5fe0d35_c.jpg&quot; title=&quot;Ski bus!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218155995/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218155995_88e5fe0d35_m.jpg&quot; width=&quot;240&quot; alt=&quot;Ski bus!&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/51217847694_a37fde1b8e_c.jpg&quot; title=&quot;The Telemark Neighborhood&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217847694/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217847694_a37fde1b8e_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Telemark Neighborhood&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218153150_08009cdc21_c.jpg&quot; title=&quot;It&apos;s almost Christmas!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218153150/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218153150_08009cdc21_m.jpg&quot; width=&quot;240&quot; alt=&quot;It&apos;s almost Christmas!&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;We took the day off on Trish&apos;s birthday; skiing corduroy groomers in the morning and cross-country in the afternoon.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217085071_931ed7376e_c.jpg&quot;
     title=&quot;We did it! 10 runs before noon. &amp;#x1F60A;&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217085071/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217085071_931ed7376e_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;We did it! 10 runs before noon. &amp;#x1F60A;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217160986_f887b2593a_c.jpg&quot; title=&quot;Then, we went cross-country skiing!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217160986/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217160986_f887b2593a_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Then, we went cross-country skiing!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  I&apos;m normally a big fan of taking two weeks off for Christmas and New Years. Since everyone stayed home for the holidays this year, I chose to work through them. I took off the first week in January instead.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217918434_5a2bebe291_c.jpg&quot; title=&quot;Jack is an excellent skier now.&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217918434/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217918434_5a2bebe291_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Jack is an excellent skier now.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51218226040_12029789c0_c.jpg&quot;
     title=&quot;I worked through Christmas break and took the first week in January off instead. It was excellent!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218226040/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218226040_12029789c0_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;I worked through Christmas break and took the first week in January off instead. It was excellent!&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

  &lt;a href=&quot;https://live.staticflickr.com/65535/51218225380_1931d32a51_c.jpg&quot; title=&quot;Wednesday skiing!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218225380/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218225380_1931d32a51_q.jpg&quot; width=&quot;150&quot; alt=&quot;Wednesday skiing!&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/51217914979_694e2a15d1_c.jpg&quot; title=&quot;Jim Creek Trail&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217914979/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217914979_694e2a15d1_m.jpg&quot; width=&quot;240&quot; alt=&quot;Jim Creek Trail&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217156766_7d7ccd5fa8_c.jpg&quot; title=&quot;Lunch loop near Fraser&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217156766/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217156766_7d7ccd5fa8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Lunch loop near Fraser&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/51216438512_e14756b1f9_c.jpg&quot; title=&quot;Happy Friday!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216438512/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216438512_e14756b1f9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Friday!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216438042_18b5ac0752_c.jpg&quot; title=&quot;Abbie&apos;s ready for some turns&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216438042/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216438042_18b5ac0752_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Abbie&apos;s ready for some turns&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217362143_d840979e9e_c.jpg&quot;
     title=&quot;Cross-country at Devil&apos;s Thumb Ranch&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217362143/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217362143_d840979e9e_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Cross-country at Devil&apos;s Thumb Ranch&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  I worked in Stout the Syncro in the C-Lot at Mary Jane when I returned in February. That&apos;s the day I learned that four hours of Zoom costs about 7 GB in bandwidth. I tethered on my T-Mobile phone the whole time and only had to buy an additional 10 GB (for $10) at the very end. The fresh powder at the end of the day made it worth it!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217913174_a6d01c69c8_c.jpg&quot; title=&quot;My remote office in early February&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217913174/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217913174_a6d01c69c8_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;My remote office in early February&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218220575_744dede502_c.jpg&quot; title=&quot;#VanLife&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218220575/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218220575_744dede502_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;a href=&quot;https://live.staticflickr.com/65535/51216436737_52d1244ae0_c.jpg&quot; title=&quot;4 hours of Zoom calls later&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216436737/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216436737_52d1244ae0_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;4 hours of Zoom calls later&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;Hawaii Adventures in Kauai&lt;/h3&gt;

&lt;p&gt;My parents like to get away from Montana in the middle of winter. Before the pandemic hit, we ventured to &lt;a href=&quot;https://raibledesigns.com/rd/entry/january_jaunts_to_new_orleans&quot;&gt;New Orleans&lt;/a&gt;. This year, we decided to head to Kauai for two weeks. There were many COVID protocols in place for this trip.
&lt;/p&gt;
&lt;p&gt;
  We had to have a negative COVID test 72 hours before departure. We had to show those results when we landed in Kauai. Then we had to quarantine in a &quot;resort bubble&quot; hotel for 72 hours. Next, we had to take another test and receive negative results. After that, we were free to rent a car and start our island adventures. Abbie brought her boyfriend, Joseph, and best friend, Rory, along with us. &lt;/p&gt;
&lt;p&gt;
  We left early for the airport because my parents took an at-home test and hadn&apos;t received their results yet. Since they had a 3-hour layover in Denver, we figured I could take them to a local Walgreens to get tested and everything would be good to go.&lt;/p&gt;

&lt;p&gt;When we were driving to the airport, Trish&apos;s engine light came on in her Tahoe. By the time we arrived at the airport, the vehicle was obviously dying. We called AAA to pick it up and I jumped in a Lyft with my parents. The local Walgreens was hesitant to test without an appointment, but we told them our situation, and a manager there did his best to make it happen. 
&lt;/p&gt;
The manager was successful&#8212;I received the results on my phone as the plane was taxiing down the runway!
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218217575_ccdcd20305_c.jpg&quot; title=&quot;Going to Hawaii with my parents!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218217575/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218217575_ccdcd20305_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Going to Hawaii with my parents!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217909394_5979226c97_c.jpg&quot;
     title=&quot;We all had to get negative COVID tests 72 hours before departure, quarantine for 72 hours on arrival, and take another test before we could leave the hotel.&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217909394/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217909394_5979226c97_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;We all had to get negative COVID tests 72 hours before departure, quarantine for 72 hours on arrival, and take another test before we could leave the hotel.&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216433297_560b1958b1_c.jpg&quot;
     title=&quot;Direct from Denver to Kauai on United!&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216433297/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216433297_560b1958b1_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Direct from Denver to Kauai on United!&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/51217149456_ce40a480aa_c.jpg&quot; title=&quot;Happy Ladies&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217149456/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217149456_ce40a480aa.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Ladies&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/51216400442_184c6a44d3_c.jpg&quot; title=&quot;Lighthouse shot by Trish!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216400442/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216400442_184c6a44d3.jpg&quot; width=&quot;500&quot; alt=&quot;Lighthouse shot by Trish!&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/51217117041_307f7aa274_c.jpg&quot; title=&quot;The Hawaii Crew&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217117041/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217117041_307f7aa274.jpg&quot; width=&quot;500&quot; alt=&quot;The Hawaii Crew&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/51217354578_4c422f9b75_c.jpg&quot; title=&quot;Makai Golf Club 7th Hole&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217354578/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217354578_4c422f9b75_s.jpg&quot; width=&quot;75&quot; alt=&quot;Makai Golf Club 7th Hole&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216429142_86666f1487_c.jpg&quot; title=&quot;Tree Huggers&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216429142/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216429142_86666f1487_s.jpg&quot; width=&quot;75&quot; alt=&quot;Tree Huggers&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217353163_22e19f2368_c.jpg&quot; title=&quot;Princeville Botanical Gardens&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217353163/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217353163_22e19f2368_s.jpg&quot; width=&quot;75&quot;
      alt=&quot;Princeville Botanical Gardens&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217352503_88e00f5795_c.jpg&quot; title=&quot;Makai Golf Course Sunset&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217352503/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217352503_88e00f5795_s.jpg&quot; width=&quot;75&quot; alt=&quot;Makai Golf Course Sunset&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216426492_cb32ce243e_c.jpg&quot;
     title=&quot;The kinda place a Montanan likes to be in February!&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216426492/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216426492_cb32ce243e_s.jpg&quot; width=&quot;75&quot;
      alt=&quot;The kinda place a Montanan likes to be in February!&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/51217142501_a0f8327d5d_c.jpg&quot; title=&quot;My Double Rainbow&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217142501/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217142501_a0f8327d5d_m.jpg&quot; width=&quot;240&quot; alt=&quot;My Double Rainbow&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217347023_37e8d1c33d_c.jpg&quot; title=&quot;My fabulous parents&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217347023/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217347023_37e8d1c33d_m.jpg&quot; width=&quot;240&quot; alt=&quot;My fabulous parents&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;On our last night, Trish and I saw live music for the first time in over a year!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217897244_e3cf2c757e_c.jpg&quot; title=&quot;Yeehaw!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217897244/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217897244_e3cf2c757e.jpg&quot; width=&quot;500&quot; alt=&quot;Yeehaw!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Trish ordered a new lens for her camera when she saw the Albatross nesting nearby. It arrived just hours before we flew home.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217138241_b11e190f17_c.jpg&quot; title=&quot;Expert in action&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217138241/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217138241_b11e190f17_q.jpg&quot; width=&quot;150&quot; alt=&quot;Expert in action&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217114811_f7c68e9726_c.jpg&quot; title=&quot;Majestic&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217114811/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217114811_f7c68e9726_q.jpg&quot; width=&quot;150&quot; alt=&quot;Majestic&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218180165_fb1fb1755e_c.jpg&quot; title=&quot;So cute!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218180165/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218180165_fb1fb1755e_q.jpg&quot; width=&quot;150&quot; alt=&quot;So cute!&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;March Madness&lt;/h3&gt;
&lt;p&gt;When we arrived home in March, I headed back to the condo for our week. I arrived late at night and texted the owner to tell him I couldn&apos;t get the hot tub to turn on. He texted me back three times before I woke up the next morning. I had the wrong dates! People were checking in that night, so I had to wash all the sheets and get out of there quickly. I got
  all my work done in the morning and hit the slopes in the afternoon.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216418747_401fb9aab4_c.jpg&quot; title=&quot;This is gonna hurt.&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216418747/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216418747_401fb9aab4_q.jpg&quot; width=&quot;150&quot; alt=&quot;This is gonna hurt.&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217894194_20890240a3_c.jpg&quot;
     title=&quot;I got the best parking spot in C Lot!&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217894194/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217894194_20890240a3_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;I got the best parking spot in C Lot!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218201585_25fd478ea1_c.jpg&quot; title=&quot;Still got my Stormpath sticker&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218201585/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218201585_25fd478ea1_q.jpg&quot; width=&quot;150&quot;
      alt=&quot;Still got my Stormpath sticker&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I returned the following week and had a blast skiing with my buddy, Bill Lyons. He&apos;s been a ski instructor at Winter Park and Mary Jane for decades and showed me some hidden trails. Thanks, Bill!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217340903_12d8ef9d80_c.jpg&quot; title=&quot;Line of sight trail&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217340903/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217340903_12d8ef9d80_n.jpg&quot; width=&quot;240&quot; alt=&quot;Line of sight trail&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217133511_3b4dbc0197_c.jpg&quot; title=&quot;Thanks for being my guide, Bill!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217133511/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217133511_3b4dbc0197_n.jpg&quot; width=&quot;240&quot;
      alt=&quot;Thanks for being my guide, Bill!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  We&apos;d just returned from Hawaii, so we figured we might be able to skip Spring Break. Then we learned Abbie had senioritis and wanted to rendezvous with her similarly-minded cousins near a beach. Trish&apos;s parents have a place in Naples, Florida. Since they weren&apos;t using it, we made a plan, bought some tickets, and spent a splendid week with
  Trish&apos;s brother and his family.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217889094_ee8aa2d948_c.jpg&quot; title=&quot;Photobomb!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217889094/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217889094_ee8aa2d948_m.jpg&quot; width=&quot;240&quot; alt=&quot;Photo bomb!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217337483_aa7b59a53d_c.jpg&quot; title=&quot;Oh my!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217337483/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217337483_aa7b59a53d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Oh my!&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/51217109896_0417f1b875_c.jpg&quot; title=&quot;Now dance!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217109896/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217109896_0417f1b875.jpg&quot; width=&quot;500&quot; alt=&quot;Now dance!&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The owner of the Winter Park condo offered us a few free nights in April, so Jack and I headed up for the weekend. Just before leaving, Jack approached me and asked, &quot;Do I have to go? It&apos;s so boring up there.&quot; I agreed with him. It was boring and I liked that. I told him to bring a good book and get in the van. We cross-county skied and had a beautiful day of
  corduroy runs to end the season.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217887089_b70c3d0207_c.jpg&quot; title=&quot;Last weekend skiing with Jack&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217887089/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217887089_b70c3d0207_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Last weekend skiing with Jack&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218195125_4dc6d46d73_c.jpg&quot; title=&quot;Cruisin&apos; at Devil&apos;s Thumb Ranch&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218195125/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218195125_4dc6d46d73_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Cruisin&apos; at Devil&apos;s Thumb Ranch&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/51217335308_3aa26a4b49_c.jpg&quot; title=&quot;Conditions were a bit sparse&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217335308/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217335308_3aa26a4b49_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Conditions were a bit sparse&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217334933_f79dc470d0_c.jpg&quot; title=&quot;Corduroy turns to end the season&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217334933/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217334933_f79dc470d0_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Corduroy turns to end the season&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;My stats for the season: 28 days cross-country skiing, 23 days downhill. That&apos;s 51 combined days! &amp;#x1F60A;
&lt;h3&gt;Detoxed and Fully Vaccinated&lt;/h3&gt;

&lt;p&gt;At the beginning of April, Trish and I started a &lt;a href=&quot;https://21daysugardetox.com/&quot;&gt;21-Day Sugar Detox&lt;/a&gt;. Abbie, Jack, and I were fully vaccinated by the end of the month, and Trish was well on her way.
&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;I&amp;#39;m happy to announce that I&amp;#39;m &lt;a href=&quot;https://twitter.com/hashtag/FullyVaccinated?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#FullyVaccinated&lt;/a&gt;. Had 2nd &lt;a href=&quot;https://twitter.com/pfizer?ref_src=twsrc%5Etfw&quot;&gt;@pfizer&lt;/a&gt; shot on Apr 14. I feel lucky &amp;#x1F340; to have experienced no symptoms other than extreme joy. &amp;#x1F973;&lt;a href=&quot;https://twitter.com/TrishPhoto?ref_src=twsrc%5Etfw&quot;&gt;@TrishPhoto&lt;/a&gt; and I just finished a 23-day sugar detox too. We&amp;#39;re feeling good!! &amp;#x270C;&amp;#xFE0F; &lt;a href=&quot;https://t.co/6chqkFbPB7&quot;&gt;pic.twitter.com/6chqkFbPB7&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1387543112252334081?ref_src=twsrc%5Etfw&quot;&gt;April 28, 2021&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;The following week, I rode my bike into &lt;a href=&quot;https://www.thriveworkplace.com/centennial/&quot;&gt;Thrive DTC&lt;/a&gt; and
  marveled at their remodeling project.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217127996_713e7dc120_c.jpg&quot; title=&quot;Thrive DTC is looking good!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217127996/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217127996_713e7dc120_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Thrive DTC is looking good!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216409422_46d52d6e0c_c.jpg&quot; title=&quot;Thrive DTC&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216409422/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216409422_46d52d6e0c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Thrive DTC&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/51217333378_a27e25fced_c.jpg&quot; title=&quot;Thrive DTC&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217333378/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217333378_a27e25fced_m.jpg&quot; width=&quot;240&quot; alt=&quot;Thrive DTC&quot;
      style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217332983_b9cf5e1530_c.jpg&quot; title=&quot;Thrive DTC&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217332983/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217332983_b9cf5e1530_m.jpg&quot; width=&quot;240&quot; alt=&quot;Thrive DTC&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;The Graduate&lt;/h3&gt;
&lt;p&gt;May came quickly and with it, the end of the school. I snapped photos of both kids on their last days.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51216407727_573975b091_c.jpg&quot; title=&quot;Abbie&apos;s last day of high school!&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51216407727/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51216407727_573975b091_n.jpg&quot; width=&quot;240&quot;
      alt=&quot;Abbie&apos;s last day of high school!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217122246_6fb1898913_c.jpg&quot;
     title=&quot;Jack&apos;s last day of sophomore year! &amp;#x1F389;&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217122246/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217122246_6fb1898913_n.jpg&quot; width=&quot;240&quot;
      alt=&quot;Jack&apos;s last day of sophomore year! &amp;#x1F389;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  Abbie graduates from high school this Friday. My family is flying into town today. Trish&apos;s arrives tomorrow. We have the VWs all cleaned up, our landscaping/carport/basketball court project is finishing up, and we&apos;re grateful for everything that brought us to this point. &amp;#x1F970;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51217328833_82ac03f4e4_c.jpg&quot;
     title=&quot;Hefe the Bus is ready to go cruisin! #vwbus #HefeTheBus&quot; rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51217328833/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51217328833_82ac03f4e4_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Hefe the Bus is ready to go cruisin! #vwbus #HefeTheBus&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/51218188615_3ea0d13ed9_c.jpg&quot;
     title=&quot;Stout the Syncro&apos;s new bedroom is almost finished! #SyncroWesty #StoutTheSyncro&quot;
     rel=&quot;lightbox[skiseason202021]&quot;
     data-href=&quot;https://www.flickr.com/photos/mraible/51218188615/in/album-72157719314289233/&quot;&gt;&lt;img
      src=&quot;https://live.staticflickr.com/65535/51218188615_3ea0d13ed9_m.jpg&quot; width=&quot;240&quot;
      alt=&quot;Stout the Syncro&apos;s new bedroom is almost finished! #SyncroWesty #StoutTheSyncro&quot;
      style=&quot;border: 1px solid black; margin-left: 15px;&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;
  &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157719314289233/&quot;&gt;See all 148 photos on Flickr &amp;rarr;&lt;/a&gt;&lt;/div&gt;

</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2020_a_year_in_review</id>
        <title type="html">2020 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2020_a_year_in_review"/>
        <published>2021-01-19T16:34:30-07:00</published>
        <updated>2021-01-19T23:55:35-07:00</updated> 
        <category term="/General" label="General" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="covid" 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="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2020" 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;2020 was an interesting year. It started out pretty awesome, then came a global pandemic, a renewed interest in social justice, and lots of political news to keep your blood pressure up. Doomscrolling became a word, and I found myself doing it often.
&lt;/p&gt;
&lt;p&gt;
As a person that travels frequently and speaks at a lot of conferences, there were a lot of changes. The interesting thing is I planned for many of these changes beforehand. From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2019_a_year_in_review&quot;&gt;last year&apos;s year in review&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&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;/blockquote&gt;
&lt;p&gt;
It seems I timed this quite well! However, I didn&apos;t expect most conferences to go virtual. I didn&apos;t expect I could still speak at them without traveling. I expected to speak less and have more time for writing. I didn&apos;t expect to stay home &lt;b&gt;all the time&lt;/b&gt; and have everything delivered. I didn&apos;t expect to have to stop hanging out with friends.
&lt;/p&gt;
&lt;p&gt;I&apos;m going to look back on 2020 using the following categories.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2020_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/2020_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/2020_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/2020_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/2020_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/2020_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/2020_a_year_in_review#2021&quot;&gt;2021&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary>
        <content type="html">&lt;p&gt;2020 was an interesting year. It started out pretty awesome, then came a global pandemic, a renewed interest in social justice, and lots of political news to keep your blood pressure up. Doomscrolling became a word, and I found myself doing it often.
&lt;/p&gt;
&lt;p&gt;
As a person that travels frequently and speaks at a lot of conferences, there were a lot of changes. The interesting thing is I planned for many of these changes beforehand. From &lt;a href=&quot;https://raibledesigns.com/rd/entry/2019_a_year_in_review&quot;&gt;last year&apos;s year in review&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot;&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;/blockquote&gt;
&lt;p&gt;
It seems I timed this quite well! However, I didn&apos;t expect most conferences to go virtual. I didn&apos;t expect I could still speak at them without traveling. I expected to speak less and have more time for writing. I didn&apos;t expect to stay home &lt;b&gt;all the time&lt;/b&gt; and have everything delivered. I didn&apos;t expect to have to stop hanging out with friends.
&lt;/p&gt;
&lt;p&gt;I&apos;m going to look back on 2020 using the following categories.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2020_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/2020_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/2020_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/2020_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/2020_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/2020_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/2020_a_year_in_review#2021&quot;&gt;2021&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;
&lt;p&gt;
This year, I focused on creating YouTube videos as much as blog posts. Our &lt;a href=&quot;https://youtube.com/c/oktadev&quot;&gt;YouTube Channel&lt;/a&gt; continues to grow &lt;em&gt;much faster&lt;/em&gt; than our &lt;a href=&quot;https://twitter.com/oktadev&quot;&gt;Twitter followers&lt;/a&gt;, so we continue to invest in it. I published 20 videos on the @oktadev channel in 2020. In addition to doing videos about my own posts, I started doing them for posts written by other Java developers. My most popular video was based on a &lt;a href=&quot;https://developer.okta.com/blog/2020/01/09/java-rest-api-showdown&quot;&gt;blog post written by Daniel Pereira&lt;/a&gt;. In case you&apos;re interested, you can watch &lt;a href=&quot;https://youtu.be/pR_MBNL7cFI&quot;&gt;Java REST API Comparison: Micronaut, Quarkus, and Spring Boot&lt;/a&gt; below.
&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/pR_MBNL7cFI&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;
In the first quarter, I continued to record meetups for the Denver JUG and Denver Open Source Users group. This changed quickly with COVID, and we pivoted to using &lt;a href=&quot;https://streamyard.com/&quot;&gt;StreamYard&lt;/a&gt; and YouTube for our meetups. This made it easier to record sessions because there&apos;s no editing involved. Even though it requires less time, I really miss the in-person meetups and after-hours discussions with the community. We published nine videos to the DJUG channel and three to the DOSUG channel.
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/denverjug&quot;&gt;Denver JUG YouTube Channel&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/denveropensource&quot;&gt;Denver Open Source Users Group YouTube Channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Denver JUG is now up to 3,608 members. Our most popular video in 2020 was from &lt;a href=&quot;https://agilelearner.com&quot;&gt;Venkat Subramaniam&lt;/a&gt; on the &lt;a href=&quot;https://youtu.be/vTq5mBe7s7c&quot;&gt;Qualities of a Highly Effective Architect&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
    I wrote 15 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 8 on raibledesigns.com and 0 on jhipster-book.com, that&apos;s 23! For those counting, that&apos;s 6 less than I wrote in 2019. --&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.
&lt;/p&gt;
&lt;p&gt;I focused on Angular, Spring Boot, JHipster, Ionic, and the Okta CLI. We added author pages to our blog this year, so you can see all my posts &lt;a href=&quot;https://developer.okta.com/blog/authors/matt-raible/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I especially enjoyed writing a four-part series on Angular and Spring Boot:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2020/01/06/crud-angular-9-spring-boot-2&quot;&gt;Build a CRUD App with Angular 9 and Spring Boot 2.2&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2020/03/02/angular-bootstrap&quot;&gt;Build Beautiful Angular Apps with Bootstrap&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2020/05/29/angular-deployment&quot;&gt;Angular Deployment with a Side of Spring Boot&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://developer.okta.com/blog/2020/06/17/angular-docker-spring-boot&quot;&gt;Angular + Docker with a Big Hug from Spring Boot&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In particular, I learned a lot from writing the last post. It required collaborating with a lot of folks to make it happen. Kudos to Benoit Sautel for his help with Gradle + Kotlin, Ray Tsang for help with Jib, James Ward for help with Knative, Josh Long for his assistance with Docker + Cloud Foundry, and Joe Kutner for his buildpacks support.&lt;/p&gt;
&lt;p&gt;Rather than rewriting this series for new versions every year, I&apos;ve decided to use it as a foundation for an &lt;a href=&quot;https://www.infoq.com/minibooks/&quot;&gt;InfoQ Mini-Book&lt;/a&gt; on Angular.&lt;/p&gt;
&lt;p&gt;My post popular thought leadership post was &lt;a href=&quot;https://developer.okta.com/blog/2020/03/23/microservice-security-patterns&quot;&gt;Security Patterns for Microservice Architectures&lt;/a&gt;. This was a runaway hit shortly after I posted it, and it remains #1 on Google for &quot;microservice security.&quot;&lt;/p&gt;
&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;
    According to TripIt, I took 10 trips, to 16 cities, in 4 countries. That&apos;s 12 fewer trips than 2019, and I had 85 days on the road (-44 from 2019).
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://speakerdeck.com/mraible&quot;&gt;My Speaker Deck profile&lt;/a&gt; shows 23 presentations at 19 events. Eight of those were in-person, the rest virtual.
&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;Denver Developer Identity Workshop (Okta event)&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.jfokus.se/&quot;&gt;Jfokus&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Jforum-Stockholm/&quot;&gt;Jforum Stockholm&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/BoulderJavaUsersGroup/&quot;&gt;Boulder JUG&lt;/a&gt;&lt;/li&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;http://ujug.org/&quot;&gt;Utah JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.jug.ch/&quot;&gt;Switzerland JUG&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.oktane20.com/&quot;&gt;Oktane 20&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/FrontendTech/&quot;&gt;Frontend Tech Meetup&lt;/a&gt; (Sydney, Australia)&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.allthetalks.org/&quot;&gt;All The Talks&lt;/a&gt;&lt;/li&gt;
            &lt;/ol&gt;
        &lt;/td&gt;
        &lt;td&gt;
            &lt;ol start=&quot;11&quot; style=&quot;margin-top: 0&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;https://devaroundthesun.org/&quot;&gt;Dev Around the Sun&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://londonjavacommunity.co.uk/&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; JVM User Group&lt;/a&gt; (Bristol, United Kingdom)&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://adtmag.com/webcasts/2020/05/microservices-api-seminar-implementing-microservices-in-your-enterprise-052120.aspx&quot;&gt;ATDmag Microservices &amp; APIs Seminar&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://springone.io&quot;&gt;SpringOne&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.jhipster.tech/jhipster-code/&quot;&gt;JHipster Code&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://jconf.dev/&quot;&gt;JConf.dev&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://youtu.be/ZIweXk3guaE&quot;&gt;Vaadin Webinar&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=ym-OPn4e_nQ&quot;&gt;JHipster Virtual Meetup&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 had a lot of fun in February &lt;a href=&quot;https://raibledesigns.com/rd/entry/a_fantastically_fun_february_at&quot;&gt;traveling to Sweden for Jfokus and doing a Rocky Mountain JUG Tour with Ray Tsang&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49662828892_27e1eed875_c.jpg&quot; title=&quot;The Main Stage&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49662828892/in/album-72157713496655132/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49662828892_27e1eed875_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Main Stage&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49662944032_f06872ba97_c.jpg&quot; title=&quot;Stop 2: Denver JUG&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49662944032/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49662944032_f06872ba97_m.jpg&quot; width=&quot;240&quot; alt=&quot;Stop 2: Denver JUG&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3 id=&quot;community&quot;&gt;Community&lt;/h3&gt;
&lt;p&gt;
    As part of the Rocky Mountain JUG Tour, Ray Tsang and I started a &lt;a href=&quot;https://www.meetup.com/dev-ski-days/&quot;&gt;Developer Ski Days&lt;/a&gt; meetup. We only had two meetups before COVID shut us down. We were really looking forward to taking the &lt;a href=&quot;https://www.winterparkresort.com/plan-your-trip/getting-here/winter-park-express&quot;&gt;Winter Park Express train&lt;/a&gt; after dev.next. I&apos;ll make sure to try again when dev.next happens.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49521529932_d9623d5318_c.jpg&quot; title=&quot;The inaugural crew!&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49521529932/in/album-72157713068403413/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49521529932_d9623d5318_m.jpg&quot; width=&quot;240&quot; alt=&quot;The inaugural crew!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/49526258492_1697766cf4_c.jpg&quot; title=&quot;Ray, Christina, and Ben&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49526258492/in/album-72157713068403413/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49526258492_1697766cf4_m.jpg&quot; width=&quot;240&quot; alt=&quot;Ray, Christina, and Ben&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We did not host any Devoxx4Kids Meetups in 2020. Since most kids were on screens for school, I didn&apos;t feel we should subject them to more screen time. As of this writing, we have 341 members. I sent everyone a survey about doing online meetups in November and only received nine responses. Eight of them were in favor of it, so we might try to do one soon. I&apos;m still looking for someone to help recruit speakers and schedule events.
&lt;/p&gt;

&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;

&lt;p&gt;I continued to maintain &lt;a href=&quot;https://github.com/oktadeveloper/schematics&quot;&gt;OktaDev Schematics&lt;/a&gt; in 2020. The project had 19 releases, added support for Express.js, and made Capacitor the default for Ionic apps. Working on it helps me keep up with changes in Angular, React, Vue, Ionic, and React Native and makes sure I know how to use the latest Okta SDKs. According to &lt;a href=&quot;https://npm-stat.com/charts.html?package=%40oktadev%2Fschematics&amp;from=2020-01-01&amp;to=2020-12-31&quot;&gt;npm-stat.com&lt;/a&gt;, it had ~36K downloads in 2020.&lt;/p&gt;

&lt;p&gt;My other projects are related to &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt;. I helped add OAuth 2.0 support for reactive JHipster apps. I also integrated Spring Cloud Gateway for microservice architectures. We had 12 releases in 2020. I&apos;m blown away that we had &lt;a href=&quot;https://npm-stat.com/charts.html?package=generator-jhipster&amp;from=2020-01-01&amp;to=2020-12-31&quot;&gt;almost 2 million downloads&lt;/a&gt;. &amp;#x1F92F;&lt;/p&gt;

&lt;p&gt;I&apos;m proud to see JHipster&apos;s ecosystem thriving with blueprints. I try to test them every so often to ensure they have the same quality as the main generator.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/jhipster/generator-jhipster-micronaut&quot;&gt;Micronaut for JHipster&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/jhipster/generator-jhipster-quarkus&quot;&gt;Quarkus for JHipster&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/jhipster/generator-jhipster-nodejs&quot;&gt;NestJS for JHipster&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/jhipster/jhipster-dotnetcore&quot;&gt;.NET Core for JHipster&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&apos;m proud to say that JHipster 7 is really close to being finished. We had &lt;a href=&quot;https://www.jhipster.tech/2020/12/21/jhipster-release-7.0.0-beta.0.html&quot;&gt;two&lt;/a&gt; &lt;a href=&quot;https://www.jhipster.tech/2021/01/17/jhipster-release-7.0.0-beta.1.html&quot;&gt;beta&lt;/a&gt; releases in the last month!&lt;/p&gt;

&lt;p&gt;I did not work on the JHipster Mini-Book in 2020, but I hope to update it for JHipster 7 this year.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/oktadeveloper/generator-jhipster-ionic&quot;&gt;Ionic for JHipster&lt;/a&gt; had eight releases in 2020 and around ~7K downloads.
&lt;/p&gt;
&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;

&lt;p&gt;I got some good ski days in before the pandemic hit with trips to Whitefish Mountain in Montana, &lt;a href=&quot;https://raibledesigns.com/rd/entry/january_jaunts_to_new_orleans&quot;&gt;Jackson Hole in Wyoming&lt;/a&gt;, and Trysil Ski Area in Norway.&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[2020yearinreview]&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 was super excited to travel to JavaLand in Germany in mid-March and hit the slopes in the Swiss Alps with my family after. That was canceled due to COVID, and we took our kids to Florida for Spring Break instead.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/50062594363_c0f1c2fb79_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062594363/in/album-72157714923522963/&quot; title=&quot;Hanging with my honey in Marco Island&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062594363_c0f1c2fb79_m.jpg&quot; width=&quot;240&quot; alt=&quot;Hanging with my honey in Marco Island&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/50063149301_0f1b3e783c_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063149301/in/album-72157714923522963/&quot; title=&quot;Marco Island Sunset&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063149301_0f1b3e783c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Marco Island Sunset&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In addition to Florida in March, we had several other trips during the pandemic. We road tripped to see my parents in Montana in May. We flew to Boston for our nieces&apos; graduation in June.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/50063146241_f882f92544_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063146241/in/album-72157714923522963/&quot; title=&quot;Proud Aunt and Uncle&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063146241_f882f92544.jpg&quot; width=&quot;500&quot; alt=&quot;Proud Aunt and Uncle&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I wrote about these trips in &lt;a href=&quot;https://raibledesigns.com/rd/entry/2019_2020_ski_season_quarantining&quot;&gt;2019-2020 Ski Season, Quarantining for COVID, and a Graduation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In July, I enjoyed a dream come true and &lt;a href=&quot;https://raibledesigns.com/rd/entry/july_2020_rafting_riding_and&quot;&gt;took the whole month off&lt;/a&gt;. We enjoyed a family raft trip through Desolation Canyon to begin.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225013933_46d7f53c1b_c.jpg&quot; title=&quot;Disco Night!&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225013933/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225013933_46d7f53c1b.jpg&quot; width=&quot;500&quot; alt=&quot;Disco Night!&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-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225737677_b1aae28214_c.jpg&quot; title=&quot;The whole crew on Disco Night&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225737677/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225737677_b1aae28214.jpg&quot; width=&quot;500&quot; alt=&quot;The whole crew on Disco Night&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Then, I headed for Montana with my &lt;a href=&quot;https://www.trekbikes.com/us/en_US/bikes/mountain-bikes/electric-mountain-bikes/rail/rail-7/p/30914/&quot;&gt;new eBike&lt;/a&gt; in tow. I had all kinds of fun biking on my childhood trails, rafting the Blackfoot and the Middle Fork of the Flathead, and golfing with my folks.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225918522_cb3c155825_c.jpg&quot; title=&quot;Mountain bike trail to Barber Creek Road&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225918522/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225918522_cb3c155825_q.jpg&quot; width=&quot;150&quot; alt=&quot;Mountain bike trail to Barber Creek Road&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225484091_92d4dbd03e_c.jpg&quot; title=&quot;Holland Lake&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225484091/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225484091_92d4dbd03e_q.jpg&quot; width=&quot;150&quot; alt=&quot;Holland Lake&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225662716_8867a1e11e_c.jpg&quot; title=&quot;The Foothills Trail&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225662716/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225662716_8867a1e11e_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Foothills Trail&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224834013_e25576f167_c.jpg&quot; title=&quot;Sweet bike trail!&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224834013/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224834013_e25576f167.jpg&quot; width=&quot;500&quot; alt=&quot;Sweet bike trail!&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225016018_1bc79fb0c2_c.jpg&quot; title=&quot;Peace!&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225016018/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225016018_1bc79fb0c2.jpg&quot; width=&quot;500&quot; alt=&quot;Peace!&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-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225018308_863bf0efd7_c.jpg&quot; title=&quot;Birthday golf!&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225018308/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225018308_863bf0efd7.jpg&quot; width=&quot;500&quot; alt=&quot;Birthday golf!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    My sister and Mya visited, along with Trish and the kids.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225482596_3530957890_c.jpg&quot; title=&quot;Laughter is the best medicine&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225482596/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225482596_3530957890.jpg&quot; width=&quot;500&quot; alt=&quot;Laughter is the best medicine&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-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224859133_627b0b0a02_c.jpg&quot; title=&quot;Family photo 2020!&quot; rel=&quot;lightbox[2020yearinreview]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224859133/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224859133_627b0b0a02.jpg&quot; width=&quot;500&quot; alt=&quot;Family photo 2020!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Trish and I celebrated our 7th anniversary at a &lt;a href=&quot;https://www.tallgrassspa.com/&quot;&gt;spa in Evergreen&lt;/a&gt;. I highly recommend their &quot;Just for Two Escape&quot; package.&lt;/p&gt;
&lt;p&gt;
    I didn&apos;t publish many pictures from the rest of 2020, but a lot still happened. &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_jack9&quot;&gt;Jack turned 16&lt;/a&gt;, got his driver&apos;s license, and his mom gifted him a car.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/50279422646_c7532ed9a6_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50279422646/in/album-72157715727288026/&quot; title=&quot;All grown-up&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50279422646_c7532ed9a6.jpg&quot; width=&quot;500&quot; alt=&quot;All grown-up&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://raibledesigns.com/rd/entry/happy_birthday_abbie14&quot;&gt;Abbie turned 18&lt;/a&gt; and is enjoying her senior year as much as possible.
&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;how it started how it&apos;s going &lt;a href=&quot;https://t.co/iqjpeowFd6&quot;&gt;pic.twitter.com/iqjpeowFd6&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1324450363307659264?ref_src=twsrc%5Etfw&quot;&gt;November 5, 2020&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&apos;ll take this opportunity to discuss our COVID close calls. We flew a few times during the pandemic, always wear masks outside our home, and believe in social distancing. We haven&apos;t had many close calls until recently.&lt;/p&gt;
&lt;p&gt;The first close call was at Abbie&apos;s birthday party&amp;mdash;a Saturday&amp;mdash;in early November. She asked a small group of friends to get COVID tests before the party. They did, but all the results didn&apos;t come in. We let her have the party anyway. A positive result came back from one of her friends on Sunday. We thought for sure we&apos;d come down with it since we were exposed. Their school went fully remote on Monday because of the fall surge. All the kids had to quarantine at home. No one caught it except the friend&apos;s sister.&lt;/p&gt;
&lt;p&gt;Another scare happened a couple of weeks ago when we were up in the mountains. Jack and I ran into some friends on the slopes and joined them for a little apr&#232;s ski after. I hugged a family member that wasn&apos;t skiing that day, and they joked, &quot;you don&apos;t have COVID, do you?&quot; That was a Tuesday. They tested positive that Friday. Our whole family got tested Saturday, and the results were negative. &lt;em&gt;Phew!&lt;/em&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;
    Stout and Hefe didn&apos;t get to make the rounds at any car shows this year. However, we did get to do a fun VW cruise with Hefe in early October.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/50853783852_726ba7df1c_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50853783852&quot; title=&quot;Hefe is ready to cruise&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50853783852_726ba7df1c.jpg&quot; width=&quot;500&quot; alt=&quot;Hefe is ready to cruise&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/50852970553_04fc6c25c1_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50852970553/&quot; title=&quot;VW Cruise&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50852970553_04fc6c25c1_q.jpg&quot; width=&quot;150&quot; alt=&quot;VW Cruise&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;

&lt;a href=&quot;https://live.staticflickr.com/65535/50853785042_9aff44d373_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50853785042/&quot; title=&quot;VW Cruise&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50853785042_9aff44d373_q.jpg&quot; width=&quot;150&quot; alt=&quot;VW Cruise&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;

&lt;a href=&quot;https://live.staticflickr.com/65535/50853783127_325b7f8be9_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50853783127/&quot; title=&quot;Yeehaw - VW Cruise!&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50853783127_325b7f8be9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Yeehaw - VW Cruise!&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Stout has been a trusty companion when making trips up to Winter Park to go skiing.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/50853691071_918f7d27dc_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50853691071&quot; title=&quot;Stout at Sunset&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50853691071_918f7d27dc.jpg&quot; width=&quot;500&quot; alt=&quot;Stout at Sunset&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id=&quot;2021&quot;&gt;2021&lt;/h2&gt;
&lt;p&gt;
    Professionally, I don&apos;t think there will be any travel this year. Even if there were, I&apos;m not interested until August. I made a pledge to stop traveling last year, and it&apos;s easier than ever now. I&apos;m going to try and limit my speaking commitments to one per month and spend more time on mini-books, at least in the first half of the year. I&apos;m still enjoying &lt;a href=&quot;https://raibledesigns.com/rd/entry/dell_ultrasharp_u3818dw_38_curved&quot;&gt;my 38&quot; monitor&lt;/a&gt; and recommend you get one too.
&lt;/p&gt;
&lt;p&gt;
    I plan to contribute frequently to JHipster. Now that reactive support is released, I&apos;ll be trying to integrate &lt;a href=&quot;https://github.com/jhipster/generator-jhipster/issues/10189&quot;&gt;microfrontends support&lt;/a&gt;. Why? Because no one wants a monolithic UI fronting their fancy microservice architecture! I also hope to &lt;a href=&quot;https://github.com/jhipster/generator-jhipster/issues/4251#issuecomment-751924780&quot;&gt;integrate GraphQL&lt;/a&gt;, probably as a module to begin.
&lt;/p&gt;
&lt;!--
&lt;p&gt;If you&apos;re interested in seeing where the rest of the &lt;a href=&quot;https://twitter.com/oktadev&quot;&gt;@oktadev team&lt;/a&gt; will be in 2021, check out &lt;a href=&quot;https://oktadev.events&quot;&gt;oktadev.events&lt;/a&gt;.&lt;/p&gt;
--&gt;
&lt;p&gt;I&apos;ll be on vacation the whole month of July, again. I had so much fun last year; I can&apos;t think of a good reason not to do it again. &amp;#x1F603;
&lt;/p&gt;
&lt;p&gt;Last year, I said I&apos;d be skiing, biking, and rafting a lot more. The ski season was cut short, but I&apos;ve been making up for it lately. I&apos;ve been cross-country skiing 17 times since Thanksgiving and downhill 14 times. My goal is 42 days for both, but that might be tough if we don&apos;t get more snow soon.&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/CIjHswKlLit/?utm_source=ig_embed&amp;amp;utm_campaign=loading&quot; data-instgrm-version=&quot;13&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/CIjHswKlLit/?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;div style=&quot;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&quot;&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&quot;&gt;&lt;/div&gt; &lt;div style=&quot; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&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/CIjHswKlLit/?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; text-decoration:none;&quot; target=&quot;_blank&quot;&gt;A post shared by Matt Raible (@vwsforlife)&lt;/a&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;p&gt;
    When it&apos;s warmer, I&apos;ll take my ebike out on some trails and giggle to myself as the wind whisks through my hair while riding &lt;em&gt;uphill&lt;/em&gt;. I&apos;ll take my Yeti out every-now-and-then to remember how hard mountain biking really is.
&lt;/p&gt;
&lt;p&gt;Rafting should come easy with our enthusiastic rafting family and vacation in July. We&apos;re thinking of renting a place near Salida in June so we can raft the Arkansas River after work. If Trish has to go back to an office, those plans could change quickly.&lt;/p&gt;
&lt;p&gt;
    Last year, I &lt;a href=&quot;https://raibledesigns.com/rd/entry/2019_a_year_in_review#2020&quot;&gt;wrote&lt;/a&gt; that I wanted to get more headspace, spend more time with friends, and enjoy being home. I did a lot of meditating in May (with the &lt;a href=&quot;https://www.headspace.com/&quot;&gt;Headspace&lt;/a&gt; app). I gave it up with the busy summer and haven&apos;t resumed since. I&apos;m mostly going with a &quot;just get through this COVID thing&quot; attitude. I &lt;em&gt;really&lt;/em&gt; miss hanging out with friends. I look forward to that being a regular thing again.
&lt;/p&gt;
&lt;p&gt;I &amp;#x2764;&amp;#xFE0F; being a homebody, and we&apos;re making some investments to make it even more fun. We have a 3-point basketball court being installed right now and a bunch of planted gardens that we hope will bloom with beautiful flowers this spring.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/50853835443_6b08cb0d6b_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50853835443&quot; title=&quot;The basketball court is coming along!&quot; rel=&quot;lightbox[2020yearinreview]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50853835443_6b08cb0d6b.jpg&quot; width=&quot;500&quot; alt=&quot;The basketball court is coming along!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I only have one goal for 2021: &lt;strong&gt;dance more&lt;/strong&gt;. &amp;#x1F57A;
&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;on 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/july_2020_rafting_riding_and</id>
        <title type="html">July 2020: Rafting, Riding, and Relaxing</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/july_2020_rafting_riding_and"/>
        <published>2020-08-22T14:05:37-06:00</published>
        <updated>2021-01-19T17:47:02-07:00</updated> 
        <category term="/General" label="General" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rafting" scheme="http://roller.apache.org/ns/tags/" />
        <category term="thecabin" scheme="http://roller.apache.org/ns/tags/" />
        <category term="desolationcanyon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="mountainbiking" scheme="http://roller.apache.org/ns/tags/" />
        <category term="montana" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
  As an American, have you ever wanted to take a month off like the European&apos;s do? I&apos;m guessing you have!
  For the majority of my career, I&apos;ve been an independent consultant, with unlimited vacation. Vacation as a consultant means you&apos;re not getting paid &amp;mdash; so it&apos;s not exactly unlimited.
&lt;/p&gt;
&lt;p&gt;
  A few years ago, I doubled-down and went full-time. The company was called Stormpath and it quickly morphed into Okta. Okta has an unlimited vacation policy. I felt it was my duty to try to make my kick-ass full-time job as cool as my independent consulting gig. Therefore, I asked my boss to take July 2020 off. I requested this vacation in October 2019. He approved! &lt;a href=&quot;https://twitter.com/rdegges&quot;&gt;Randall&lt;/a&gt;, you&apos;re the best!!
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
  If you&apos;d like to read about our April-June 2002 adventures, see &lt;a href=&quot;https://raibledesigns.com/rd/entry/2019_2020_ski_season_quarantining&quot;&gt;2019-2020 Ski Season, Quarantining for COVID, and a Graduation&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
  My month-off adventures started with a family raft trip through &lt;a href=&quot;https://www.blm.gov/visit/desolation-canyon&quot;&gt;Desolation Canyon&lt;/a&gt; in Utah. We floated down the Green River with 20 members of our rafting family and had a wonderful adventure.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225031308_087791b5b8_c.jpg&quot; title=&quot;Summer vacation begins! &amp;#x1F603;&amp;#x1F601;&amp;#x1F606;&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225031308/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225031308_087791b5b8.jpg&quot; width=&quot;500&quot; alt=&quot;Summer vacation begins! &amp;#x1F603;&amp;#x1F601;&amp;#x1F606;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
  As an American, have you ever wanted to take a month off like the European&apos;s do? I&apos;m guessing you have!
  For the majority of my career, I&apos;ve been an independent consultant, with unlimited vacation. Vacation as a consultant means you&apos;re not getting paid &amp;mdash; so it&apos;s not exactly unlimited.
&lt;/p&gt;
&lt;p&gt;
  A few years ago, I doubled-down and went full-time. The company was called Stormpath and it quickly morphed into Okta. Okta has an unlimited vacation policy. I felt it was my duty to try to make my kick-ass full-time job as cool as my independent consulting gig. Therefore, I asked my boss to take July 2020 off. I requested this vacation in October 2019. He approved! &lt;a href=&quot;https://twitter.com/rdegges&quot;&gt;Randall&lt;/a&gt;, you&apos;re the best!!
&lt;/p&gt;
&lt;p class=&quot;quote&quot;&gt;
  If you&apos;d like to read about our April-June 2020 adventures, see &lt;a href=&quot;https://raibledesigns.com/rd/entry/2019_2020_ski_season_quarantining&quot;&gt;2019-2020 Ski Season, Quarantining for COVID, and a Graduation&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
  My month-off adventures started with a family raft trip through &lt;a href=&quot;https://www.blm.gov/visit/desolation-canyon&quot;&gt;Desolation Canyon&lt;/a&gt; in Utah. We floated down the Green River with 20 members of our rafting family and had a wonderful adventure.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225031308_087791b5b8_c.jpg&quot; title=&quot;Summer vacation begins! &amp;#x1F603;&amp;#x1F601;&amp;#x1F606;&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225031308/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225031308_087791b5b8.jpg&quot; width=&quot;500&quot; alt=&quot;Summer vacation begins! &amp;#x1F603;&amp;#x1F601;&amp;#x1F606;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  When &lt;a href=&quot;https://raibledesigns.com/rd/entry/we_bought_a_boat&quot;&gt;we first got a raft&lt;/a&gt;, I read that Desolation Canyon is an &lt;em&gt;excellent family adventure&lt;/em&gt;. We proved that to be true in &lt;a href=&quot;https://raibledesigns.com/rd/entry/rafting_the_green_river_through&quot;&gt;September 2014&lt;/a&gt; with a number of friends. On July 2nd, 2020, we embarked upon another spectacular rafting adventure with many of the same folks.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225474956_88854e8a91_c.jpg&quot; title=&quot;Motoring! &amp;#x1F6A4;&amp;#x1F3B6;&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225474956/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225474956_88854e8a91_q.jpg&quot; width=&quot;150&quot; alt=&quot;Motoring! &amp;#x1F6A4;&amp;#x1F3B6;&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224864538_db09922b27_c.jpg&quot; title=&quot;Chris and Caden&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224864538/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224864538_db09922b27_q.jpg&quot; width=&quot;150&quot; alt=&quot;Chris and Caden&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225049748_90e926f831_c.jpg&quot; title=&quot;Laid back with Tanner and Brice&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225049748/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225049748_90e926f831_q.jpg&quot; width=&quot;150&quot; alt=&quot;Laid back with Tanner and Brice&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225530706_552758de3f_c.jpg&quot; title=&quot;Party Crew&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225530706/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225530706_552758de3f.jpg&quot; width=&quot;500&quot; alt=&quot;Party Crew&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-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225060993_253f283c5f_c.jpg&quot; title=&quot;Twins!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225060993/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225060993_253f283c5f.jpg&quot; width=&quot;500&quot; alt=&quot;Twins!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  We spent five days on the Green River: motoring, floating, and loving the weather. The first day involved strapping the rafts together and firing up motors to get through the flat parts. I brought a &lt;a href=&quot;https://www.jbl.com/bluetooth-speakers/JBL+BOOMBOX+2-.html&quot;&gt;boombox&lt;/a&gt; for my boat, so we listened to &lt;a href=&quot;https://www.youtube.com/watch?v=z92bmlcmyq0&quot;&gt;motoring&lt;/a&gt; a few times. Days 2-4 were fun with rapids, but it was pretty mellow for the most part.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225507201_1275b93dda_c.jpg&quot; title=&quot;Beautiful Campsite&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225507201/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225507201_1275b93dda_m.jpg&quot; width=&quot;240&quot; alt=&quot;Beautiful Campsite&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225555296_93e47bea3e_c.jpg&quot; title=&quot;Breakfast!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225555296/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225555296_93e47bea3e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Breakfast!&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225757867_bca7531514_c.jpg&quot; title=&quot;Jack&apos;s in charge today!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225757867/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225757867_bca7531514_m.jpg&quot; width=&quot;240&quot; alt=&quot;Jack&apos;s in charge today!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225848582_2590b0cef3_c.jpg&quot; title=&quot;The Kuhl Kids&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225848582/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225848582_2590b0cef3_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Kuhl Kids&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  We always dress up one night on the river. This trip&apos;s theme for costume night was &lt;em&gt;disco!&lt;/em&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225013933_46d7f53c1b_c.jpg&quot; title=&quot;Disco Night!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225013933/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225013933_46d7f53c1b_m.jpg&quot; width=&quot;240&quot; alt=&quot;Disco Night!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225752882_92c806961c_c.jpg&quot; title=&quot;The 15 year olds&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225752882/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225752882_92c806961c_m.jpg&quot; width=&quot;240&quot; alt=&quot;The 15 year olds&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224876648_367054bc2c_c.jpg&quot; title=&quot;The cool kids&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224876648/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224876648_367054bc2c_m.jpg&quot; width=&quot;240&quot; alt=&quot;The cool kids&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225486511_2c7c27e538_c.jpg&quot; title=&quot;Disco Couple!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225486511/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225486511_2c7c27e538_m.jpg&quot; width=&quot;240&quot; alt=&quot;Disco Couple!&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225759992_e753499cd1_c.jpg&quot; title=&quot;Disco Night!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225759992/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225759992_e753499cd1.jpg&quot; width=&quot;500&quot; alt=&quot;Disco Night!&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-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225737677_b1aae28214_c.jpg&quot; title=&quot;The whole crew on Disco Night&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225737677/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225737677_b1aae28214.jpg&quot; width=&quot;500&quot; alt=&quot;The whole crew on Disco Night&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  Trish and I had a couple of goals for this trip. We brought two rafts, each with 2-3 coolers. I wanted to have ice on the last day. She wanted to have ice cold water on the last day. I&apos;m happy to say we both accomplished our goals and I&apos;m happy to reveal our secrets. I lined  all three of my coolers with dry ice. Trish put a large water-to-ice bag in her cooler and forgot about it. It was solid ice when we started our trip, and ice-cold, delicious water when we ended. She discovered at the very end of our trip (post take-out) and it was the most delicious water ever. She shared it with everyone and we rejoiced with laughter and joy. It was soooo good and the timing was perfect!
&lt;/p&gt;
&lt;h3&gt;
  July in Montana - 2020 Edition
&lt;/h3&gt;
&lt;p&gt;
  We took out of the Green on July 7 and I headed for Montana in my Syncro Westy with a raft in tow. I like to name my vehicles. They&apos;re also known as Stout and Bam Bam. I had a new toy with me too, a &lt;a href=&quot;https://www.trekbikes.com/us/en_US/bikes/mountain-bikes/electric-mountain-bikes/rail/rail-7/p/30914/&quot;&gt;Trek Rail 7&lt;/a&gt; electric mountain bike. I bought it the night before we left Denver.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224867748_073220fd5a_c.jpg&quot; title=&quot;Heading to Montana!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224867748/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224867748_073220fd5a.jpg&quot; width=&quot;500&quot; alt=&quot;Heading to Montana!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  My eBike is one of my most satisfying and joyous purchases, ever. I cruised all the Swan Valley trails I grew up riding my BMX bike on &amp;mdash; with a huge grin on my face. As I cruised up the hills on Rumble Creek road with the wind in my ears, I had tears of joy. I hooted and hollered like it was a powder day as I sailed through the trails along the Guest Ranch road and through Holland Lake campgrounds.
&lt;/p&gt;
&lt;p&gt;It was, &lt;em&gt;and still is&lt;/em&gt;, a magical experience. &amp;#x2728;&lt;/p&gt;
&lt;p&gt;
  Some call electric bikes cheating. I feel like a kid again and can&apos;t wait to go riding every day. Call it what you will, but I&apos;m having a blast! I&apos;ll write up a full review on the bike in another blog post. Below are some photos from my riding adventures.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225487541_bedc7263c0_c.jpg&quot; title=&quot;View from Rumble Creek Road&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225487541/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225487541_bedc7263c0_q.jpg&quot; width=&quot;150&quot; alt=&quot;View from Rumble Creek Road&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225918522_cb3c155825_c.jpg&quot; title=&quot;Mountain bike trail to Barber Creek Road&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225918522/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225918522_cb3c155825_q.jpg&quot; width=&quot;150&quot; alt=&quot;Mountain bike trail to Barber Creek Road&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225484091_92d4dbd03e_c.jpg&quot; title=&quot;Holland Lake&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225484091/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225484091_92d4dbd03e_q.jpg&quot; width=&quot;150&quot; alt=&quot;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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225738082_ae22c99331_c.jpg&quot; title=&quot;Riding on Guest Ranch Road&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225738082/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225738082_ae22c99331_q.jpg&quot; width=&quot;150&quot; alt=&quot;Riding on Guest Ranch Road&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225686061_b86bd55e4b_c.jpg&quot; title=&quot;The Foothills Trail&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225686061/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225686061_b86bd55e4b_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Foothills Trail&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225662716_8867a1e11e_c.jpg&quot; title=&quot;The Foothills Trail&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225662716/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225662716_8867a1e11e_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Foothills Trail&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224888683_2612dbeb11_c.jpg&quot; title=&quot;Lookout Tower on Rumble Creek&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224888683/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224888683_2612dbeb11_m.jpg&quot; width=&quot;240&quot; alt=&quot;Lookout Tower on Rumble Creek&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224834013_e25576f167_c.jpg&quot; title=&quot;Sweet bike trail!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224834013/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224834013_e25576f167_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sweet bike trail!&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225906387_378305b411_c.jpg&quot; title=&quot;Gorgeous&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225906387/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225906387_378305b411_m.jpg&quot; width=&quot;240&quot; alt=&quot;Gorgeous&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224848923_ebf38c1831_c.jpg&quot; title=&quot;Seldom ridden trail&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224848923/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224848923_ebf38c1831_m.jpg&quot; width=&quot;240&quot; alt=&quot;Seldom ridden trail&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225869347_93fb8f1ec0_c.jpg&quot; title=&quot;Mountain views&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225869347/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225869347_93fb8f1ec0.jpg&quot; width=&quot;500&quot; alt=&quot;Mountain views&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  When I wasn&apos;t riding, I went rafting. My Dad, Daisy, and I spent a gorgeous day fishing on the Blackfoot river. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224873993_64e3631696_c.jpg&quot; title=&quot;Daisy wants to go rafting!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224873993/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224873993_64e3631696_m.jpg&quot; width=&quot;240&quot; alt=&quot;Daisy wants to go rafting!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225514321_925de986ec_c.jpg&quot; title=&quot;The beautiful Blackfoot&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225514321/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225514321_925de986ec_m.jpg&quot; width=&quot;240&quot; alt=&quot;The beautiful Blackfoot&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225893982_40b21287c0_c.jpg&quot; title=&quot;Daisy and Dad&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225893982/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225893982_40b21287c0.jpg&quot; width=&quot;500&quot; alt=&quot;Daisy and Dad&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We did it again with my Mom and long-time family friends, Mike and Mai.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225499471_582d6d0bc9_c.jpg&quot; title=&quot;River time!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225499471/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225499471_582d6d0bc9_m.jpg&quot; width=&quot;240&quot; alt=&quot;River time!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225879827_64179892bf_c.jpg&quot; title=&quot;Lunch with Mai and Mike on the Blackfoot&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225879827/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225879827_64179892bf_m.jpg&quot; width=&quot;240&quot; alt=&quot;Lunch with Mai and Mike on the Blackfoot&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225016018_1bc79fb0c2_c.jpg&quot; title=&quot;Peace!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225016018/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225016018_1bc79fb0c2_m.jpg&quot; width=&quot;240&quot; alt=&quot;Peace!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224976318_b534a1b12a_c.jpg&quot; title=&quot;Da boys&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224976318/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224976318_b534a1b12a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Da boys&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  I had huckleberry pancakes for my birthday, watched the dogs frolic in the creek, and &lt;a href=&quot;https://eaglebendgolfclub.com/&quot;&gt;golfed in Bigfork&lt;/a&gt; with my awesome parents.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225882047_6293321d17_c.jpg&quot; title=&quot;Huckleberry pancakes for my birthday! ??&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225882047/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225882047_6293321d17_m.jpg&quot; width=&quot;240&quot; alt=&quot;Huckleberry pancakes for my birthday! ??&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225732782_f5415e8c48_c.jpg&quot; title=&quot;Mom&apos;s awesome garden&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225732782/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225732782_f5415e8c48_m.jpg&quot; width=&quot;240&quot; alt=&quot;Mom&apos;s awesome garden&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225018308_863bf0efd7_c.jpg&quot; title=&quot;Birthday golf!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225018308/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225018308_863bf0efd7.jpg&quot; width=&quot;500&quot; alt=&quot;Birthday golf!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  I took my buddy Owen and his family rafting near Glacier Park, on the middle fork of of the Flathead.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224985568_f37fb6dd25_c.jpg&quot; title=&quot;Middle Fork of the Flathead&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224985568/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224985568_f37fb6dd25_m.jpg&quot; width=&quot;240&quot; alt=&quot;Middle Fork of the Flathead&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224895973_c70eaf31bf_c.jpg&quot; title=&quot;The Conley Crew&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224895973/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224895973_c70eaf31bf_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Conley Crew&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;My Dad brewed an American Pale Ale beer for my birthday and treated me to a private tasting.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225623666_164ea6ebf7_c.jpg&quot; title=&quot;Opening slowly...&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225623666/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225623666_164ea6ebf7_m.jpg&quot; width=&quot;240&quot; alt=&quot;Opening slowly...&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225534156_6ce8be7c5a_c.jpg&quot; title=&quot;Pour it...&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225534156/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225534156_6ce8be7c5a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Pour it...&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  My sister, Kalin, and Mya visited for a week. Trish and the kids road-tripped up as well. We golfed, played on the rivers, and enjoyed the heck out of each other&apos;s company.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225615836_f2f4e37283_c.jpg&quot; title=&quot;Gorgeous day on the Swan River&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225615836/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225615836_f2f4e37283_m.jpg&quot; width=&quot;240&quot; alt=&quot;Gorgeous day on the Swan River&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225527046_142c256158_c.jpg&quot; title=&quot;Riverfront Barn&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225527046/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225527046_142c256158_m.jpg&quot; width=&quot;240&quot; alt=&quot;Riverfront Barn&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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225482596_3530957890_c.jpg&quot; title=&quot;Laughter is the best medicine&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225482596/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225482596_3530957890_q.jpg&quot; width=&quot;150&quot; alt=&quot;Laughter is the best medicine&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225845267_5e8fe8c4f1_c.jpg&quot; title=&quot;My awesome parents&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225845267/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225845267_5e8fe8c4f1_q.jpg&quot; width=&quot;150&quot; alt=&quot;My awesome parents&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224967228_e5eff0f6ac_c.jpg&quot; title=&quot;Happy couple at Holland Lake&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224967228/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224967228_e5eff0f6ac_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy couple at 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 data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224859133_627b0b0a02_c.jpg&quot; title=&quot;Family photo 2020!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224859133/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224859133_627b0b0a02.jpg&quot; width=&quot;500&quot; alt=&quot;Family photo 2020!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  &quot;What about the wildlife?&quot;, you might ask. We saw bears on the rivers of Utah and Montana. We saw bald eagles majestically flying along the river banks of the flathead. Spotting deer was a daily occurrence. Being surrounded by nature and its animals was magnificent.
&lt;/p&gt;
&lt;p&gt;
  I invited my Dad to join me for the road trip back to Colorado. He obliged and we drove through Yellowstone Park and by the Tetons in Wyoming.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225479181_796c8b1670_c.jpg&quot; title=&quot;Road trip back to Denver begins!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225479181/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225479181_796c8b1670.jpg&quot; width=&quot;500&quot; alt=&quot;Road trip back to Denver begins!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;A couple days later, there was a car show in our back yard and Hefe made an appearance. He didn&apos;t win anything because we forgot to register. That&apos;s OK, he looked really good!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50224972563_cefba1bb84_c.jpg&quot; title=&quot;Made it home just in time for the Chenango Car Show!&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50224972563/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50224972563_cefba1bb84.jpg&quot; width=&quot;375&quot; alt=&quot;Made it home just in time for the Chenango Car Show!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  This marks the third time I&apos;ve taken a month off in my career. I&apos;ve always ended up in Montana. I wrote about &lt;a href=&quot;https://raibledesigns.com/rd/entry/my_summer_vacation_in_montana&quot;&gt;My Summer Vacation in Montana in 2009&lt;/a&gt; and &lt;a href=&quot;https://raibledesigns.com/rd/entry/matrimony_in_montana&quot;&gt;Matrimony in Montana in 2013&lt;/a&gt;. It&apos;s simply one of my favorite places on earth. I really appreciate that I can always go back home, ride the trails I did as a kid, and bask in the glow of my parent&apos;s retirement paradise.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/50225522096_31298beffe_c.jpg&quot; title=&quot;View from my parent&apos;s porch&quot; rel=&quot;lightbox[july2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50225522096/in/album-72157715484965923/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50225522096_31298beffe.jpg&quot; width=&quot;500&quot; alt=&quot;View from my parent&apos;s porch&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&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;&lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157715484965923&quot;&gt;See all 193 photos on Flickr &amp;#x2192;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Now I&apos;m back in action, the kids are back in school, and live sports are on TV again. Life is pretty good and I&apos;m pumped to hit all the front range mountain bike trails. I hope you&apos;ve had a chance to relax and recharge this summer like I did. &amp;#x1F60A;&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2019_2020_ski_season_quarantining</id>
        <title type="html">2019-2020 Ski Season, Quarantining for COVID, and a Graduation</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2019_2020_ski_season_quarantining"/>
        <published>2020-06-30T23:51:45-06:00</published>
        <updated>2023-05-07T22:50:52-06:00</updated> 
        <category term="/General" label="General" />
        <category term="covid19" scheme="http://roller.apache.org/ns/tags/" />
        <category term="skiseason" scheme="http://roller.apache.org/ns/tags/" />
        <category term="graduation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springbreak" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
Every spring, I try to publish a blog post about our ski season adventures. As you can imagine, this year was a little different. This year, the ski season ended abruptly in mid-March due to COVID-19. Nevertheless, I decided it&apos;d be fun to write about the ski season we did experience and our adventures since then.
&lt;/p&gt;
&lt;p&gt;
The 2019-2020 ski season started off looking really good. The snow was good enough in October that I enjoyed a day at A-Basin - my earliest ski day ever! In December, I got a few days in. Skiing at &lt;a href=&quot;https://skiwhitefish.com/&quot;&gt;Whitefish Mountain&lt;/a&gt; over Christmas vacation was a highlight. When I was a kid, it was called Big Mountain and it&apos;s where I learned how to alpine ski.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/49474423847_1764439ff0_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49474423847/in/album-72157712933118423/&quot; title=&quot;Family ski day!&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49474423847_1764439ff0.jpg&quot; width=&quot;500&quot; alt=&quot;Family ski day!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
Every spring, I try to publish a blog post about our ski season adventures. As you can imagine, this year was a little different. This year, the ski season ended abruptly in mid-March due to COVID-19. Nevertheless, I decided it&apos;d be fun to write about the ski season we did experience and our adventures since then.
&lt;/p&gt;
&lt;p&gt;
The 2019-2020 ski season started off looking really good. The snow was good enough in October that I enjoyed a day at A-Basin - my earliest ski day ever! In December, I got a few days in. Skiing at &lt;a href=&quot;https://skiwhitefish.com/&quot;&gt;Whitefish Mountain&lt;/a&gt; over Christmas vacation was a highlight. When I was a kid, it was called Big Mountain and it&apos;s where I learned how to alpine ski.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/49474423847_1764439ff0_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49474423847/in/album-72157712933118423/&quot; title=&quot;Family ski day!&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49474423847_1764439ff0.jpg&quot; width=&quot;500&quot; alt=&quot;Family ski day!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  January came along and &lt;a href=&quot;https://raibledesigns.com/rd/entry/january_jaunts_to_new_orleans&quot;&gt;we spent the first couple of weeks in New Orleans&lt;/a&gt;. Shortly after we returned home, I went skiing in Jackson Hole with some friends.
&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[spring2020]&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;
  February rolled in and I was able to make some work trips skiing-oriented. To start off the month, I spoke at &lt;a href=&quot;https://raibledesigns.com/rd/entry/a_fantastically_fun_february_at&quot;&gt;Jfokus&lt;/a&gt; in Sweden. After Jfokus, the organizers planned a speaker&apos;s conference at Trysil Ski Area in Norway. There wasn&apos;t much powder, but the groomers were fast, and we had fun challenging ourselves on the 45&#176; double black!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/49662014628_42965e5213_c.jpg&quot; title=&quot;Trysil Ski Resort&quot; rel=&quot;lightbox[spring2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49662014628/in/album-72157713496655132/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49662014628_42965e5213_q.jpg&quot; width=&quot;150&quot; alt=&quot;Trysil Ski Resort&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/49662835872_9a9a41638f_c.jpg&quot; title=&quot;The Jfokus 2020 Ski Team!&quot; rel=&quot;lightbox[spring2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49662835872/in/album-72157713496655132/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49662835872_9a9a41638f_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Jfokus 2020 Ski Team!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/49662836782_1f3aec2f11_c.jpg&quot; title=&quot;The 45&amp;#xB0; &amp;#x1F632;&quot; rel=&quot;lightbox[spring2020]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49662836782/in/album-72157713496655132/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49662836782_1f3aec2f11_q.jpg&quot; width=&quot;150&quot; alt=&quot;The 45&amp;#xB0; &amp;#x1F632;&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  Upon returning home, Ray Tsang and I did a Rocky Mountain JUG Tour, book-ended with Developer Ski Days.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/49526258492_1697766cf4_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49526258492/in/album-72157713068403413/&quot; title=&quot;Ray, Christina, and Ben&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49526258492_1697766cf4_m.jpg&quot; width=&quot;240&quot; alt=&quot;Ray, Christina, and Ben&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/49662126918_b36851b9dd_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49662126918/in/album-72157713496885062/&quot; title=&quot;It&amp;#x27;s a #HappyFriday at  @Snowbird  with @saturnism and @brettgpalmer!&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49662126918_b36851b9dd_m.jpg&quot; width=&quot;240&quot; alt=&quot;It&amp;#x27;s a #HappyFriday at  @Snowbird  with @saturnism and @brettgpalmer!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  March came quickly and I visited Winter Park to make arrangements for a Developer Ski Day after dev.next. Little did I know it&apos;d be my last day skiing for the season.
&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;Visited &lt;a href=&quot;https://twitter.com/WinterPark?ref_src=twsrc%5Etfw&quot;&gt;@WinterPark&lt;/a&gt; today to setup lunch and happy hour ?? reservations for the &lt;a href=&quot;https://twitter.com/hashtag/DevSkiDay?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#DevSkiDay&lt;/a&gt; on March 28. Can&amp;#39;t wait! ??? &lt;a href=&quot;https://twitter.com/hashtag/devdotnext?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#devdotnext&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/day19?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#day19&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/oktadev?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#oktadev&lt;/a&gt; &lt;a href=&quot;https://t.co/S1RBynxkaO&quot;&gt;pic.twitter.com/S1RBynxkaO&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1234612465595375616?ref_src=twsrc%5Etfw&quot;&gt;March 2, 2020&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 scheduled to do a speaking tour in Switzerland and Germany in mid-March. The conferences I was speaking at lined up perfectly with our kids&apos; Spring Break. My family was going to join me in Germany and we were planning on skiing in the Swiss Alps for a few days.
&lt;/p&gt;
&lt;p&gt;Then, COVID cancellations started happening. We cancelled our European vacation and opted for a Florida vacation instead. We flew to Florida on March 15 and returned March 22. Our flights were full. &lt;a href=&quot;https://www.denverpost.com/2020/04/08/colorado-coronavirus-covid-timeline/&quot;&gt;All restaurants and bars were closed in Colorado on March 16&lt;/a&gt;. We rented a house with Trish&apos;s brother&apos;s family in Marco Island and didn&apos;t venture out much.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50062594363_c0f1c2fb79_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062594363/in/album-72157714923522963/&quot; title=&quot;Hanging with my honey in Marco Island&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062594363_c0f1c2fb79_m.jpg&quot; width=&quot;240&quot; alt=&quot;Hanging with my honey in Marco Island&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063149301_0f1b3e783c_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063149301/in/album-72157714923522963/&quot; title=&quot;Marco Island Sunset&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063149301_0f1b3e783c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Marco Island Sunset&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We knew when we flew to Florida that we might have to drive back. That premonition almost came true on our flight home. Just as we were boarding, the Fort Meyers airport intercom announced that all flights were grounded&amp;mdash;throughout the United States. I started looking up rental car rates and almost booked it when they announced it was a mistake. The pilot encouraged everyone to board quickly.&lt;/p&gt;
&lt;p&gt;
  Like most of you, we spent April and May at home. Our dogs loved it. Our cats could&apos;ve cared less.
&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;Life isn&amp;#39;t so bad when your badass sister-in-law works at &lt;a href=&quot;https://twitter.com/TildioWinery?ref_src=twsrc%5Etfw&quot;&gt;@TildioWinery&lt;/a&gt;! ???? &lt;a href=&quot;https://t.co/fwszHQux6Y&quot;&gt;pic.twitter.com/fwszHQux6Y&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1246259763005931520?ref_src=twsrc%5Etfw&quot;&gt;April 4, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
  I met with friends on April 29 for an afternoon of golf. I also stopped drinking for 30 days and got in shape with lots of walks and bike rides.
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063403632_78304811b1_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063403632/in/album-72157714923522963/&quot; title=&quot;Daisy and Trish&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063403632_78304811b1.jpg&quot; width=&quot;500&quot; alt=&quot;Daisy and Trish&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Summer Arrives&lt;/h3&gt;
&lt;p&gt;
  We have a long sequence of graduations in our family between our kids and Trish&apos;s brother&apos;s family. Starting last year, one of our kids will graduate from high school (or college) for 10 years in a row. Pending gap years, of course.
&lt;/p&gt;
&lt;p&gt;I love graduations and have fond memories of my own. I hatched a plan in mid-May to &lt;em&gt;drive&lt;/em&gt; to Boston for our niece&apos;s graduation. I wanted to take our Syncro Westy and spend a week getting there. We&apos;d drive through Canada and check out some sites along the way.&lt;/p&gt;
&lt;p&gt;Trish had working-on-the-road and road-trip-bathroom concerns, so she started shopping for RVs. When we proposed this plan to Abbie and Jack&apos;s Mom, she said she&apos;d like to take the kids to Florida for a week before we left.&lt;/p&gt;
&lt;p&gt;That derailed my whole plan because if the kids were flying on planes during COVID, we might as well do the same. Driving wouldn&apos;t make us any safer, we figured.&lt;/p&gt;
&lt;p&gt;We decided to fly to Boston at the beginning of June. We&apos;d spend the first week quarantining at Trish&apos;s parent&apos;s empty house in Cape Cod, then unite with our family to celebrate.&lt;/p&gt;
&lt;h3&gt;Montana Road Trip&lt;/h3&gt;
&lt;p&gt;Because we were going to be gone so long&amp;mdash;and had a week-long rafting trip planned in July&amp;mdash;we decided to make a road-trip to Montana to drop our pets off with my parents. My Dad has COPD, which is a respiratory illness, so we were definitely leary about visiting. We got tested for antibodies before we left. Our test results were negative.&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;R&amp;amp;R in &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/4Fq51Ncbps&quot;&gt;pic.twitter.com/4Fq51Ncbps&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1264656559528763392?ref_src=twsrc%5Etfw&quot;&gt;May 24, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
  After dropping off our pets, Trish flew home, and I drove home. I worked, took mountain bike rides, and drove for five days through Idaho and Utah. I rode Blue Mountain, Angel Trail (technically in the Wyoming Tetons), Klondike Bluffs, Slick Rock, and Road 18 in Fruita. Slick Rock was a grueling 10-mile 3-hour ride at 97&amp;deg;F. I made sure to start early at Fruita the next morning.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063395707_0cb12edc26_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063395707/in/album-72157714923522963/&quot; title=&quot;Rumble Creek Ride&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063395707_0cb12edc26_q.jpg&quot; width=&quot;150&quot; alt=&quot;Rumble Creek Ride&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50062592233_df9ee44a71_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062592233/in/album-72157714923522963/&quot; title=&quot;Blue Mountain Ride&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062592233_df9ee44a71_q.jpg&quot; width=&quot;150&quot; alt=&quot;Blue Mountain Ride&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50062585373_70d1dbf41e_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062585373/in/album-72157714923522963/&quot; title=&quot;#VanLife&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062585373_70d1dbf41e_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/50063399237_9b393848c2_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063399237/in/album-72157714923522963/&quot; title=&quot;Angel Trail&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063399237_9b393848c2_q.jpg&quot; width=&quot;150&quot; alt=&quot;Angel Trail&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063404762_71e523310e_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063404762/in/album-72157714923522963/&quot; title=&quot;Klondike Bluffs&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063404762_71e523310e_q.jpg&quot; width=&quot;150&quot; alt=&quot;Klondike Bluffs&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063140521_8ca7c6c267_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063140521/in/album-72157714923522963/&quot; title=&quot;Slick Rock&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063140521_8ca7c6c267_q.jpg&quot; width=&quot;150&quot; alt=&quot;Slick Rock&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/50063406717_c3e7f6a76c_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063406717/in/album-72157714923522963/&quot; title=&quot;Road 18&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063406717_c3e7f6a76c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Road 18&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063401717_421158f7fb_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063401717/in/album-72157714923522963/&quot; title=&quot;Yeehaw! (post wipeout)&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063401717_421158f7fb_m.jpg&quot; width=&quot;240&quot; alt=&quot;Yeehaw! (post wipeout)&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I mostly stayed in RV Parks, since power was key, and so was internet. I wore a mask whenever I filled up with gas and on my mountain bike rides. I didn&apos;t see any masks in Montana, Idaho, or Utah. In fact, I got told to &quot;go home&quot; when filling up at 6am in Montana. In Idaho, I got lots of stares because of my mask, but I felt my camouflage pants kept people from saying anything. Moab, Utah was fully open; restaurants and everything.
&lt;/p&gt;
&lt;p&gt;
  I arrived home from my road-trip on Friday afternoon and we flew to Boston on Sunday, May 31st.&lt;/p&gt;
&lt;h3&gt;Graduation in Boston&lt;/h3&gt;
&lt;p&gt;
  We flew Southwest and liked the fact that they did not sell middle seats. Upon arrival, we tried to short-cut the quarantine length by getting tested. Trish and the kids got tested for COVID on Sunday night and had their negative results back in 48 hours. Our Boston family appreciated it, but they weren&apos;t quite ready to accept us into their home. We had socially-distant happy hours that week, but did not enter their home.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50062582063_a083ce96c9_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062582063/in/album-72157714923522963/&quot; title=&quot;Cousins: matching and distancing&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062582063_a083ce96c9.jpg&quot; width=&quot;500&quot; alt=&quot;Cousins: matching and distancing&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Black Lives Matter protests were in full-force that week and changed my whole perspective of America. I&apos;ve been trying to help with donations and mentoring, but I know I can do more.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;On Friday, June 5th, I got a swab-in-your-brain COVID test. It wasn&apos;t particularly painful, but it did make my eyes water and feel like sneezing for around five minutes. It cost me $160 USD because I didn&apos;t have any symptoms. I was tested in my car and got  negative results 15 minutes later. This satisfied everyone&apos;s fears and we rejoiced with our east-coast family that evening.&lt;/p&gt;

&lt;p&gt;The following week, we worked in the mornings and played in the evenings. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50062587338_4ae1d9078a_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062587338/in/album-72157714923522963/&quot; title=&quot;Trish and Julia&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062587338_4ae1d9078a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Trish and Julia&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063141866_4c0732f2df_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063141866/in/album-72157714923522963/&quot; title=&quot;Aaron and Morgan&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063141866_4c0732f2df_m.jpg&quot; width=&quot;240&quot; alt=&quot;Aaron and Morgan&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/50062580463_36f7c66e28_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062580463/in/album-72157714923522963/&quot; title=&quot;&amp;quot;The Cool Kids&amp;quot;&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062580463_36f7c66e28_q.jpg&quot; width=&quot;150&quot; alt=&quot;&amp;quot;The Cool Kids&amp;quot;&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063400387_3cf27c2942_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063400387/in/album-72157714923522963/&quot; title=&quot;Cape Cod Sunset&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063400387_3cf27c2942_q.jpg&quot; width=&quot;150&quot; alt=&quot;Cape Cod Sunset&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063147596_85e7eac079_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063147596/in/album-72157714923522963/&quot; title=&quot;Julia and Eva&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063147596_85e7eac079_q.jpg&quot; width=&quot;150&quot; alt=&quot;Julia and Eva&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  Our nieces&apos; graduation was a really fun event. They had all the graduates and their families gather in a parking lot and watch from their cars. The graduates were called up in groups and accepted their diplomas at a distance from one another. Way to go, Shira!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063395092_94e47cf2c9_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063395092/in/album-72157714923522963/&quot; title=&quot;Congrats Shira!&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063395092_94e47cf2c9.jpg&quot; width=&quot;500&quot; alt=&quot;Congrats Shira!&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/50063146241_f882f92544_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063146241/in/album-72157714923522963/&quot; title=&quot;Proud Aunt and Uncle&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063146241_f882f92544.jpg&quot; width=&quot;500&quot; alt=&quot;Proud Aunt and Uncle&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We were impressed by how many people wore masks in Massachusetts. Almost everyone had them on, and if they didn&apos;t, they had one in their pocket they could put on quickly. We returned home on June 16th.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063409252_f3f082e1f4_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063409252/in/album-72157714923522963/&quot; title=&quot;Home Sweet Home&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063409252_f3f082e1f4.jpg&quot; width=&quot;500&quot; alt=&quot;Home Sweet Home&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Bring on July Vacation!&lt;/h3&gt;
&lt;p&gt;
  As I wrote in my &lt;a href=&quot;https://raibledesigns.com/rd/entry/2019_a_year_in_review&quot;&gt;year in review&lt;/a&gt;, I&apos;m taking July off. We&apos;re starting the festivities with a 5-day rafting trip through Desolation Canyon in Utah. We did &lt;a href=&quot;https://raibledesigns.com/rd/entry/rafting_the_green_river_through&quot;&gt;the same trip in 2014&lt;/a&gt; and had a blast. This time, we&apos;ll have twice as many rafts.
&lt;/p&gt;
&lt;p&gt;
  We verified our equipment works on the Upper Colorado River during Father&apos;s Day weekend.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50062586913_5ffbc312ec_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062586913/in/album-72157714923522963/&quot; title=&quot;Rafting the UC&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062586913_5ffbc312ec.jpg&quot; width=&quot;500&quot; alt=&quot;Rafting the UC&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/50062581118_b6a0b7e40c_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50062581118/in/album-72157714923522963/&quot; title=&quot;Trish got a new trailer!&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50062581118_b6a0b7e40c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Trish got a new trailer!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/50063148266_4e66530b62_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/50063148266/in/album-72157714923522963/&quot; title=&quot;Stout and Bam Bam are ready!&quot; rel=&quot;lightbox[spring2020]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/50063148266_4e66530b62_m.jpg&quot; width=&quot;240&quot; alt=&quot;Stout and Bam Bam are ready!&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
  &lt;p&gt;
  After that trip, I&apos;m heading to Montana to hang out with my folks. We&apos;ll do some rafting, relaxing, and I plan to mountain bike a bunch. I bought an electric mountain bike this week and I&apos;m looking forward to riding it all over the Swan Valley.
&lt;/p&gt;
&lt;p&gt;
  I hope y&apos;all have a nice July. I&apos;ll be going fully offline&amp;mdash;deleting social and work apps from my phone, including email. I&apos;ll use my phone to take pictures and communicate with friends, but not much else. I&apos;m looking forward to recharging. I&apos;ll see y&apos;all in August! &amp;#x1F44B;&amp;#x1F600;
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/secure_by_design_book_review</id>
        <title type="html">Secure by Design Book Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/secure_by_design_book_review"/>
        <published>2020-05-25T20:11:22-06:00</published>
        <updated>2020-05-26T02:32:16-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="architecture" scheme="http://roller.apache.org/ns/tags/" />
        <category term="securebydesign" scheme="http://roller.apache.org/ns/tags/" />
        <category term="bookreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="security" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;I recently finished reading &lt;a href=&quot;https://www.manning.com/books/secure-by-design&quot;&gt;Secure by Design&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/danbjson&quot;&gt;Dan Bergh Johnsson&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/danieldeogun&quot;&gt;Daniel Deogun&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/danielsawano&quot;&gt;Daniel Sawano&lt;/a&gt;. I started reading it shortly after I received it as a gift from Dan Bergh Johnsson at Jfokus 2020.
&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; text-align: center; margin: 0 auto&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I scored a signed copy of &lt;a href=&quot;https://twitter.com/hashtag/SecureByDesign?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#SecureByDesign&lt;/a&gt; from &lt;a href=&quot;https://twitter.com/danbjson?ref_src=twsrc%5Etfw&quot;&gt;@danbjson&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/hashtag/Jfokus?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Jfokus&lt;/a&gt;. Excited to read the wisdom in this one! &amp;#x1F917; &lt;a href=&quot;https://twitter.com/hashtag/security?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#security&lt;/a&gt; &lt;a href=&quot;https://t.co/q0bxIvIwXF&quot;&gt;pic.twitter.com/q0bxIvIwXF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1225422117841272833?ref_src=twsrc%5Etfw&quot;&gt;February 6, 2020&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;Secure by Design hooked me from the beginning. Chapter 1 dives right in and shows why design matters for security and how security shouldn&apos;t be an afterthought. The authors show how developers will have a difficult time grokking security if you make them remember security-related API calls. However, if you bake security into your design and codify your security practices, developers will be more secure by default. 
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;I recently finished reading &lt;a href=&quot;https://www.manning.com/books/secure-by-design&quot;&gt;Secure by Design&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/danbjson&quot;&gt;Dan Bergh Johnsson&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/danieldeogun&quot;&gt;Daniel Deogun&lt;/a&gt;, and &lt;a href=&quot;https://twitter.com/danielsawano&quot;&gt;Daniel Sawano&lt;/a&gt;. I started reading it shortly after I received it as a gift from Dan Bergh Johnsson at Jfokus 2020.
&lt;/p&gt;
&lt;div style=&quot;max-width: 500px; text-align: center; margin: 0 auto&quot;&gt;
&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I scored a signed copy of &lt;a href=&quot;https://twitter.com/hashtag/SecureByDesign?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#SecureByDesign&lt;/a&gt; from &lt;a href=&quot;https://twitter.com/danbjson?ref_src=twsrc%5Etfw&quot;&gt;@danbjson&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/hashtag/Jfokus?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Jfokus&lt;/a&gt;. Excited to read the wisdom in this one! &amp;#x1F917; &lt;a href=&quot;https://twitter.com/hashtag/security?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#security&lt;/a&gt; &lt;a href=&quot;https://t.co/q0bxIvIwXF&quot;&gt;pic.twitter.com/q0bxIvIwXF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1225422117841272833?ref_src=twsrc%5Etfw&quot;&gt;February 6, 2020&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;Secure by Design hooked me from the beginning. Chapter 1 dives right in and shows why design matters for security and how security shouldn&apos;t be an afterthought. The authors show how developers will have a difficult time grokking security if you make them remember security-related API calls. However, if you bake security into your design and codify your security practices, developers will be more secure by default. 
&lt;/p&gt;
&lt;p&gt;I liked their Java example with domain primitives so much that I used it in my &lt;a href=&quot;https://developer.okta.com/blog/2020/03/23/microservice-security-patterns#1-be-secure-by-design&quot;&gt;Security Patterns for Microservice Architectures&lt;/a&gt; blog post.
&lt;/p&gt;
&lt;p&gt;Chapter 1 ends with encouragement to view security as a concern to be met rather than a set of features. Design is the guiding principle for how a system is built and is applicable on all levels, from code to architecture. Well-known security threats should drive design decisions in security architectures.
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;One thing I appreciate about this book is they summarized each chapter&apos;s main points at the end. Writing reviews like this one are much easier with summaries. &amp;#x1F44D;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In Part 2, there&apos;s enough domain-driven design to make you knowledgeable, but not dangerous. In Chapter 4, they cover code constructs that promote security, like immutability and validation. Domain primitives are the smallest building blocks of a secure architecture. They can contain many checks above and beyond validation that will keep your developers cranking out secure code. The next two chapters discuss maintaining the integrity of the state and reducing state complexity.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Yeah, there&apos;s a lot to digest in this book. I read it over a few months.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Chapter 8 gets into leveraging your delivery pipeline for security and testing. I love that all the code examples in this section used JUnit 5 and were up-to-date with current Java testing practices. I felt like the book was just released last week!
&lt;/p&gt;
&lt;p&gt;Chapter 9 is an excellent tour of how exceptions can be used in your architecture to indicate failures. Or better yet, design for availability with resilience, responsiveness, and graceful failure handling. The availability of your data and system should be an important security goal and is part of the CIA acronym (confidentiality, integrity, and availability).&lt;/p&gt;
&lt;p&gt;Chapter 10 gets into cloud-native thinking and the twelve-factor app. Once you have your apps running with twelve-factor concepts, you can adopt the three R&apos;s of enterprise security: Rotate, Repave, and Repair. In short, having an architecture where everything runs in the cloud allows you to take security to the next level, and:
&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Rotate secrets every few minutes or hours.&lt;/li&gt;
  &lt;li&gt;Repave servers and applications every few hours.&lt;/li&gt;
  &lt;li&gt;Repair vulnerable software as soon as possible (within a few hours), and a patch is available.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Part 3 is all about applying what you learned. How do you adopt domain primitives with legacy code? The authors suggest a few different options. Chapter 13 is all about microservices. I found it especially interesting to learn how logs can leak sensitive data and how logging data can be used after-the-fact to be a 2nd-level attack. The final chapter suggests guidelines for security in code reviews, challenging your design with penetration tests, and making security a source of inspiration.&lt;/p&gt;
&lt;h3&gt;Recommendation: A Strong Buy&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;I give Secure by Design 5 stars!&lt;/strong&gt; &amp;#x2B50;&amp;#xFE0F;&amp;#x2B50;&amp;#xFE0F;&amp;#x2B50;&amp;#xFE0F;&amp;#x2B50;&amp;#xFE0F;&amp;#x2B50;&amp;#xFE0F;&lt;/p&gt;
&lt;p&gt;I learned a lot of new information about designing secure systems and look forward to using this knowledge in my projects. Cheers to the book&apos;s authors: Dan, Daniel, and Daniel. I think you created an excellent security reference book that will help many developers and companies be more secure by design.&lt;/p&gt;</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/happy_birthday_abbie13</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_abbie13"/>
        <published>2019-11-05T14:03:25-07:00</published>
        <updated>2019-11-05T20:03:25-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;p&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/49020698497_88738a8fb5.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/49020698497&quot; title=&quot;Abbie Raible 2019&quot; rel=&quot;lightbox[happy17abbie]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/49020698497_88738a8fb5_q.jpg&quot; width=&quot;150&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot; alt=&quot;Abbie Raible 2019&quot;&gt;&lt;/a&gt;

Abbie turns 17 today! It&apos;s hard to believe, but true. For those that&apos;ve followed me since the early 2000s, you might remember &lt;a href=&quot;https://raibledesigns.com/rd/entry/our_little_girl_has_arrived1&quot;&gt;I announced her birth&lt;/a&gt; on this very same blog. It&apos;s crazy to think that I started this blog just a few months before she was born. Enough about me, what about Abbie?
&lt;/p&gt;
&lt;p&gt;You could say she&apos;s all grown up. She has a part-time job at the Gap, gets excellent grades, and is thinking about college. She&apos;s done a couple of college tours in the SE region of the US, and we&apos;re touring Tulane when we visit New Orleans in January.  She&apos;s had a steady boyfriend for a while now. He even joined us on our family vacation in Montana last summer.
&lt;/p&gt;
&lt;p&gt;Happy 17th Birthday, Abbie! You&apos;re awesome!! &amp;#x1F970;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/farewell_to_the_2018_19</id>
        <title type="html">Farewell to the 2018-19 Ski Season</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/farewell_to_the_2018_19"/>
        <published>2019-05-25T15:25:37-06:00</published>
        <updated>2019-05-28T09:20:07-06:00</updated> 
        <category term="/General" label="General" />
        <category term="skiing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vacation" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="powder" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wolfcreek" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ryanmoore" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="skiseason" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;Holy cow! 2018-19 was one of the best ski seasons &lt;em&gt;ever!!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
It all started in December with some gorgeous powder days and only got better from there. 
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/47927490551_0fc41224da_c.jpg&quot; title=&quot;It was a gorgeous day at Mary Jane!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927490551/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927490551_0fc41224da.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;It was a gorgeous day at Mary Jane!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Trish and I took her birthday off (December 17) and enjoyed a beautiful day with no crowds.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/47927652913_110eba7a3a_c.jpg&quot; title=&quot;Free you heel!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927652913/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927652913_110eba7a3a_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Free you heel!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  
  &lt;a href=&quot;https://live.staticflickr.com/65535/47927553363_74a6c77705_c.jpg&quot; title=&quot;Happy Monday!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927553363/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927553363_74a6c77705_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Happy Monday!&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/47927544957_50dec3ec92_c.jpg&quot; title=&quot;Birthday Girl!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927544957/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927544957_50dec3ec92_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Birthday Girl!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/47927620068_cc76cc904e_c.jpg&quot; title=&quot;Mary Jane!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927620068/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927620068_cc76cc904e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Mary Jane!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;Holy cow! 2018-19 was one of the best ski seasons &lt;em&gt;ever!!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
It all started in December with some gorgeous powder days and only got better from there. 
&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/47927490551_0fc41224da_c.jpg&quot; title=&quot;It was a gorgeous day at Mary Jane!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927490551/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927490551_0fc41224da.jpg&quot; width=&quot;500&quot; height=&quot;375&quot; alt=&quot;It was a gorgeous day at Mary Jane!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Trish and I took her birthday off (December 17) and enjoyed a beautiful day with no crowds.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/47927652913_110eba7a3a_c.jpg&quot; title=&quot;Free your heel!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927652913/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927652913_110eba7a3a_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Free your heel!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
  
  &lt;a href=&quot;https://live.staticflickr.com/65535/47927553363_74a6c77705_c.jpg&quot; title=&quot;Happy Monday!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927553363/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927553363_74a6c77705_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Happy Monday!&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/47927544957_50dec3ec92_c.jpg&quot; title=&quot;Birthday Girl!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927544957/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927544957_50dec3ec92_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;Birthday Girl!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/47927620068_cc76cc904e_c.jpg&quot; title=&quot;Mary Jane!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927620068/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927620068_cc76cc904e_m.jpg&quot; width=&quot;240&quot; alt=&quot;Mary Jane!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;New Years in Winter Park&lt;/h3&gt;
&lt;p&gt;I planned things like a skiing dad should, and scheduled a family vacation in Winter Park for a week that included New Years Eve. If you&apos;ve followed me a while, you&apos;ll remember that we made our dreams come true in 2011 with &lt;a href=&quot;https://raibledesigns.com/rd/entry/another_dream_realized_mountain_views&quot;&gt;mountain views&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://farm7.static.flickr.com/6008/5983793266_e1023564f1_c.jpg&quot; title=&quot;Views from Waterside West in Fraser, CO&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;http://www.flickr.com/photos/mcginityphoto/5983793266&quot;&gt;&lt;img src=&quot;https://farm7.static.flickr.com/6008/5983793266_e1023564f1.jpg&quot; width=&quot;500&quot; height=&quot;331&quot; alt=&quot;Views from Waterside West in Fraser, CO&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Buying the Ski Shack in Winter Park was one of the best things Trish and I ever did. It had spectacular views and provided an opportunity to make another dream come true: &lt;a href=&quot;https://raibledesigns.com/rd/entry/farewell_to_the_2014_2015&quot;&gt;42 days in a season&lt;/a&gt;!
&lt;/p&gt;
&lt;p&gt;Man, that place was awesome. We had to sell it when I &lt;a href=&quot;https://raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;joined Stormpath and we bought the Raible Ranch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
We have many fond memories of Winter Park, and some of our best friends live there. If you&apos;re familiar with fraternities and sororities, you&apos;ll know what I mean when I say my little brother has a place there. Trish&apos;s little sister does too. Joe and Chris are special people in our lives and we always have a blast when we get to fraternize with them. 
&lt;/p&gt;
&lt;p&gt;
Chris Caldes is incredibly special since she married us in 2013.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/7290/9614861883_cfb2d9fdae.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/9614861883/&quot; title=&quot;Besties&quot; rel=&quot;lightbox[skiseason201819]&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/7290/9614861883_cfb2d9fdae.jpg&quot; width=&quot;500&quot; alt=&quot;Besties&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We thoroughly enjoyed partying at her house for New Year&apos;s Eve and celebrating with a plethora of folks from our rafting family. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/47930226893_e5eaf71175_c.jpg&quot; title=&quot;New Years Eve 2018!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47930226893/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47930226893_e5eaf71175.jpg&quot; width=&quot;500&quot; alt=&quot;New Years Eve 2018!&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-flickr-embed=&quot;true&quot; href=&quot;https://live.staticflickr.com/65535/47930232596_ca0cd5b401_c.jpg&quot; title=&quot;When I am President...&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47930232596/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47930232596_ca0cd5b401.jpg&quot; width=&quot;500&quot; alt=&quot;When I am President...&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Cross-Country Skiing&lt;/h3&gt;
&lt;p&gt;
Not only did the powder fall like mad, but I rekindled my love for cross-country skiing. It was snowing so much in our backyard that I went out and bought x-country skis. Hiking with our dogs (Sagan and Daisy) in our backyard is fun, but skiing is a whole other level. There&apos;s bridal paths everywhere, and they&apos;re border collies, so I let them run free and we have a ball. It&apos;s one of the coolest parts of living in the country.
&lt;/p&gt;
&lt;p&gt;It all started with x-country skiing at Devils Thumb Ranch over the New Years Holiday. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://live.staticflickr.com/65535/47927491121_72120739a6_c.jpg&quot; title=&quot;Some of my favorite peeps!&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927491121/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927491121_72120739a6_m.jpg&quot; width=&quot;240&quot; alt=&quot;Some of my favorite peeps!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/47927488106_99bdddaa2f_c.jpg&quot; title=&quot;Skiing at Devils Thumb Ranch&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927488106/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927488106_99bdddaa2f_m.jpg&quot; width=&quot;240&quot; alt=&quot;Skiing at Devils Thumb Ranch&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/47927558728_9e852835e3_c.jpg&quot; title=&quot;Happy Skiing Family&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927558728/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927558728_9e852835e3.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Skiing Family&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I also played hooky a few times. My co-workers wouldn&apos;t know because I&apos;m pretty productive at work. In fact, one of my favorite stories of the year was on a Friday morning. I&apos;d put in a lot of hours that week and when I joined the team call for the week, my friend Lindsay said &quot;I just hope you&apos;re not working!&quot; 
&lt;/p&gt;
&lt;p&gt;
That&apos;s when I turned on my my video camera and revealed that I was sitting in Stout the Syncro at the base of Mary Jane. Trish and I woke up early, drove to Winter Park, and joined our conference calls as you normally would. The difference was we were skiing fresh powder and grinning from ear-to-ear. That was probably my favorite all-hands meeting of the year.
&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;Multi-tasking at its best: listening to the company All Hands meeting while getting fresh tracks at &lt;a href=&quot;https://twitter.com/hashtag/MaryJane?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#MaryJane&lt;/a&gt;. ? &lt;a href=&quot;https://twitter.com/hashtag/PowderDay?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#PowderDay&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/LifeAtOkta?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#LifeAtOkta&lt;/a&gt; &lt;a href=&quot;https://t.co/WNXH5qjWwT&quot;&gt;pic.twitter.com/WNXH5qjWwT&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/1101531739258843136?ref_src=twsrc%5Etfw&quot;&gt;March 1, 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;h3&gt;Skiing at Wolf Creek&lt;/h3&gt;
&lt;p&gt;
The other untold story from ski season is about a ski trip to Wolf Creek. I&apos;d was returning home from &lt;a href=&quot;https://developer.okta.com/blog/2019/02/27/devnexus-2019&quot;&gt;DevNexus&lt;/a&gt; on a Friday night. As we were landing, I saw the powder forecast in Wolf Creek and texted a bunch of skiing friends. 
&lt;/p&gt;
&lt;blockquote class=&quot;smokey&quot;&gt;
Alonso is in Wolf Creek for the next week. There&apos;s 1-2 feet in the forecast by Tuesday. He has sleeping for 8. Road trip!
&lt;/blockquote&gt;
&lt;p&gt;
I received one positive response from my buddy Ryan Moore on Saturday afternoon.
&lt;/p&gt;
&lt;blockquote  class=&quot;smokey&quot;&gt;I&apos;m in on WC.&lt;/blockquote&gt;
&lt;p&gt;
To make it happen, I worked all day Sunday, writing two blog posts in one day. We departed early Monday morning and arrived in Wolf Creek around 1pm. Along the way, I received a reminder that I had a call with a Fortune 500 company who was interested in Okta&apos;s API. I had no reception when I received the reminder, but we found three bars 10 minutes later. We pulled over and I took the call like I was sitting at home.
&lt;/p&gt;
&lt;p&gt;
Knee-deep powder greeted us that day, and we had a ball. We stayed with our friends (Chris, Mary, and Luna) that night. Chris Alonso is a very important person in my life. He was the wicked-smart computer science major that I knew in college. He&apos;s the one that showed me coding might be a fabulous career and convinced me (by example) that it&apos;s what I wanted to do. It was fitting that his newly-built house in Wolf Creek didn&apos;t have internet access, or cell phone reception. 
&lt;/p&gt;
&lt;p&gt;
On Tuesday morning, I needed to publish a blog post before we hit the slopes. We had a choice: go into town for wi-fi, or head to the ski resort and hope they had cell reception. We figured, &quot;of course they&apos;ll have reception at the resort&quot;. We woke up at 6 am, left the house by 6:20 and were in the lodge by 7 am. 
&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[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927615997/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927615997_7ab2798f62.jpg&quot; width=&quot;500&quot; alt=&quot;Stout at Wolf Creek&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
They did not have cell reception. Nor wi-fi. There was 24&quot; of fresh powder in the last 12 hours.
&lt;/p&gt;
We were the only ones in the lodge aside from the folks that were opening up the kitchen. A lady mentioned that she had cell reception. I asked her if I could tether from her phone to get an internet connection. She didn&apos;t know what I was talking about but lent me her phone regardless. An hour later, I had completed my task of creating a pull request for my blog post to be published. 
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;
The lifts didn&apos;t open until 10 am that day because of power issues and so much powder.
&lt;/p&gt;
&lt;p&gt;
The powder was thigh-deep and glorious. 
&lt;/p&gt;
&lt;p&gt;
Around noon, I had to fix things in my pull request before the blog post could be published. I found the same lady, borrowed her phone again and took up a cross-legged position in the hallways downstairs (near the power outlet) to publish and promote said blog post. I tipped her $40 that day. I doubt she knows how much she influenced my wonderful skiing experience.
&lt;/p&gt;
&lt;p&gt;
The crazy part of the story happened the next day. There was a blizzard warning in Denver and we knew the pass might close at 6 am (for avalanche blasting). We woke up at 5 am on Wednesday to start our journey home. Since Ryan knew the area better, he took the first shift. When we left Chris&apos;s house, he asked, &quot;how many miles does the van get to a tank?&quot;
&lt;/p&gt;
&lt;p&gt;
My answer: the most I&apos;ve done is 266.
&lt;/p&gt;
&lt;p&gt;
His response: we&apos;re at 250.
&lt;/p&gt;
&lt;p&gt;
We drove over Wolf Creek pass and found the nearest gas station on the other side. When we arrived, we were at 265 miles on the tank. Phew!
&lt;/p&gt;
&lt;p&gt;
I drove for the rest of the trip and experienced the most treacherous driving conditions of my life. If you live in Denver, you&apos;ll remember this as Bomb Cyclone 2019 #1. We had a DJUG meeting scheduled that night, a Java celebrity speaking, and I needed to get back in time for it. The winds and visibility were absolutely ridiculous along the way. There were many times where I had 10&apos; of visibility and the winds were so strong they almost blew us off the road. Following a snow plow just after South Park was a life saver. When we got to Bailey (1 hour from Denver), 285 was not plowed and there was a foot of snow on the road. 4WD and following UPS trucks with chains got us through it all. 
&lt;/p&gt;
&lt;p&gt;
While driving through Denver in the blizzard conditions, I realized that it would be a bad idea to do the DJUG meetup that night. My fellow organizers canceled the meetup around the same time. It&apos;s nuts to reminisce and realize the April meetup was canceled too (because of Bomb Cyclone #2).
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&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[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927638718/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927638718_3507a2e695.jpg&quot; width=&quot;500&quot; alt=&quot;The Van after Bomb Cyclone #1&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I have another good story that proves how good it was. I bought brand new powder skis at the end of February. The shop was willing to put my old bindings on my new skis, but they needed 2-3 days to do it. For the &lt;em&gt;whole month&lt;/em&gt; of March, I never had an opportunity to do it! The powder was too frequest. 
&lt;/p&gt;
&lt;h3&gt;Spring Break in Steamboat&lt;/h3&gt;
&lt;p&gt;
We took the kids to Steamboat for the first half of Spring Break and had an absolute blast! 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://live.staticflickr.com/65535/47927541457_010bf72757_c.jpg&quot; title=&quot;Spring Break at Steamboat&quot; rel=&quot;lightbox[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927541457/in/album-72157708749115602/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47927541457_010bf72757.jpg&quot; width=&quot;500&quot; alt=&quot;Spring Break at Steamboat&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
That was our last ski trip for the year. However, it did snow this week, so I did get one last backyard x-country ski in. My only regret is we didn&apos;t make it to Crested Butte this year. That&apos;s OK, there&apos;s always next year!
&lt;/p&gt;
&lt;h3&gt;VWs on the Green 2019&lt;/h3&gt;
&lt;p&gt;
As is tradition, we showed both our awesome VWs in the Denver&apos;s annual VWs on the Green Show. We spent several hours polishing both rigs and are happy to report that Hefe won best in his class! He&apos;s only lost one year since we&apos;ve had him finished. That was last year, and Stout the Syncro won, so we&apos;re on a five year winning streak. Next year, we plan to show up, enjoy the crowd, and not enter. We&apos;ve won enough, so we&apos;d like others to have a chance. 
&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[skiseason201819]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47927546642/in/album-72157708749115602/&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 style=&quot;max-width: 500px; color: #999; margin: -10px auto 10px; text-align: right&quot;&gt;&lt;em&gt;For more photos of this year&apos;s ski season, see my &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157708749115602&quot;&gt;album on Flickr&lt;/a&gt;.&lt;/em&gt;&lt;/p
&lt;p&gt;
As I write this, I&apos;m on my way to Barcelona for &lt;a href=&quot;https://www.jbcnconf.com/2019/&quot;&gt;JBCNConf 2019&lt;/a&gt;. I&apos;m taking the whole family with me since Trish is fluent in Spanish and Abbie and Jack have been studying it for a few years. On our way home, we&apos;ll stop in Boston to see our niece (Morgan) graduate from high school. It&apos;s a great start to a sure-to-be fabulous summer. &amp;#127780;
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/gids_2019_adventures_in_india</id>
        <title type="html">GIDS 2019: Adventures in India</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/gids_2019_adventures_in_india"/>
        <published>2019-05-02T09:54:15-06:00</published>
        <updated>2019-05-03T00:40:48-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="india" scheme="http://roller.apache.org/ns/tags/" />
        <category term="kalin" scheme="http://roller.apache.org/ns/tags/" />
        <category term="bangalore" scheme="http://roller.apache.org/ns/tags/" />
        <category term="gids19" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="bengaluru" scheme="http://roller.apache.org/ns/tags/" />
        <category term="family" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    I had the pleasure of traveling to Bangalore, India last week for the 2019 edition of the &lt;a href=&quot;https://www.developermarch.com/developersummit/&quot;&gt;Great International Developer Summit&lt;/a&gt;. GIDS is a conference that spans five days and has around 5000 developers each year. The conference charges on a per-day basis, and adds the attendees from each day to its total, so it&apos;s not &lt;em&gt;huge&lt;/em&gt;, but it&apos;s pretty big with 1000+ developers each day.
&lt;/p&gt;
&lt;p&gt;
    A week before I left Denver, I solicited the advice of my good friend, Scott Davis. I asked him about the weather, the conference, and India in general. He advised me to wear lightweight clothing, no shorts when speaking and be wary of the wi-fi at the conference. He also mentioned the burgeoning microbrewery scene in &quot;the Silicon Valley of India.&quot;
&lt;/p&gt;
&lt;p&gt;I&apos;ve always been interested in traveling to India. My sister, Kalin, went there as part of her university studies 20 years ago. She studied Buddhism for four months on that journey and even got to meet the Dalai Lama. I thought it&apos;d be fun to bring her along for my first trip to India. We rendezvoused in Seattle on the way, taking the picture below on Friday afternoon, April 19.&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[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47753007051/in/album-72157708216675255/&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;</summary>
        <content type="html">&lt;p&gt;
    I had the pleasure of traveling to Bangalore, India last week for the 2019 edition of the &lt;a href=&quot;https://www.developermarch.com/developersummit/&quot;&gt;Great International Developer Summit&lt;/a&gt;. GIDS is a conference that spans five days and has around 5000 developers each year. The conference charges on a per-day basis, and adds the attendees from each day to its total, so it&apos;s not &lt;em&gt;huge&lt;/em&gt;, but it&apos;s pretty big with 1000+ developers each day.
&lt;/p&gt;
&lt;p&gt;
    A week before I left Denver, I solicited the advice of my good friend, Scott Davis. I asked him about the weather, the conference, and India in general. He advised me to wear lightweight clothing, no shorts when speaking and be wary of the wi-fi at the conference. He also mentioned the burgeoning microbrewery scene in &quot;the Silicon Valley of India.&quot;
&lt;/p&gt;
&lt;p&gt;I&apos;ve always been interested in traveling to India. My sister, Kalin, went there as part of her university studies 20 years ago. She studied Buddhism for four months on that journey and even got to meet the Dalai Lama. I thought it&apos;d be fun to bring her along for my first trip to India. We rendezvoused in Seattle on the way, taking the picture below on Friday afternoon, April 19.&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[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47753007051/in/album-72157708216675255/&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;We had a long 14-hour flight from Seattle to Dubai. We flew Emirates and enjoyed the service, great seats (for economy), and wi-fi as we cruised over the North Pole. We had dinner at the Hard Rock Cafe in Dubai, then hopped on a four-hour flight to India. When we finally arrived at 3:00 am on Sunday, we were greeted with gifts in our room and a fresh slice of cake! Thanks to Dilip and Indu from &lt;a href=&quot;http://saltmarch.com/&quot;&gt;Saltmarch&lt;/a&gt; for making us feel so welcome on our arrival.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/40786465613_b684e30a84_c.jpg&quot; title=&quot;Cake waiting for us when we arrived in Bengaluru!&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40786465613/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/40786465613_b684e30a84.jpg&quot; width=&quot;500&quot; alt=&quot;Cake waiting for us when we arrived in Bengaluru!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    We slept for a few hours after arriving, then met several of the GIDS speakers for a late breakfast. It was like a No Fluff reunion! If the names Venkat, Brian, Raju, Davis, Carducci, Stine, and Pratik sound familiar, you know what I mean. I quickly learned that Bangalore&apos;s name is actually Bengaluru, the &lt;a href=&quot;https://m.rediff.com/news/2007/aug/22bang.htm&quot;&gt;British changed it to Bangalore&lt;/a&gt; during their rule.
  &lt;/p&gt;&lt;p&gt;After breakfast, Kalin and I took a car from the hotel and visited the Bangaluru Palace, followed by a stroll in the Lalbagh Botanical Gardens.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/47752998981_ce10f34df9_c.jpg&quot; title=&quot;Bangalore Palace&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47752998981/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47752998981_ce10f34df9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Bangalore Palace&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/47700272222_6b4303f8e4_c.jpg&quot; title=&quot;Bangalore Palace&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47700272222/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47700272222_6b4303f8e4_q.jpg&quot; width=&quot;150&quot; alt=&quot;Bangalore Palace&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/46836499485_5f9a2721e4_c.jpg&quot; title=&quot;Beware of Snakes at Lalbagh Botanical Gardens&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46836499485/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/46836499485_5f9a2721e4_q.jpg&quot; width=&quot;150&quot; alt=&quot;Beware of Snakes at Lalbagh Botanical Gardens&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    That evening, we joined some wonderful friends for dinner at &lt;a href=&quot;http://www.bangalorebrewworks.com/&quot;&gt;Bangalore Brew Works&lt;/a&gt;. Bangalore Brew Works was my favorite restaurant on the trip. It was an open-air roof-top patio with cold, delicious beer, and spicy bites.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/47752978591_f5da67740c_c.jpg&quot; title=&quot;Mmmmm, local beer with old friends. #gids19 #beer&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/47752978591/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/47752978591_f5da67740c.jpg&quot; width=&quot;500&quot; alt=&quot;Mmmmm, local beer with old friends. #gids19 #beer&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    On Monday, it was time to go to work. I had four talks at GIDS; two on Monday. The conference started with &lt;a href=&quot;https://twitter.com/scottdavis99&quot;&gt;Scott Davis&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/johnwbruce&quot;&gt;John Bruce&lt;/a&gt; having a fireside chat about the web. I&apos;d just seen Sir Tim Berners Lee (John&apos;s co-founder at Inrupt) speak at &lt;a href=&quot;https://www.okta.com/oktane19/&quot;&gt;Oktane 19&lt;/a&gt;, so I was delighted to hear from them both in the same month. &lt;a href=&quot;https://solid.inrupt.com/&quot;&gt;Solid&lt;/a&gt; sounds like a very interesting concept, but I have not tried to &lt;a href=&quot;https://solid.inrupt.com/docs/getting-started&quot;&gt;build my own app with it&lt;/a&gt;, yet.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/40786446373_22ce933c80_c.jpg&quot; title=&quot;#gids19 begins with @scottdavis99 and @johnwbruce having a fireside chat about the web.&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40786446373/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/40786446373_22ce933c80.jpg&quot; width=&quot;500&quot; alt=&quot;#gids19 begins with @scottdavis99 and @johnwbruce having a fireside chat about the web.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    From there, it was kind of a blur. I&apos;m not the kind of speaker that talks several times at a conference; I&apos;m used to just one or two slots. I tend to do a lot of talks about Java and JavaScript. Since both have been innovating rapidly lately, I like to update my talks just before so they&apos;re up-to-date. For three days, I was updating presentations, practicing demos, and delivering talks. It was exhausting, but nothing like the other speakers. Several speakers had 10+ sessions and did a full-day workshop on Friday! &amp;#x1F633; 
&lt;/p&gt;
&lt;h3&gt;My Presentations at GIDS&lt;/h3&gt;
&lt;p&gt;
    My first talk was &quot;Front End Development for Back End Developers&quot;. I enjoy giving this talk because it doesn&apos;t have any live coding, but it packs a lot of information into 60 minutes. I &lt;a href=&quot;https://speakerdeck.com/mraible/front-end-development-for-backend-developers-gids-2019&quot;&gt;published my slides&lt;/a&gt; on Speaker Deck and I believe it was recorded.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
    &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;ef82796b30194b39989f8e02573d0f24&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;Monday afternoon, I spoke about &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt; and showed how to build a simple monolith from scratch. Since the wi-fi was spotty to non-existent, I had to do my demo with no internet connection. If you&apos;ve used JHipster in the past, you know this can be a challenge. In the end, it seemed to go well, and I got lots of laughs as I progressively donned hipster clothing attire. You can &lt;a href=&quot;https://speakerdeck.com/mraible/get-hip-with-jhipster-gids-2019&quot;&gt;find my presentation on Speaker Deck&lt;/a&gt; or view it below.&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
    &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;31c475ffae0b4fb6ac1338f67cd67957&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;
    Monday evening, we gathered with conference friends at JetLag Bar and Grill and enjoyed the rooftop ambiance with the pulsating sound of house music.
&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;Dinner at Jetlag Bar for the jetlagged peeps &lt;a href=&quot;https://twitter.com/CGuntur?ref_src=twsrc%5Etfw&quot;&gt;@CGuntur&lt;/a&gt; &lt;a href=&quot;https://twitter.com/mraible?ref_src=twsrc%5Etfw&quot;&gt;@mraible&lt;/a&gt; Kalin &lt;a href=&quot;https://twitter.com/scottdavis99?ref_src=twsrc%5Etfw&quot;&gt;@scottdavis99&lt;/a&gt; &lt;a href=&quot;https://twitter.com/MichaelCarducci?ref_src=twsrc%5Etfw&quot;&gt;@MichaelCarducci&lt;/a&gt; Mrs. Carducci &lt;a href=&quot;https://twitter.com/BillyKorando?ref_src=twsrc%5Etfw&quot;&gt;@BillyKorando&lt;/a&gt; &lt;a href=&quot;https://twitter.com/prpatel?ref_src=twsrc%5Etfw&quot;&gt;@prpatel&lt;/a&gt; &lt;a href=&quot;https://t.co/hj6w7jEpmF&quot;&gt;pic.twitter.com/hj6w7jEpmF&lt;/a&gt;&lt;/p&gt;&amp;mdash; Mary Grygleski (@mgrygles) &lt;a href=&quot;https://twitter.com/mgrygles/status/1120391698180390913?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;
    On Tuesday afternoon, I spoke about &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;. A couple of hours before the talk, I went to practice my demo and realized that I hadn&apos;t updated it in quite some time. I scrambled to update my &lt;a href=&quot;https://github.com/oktadeveloper/spring-boot-react-example/blob/master/demo.adoc&quot;&gt;demo script&lt;/a&gt; for the latest versions of Spring Boot, Create React App, and Okta. After updating and practicing, I prepared my laptop to do the demo without an internet connection.
&lt;/p&gt;
&lt;p&gt;When I started my demo, I planned on the internet failing, but I figured I&apos;d show the audience first. In the midst of failure, one of the room hosts told me there was a backup wi-fi, got me on it, and away we went! You can see my &lt;a href=&quot;https://speakerdeck.com/mraible/bootiful-development-with-spring-boot-and-react-gids-2019&quot;&gt;slides on Speaker Deck&lt;/a&gt; or peruse them below.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
    &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;142344f5b03a456287fca7be642e5680&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;
    Tuesday evening we gathered with folks from Oracle, Red Hat, IBM, and BNY Mellon at the Biere Club. They served excellent craft beer, yummy appetizers, and we laughed our way into the night. We particularly enjoyed our selfie at the end of the night.
&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;&lt;em&gt;Explanation: when my sister and I were strolling around the botanical gardens, we noticed a strange phenomenon we hadn&apos;t seen before: there were more men taking selfies than women. We also noticed that while the women were smiling, all the men were very serious in their photos. When in Rome!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
    I had my final talk about microservices with JHipster and OAuth on Wednesday morning. I&apos;d just finished &lt;a href=&quot;https://developer.okta.com/blog/2019/04/15/testing-spring-security-oauth-with-junit&quot;&gt;upgrading JHipster to use Spring Security 5.1&lt;/a&gt; a couple of weeks prior, so I was eager to show it off. I used JHipster Registry and its Spring Cloud Config support to show how you can switch from Keycloak to Okta (or any IdP) by configuring just three Spring Security properties. Since your gateway and microservices are all configured to read from the registry on startup, you can configure your OIDC provider in a single location! You can &lt;a href=&quot;https://speakerdeck.com/mraible/microservices-for-the-masses-with-spring-boot-jhipster-and-oauth-gids-2019&quot;&gt;download my presentation&lt;/a&gt; or view it below.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
    &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;aa781ce052404101a89952df649e0131&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;
    We retreated to our hotel on Wednesday afternoon, enjoyed massages gifted by Saltmarch, and I savored a cold beer at the patio bar.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/33875884248_3156e4bcc7_c.jpg&quot; title=&quot;Talks finished!&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/33875884248/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/33875884248_3156e4bcc7.jpg&quot; width=&quot;375&quot; alt=&quot;Talks finished!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    This picture above is the last picture I took with my phone. When I was at the gym on Thursday morning, the screen started flickering on and off with hints of green. The screen was borked. I was hoping to use it for photos but decided it might be nice to have a break from having a phone.&lt;/p&gt;
&lt;p&gt;Thursday afternoon, we toured the Bannerghatta National Park (aka the Bengaluru Zoo) with &lt;a href=&quot;https://twitter.com/saturnism&quot;&gt;Ray Tsang&lt;/a&gt;. It was hot, the animals were exotic, and the safari tour was fast and furious. We had a fabulous time.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/33875919318_06f27b93ca_c.jpg&quot; title=&quot;Anthill?&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/33875919318/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/33875919318_06f27b93ca_m.jpg&quot; width=&quot;179&quot; alt=&quot;Anthill?&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/46836517025_0ed8c83091_c.jpg&quot; title=&quot;Ray and I at the Bannerghatta National Park&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46836517025/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/46836517025_0ed8c83091_m.jpg&quot; width=&quot;179&quot; alt=&quot;Ray and I at the Bannerghatta National 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/33875920298_839525471a_c.jpg&quot; title=&quot;Kalin with Butterfly&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/33875920298/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/33875920298_839525471a_m.jpg&quot; width=&quot;180&quot; alt=&quot;Kalin with Butterfly&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/46836519035_abc71d8a02_c.jpg&quot; title=&quot;Butterflies on my face!&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46836519035/in/album-72157708216675255/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/46836519035_abc71d8a02_m.jpg&quot; width=&quot;179&quot; alt=&quot;Butterflies on my face!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    On Friday, Kalin and I headed to Mysuru (formerly Mysore) to see the sights. We hired a driver from our hotel for the three-hour drive. We visited a summer home of the rulers from the late 1700s, toured the Sri Chamundeshwari Temple, strolled through the Mysuru zoo, and took a quick tour around Mysore Palace. Unfortunately, I don&apos;t have any good pictures of our adventure.
&lt;/p&gt;
&lt;p&gt;
    You can find all the pictures in this post, and a few more, in &lt;a href=&quot;https://www.flickr.com/photos/mraible/sets/72157708216675255&quot;&gt;my GIDS 2019 album on Flickr&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;My first time speaking at GIDS was a lot of fun. Traveling to India with my sister was a special experience. Networking with developers, speakers, and old friends was fantastic. I told Kalin at one point, &quot;the days are hard and rewarding, but the nights are spectacular.&quot; It&apos;s true. GIDS 2019 was a fantastic adventure with wonderful people.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://live.staticflickr.com/65535/46968490364_b66ec367dc_c.jpg&quot; title=&quot;Boom Town&quot; rel=&quot;lightbox[gids19]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46968490364/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/46968490364_b66ec367dc.jpg&quot; width=&quot;500&quot; alt=&quot;Boom Town&quot; style=&quot;border: 1px solid black;&quot;&gt;&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/life_update_thanksgiving_in_montana</id>
        <title type="html">Life Update: Thanksgiving in Montana, RWX2018, Devoxx4Kids, DJUG, and Trish&apos;s Birthday</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/life_update_thanksgiving_in_montana"/>
        <published>2018-12-20T09:20:02-07:00</published>
        <updated>2019-01-29T05:07:12-07:00</updated> 
        <category term="/General" label="General" />
        <category term="devoxx4kids" scheme="http://roller.apache.org/ns/tags/" />
        <category term="montana" scheme="http://roller.apache.org/ns/tags/" />
        <category term="thanksgiving" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rwx2018" scheme="http://roller.apache.org/ns/tags/" />
        <category term="trish" scheme="http://roller.apache.org/ns/tags/" />
        <category term="denverjug" scheme="http://roller.apache.org/ns/tags/" />
        <category term="life" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    For the first time in many years, we flew to Montana for the holidays. We typically drive, and it takes around 14 hours. It was quite nice to take off and land in just a couple of hours.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4848/46390262491_9be943893b_c.jpg&quot; title=&quot;First class to Montana!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46390262491/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4848/46390262491_9be943893b_m.jpg&quot; width=&quot;240&quot; alt=&quot;First class to Montana!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4862/31450748177_a3f3c15825_c.jpg&quot; title=&quot;The House, The Cabin, and The Bedroom&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450748177/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4862/31450748177_a3f3c15825_m.jpg&quot; width=&quot;240&quot; alt=&quot;The House, The Cabin, and The Bedroom&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/4825/46339178382_2720e8d489_c.jpg&quot; title=&quot;Fantastic porch, even in the winter.&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46339178382/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4825/46339178382_2720e8d489.jpg&quot; width=&quot;500&quot; alt=&quot;Fantastic porch, even in the winter.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
I thought it&apos;d be fun to take some pictures of the cabin I grew up in. It&apos;s just a guest cabin now, but it still seems very cozy.
&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[lifeupdate-201812]&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[lifeupdate-201812]&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;</summary>
        <content type="html">&lt;p&gt;
    For the first time in many years, we flew to Montana for the holidays. We typically drive, and it takes around 14 hours. It was quite nice to take off and land in just a couple of hours.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4848/46390262491_9be943893b_c.jpg&quot; title=&quot;First class to Montana!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46390262491/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4848/46390262491_9be943893b_m.jpg&quot; width=&quot;240&quot; alt=&quot;First class to Montana!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4862/31450748177_a3f3c15825_c.jpg&quot; title=&quot;The House, The Cabin, and The Bedroom&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450748177/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4862/31450748177_a3f3c15825_m.jpg&quot; width=&quot;240&quot; alt=&quot;The House, The Cabin, and The Bedroom&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/4825/46339178382_2720e8d489_c.jpg&quot; title=&quot;Fantastic porch, even in the winter.&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46339178382/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4825/46339178382_2720e8d489.jpg&quot; width=&quot;500&quot; alt=&quot;Fantastic porch, even in the winter.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
I thought it&apos;d be fun to take some pictures of the cabin I grew up in. It&apos;s just a guest cabin now, but it still seems very cozy.&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[lifeupdate-201812]&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[lifeupdate-201812]&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[lifeupdate-201812]&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[lifeupdate-201812]&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;p&gt;My parents have been remodeling the sauna lately, which was built in 1916. My Finnish ancestors built the sauna before the cabin back in the day!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4904/46390236731_eb080bcced_c.jpg&quot; title=&quot;The Sauna&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46390236731/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4904/46390236731_eb080bcced_m.jpg&quot; width=&quot;240&quot; alt=&quot;The Sauna&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4810/46390232981_dd72e287a2_c.jpg&quot; title=&quot;Looks good!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46390232981/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4810/46390232981_dd72e287a2_m.jpg&quot; width=&quot;240&quot; alt=&quot;Looks good!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We had a wonderful time with friends and family at Thanksgiving dinner...&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4853/45666878834_5a41c3c260_c.jpg&quot; title=&quot;Happy Thanksgiving!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/45666878834/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4853/45666878834_5a41c3c260.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Thanksgiving!&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/4880/32518016508_a8bcf719a0_c.jpg&quot; title=&quot;I&apos;m thankful for Trish!!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32518016508/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4880/32518016508_a8bcf719a0.jpg&quot; width=&quot;500&quot; alt=&quot;I&apos;m thankful for Trish!!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;...and while burning slash piles on Black Friday. &lt;a href=&quot;https://twitter.com/hashtag/optoutside&quot;&gt;#OptOutside&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4818/31450713987_ce3bdb276a_c.jpg&quot; title=&quot;Drip torch&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450713987/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4818/31450713987_ce3bdb276a_m.jpg&quot; width=&quot;240&quot; alt=&quot;Drip torch&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4836/32517999798_65c7b21ce3_c.jpg&quot; title=&quot;Fire starter&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32517999798/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4836/32517999798_65c7b21ce3_m.jpg&quot; width=&quot;240&quot; alt=&quot;Fire starter&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/4845/44573076290_337fddfcb8_c.jpg&quot; title=&quot;Burn Boss&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/44573076290/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4845/44573076290_337fddfcb8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Burn Boss&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4806/32517993438_6e2c3a660d_c.jpg&quot; title=&quot;Sawman&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32517993438/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4806/32517993438_6e2c3a660d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sawman&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Our friends, Mike and Mai, have a real working phone booth, so Abbie had fun checking it out. The light from a kerosene lamp reminded me of growing up without electricity.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4833/32517986578_6a9f645548_c.jpg&quot; title=&quot;It really works?!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32517986578/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4833/32517986578_6a9f645548_n.jpg&quot; width=&quot;240&quot; alt=&quot;It really works?!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4853/46390189121_6ae41d8121_c.jpg&quot; title=&quot;The best light&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46390189121/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4853/46390189121_6ae41d8121_n.jpg&quot; width=&quot;240&quot; alt=&quot;The best light&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;The Rich Web Experience 2019&lt;/h3&gt;
&lt;p&gt;After traveling to Montana, I had a week at home before the Rich Web Experience. I gave a new talk on Bootiful Development with Spring Boot and Vue. It was conference-driven development at its best. Because I was giving the talk, I &lt;i&gt;had&lt;/i&gt; to base if off a blog post. I even thought it&apos;d be cool if the blog post was published the same day as my talk. It all worked out in the end, but I had an in-anger encounter with Vue and TypeScript for a couple days there. Then it all magically worked and I became very happy. I published blog posts about Spring Boot 2.1, Bootiful Vue, and Angular 7:
&lt;/p&gt;
&lt;ul&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/03/bootiful-spring-boot-java-vue-typescript&quot;&gt;Bootiful Development with Spring Boot and Vue&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;/ul&gt;
&lt;/p&gt;
&lt;p&gt;I gave other talks at #RWX2019 on Bootiful Angular and JHipster + Microservices. The venue was marvelous.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4917/44573046860_eb7dbe89a3_c.jpg&quot; title=&quot;#RWX2018&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/44573046860/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4917/44573046860_eb7dbe89a3.jpg&quot; width=&quot;500&quot; alt=&quot;#RWX2018&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;As usual, I really enjoyed talking to developers about the open source frameworks I love. I published all of my presentations from RWX 2019 on &lt;a href=&quot;https://speakerdeck.com/mraible&quot;&gt;Speaker Deck&lt;/a&gt;.&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px; margin-bottom: 10px&quot;&gt;
    &lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;242a39ff4d194f33a1610ee97669954b&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px; margin-bottom: 10px&quot;&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;c4d2ea1315974b709e47120617c85be0&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 500px; margin-bottom: 20px&quot;&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;f3977562b8764ffa98e96d661d9b9037&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;h3&gt;Devoxx4Kids Denver&lt;/h3&gt;
&lt;p&gt;
    While attending CodeOne this year, I had a chat with &lt;a href=&quot;https://twitter.com/steveonjava&quot;&gt;Stephen Chin&lt;/a&gt; about Devoxx4Kids Denver. I mentioned we&apos;d love to have a hands-on Raspberry Pi class like the one I attended at a remote ski resort in Sweden. His response was music to my ears: &quot;If you want, I can come out and teach the workshop. Or better yet, my daughter can.&quot; I was flabbergasted and jumped at the opportunity. &quot;Yes!&quot;, I said. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://twitter.com/tingsterchin&quot;&gt;Cassandra&lt;/a&gt; and Steve showed up in Denver a couple months later and taught a &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/256271996/&quot;&gt;Devoxx4Kids Denver Workshop&lt;/a&gt;. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4869/44573044910_292a9babdd_c.jpg&quot; title=&quot;Devoxx4Kids Denver, December 2018&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/44573044910/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4869/44573044910_292a9babdd.jpg&quot; width=&quot;500&quot; alt=&quot;Devoxx4Kids Denver, December 2018&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The kids loved it and they left us some equipment we can use to teach a future class. I&apos;m currently discussing possibilities with the principals of my kids&apos; schools. I hope that both Abbie and Jack can teach classes at their respective schools in 2019.
&lt;/p&gt;
&lt;h3&gt;Denver JUG (DJUG)&lt;/h3&gt;
&lt;p&gt;The week after RWX, I was back in Denver and celebrated a great year with the Denver Java Community at the &lt;a href=&quot;https://www.meetup.com/DenverJavaUsersGroup/events/gbcxxmyxqbqb/&quot;&gt;Denver JUG Holiday Party&lt;/a&gt;. Combining lightning talks with a holiday party turned out to be fun and we&apos;ll likely do it again next year.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4840/31450665387_967e18a9bc_c.jpg&quot; title=&quot;10 minutes with GraphQL in Spring Boot by Butch Clark&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450665387/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4840/31450665387_967e18a9bc_q.jpg&quot; width=&quot;150&quot; alt=&quot;10 minutes with GraphQL in Spring Boot by Butch Clark&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4910/31450662917_d26543c74c_c.jpg&quot; title=&quot;Introduction to Apache Openwhisk serverless platform by Upkar Lidder&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450662917/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4910/31450662917_d26543c74c_q.jpg&quot; width=&quot;150&quot; alt=&quot;Introduction to Apache Openwhisk serverless platform by Upkar Lidder&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4859/31450660307_272b9ccdf9_c.jpg&quot; title=&quot;Akka Streams - Moving and Transforming Data by Regina Peyfuss&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450660307/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4859/31450660307_272b9ccdf9_q.jpg&quot; width=&quot;150&quot; alt=&quot;Akka Streams - Moving and Transforming Data by Regina Peyfuss&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/4836/31450658217_8aa8aa6e9c_c.jpg&quot; title=&quot;Get Commit-Ted by David Ayers&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450658217/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4836/31450658217_8aa8aa6e9c_t.jpg&quot; width=&quot;100&quot; alt=&quot;Get Commit-Ted by David Ayers&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4823/31450656617_682d4251f6_c.jpg&quot; title=&quot;Bug Hunting with Git Bisect by Mike Kasberg&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450656617/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4823/31450656617_682d4251f6_t.jpg&quot; width=&quot;100&quot; alt=&quot;Bug Hunting with Git Bisect by Mike Kasberg&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4845/31450654517_1474eeef42_c.jpg&quot; title=&quot;Parsing PDFs: From &amp;quot;Hello World&amp;quot; to Cease-and-Desist by Robin Howlett&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31450654517/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4845/31450654517_1474eeef42_t.jpg&quot; width=&quot;100&quot; alt=&quot;Parsing PDFs: From &amp;quot;Hello World&amp;quot; to Cease-and-Desist by Robin Howlett&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4815/46339078712_2864f355e6_c.jpg&quot; title=&quot;Restoring sanity to integration &amp;amp; functional testing with TestContainers by Benjamin Muschko&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46339078712/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4815/46339078712_2864f355e6_t.jpg&quot; width=&quot;100&quot; alt=&quot;Restoring sanity to integration &amp;amp; functional testing with TestContainers by Benjamin Muschko&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Happy Birthday, Trish!&lt;/h3&gt;
&lt;p&gt;
    My lovely wife&apos;s birthday was just a few days ago. We both believe you shouldn&apos;t work on your birthday, so we took the day off and headed for the hills. We experienced a gorgeous Colorado day, smooth/fast runs, and smiles from ear-to-ear. &lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4882/44573022210_d37c18d576_c.jpg&quot; title=&quot;Free heeling!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/44573022210/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4882/44573022210_d37c18d576_q.jpg&quot; width=&quot;150&quot; alt=&quot;Free heeling!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4862/46339076672_3271932802_c.jpg&quot; title=&quot;Happy Monday!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/46339076672/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4862/46339076672_3271932802_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Monday!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4879/44573019040_6ce695d2b1_c.jpg&quot; title=&quot;Gorgeous day in the high country!&quot; rel=&quot;lightbox[lifeupdate-201812]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/44573019040/in/album-72157704814416525/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4879/44573019040_6ce695d2b1_q.jpg&quot; width=&quot;150&quot; alt=&quot;Gorgeous day in the high country!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We had a fabulous day, and Trish got a birthday nap on the way home in Stout the Syncro. There&apos;s nothing like having a comfy bed in the back of your van.
&lt;/p&gt;
&lt;h3&gt;What&apos;s Next?&lt;/h3&gt;
&lt;p&gt;Vacation! I&apos;m on vacation at the end of this week and plan to relax a lot during the following two weeks. The first week, we&apos;ll be in Pennsylvania with Trish&apos;s fabulous family. Then we&apos;re back in town for a couple days. It&apos;ll be a turning point in our lives if Abbie passes her driving test (for her real license) on December 27. After that, we&apos;re heading back to the hills for a week of skiing, smiling, and good times.&lt;/p&gt;
&lt;p&gt;I hope y&apos;all have a fun holiday break. I&apos;ll see ya next year!&lt;/p&gt;
&lt;p style=&quot;border-top: 1px dotted silver; color: #999; padding-top: 5px&quot;&gt;
For more photos, see my Flickr album &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157704814416525&quot;&gt;Life Update, December 2018&lt;/a&gt;.
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v5</id>
        <title type="html">The JHipster Mini-Book v5.0 Released!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v5"/>
        <published>2018-11-14T09:48:11-07:00</published>
        <updated>2019-01-09T03:08:57-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="book" scheme="http://roller.apache.org/ns/tags/" />
        <category term="infoq" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster-mini-book" scheme="http://roller.apache.org/ns/tags/" />
        <category term="writing" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;The JHipster Mini-Book v5.0 is &lt;a href=&quot;https://www.infoq.com/minibooks/jhipster-mini-book-5&quot;&gt;now available as a free download from InfoQ&lt;/a&gt;. Get it while it&apos;s &amp;#128293;! You can also &lt;a href=&quot;http://www.lulu.com/shop/matt-raible/the-jhipster-mini-book/paperback/product-23871310.html&quot;&gt;buy a print copy from Lulu&lt;/a&gt;. You can read more about this release on the &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-v5-now-available&quot;&gt;JHipster Mini-Book blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://farm5.staticflickr.com/4904/32008028858_0be121f1b5_b.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/32008028858/&quot; title=&quot;JHipster Mini-Book v5.0 Cover&quot; rel=&quot;lightbox[jmb5]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4904/32008028858_0be121f1b5.jpg&quot; width=&quot;500&quot; alt=&quot;JHipster Mini-Book v5.0 Cover&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The source code for the application developed in the book (21-Points Health) is &lt;a href=&quot;https://github.com/mraible/21-points&quot;&gt;available on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to the &lt;a href=&quot;http://www.infoq.com&quot;&gt;InfoQ&lt;/a&gt; publishing team, &lt;a href=&quot;https://twitter.com/sharpedennis&quot;&gt;Dennis Sharpe&lt;/a&gt;/&lt;a href=&quot;https://twitter.com/jeetgajjarr&quot;&gt;Jeet Gajjar&lt;/a&gt; for tech editing, and Lawrence Nyveen for copy editing. And most of all, thank you &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt; for making the publishing process so easy!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/jhipsterconf_2018_summer_solstice_in</id>
        <title type="html">JHipster Conf 2018: Summer Solstice in Paris</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/jhipsterconf_2018_summer_solstice_in"/>
        <published>2018-06-28T10:13:27-06:00</published>
        <updated>2018-06-28T16:15:28-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="angular" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipsterconf2018" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="paris" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ippon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="react" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipsterconf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring-boot" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
Last week, I journeyed to Paris with my son, Jack. It was his first time in Europe and I brought him along for good reason. I&#8217;d been invited to the first ever JHipster Conf, and I was eager to attend. We were both pretty excited when we left Denver last Monday.
&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/BkLwcPPHvGt/&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:37.5% 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/BkLwcPPHvGt/&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;Our adventure to Paris begins! #jhipsterconf&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-06-18T23:01:22+00:00&quot;&gt;Jun 18, 2018 at 4:01pm PDT&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;h3 id=&quot;background&quot;&gt;My Background with JHipster&lt;/h3&gt;
&lt;p&gt;
I&#8217;ve been a part of the &lt;a href=&quot;https://www.jhipster.tech&quot;&gt;JHipster&lt;/a&gt; community for a few years now. I joined by accident, really. I was trying to market myself as an independent consultant by spouting my knowledge of Spring Boot and Angular with an InfoQ mini-book. Since JHipster leveraged both to jumpstart app development, it seemed like a perfect fit. I&#8217;ve been a long-time fan of app jumpstarts, having developed my own called AppFuse in days long gone.
&lt;/p&gt;
&lt;p&gt;
Through the process of writing the mini-book, finding issues, and submitting pull requests, I eventually found myself to be a member of the JHipster development team. Through my relationship with JHipster, and it&#8217;s 3.0 release, I found myself intrigued my microservices and how to develop them with Spring Boot, Spring Cloud, all through the generation expertise of JHipster.
&lt;/p&gt;
&lt;p&gt;
I&#8217;ve learned a ton by being part of the project and trying to figure out how all of its options work.
&lt;/p&gt;
&lt;p&gt;
    When I found myself with a &lt;a href=&quot;//raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;full-time job at Stormpath&lt;/a&gt;, I did my best to create a Stormpath module for JHipster. When Okta acquired Stormpath, I added a similar module to my list of things I wanted to write.
&lt;/p&gt;
&lt;p&gt;
When it came time to implement an Okta module, I discovered JHipster&#8217;s OAuth support only worked internally, not with an external OAuth provider, also known as an Identity Provider, or IdP. I mentioned to the JHipster team I thought we could do better and add support for external providers instead. They agreed, and I went to work.
&lt;/p&gt;
&lt;p&gt;
    In hindsight, it was a great decision and not terribly difficult to implement thanks to Spring Security, Keycloak, and Docker. We had a ton of help from the community along the way, and as of last October, &lt;a href=&quot;https://developer.okta.com/blog/2017/10/20/oidc-with-jhipster&quot;&gt;JHipster added support for single sign-on with OIDC&lt;/a&gt; (tested with Keycloak and Okta).
&lt;/p&gt;
&lt;h3 id=&quot;jhipster5&quot;&gt;JHipster 5.0: Spring Boot 2.0, Angular 6, and React&lt;/h3&gt;
&lt;p&gt;It&#8217;s been a fabulous adventure on the JHipster train and it&#8217;s still going strong. We just &lt;a href=&quot;https://www.jhipster.tech/2018/06/20/jhipster-release-5.0.0.html&quot;&gt;released version 5.0&lt;/a&gt; with React and Spring Boot 2.0 support, there&#8217;s client generators for &lt;a href=&quot;https://github.com/oktadeveloper/generator-jhipster-ionic&quot;&gt;Ionic&lt;/a&gt; and &lt;a href=&quot;https://github.com/oktadeveloper/generator-jhipster-ionic&quot;&gt;React Native&lt;/a&gt;, and &lt;a href=&quot;https://jhipster-conf.github.io/&quot;&gt;we just hosted a kick-ass conference about JHipster in Paris&lt;/a&gt;.
&lt;/p&gt;
&lt;h3 id=&quot;jhipsterconf-2018&quot;&gt;JHipster Conf 2018&lt;/h3&gt;
&lt;p&gt;
The conference featured members of the core team, the well-dressed and fit &lt;a href=&quot;https://twitter.com/codefinger&quot;&gt;Joe Kutner&lt;/a&gt; from Heroku, as well as Java celebrities like &lt;a href=&quot;https://twitter.com/saturnism&quot;&gt;Ray Tsang&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/starbuxman&quot;&gt;Josh Long&lt;/a&gt;. You can &lt;a href=&quot;https://blog.ippon.tech/jhipster-conf-2018/&quot;&gt;read about the festivities and presentations from JHipster&apos;s founder&lt;/a&gt;, &lt;a href=&quot;https://twitter.com/juliendubois&quot;&gt;Julien Dubois&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    The conference was a little over 24 hours long, starting with a speaker&#8217;s dinner on Wednesday evening. Before attending, Jack and I spent the day strolling around Versailles. Versailles is a special place in my life since &lt;a href=&quot;https://raibledesigns.com/rd/entry/our_engaging_trip_to_paris&quot;&gt;I proposed to my double rainbow there&lt;/a&gt; after Devoxx Belgium in 2011.
&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/BkQLlMnnsJo/&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/BkQLlMnnsJo/&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;?? Versailles #working #jhipsterconf&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-06-20T16:15:29+00:00&quot;&gt;Jun 20, 2018 at 9:15am PDT&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;The conference kicked off with &lt;a href=&quot;https://www.slideshare.net/julien.dubois/jhipster-conf-2018-keynote&quot;&gt;a keynote by the JHipster&apos;s co-leads: Julien and Deepu&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;Full house at &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://twitter.com/java_hipster?ref_src=twsrc%5Etfw&quot;&gt;@java_hipster&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/paris?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#paris&lt;/a&gt; &lt;a href=&quot;https://t.co/nnZ6JmlXrW&quot;&gt;pic.twitter.com/nnZ6JmlXrW&lt;/a&gt;&lt;/p&gt;&amp;mdash; Deepu K Sasidharan (@deepu105) &lt;a href=&quot;https://twitter.com/deepu105/status/1009729525071187969?ref_src=twsrc%5Etfw&quot;&gt;June 21, 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;div style=&quot;margin: 0 auto; max-width: 500px&quot;&gt;
&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/wdZWHmGx3zJHnK&quot; width=&quot;500&quot; height=&quot;319&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 style=&quot;margin-bottom:5px&quot;&gt; &lt;strong&gt; &lt;a href=&quot;//www.slideshare.net/julien.dubois/jhipster-conf-2018-keynote&quot; title=&quot;JHipster Conf 2018 keynote&quot; target=&quot;_blank&quot;&gt;JHipster Conf 2018 keynote&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;https://www.slideshare.net/julien.dubois&quot; target=&quot;_blank&quot;&gt;Julien Dubois&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
During my talk, I had Jack join me on stage for an intro, and tried to give him a taste of public speaking in front of hundreds.
&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/BkTWAN2HhU-/&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/BkTWAN2HhU-/&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;After a fabulous day at #JHipsterConf and a fun rooftop party at @ippon_technologies , Jack and I enjoyed a romantic dinner and a bit of F&#234;te de la Musique. ??&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-06-21T21:44:16+00:00&quot;&gt;Jun 21, 2018 at 2:44pm PDT&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
My talk went well, with some successful and some failed demos. Hopefully people got the point that it&#8217;s cool to store your users outside of JHipster so you can share them between apps. I also tried to show that &lt;a href=&quot;https://developer.okta.com/books/api-security/&quot;&gt;OAuth and OIDC are excellent for securing APIs&lt;/a&gt;. You can &lt;a href=&quot;https://speakerdeck.com/mraible/add-sso-to-your-jhipster-apps-with-oidc-jhipsterconf-2018&quot;&gt;download my presentation from Add JHipster to Your JHipster Apps with OIDC&lt;/a&gt; or view it below.
&lt;/p&gt;
&lt;div style=&quot;margin: 0 auto; max-width: 600px&quot;&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;255494c7d9024d99a5ca260cd65085b2&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I created a tutorial of the app I showed in my talk and published it to the Okta developer blog: &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;. If you like React and OAuth, you&apos;re gonna love this guide!
&lt;/p&gt;
&lt;p&gt;
Jack and I had a day in Paris after the conference, so we made the most of it. We hit the Eiffel Tower, hiked the stairs, and marveled at the view. After, we waited in a long line for The Catacombs and walked among the dead.
&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;h3 id=&quot;kudos&quot;&gt;Kudos to the JHipster Community!&lt;/h3&gt;
&lt;p&gt;
What a trip! It&#8217;s so much fun to be a part of JHipster&#8217;s thriving open source community. It&#8217;s not just the project itself; it&#8217;s all the projects we build upon, from Java to TypeScript to Spring Boot to Spring Data to Spring Security to Angular to React to webpack to Bootstrap. It&#8217;s a conglomeration of all of my favorite tools and open source developers encompassed in several awesome projects!
&lt;/p&gt;
&lt;p&gt;
Life as an open source developer is pretty fun. I encourage you to get involved in open source too! I started way back in the early 2000s with Struts and Ant, and it&#8217;s done wonders for my career.
&lt;/p&gt;
&lt;p&gt;
    &lt;em&gt;Viva La Open Source!&lt;/em&gt;
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/farewell_to_the_2017_18</id>
        <title type="html">Farewell to the 2017-18 Ski Season</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/farewell_to_the_2017_18"/>
        <published>2018-06-12T07:50:32-06:00</published>
        <updated>2018-06-12T13:50:32-06:00</updated> 
        <category term="/General" label="General" />
        <category term="skiing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" 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="parkcity" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jack" scheme="http://roller.apache.org/ns/tags/" />
        <category term="alta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="skiseason" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Summertime has arrived in Colorado! Typically, I try to write my &quot;end of ski season&quot; blog post in April or May, but this year it slipped until June. Do I have a good excuse?! Not really. Things got busy with my &lt;a href=&quot;https://www.meetup.com/Richmond-Java-Users-Group/events/249188995/&quot;&gt;trip to Richmond&lt;/a&gt; and &lt;a href=&quot;https://www.okta.com/resources/oktane-content/developer/#microservices&quot;&gt;Oktane 18&lt;/a&gt;, that&apos;s all.&lt;/p&gt;

&lt;p&gt;I&apos;m going to keep this post short and sweet, to mirror the ski season. We didn&apos;t receive a whole lot of snow in the Rocky Mountains so the powder days were few and far between. There were a couple though, and I got to spend a powder day with some old friends at Winter Park!&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/823/40460527890_841901b92f_c.jpg&quot; title=&quot;Dudes Day at Mary Jane&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40460527890/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/823/40460527890_841901b92f.jpg&quot; width=&quot;500&quot; alt=&quot;Dudes Day at Mary Jane&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;The kids and I skied a few days in December, but it wasn&apos;t anything to write home about. For New Years, we packed up the Syncro and headed for Crested Butte.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/909/42267375211_6f037d96f0_c.jpg&quot; title=&quot;Packed up for Crested Butte!&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/42267375211/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/909/42267375211_6f037d96f0.jpg&quot; width=&quot;500&quot; alt=&quot;Packed up for Crested Butte!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    Crested Butte had OK conditions, but the real fun happened when we ditched downhill and tried Nordic skiing. We spent a few hours with James Ward and daughter Josie on a beautiful cross country ski adventure. I grew up cross-country skiing to the bus stop, so it was a real hoot to do it with the whole family.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/961/42267357701_aeb9b61014_c.jpg&quot; title=&quot;Happy Times with James Ward in Crested Butte!&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/42267357701/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/961/42267357701_aeb9b61014_q.jpg&quot; width=&quot;150&quot; alt=&quot;Happy Times with James Ward in Crested Butte!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/978/40460527170_3ec6788356_c.jpg&quot; title=&quot;Crested Butte has gorgeous views&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/40460527170/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/978/40460527170_3ec6788356_q.jpg&quot; width=&quot;150&quot; alt=&quot;Crested Butte has gorgeous views&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/950/42267378551_3d745bfab9_c.jpg&quot; title=&quot;We love CB!&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/42267378551/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/950/42267378551_3d745bfab9_q.jpg&quot; width=&quot;150&quot; alt=&quot;We love CB!&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/877/42267379391_9a7f6e6223_c.jpg&quot; title=&quot;Happy Family in Crested Butte&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/42267379391/in/dateposted-public/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/877/42267379391_9a7f6e6223.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Family in Crested Butte&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    The real magic happened when I visited the Utah JUG in February. I drove through several snow storms on the way and arrived just in time for &lt;a href=&quot;https://www.meetup.com/Utah-Java-Users-Group/events/244213577/&quot;&gt;my talk on microservices, JHipster, and OAuth&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;The next morning, there was 17&quot; at Snowbird. That was a lovely morning.&lt;/p&gt;
&lt;p&gt;That evening, Trish and the kids flew in and we hit Alta the next day. They still had fresh snow in spots and lots of sunshine.&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[skiseason201718]&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;We spent Sunday and Monday in Park City and got dumped on again. 17&quot; again on Monday. Wahoo! We stayed and skied the morning, then endured a long 10-hour drive home.&lt;/p&gt;
&lt;p&gt;
    Those were the main highlights of the ski season. Both kids are legit skiers now and will ski blacks all day if the snow is good. OK, maybe not all day, but for a few hours at least. &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;As for the VWs, Stout the Syncro won his class at the &lt;a href=&quot;http://www.vwotg.com/&quot;&gt;VWs on the Green show&lt;/a&gt;! Hefe the Bus didn&apos;t win anything, but he sure did look good!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm1.staticflickr.com/828/41545932974_0618bcb236_c.jpg&quot; title=&quot;Stout won his class!&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/41545932974/in/album-72157696481290384/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/828/41545932974_0618bcb236.jpg&quot; width=&quot;500&quot; alt=&quot;Stout won his class!&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/952/41545930704_4768a47214_c.jpg&quot; title=&quot;VWs on the Green 2018&quot; rel=&quot;lightbox[skiseason201718]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/41545930704/in/album-72157696481290384/&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/952/41545930704_4768a47214.jpg&quot; width=&quot;500&quot; alt=&quot;VWs on the Green 2018&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;Summer 2018&lt;/h3&gt;
&lt;p&gt;
    Now it&apos;s pretty much summer in our neck of the woods. We spent last weekend rafting on the Upper Colorado and we&apos;re hitting the Arkansas near Salida this weekend. I&apos;ve been riding my bike(s) a lot, but haven&apos;t done a lot of single track trails. I hope to fix that soon.
&lt;/p&gt;
&lt;p&gt;If you&apos;re a developer that follows this blog - I hope to see you on the road in the coming months! I&apos;ll be at &lt;a href=&quot;https://jhipster-conf.github.io/&quot;&gt;JHipster Conf&lt;/a&gt; next week, &lt;a href=&quot;https://www.kcdc.info/&quot;&gt;KC/DC&lt;/a&gt;, &lt;a href=&quot;https://uberconf.com/conference/denver/2018/07/home&quot;&gt;UberConf&lt;/a&gt;, and &lt;a href=&quot;http://www.jcrete.org/&quot;&gt;JCrete&lt;/a&gt; in July, and &lt;a href=&quot;https://www.meetup.com/boston-java/events/247066420/&quot;&gt;Boston JUG&lt;/a&gt; in August. Hope y&apos;all have a great summer. &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/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/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/springone_the_rich_web_experience</id>
        <title type="html">SpringOne, The Rich Web Experience, and Being Home for the Holidays</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/springone_the_rich_web_experience"/>
        <published>2017-12-22T13:44:25-07:00</published>
        <updated>2017-12-30T16:55:27-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="speaking" scheme="http://roller.apache.org/ns/tags/" />
        <category term="home" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="richweb17" scheme="http://roller.apache.org/ns/tags/" />
        <category term="holidays" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springone" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;A few weeks ago, I had the pleasure of hitting two excellent conferences in one week: &lt;a href=&quot;https://springoneplatform.io/&quot;&gt;SpringOne&lt;/a&gt; and &lt;a href=&quot;https://therichwebexperience.com/conference/clearwater/2017/12/home&quot;&gt;The Rich Web Experience&lt;/a&gt;. The primary reason I like both conferences so much is that there are so many familiar faces. 
&lt;/p&gt;
&lt;p&gt;
I had a gas hanging out with folks from Pivotal after I arrived on Monday night. On Tuesday, I thoroughly enjoyed the &lt;a href=&quot;https://twitter.com/mraible/status/938093395519537152&quot;&gt;opening&lt;/a&gt; &lt;a href=&quot;https://twitter.com/mraible/status/938110624613068801&quot;&gt;keynote&lt;/a&gt;. Seeing the unveiling of Spring Boot 2.0&apos;s most impressive feature was spectacular too!
&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;Started as a dare, ended as a feature in &lt;a href=&quot;https://twitter.com/springboot?ref_src=twsrc%5Etfw&quot;&gt;@springboot&lt;/a&gt; 2.0! Animated Banners ?? &lt;a href=&quot;https://twitter.com/hashtag/SpringOne?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#SpringOne&lt;/a&gt; &lt;a href=&quot;https://t.co/PqSDSWHMze&quot;&gt;pic.twitter.com/PqSDSWHMze&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Clozel (@bclozel) &lt;a href=&quot;https://twitter.com/bclozel/status/938116061332770816?ref_src=twsrc%5Etfw&quot;&gt;December 5, 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;
&lt;p&gt;I walked to the Okta office for some swag that afternoon, then proceeded to the &lt;a href=&quot;https://atomist.com/&quot;&gt;Atomist&lt;/a&gt; happy hour. I talked with Rod Johnson about how Atomist might be able to help update our &lt;a href=&quot;https://github.com/oktadeveloper&quot;&gt;example apps&lt;/a&gt; and the &lt;a href=&quot;https://developer.okta.com/blog/&quot;&gt;Okta Developer blog&lt;/a&gt;. Since keeping our posts and examples up-to-date is a maintenance burden, I think Atomist could be a huge help.
&lt;/p&gt;
&lt;p&gt;After happy hour, a bunch of us joined Heroku for a delicious dinner and fun conversations.&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;Great night with &lt;a href=&quot;https://twitter.com/heroku?ref_src=twsrc%5Etfw&quot;&gt;@heroku&lt;/a&gt; friends &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/speakjava?ref_src=twsrc%5Etfw&quot;&gt;@speakjava&lt;/a&gt; &lt;a href=&quot;https://twitter.com/starbuxman?ref_src=twsrc%5Etfw&quot;&gt;@starbuxman&lt;/a&gt; &lt;a href=&quot;https://twitter.com/afitnerd?ref_src=twsrc%5Etfw&quot;&gt;@afitnerd&lt;/a&gt; &lt;a href=&quot;https://twitter.com/Lspacewalker?ref_src=twsrc%5Etfw&quot;&gt;@Lspacewalker&lt;/a&gt; &lt;a href=&quot;https://t.co/JUVz0Ak2sH&quot;&gt;pic.twitter.com/JUVz0Ak2sH&lt;/a&gt;&lt;/p&gt;&amp;mdash; Joe Kutner (@codefinger) &lt;a href=&quot;https://twitter.com/codefinger/status/938298764342767616?ref_src=twsrc%5Etfw&quot;&gt;December 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;
&lt;p&gt;On Wednesday, I delivered my talk on &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;. You can &lt;a href=&quot;https://speakerdeck.com/mraible/bootiful-development-with-spring-boot-and-react-springone-2017&quot;&gt;find my slides on Speaker Deck&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;max-width: 600px; margin: 0 auto&quot;&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;9adf4aa0b6ae47a98dbd52e0fc88e20f&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
It was recorded and &lt;a href=&quot;https://youtu.be/P6rwKHnXUJI&quot;&gt;published to YouTube&lt;/a&gt; as well.
&lt;/p&gt;
&lt;div style=&quot;max-width: 560px; margin: 0 auto&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/P6rwKHnXUJI&quot; gesture=&quot;media&quot; allow=&quot;encrypted-media&quot; allowfullscreen=&quot;&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;After my talk ended, I only had 70 minutes before my flight took off for Florida and the Rich Web Experience. Luckily, there was hardly any traffic and I found myself boarding with &lt;a href=&quot;https://twitter.com/mraible/status/938520431861968896&quot;&gt;23 minutes to spare&lt;/a&gt;.&lt;/p&gt;
</summary>
        <content type="html">&lt;p&gt;A few weeks ago, I had the pleasure of hitting two excellent conferences in one week: &lt;a href=&quot;https://springoneplatform.io/&quot;&gt;SpringOne&lt;/a&gt; and &lt;a href=&quot;https://therichwebexperience.com/conference/clearwater/2017/12/home&quot;&gt;The Rich Web Experience&lt;/a&gt;. The primary reason I like both conferences so much is that there are so many familiar faces. 
&lt;/p&gt;
&lt;p&gt;
I had a gas hanging out with folks from Pivotal after I arrived on Monday night. On Tuesday, I thoroughly enjoyed the &lt;a href=&quot;https://twitter.com/mraible/status/938093395519537152&quot;&gt;opening&lt;/a&gt; &lt;a href=&quot;https://twitter.com/mraible/status/938110624613068801&quot;&gt;keynote&lt;/a&gt;. Seeing the unveiling of Spring Boot 2.0&apos;s most impressive feature was spectacular too!
&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;Started as a dare, ended as a feature in &lt;a href=&quot;https://twitter.com/springboot?ref_src=twsrc%5Etfw&quot;&gt;@springboot&lt;/a&gt; 2.0! Animated Banners ?? &lt;a href=&quot;https://twitter.com/hashtag/SpringOne?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#SpringOne&lt;/a&gt; &lt;a href=&quot;https://t.co/PqSDSWHMze&quot;&gt;pic.twitter.com/PqSDSWHMze&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Clozel (@bclozel) &lt;a href=&quot;https://twitter.com/bclozel/status/938116061332770816?ref_src=twsrc%5Etfw&quot;&gt;December 5, 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;
&lt;p&gt;I walked to the Okta office for some swag that afternoon, then proceeded to the &lt;a href=&quot;https://atomist.com/&quot;&gt;Atomist&lt;/a&gt; happy hour. I talked with Rod Johnson about how Atomist might be able to help update our &lt;a href=&quot;https://github.com/oktadeveloper&quot;&gt;example apps&lt;/a&gt; and the &lt;a href=&quot;https://developer.okta.com/blog/&quot;&gt;Okta Developer blog&lt;/a&gt;. Since keeping our posts and examples up-to-date is a maintenance burden, I think Atomist could be a huge help.
&lt;/p&gt;
&lt;p&gt;After happy hour, a bunch of us joined Heroku for a delicious dinner and fun conversations.&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;Great night with &lt;a href=&quot;https://twitter.com/heroku?ref_src=twsrc%5Etfw&quot;&gt;@heroku&lt;/a&gt; friends &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/speakjava?ref_src=twsrc%5Etfw&quot;&gt;@speakjava&lt;/a&gt; &lt;a href=&quot;https://twitter.com/starbuxman?ref_src=twsrc%5Etfw&quot;&gt;@starbuxman&lt;/a&gt; &lt;a href=&quot;https://twitter.com/afitnerd?ref_src=twsrc%5Etfw&quot;&gt;@afitnerd&lt;/a&gt; &lt;a href=&quot;https://twitter.com/Lspacewalker?ref_src=twsrc%5Etfw&quot;&gt;@Lspacewalker&lt;/a&gt; &lt;a href=&quot;https://t.co/JUVz0Ak2sH&quot;&gt;pic.twitter.com/JUVz0Ak2sH&lt;/a&gt;&lt;/p&gt;&amp;mdash; Joe Kutner (@codefinger) &lt;a href=&quot;https://twitter.com/codefinger/status/938298764342767616?ref_src=twsrc%5Etfw&quot;&gt;December 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;
&lt;p&gt;On Wednesday, I delivered my talk on &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;. You can &lt;a href=&quot;https://speakerdeck.com/mraible/bootiful-development-with-spring-boot-and-react-springone-2017&quot;&gt;find my slides on Speaker Deck&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;max-width: 600px; margin: 0 auto&quot;&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;9adf4aa0b6ae47a98dbd52e0fc88e20f&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
It was recorded and &lt;a href=&quot;https://youtu.be/P6rwKHnXUJI&quot;&gt;published to YouTube&lt;/a&gt; as well.
&lt;/p&gt;
&lt;div style=&quot;max-width: 560px; margin: 0 auto&quot;&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/P6rwKHnXUJI&quot; gesture=&quot;media&quot; allow=&quot;encrypted-media&quot; allowfullscreen=&quot;&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;After my talk ended, I only had 70 minutes before my flight took off for Florida and the Rich Web Experience. Luckily, there was hardly any traffic and I found myself boarding with &lt;a href=&quot;https://twitter.com/mraible/status/938520431861968896&quot;&gt;23 minutes to spare&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;The Rich Web Experience&lt;/h3&gt;
&lt;p&gt;At the Rich Web Experience, I had two back-to-back talks on Thursday morning. The first was on OAuth and is modeled off my &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; blog post. I was surprised to have a packed room and appreciated the enthusiastic audience. You can find &lt;a href=&quot;https://speakerdeck.com/mraible/what-the-heck-is-oauth-and-openid-connect-rwx-2017&quot;&gt;my slides on Speaker Deck&lt;/a&gt; or view them below.
&lt;/p&gt;
&lt;div style=&quot;max-width: 600px; margin: 0 auto&quot;&gt;
&lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;cfa8d9c1ef5444aa884e1ad845f6d8c5&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I had an extra half-hour (compared to SpringOne) to deliver my Bootiful React talk, but I still managed to run out of time. The good news is it was largely because of audience interaction and questions. I feel like presentations are a lot more enjoyable when conversations happen during them. I &lt;a href=&quot;https://speakerdeck.com/mraible/bootiful-development-with-spring-boot-and-react-rwx-2017&quot;&gt;published my slides&lt;/a&gt; afterward. The major difference between this deck and the one at SpringOne is I included &lt;a href=&quot;https://twitter.com/kentcdodds&quot;&gt;Kent Dodds&apos;&lt;/a&gt; &lt;a href=&quot;https://blog.kentcdodds.com/learn-react-fundamentals-and-advanced-patterns-eac90341c9db&quot;&gt;free React courses on egghead.io&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;max-width: 600px; margin: 0 auto&quot;&gt;
&lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;50802ddcf06549959e4ecb760cf91ae1&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I took a nice stroll along the Clearwater beaches that afternoon. I felt like a huge weight had been lifted off my shoulders since I was done speaking for the year.&lt;/p&gt;
&lt;p&gt;On Friday, I flew back to Denver and spent the afternoon polishing all the READMEs in our &lt;a href=&quot;https://github.com/oktadeveloper&quot;&gt;developer example apps&lt;/a&gt;. We recently discovered that a lot of folks were trying our examples without reading our blog posts. As a developer, I know it&apos;s nice to clone a project, configure it, and run it. This should be much easier now. For example, if you look at the &lt;a href=&quot;https://github.com/oktadeveloper/okta-spring-boot-2-angular-5-example/blob/master/README.md&quot;&gt;README for the okta-spring-boot-2-angular-5-example&lt;/a&gt;, you should be able to modify and run without reading its associated blog post.
&lt;/p&gt;
&lt;h3&gt;Devoxx4Kids Denver&lt;/h3&gt;
&lt;p&gt;The next day, I helped organize a &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; on &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/245437411/&quot;&gt;building Fruit Ninja with Scratch&lt;/a&gt;. &lt;a href=&quot;https://twitter.com/melissajmckay&quot;&gt;Melissa McKay&lt;/a&gt; was the class instructor and the kids had a blast. The workshop was hosted at &lt;a href=&quot;https://www.thriveworkplace.com/ballpark/&quot;&gt;Thrive Ballpark&lt;/a&gt; and they published a blog post about how &lt;a href=&quot;https://www.thriveworkplace.com/devoxx4kids-teaching-kids-thrive/&quot;&gt;Devoxx4Kids is Teaching Kids to Thrive&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;&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 with &lt;a href=&quot;https://twitter.com/melissajmckay?ref_src=twsrc%5Etfw&quot;&gt;@melissajmckay&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/ThriveWorkplace?ref_src=twsrc%5Etfw&quot;&gt;@ThriveWorkplace&lt;/a&gt;. Fruit Ninja with &lt;a href=&quot;https://twitter.com/scratch?ref_src=twsrc%5Etfw&quot;&gt;@scratch&lt;/a&gt;! &lt;a href=&quot;https://t.co/ZqruHtVk0u&quot;&gt;pic.twitter.com/ZqruHtVk0u&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/939548914763554816?ref_src=twsrc%5Etfw&quot;&gt;December 9, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;h3&gt;Team Building and Denver JUG&lt;/h3&gt;
&lt;p&gt;The following week, I traveled to San Francisco to meet with my team and do some team building activities. I thouroughly enjoyed the stroll to work on Tuesday morning, and bowling that afternoon.
&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 feel very fortunate to have such a beautiful walk to the &lt;a href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; SF office. &lt;a href=&quot;https://twitter.com/hashtag/lifeatokta?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#lifeatokta&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/embarcadero?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#embarcadero&lt;/a&gt; &lt;a href=&quot;https://t.co/NBaUmHtiFy&quot;&gt;pic.twitter.com/NBaUmHtiFy&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/940644949250359298?ref_src=twsrc%5Etfw&quot;&gt;December 12, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;I flew back Wednesday and made it just in time for the &lt;a href=&quot;https://www.meetup.com/DenverJavaUsersGroup/events/244805856/&quot;&gt;Denver JUG Holiday party&lt;/a&gt;. We had a pretty good turnout, announced some awards, voted on Venkat&apos;s talk in January, and gave out a few prizes. You can read more about the festivities &lt;a href=&quot;http://www.denverjug.org/?p=1155&quot;&gt;on the Denver JUG blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;When I drove home that night, I felt like George Bailey rushing home at the end of It&apos;s a Wonderful Life! The joy of being home without travel on the horizon is a wonderful feeling.
&lt;/p&gt;
&lt;p&gt;At the end of that week, I was able to find time to work on the &lt;a href=&quot;https://github.com/oktadeveloper/generator-jhipster-ionic&quot;&gt;Ionic Module for JHipster&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/mraible/status/942099681907171328&quot;&gt;release it&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;Home for the Holidays&lt;/h3&gt;
&lt;p&gt;It&apos;s a great feeling to be home for the holidays. It was Trish&apos;s birthday weekend last weekend, so we watched her compete in a couple horse shows with Tucker. They sure do look good together, don&apos;t they?&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 Birthday to my lovely wife, &lt;a href=&quot;https://twitter.com/TrishPhoto?ref_src=twsrc%5Etfw&quot;&gt;@TrishPhoto&lt;/a&gt;! She started the day at 5am so she could do one of her favorite things - competing with Tucker. ???? &lt;a href=&quot;https://t.co/XvLd81VRcz&quot;&gt;pic.twitter.com/XvLd81VRcz&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/942495794195677184?ref_src=twsrc%5Etfw&quot;&gt;December 17, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;I&apos;m done traveling for the year and I don&apos;t have any overnight travel scheduled until mid-February. My TripIt stats show I traveled quite a bit this year, and I&apos;m looking forward to speaking at more JUGs and less conferences next year. 
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
  &lt;a href=&quot;https://farm5.staticflickr.com/4588/39195736632_44d08a364e_c.jpg&quot; title=&quot;2017 TripIt Stats&quot; rel=&quot;lightbox[springone-rwx-2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/39195736632/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4588/39195736632_44d08a364e.jpg&quot; alt=&quot;2017 TripIt Stats&quot; style=&quot;border: 1px solid black;&quot; width=&quot;359&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I spent 141 days on the road, but I&apos;m grateful for getting to attend so many cool conferences in many exotic locations. &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[springone-rwx-2017]&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;
If you want to tinker with some code over the break, you can checkout my blog post on how to use &lt;a href=&quot;https://developer.okta.com/blog/2017/12/18/spring-security-5-oidc&quot;&gt;Spring Security 5.0 with OIDC&lt;/a&gt; or my buddy Nate&apos;s &lt;a href=&quot;https://developer.okta.com/blog/2017/12/21/spread-serverless-holiday-cheer&quot;&gt;Spread Serverless Holiday Cheer with Lambda and API Gateway&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Happy Holidays everyone!&lt;/em&gt; &amp;#128522;&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/a_stressful_but_rewarding_trip</id>
        <title type="html">A Stressful, but Rewarding, Trip to Devoxx Belgium and Morocco</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/a_stressful_but_rewarding_trip"/>
        <published>2017-11-27T08:37:50-07:00</published>
        <updated>2017-11-27T18:23:21-07:00</updated> 
        <category term="/Java" label="Java" />
        <category term="speaking" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ionic" scheme="http://roller.apache.org/ns/tags/" />
        <category term="belgium" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="pwa" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxma" scheme="http://roller.apache.org/ns/tags/" />
        <category term="cloudnative" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springboot" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxbe" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;
    One of my favorite conferences in the world is &lt;a href=&quot;https://devoxx.be&quot;&gt;Devoxx Belgium&lt;/a&gt;. First of all, it tends to have one of the most enthusiastic audiences I&apos;ve ever seen. Secondly, its organizers are super awesome and challenge you to give great talks. Third, it was the &lt;a href=&quot;//raibledesigns.com/rd/entry/an_awesome_trip_to_amsterdam&quot;&gt;first conference I ever took my Trish to&lt;/a&gt;.
    In 2011, I took her a second time and &lt;a href=&quot;//raibledesigns.com/rd/entry/our_engaging_trip_to_paris&quot;&gt;proposed to
    her in Paris afterward&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    This year, I traveled to Devoxx Belgium for the first time without Trish. It was stressful because I didn&apos;t prepare well beforehand. However, it was also gratifying because I was able to make everything work, even it all happened at the last minute. Furthermore, I did the majority of my talks with good friends, which is always a
    pleasant experience.
&lt;/p&gt;
&lt;p&gt;The purpose of this blog post is to document my experience this year, so I can look back and say WTF was I
    thinking?! &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;
    I left Denver on Monday (November 6) afternoon and flew to Brussels, Belgium. My flight landed in Brussels at 9 am and Josh and my (three hour) talk was at 1:30 pm. I made it in time, but it was one of the first times we didn&#8217;t have a lot of time to prepare face-to-face beforehand. I learned that getting t-shirts printed in the US to save $500 is a good idea, but having to take two suitcases to carry them all is a bad idea.
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4532/37700216965_c12dbbb856_c.jpg&quot; title=&quot;Cloud Native PWAs with Josh Long at Devoxx Belgium&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700216965/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4532/37700216965_c12dbbb856_q.jpg&quot; width=&quot;150&quot; class=&quot;picture&quot; alt=&quot;Cloud Native PWAs with Josh Long at Devoxx Belgium&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    We did our usual talk and I used Okta&apos;s new &lt;a href=&quot;https://www.npmjs.com/package/@okta%2Fokta-angular&quot;&gt;Angular SDK&lt;/a&gt;
    instead of the Sign-In Widget to showcase authentication. Even
    though the crucial step I needed was contained in my notes, I failed. One simple line to add an &lt;code&gt;HttpInterceptor&lt;/code&gt; and
    I missed it!
&lt;/p&gt;
&lt;p&gt;
    I think I followed up well with a tweet that showed how to fix it. But who knows how many people use Twitter. One things for sure, people tweet more at Devoxx Belgium than any other conference I&#8217;ve ever been too! In fact, the
    #Devoxx hashtag got &lt;a href=&quot;https://www.linkedin.com/pulse/twitter-spam-bots-from-russia-stephan-janssen/&quot;&gt;hijacked by some porn sites&lt;/a&gt; and their tweets started showing up on the Twitter wall. &#157;&#157;
&lt;/p&gt;
&lt;p&gt;
    I tweeted about what I forgot to do after our talk.
&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;Thanks to everyone who attended &lt;a href=&quot;https://twitter.com/starbuxman?ref_src=twsrc%5Etfw&quot;&gt;@starbuxman&lt;/a&gt; and my session on Cloud Native PWAs at &lt;a href=&quot;https://twitter.com/Devoxx?ref_src=twsrc%5Etfw&quot;&gt;@Devoxx&lt;/a&gt;! &lt;br&gt;&lt;br&gt;Slides: &lt;a href=&quot;https://t.co/3uyn4KUbm2&quot;&gt;https://t.co/3uyn4KUbm2&lt;/a&gt;&lt;br&gt;&lt;br&gt;Source code: &lt;a href=&quot;https://t.co/6deOtoHeeg&quot;&gt;https://t.co/6deOtoHeeg&lt;/a&gt;&lt;br&gt;&lt;br&gt;FWIW, I figured out why my &lt;a href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; demo failed. I forgot to add the AuthInterceptor as a provider. Doh! &lt;a href=&quot;https://twitter.com/hashtag/Devoxx?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Devoxx&lt;/a&gt; &lt;a href=&quot;https://t.co/HxdYp6CetZ&quot;&gt;pic.twitter.com/HxdYp6CetZ&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/928194420910051328?ref_src=twsrc%5Etfw&quot;&gt;November 8, 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;
&lt;p&gt;
    Josh and my talk was &lt;a href=&quot;https://youtu.be/tCyLDzhz_mg&quot;&gt;published on YouTube&lt;/a&gt; the very next day, which is awesome.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;
    One of my favorite conferences in the world is &lt;a href=&quot;https://devoxx.be&quot;&gt;Devoxx Belgium&lt;/a&gt;. First of all, it tends to have one of the most enthusiastic audiences I&apos;ve ever seen. Secondly, its organizers are super awesome and challenge you to give great talks. Third, it was the &lt;a href=&quot;//raibledesigns.com/rd/entry/an_awesome_trip_to_amsterdam&quot;&gt;first conference I ever took my Trish to&lt;/a&gt;.
    In 2011, I took her a second time and &lt;a href=&quot;//raibledesigns.com/rd/entry/our_engaging_trip_to_paris&quot;&gt;proposed to
    her in Paris afterward&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    This year, I traveled to Devoxx Belgium for the first time without Trish. It was stressful because I didn&apos;t prepare well beforehand. However, it was also gratifying because I was able to make everything work, even it all happened at the last minute. Furthermore, I did the majority of my talks with good friends, which is always a
    pleasant experience.
&lt;/p&gt;
&lt;p&gt;The purpose of this blog post is to document my experience this year, so I can look back and say WTF was I
    thinking?! &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;
    I left Denver on Monday (November 6) afternoon and flew to Brussels, Belgium. My flight landed in Brussels at 9 am and Josh and my (three hour) talk was at 1:30 pm. I made it in time, but it was one of the first times we didn&#8217;t have a lot of time to prepare face-to-face beforehand. I learned that getting t-shirts printed in the US to save $500 is a good idea, but having to take two suitcases to carry them all is a bad idea.
&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4532/37700216965_c12dbbb856_c.jpg&quot; title=&quot;Cloud Native PWAs with Josh Long at Devoxx Belgium&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700216965/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4532/37700216965_c12dbbb856_q.jpg&quot; width=&quot;150&quot; class=&quot;picture&quot; alt=&quot;Cloud Native PWAs with Josh Long at Devoxx Belgium&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    We did our usual talk and I used Okta&apos;s new &lt;a href=&quot;https://www.npmjs.com/package/@okta%2Fokta-angular&quot;&gt;Angular SDK&lt;/a&gt;
    instead of the Sign-In Widget to showcase authentication. Even
    though the crucial step I needed was contained in my notes, I failed. One simple line to add an &lt;code&gt;HttpInterceptor&lt;/code&gt; and
    I missed it!
&lt;/p&gt;
&lt;p&gt;
    I think I followed up well with a tweet that showed how to fix it. But who knows how many people use Twitter. One things for sure, people tweet more at Devoxx Belgium than any other conference I&#8217;ve ever been too! In fact, the
    #Devoxx hashtag got &lt;a href=&quot;https://www.linkedin.com/pulse/twitter-spam-bots-from-russia-stephan-janssen/&quot;&gt;hijacked by some porn sites&lt;/a&gt; and their tweets started showing up on the Twitter wall. ??
&lt;/p&gt;
&lt;p&gt;
    I tweeted about what I forgot to do after our talk.
&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;Thanks to everyone who attended &lt;a href=&quot;https://twitter.com/starbuxman?ref_src=twsrc%5Etfw&quot;&gt;@starbuxman&lt;/a&gt; and my session on Cloud Native PWAs at &lt;a href=&quot;https://twitter.com/Devoxx?ref_src=twsrc%5Etfw&quot;&gt;@Devoxx&lt;/a&gt;! &lt;br&gt;&lt;br&gt;Slides: &lt;a href=&quot;https://t.co/3uyn4KUbm2&quot;&gt;https://t.co/3uyn4KUbm2&lt;/a&gt;&lt;br&gt;&lt;br&gt;Source code: &lt;a href=&quot;https://t.co/6deOtoHeeg&quot;&gt;https://t.co/6deOtoHeeg&lt;/a&gt;&lt;br&gt;&lt;br&gt;FWIW, I figured out why my &lt;a href=&quot;https://twitter.com/okta?ref_src=twsrc%5Etfw&quot;&gt;@okta&lt;/a&gt; demo failed. I forgot to add the AuthInterceptor as a provider. Doh! &lt;a href=&quot;https://twitter.com/hashtag/Devoxx?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Devoxx&lt;/a&gt; &lt;a href=&quot;https://t.co/HxdYp6CetZ&quot;&gt;pic.twitter.com/HxdYp6CetZ&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/928194420910051328?ref_src=twsrc%5Etfw&quot;&gt;November 8, 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;
&lt;p&gt;
    Josh and my talk was &lt;a href=&quot;https://youtu.be/tCyLDzhz_mg&quot;&gt;published on YouTube&lt;/a&gt; the very next day, which is awesome.
&lt;/p&gt;
&lt;p&gt;
    Tuesday night was the speaker&#8217;s reception, so I attended that and turned in around 10 pm. I worked on my next presentation (Angular vs. React) for a few hours after getting back to my hotel.
&lt;/p&gt;
&lt;p&gt;
    On Wednesday, I worked all day with my co-speaker (&lt;a href=&quot;https://twitter.com/deepu105&quot;&gt;Deepu&lt;/a&gt;, co-lead of
    JHipster) on our Angular vs. React presentation. We worked for eight hours at the conference venue that day and
    parted ways around 6 pm.
&lt;/p&gt;
&lt;p&gt;
    On Wednesday night, I attended a dinner with Ray Tsang (Google Cloud Advocate). We were invited (along with Josh) to a dinner with JDriven. Josh couldn&#8217;t make it, but Ray and I attended and &lt;a href=&quot;https://twitter.com/mraible/status/928397708049739777&quot;&gt;had a great time&lt;/a&gt;. I got home at 10 pm that night and worked on my next day&#8217;s
    presentation until 3 am.
&lt;/p&gt;
&lt;p&gt;
    Thursday, I worked with Deepu for a couple hours to polish and practice our presentation and we delivered it that
    afternoon. We also advertised &lt;a href=&quot;https://twitter.com/mraible/status/928574165380198402&quot;&gt;the t-shirts we brought&lt;/a&gt;.
&lt;/p&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[devoxx2017]&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&gt;
    There were lots of tweets about our talk, but I think &lt;a href=&quot;https://twitter.com/danielbryantuk/status/928660651785850880&quot;&gt;
    this from Daniel Bryant&lt;/a&gt; with our recommendations for Angular vs React was one of my favorites.
&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;The results of the web framework smackdown are in...&lt;br&gt;&lt;br&gt;via &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/deepu105?ref_src=twsrc%5Etfw&quot;&gt;@deepu105&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/hashtag/Devoxx?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#Devoxx&lt;/a&gt; &lt;a href=&quot;https://t.co/MBYfZ2Fli4&quot;&gt;pic.twitter.com/MBYfZ2Fli4&lt;/a&gt;&lt;/p&gt;&#8212; Daniel Bryant (@danielbryantuk) &lt;a href=&quot;https://twitter.com/danielbryantuk/status/928660651785850880?ref_src=twsrc%5Etfw&quot;&gt;November 9, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;
    Our session went well, even thought it wasn&#8217;t super technical, and it was published to YouTube.
&lt;/p&gt;
&lt;div style=&quot;max-width: 560px; margin: 0 auto&quot;&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/qYEEuiI4l10&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;I also &lt;a href=&quot;https://speakerdeck.com/mraible/angular-vs-react-smackdown-devoxx-be-2017&quot;&gt;published our slides on Speaker Deck&lt;/a&gt;.
&lt;/p&gt;

&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;3e7a2bbd5eed40518bf4cb6cf3822c6c&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;
    We had the JHipster BOF late that night (during the conference movie) and only had three people show up. With five
    committers there, we still had a great time, and it was fun to give Julien the Duke&#8217;s Choice Award trophy since he
    started the project.
&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;&lt;a href=&quot;https://twitter.com/java_hipster?ref_src=twsrc%5Etfw&quot;&gt;@java_hipster&lt;/a&gt; team rocking &lt;a href=&quot;https://twitter.com/Devoxx?ref_src=twsrc%5Etfw&quot;&gt;@Devoxx&lt;/a&gt; &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/juliendubois?ref_src=twsrc%5Etfw&quot;&gt;@juliendubois&lt;/a&gt; &lt;a href=&quot;https://twitter.com/sendilkumarn?ref_src=twsrc%5Etfw&quot;&gt;@sendilkumarn&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/DukesChoiceAward?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#DukesChoiceAward&lt;/a&gt; &lt;a href=&quot;https://t.co/gaNpnJtBYR&quot;&gt;pic.twitter.com/gaNpnJtBYR&lt;/a&gt;&lt;/p&gt;&#8212; Deepu K Sasidharan (@deepu105) &lt;a href=&quot;https://twitter.com/deepu105/status/928679012343402498?ref_src=twsrc%5Etfw&quot;&gt;November 9, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;Duke might&apos;ve had a little too much to drink during our BOF. :D&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4572/37700211975_2be2fc9bf4_c.jpg&quot; title=&quot;Duke at the JHipster BOF&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700211975/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4572/37700211975_2be2fc9bf4.jpg&quot; width=&quot;500&quot; alt=&quot;Duke at the JHipster BOF&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I thought our ratings (~4.2) for the two sessions were &#8220;good enough&#8221; to call the conference a success. Thanks to the conference organizers for delivering such an awesome experience once again.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4536/37700221155_9aa2e516d9_c.jpg&quot; title=&quot;The Devoxx Belgium Team&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700221155/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4536/37700221155_9aa2e516d9.jpg&quot; width=&quot;500&quot; alt=&quot;The Devoxx Belgium Team&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&quot;devoxx-morocco&quot;&gt;Devoxx Morocco&lt;/h3&gt;
&lt;p&gt;
    I spent the weekend in Bruges and had a lovely time staying at an Airbnb and visiting some local breweries.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4524/37700211025_17406959ff_c.jpg&quot; title=&quot;Brugge&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700211025/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4524/37700211025_17406959ff_q.jpg&quot; width=&quot;150&quot;  alt=&quot;Brugge&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4524/24716006538_7acb95faa4_c.jpg&quot; title=&quot;Brugge&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/24716006538/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4524/24716006538_7acb95faa4_q.jpg&quot; width=&quot;150&quot; alt=&quot;Brugge&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4551/37700207885_d3b0c87135_c.jpg&quot; title=&quot;Kwak in Brugge&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700207885/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4551/37700207885_d3b0c87135_q.jpg&quot; width=&quot;150&quot; alt=&quot;Kwak in Brugge&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/4521/24716004808_d9c6eb8986_c.jpg&quot; title=&quot;Brugge by night&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/24716004808/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4521/24716004808_d9c6eb8986_m.jpg&quot; width=&quot;240&quot; alt=&quot;Brugge by night&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4580/37700206205_fab269d774_c.jpg&quot; title=&quot;The streets of Brugge&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700206205/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4580/37700206205_fab269d774_m.jpg&quot; width=&quot;240&quot; alt=&quot;The streets of Brugge&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/4568/24716003048_8af41b6f48_c.jpg&quot; title=&quot;Life is good in Bruges, and it just got a little bit better.&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/24716003048/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4568/24716003048_8af41b6f48_z.jpg&quot; width=&quot;480&quot; alt=&quot;Life is good in Bruges, and it just got a little bit better.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    On Saturday night, I worked for several hours on the Ionic module for JHipster that I needed for my talk at Devoxx Morocco. That&#8217;s where the (self-inflicted) drama began. Here&#8217;s the timeline of events that I
    documented in my presentation after my talk:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;After Devoxx Belgium, tried to finish Ionic module over the weekend.&lt;/li&gt;
    &lt;li&gt;Late night of hacking, couldn&#8217;t figure out why what worked last week didn&#8217;t work this week.&lt;/li&gt;
    &lt;li&gt;Discovered Ionic &#8220;super&#8221; starter was upgraded to Angular 5 in the last week.&lt;/li&gt;
    &lt;li&gt;Realized I needed to version the starter or write my own.&lt;/li&gt;
    &lt;li&gt;Tried to make OAuth work, because Okta.&lt;/li&gt;
    &lt;li&gt;Discovered OAuth wouldn&#8217;t work, because JHipster implementation uses cookies, and Cordova&#8217;s web view won&#8217;t work
        with cookies.
    &lt;/li&gt;
    &lt;li&gt;Sunday evening (my talk was on Wednesday morning): refactored everything into an Ionic starter.&lt;/li&gt;
    &lt;li&gt; Monday: finished starter, couldn&#8217;t get it to work in iOS emulator because CORS.&lt;/li&gt;
    &lt;li&gt;Found bugs about CORS doesn&#8217;t work over http. Spent hours trying to make it work over https. Couldn&#8217;t get a local certificate to be trusted, couldn&#8217;t deploy a JHipster app to the cloud (b/c of slow wifi). Even tried cloud-to-cloud, but
        ran into frontend-maven-plugin on Linux issues.
    &lt;/li&gt;
    &lt;li&gt;Monday afternoon: discovered real issue was that emulator runs on port 8080. Changed JHipster/Spring Boot&#8217;s port to 9000, and it worked!
    &lt;/li&gt;&lt;li&gt;Tuesday: delivered talk on Cloud Native PWAs with Josh Long.
    (https://twitter.com/mraible/status/930477708022337536)
&lt;/li&gt;
    &lt;li&gt;Tuesday after dinner: started working on entity generator for Ionic.&lt;/li&gt;
    &lt;li&gt;Wednesday 4am: Got it working!&lt;/li&gt;
    &lt;li&gt;Wednesday 8-11:25am: wrote presentation.&lt;/li&gt;
    &lt;li&gt;Wednesday 11:30am: delivered talk, showed demo that worked!!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    I &lt;a href=&quot;https://speakerdeck.com/mraible/developing-pwas-and-mobile-apps-with-ionic-angular-and-jhipster-devoxx-morocco-2017&quot;&gt;published the slides&lt;/a&gt; from &quot;Developing PWAs and Mobile Apps with Ionic, Angular, and JHipster&quot; to Speaker Deck.
&lt;/p&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;92b706a743634ccdbfea67e441726b13&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
    I also &lt;a href=&quot;https://www.youtube.com/watch?v=B7TjR_rJVeU&quot;&gt;made a 5 minute video&lt;/a&gt;, because I recorded a lot of my development experience along the way.
&lt;/p&gt;
&lt;div style=&quot;max-width: 560px; margin: 0 auto&quot;&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/B7TjR_rJVeU&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
    Phew! It was an exhausting couple of weeks. I learned something I already knew - you should have your presentation finished before you leave for the conference, especially when traveling overseas!
&lt;/p&gt;
&lt;p&gt;
    Nevertheless, I had a great time. At Devoxx Belgium, it was announced that Josh and I both won Devoxx Champion awards. This award is given to speakers that attend all the Devoxx conferences in a year. Unfortunately, they never told either of us that we got it, so we missed it in the keynote. Luckily, &lt;a href=&quot;https://youtu.be/6ethbpVl4eo?t=12m52s&quot;&gt;it was recorded&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    At Devoxx Morocco, they notified me five minutes before the keynote that &#8220;I should come&#8221; and that they had a
    surprise for me. I was in the midst of my last-minute scramble to get code working and write my presentation, but I
    went anyway. I&#8217;m glad I did because it was a very cool opening keynote and I was honored to receive a Devoxx Champion award.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4537/26811841789_85bc9ea4a8_c.jpg&quot; title=&quot;Devoxx Morocco Keynote&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26811841789/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4537/26811841789_85bc9ea4a8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Devoxx Morocco Keynote&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4545/37700212615_a544f02282_c.jpg&quot; title=&quot;Devoxx Morocco Keynote&quot; rel=&quot;lightbox[devoxx2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/37700212615/in/album-72157690880978696/&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4545/37700212615_a544f02282_m.jpg&quot; width=&quot;240&quot; alt=&quot;Devoxx Morocco Keynote&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/4562/37700212995_9b7bf52f74_c.jpg&quot; title=&quot;Devoxx Champion!&quot; rel=&quot;lightbox[devoxx2017]&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.jpg&quot; width=&quot;500&quot; alt=&quot;Devoxx Champion!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I made sure to get my picture with Josh, and his girlfriend Tammie, after lunch.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm5.staticflickr.com/4528/26811841249_2cf6c7ab1b_c.jpg&quot; title=&quot;Devoxx Champions!&quot; rel=&quot;lightbox[devoxx2017]&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.jpg&quot; width=&quot;500&quot; alt=&quot;Devoxx Champions!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    There are two new Okta open source projects as part of my efforts, but they&#8217;ll require some polishing before they&#8217;re ready for general consumption. I hope to do that before the end of the year, but the end of January is probably more realistic.
    Below are links to their repos on GitHub:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/oktadeveloper/ionic-jhipster-starter&quot;&gt;https://github.com/oktadeveloper/ionic-jhipster-starter&lt;/a&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/oktadeveloper/generator-jhipster-ionic&quot;&gt;https://github.com/oktadeveloper/generator-jhipster-ionic&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more photos from these events, see &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157690880978696&quot;&gt;my album on Flickr&lt;/a&gt;.
    Devoxx Belgium posted their photos to &lt;a href=&quot;https://www.flickr.com/photos/bejug/albums/72157688379343341&quot;&gt;a Devoxx2017 album&lt;/a&gt;, as well
    as albums for each day: &lt;a href=&quot;https://www.flickr.com/photos/bejug/albums/72157688133612441&quot;&gt;day 1&lt;/a&gt;, &lt;a href=&quot;https://www.flickr.com/photos/bejug/albums/72157687122938352&quot;&gt;day 2&lt;/a&gt;, &lt;a href=&quot;https://www.flickr.com/photos/bejug/albums/72157688224388621&quot;&gt;day 3&lt;/a&gt;,
    &lt;a href=&quot;https://www.flickr.com/photos/bejug/albums/72157687279078222&quot;&gt;day 4&lt;/a&gt;, and &lt;a href=&quot;https://www.flickr.com/photos/bejug/albums/72157690510945366&quot;&gt;day 5&lt;/a&gt;. Devoxx Morocco posted all of their photos in three separate albums: &lt;a href=&quot;https://www.flickr.com/photos/127834083@N04/albums/72157690630170846&quot;&gt;day 1&lt;/a&gt;, &lt;a href=&quot;https://www.flickr.com/photos/127834083@N04/albums/72157687428585142&quot;&gt;day 2&lt;/a&gt;, and &lt;a href=&quot;https://www.flickr.com/photos/127834083@N04/albums/72157689733960115&quot;&gt;day 3&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    I want to thank the organizers from Devoxx Belgium and Devoxx Morocco for accepting my talks and allow me to fulfill one of my goals for the year: becoming a Devoxx Champion. In 2018, I plan to slow down a bit and speak more in the US,
    concentrating on Java User Groups.
&lt;/p&gt;
&lt;p&gt;
    However, 2017 isn&apos;t over! I&apos;ll be speaking at &lt;a href=&quot;https://springoneplatform.io/&quot;&gt;SpringOne&lt;/a&gt; and
    &lt;a href=&quot;https://therichwebexperience.com/conference/clearwater/2017/12/home&quot;&gt;The Rich Web Experience&lt;/a&gt; next week.
    We&apos;re also planning a &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/245437411/&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; meetup in December and
    a &lt;a href=&quot;https://www.meetup.com/DenverJavaUsersGroup/events/gbcxxmywqbrb/&quot;&gt;Denver JUG Holiday Party&lt;/a&gt; as well.
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/life_as_an_open_source1</id>
        <title type="html">Life as an Open Source Developer, One Year Later</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/life_as_an_open_source1"/>
        <published>2017-11-06T08:33:17-07:00</published>
        <updated>2017-11-06T14:35:06-07:00</updated> 
        <category term="/Open Source" label="Open Source" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="github" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springboot" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;It&apos;s been a little over a year since I wrote about &lt;a href=&quot;//raibledesigns.com/rd/entry/life_as_an_open_source&quot;&gt;life as an open source developer&lt;/a&gt;. I&apos;m happy to say I &lt;em&gt;still&lt;/em&gt; haven&apos;t written a single line of proprietary code. Of course, things have changed a lot in the last year. I thought going full-time would bring stability to my career. Instead, six months into it &lt;a href=&quot;https://www.okta.com/blog/2017/03/stormpath-welcome-to-Okta/&quot;&gt;we joined forces with Okta&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;The transition was rough at first. At Stormpath, we had full-featured SDKs and a great relationship with developers that used our service. We were able to port many of our SDKs to work with Okta, but we discovered that Okta didn&apos;t have a great relationship with developers. In fact, their developer blog hadn&apos;t been updated in over a year when we arrived.
&lt;/p&gt;
&lt;p&gt;On the upside, Okta&apos;s API supported standards like SAML, OAuth, and OpenID Connect. Open standards made it possible to use other frameworks and not have to rely on our own. I was pumped to find that &lt;a href=&quot;https://github.com/spring-projects/spring-security&quot;&gt;Spring Security&lt;/a&gt; made it easy to integrate with &lt;a href=&quot;https://developer.okta.com/blog/2017/03/16/spring-boot-saml&quot;&gt;SAML&lt;/a&gt; and &lt;a href=&quot;https://developer.okta.com/blog/2017/03/21/spring-boot-oauth&quot;&gt;OAuth&lt;/a&gt;. In fact, I was able to leverage these standards to &lt;a href=&quot;https://developer.okta.com/blog/2017/10/20/oidc-with-jhipster&quot;&gt;add OIDC support to JHipster&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Okta&apos;s &lt;a href=&quot;https://developer.okta.com/blog/2017/09/25/all-new-developer-console&quot;&gt;new developer console&lt;/a&gt; and &lt;a href=&quot;https://developer.okta.com/pricing/&quot;&gt;open pricing&lt;/a&gt; are just a couple examples of improved happenings since we arrived. The &lt;a href=&quot;https://github.com/okta/okta-spring-boot&quot;&gt;Okta Spring Boot Starter&lt;/a&gt; and &lt;a href=&quot;https://github.com/okta/okta-oidc-js&quot;&gt;JavaScript libraries for Node.js, Angular, and React&lt;/a&gt; are also pretty awesome.
&lt;/p&gt;
&lt;p&gt;I&apos;m happy to say my contributions on GitHub almost doubled in the last year!
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://github.com/mraible&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4509/24348308388_fc2c35d111_z.jpg&quot; width=&quot;640&quot; alt=&quot;GitHub Contributions 2017&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;As far as stress is concerned, that hasn&apos;t changed much. I&apos;ve learned that the stress I feel from work is still causing me to have high blood pressure. When I measure it in the mornings, or at night, it&apos;s fine. When I measure it during the day, it&apos;s elevated. I believe my high blood pressure is caused by doing too much. Sure, it&apos;s great to be productive and accomplish a lot for my company, but it&apos;s killing me.
&lt;/p&gt;
&lt;p&gt;Therein lies the rub. I get to create my job. All I&apos;m asked to do is write a blog post per week and speak at a conference (or meetup) once a month. Yet I&apos;m doing &lt;em&gt;way&lt;/em&gt; more than that. Since this time last year, I&apos;ve delivered 33 presentations, in 13 different cities. I keep a page on this blog updated with &lt;a href=&quot;//raibledesigns.com/rd/page/publications&quot;&gt;all my presentations&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;  
Next year, I still plan to speak a lot, but I plan on toning things down a bit. I&apos;ll be concentrating on US cities, with large Java user groups, and I&apos;ll be limiting my travel overseas. &lt;/p&gt;
&lt;p&gt;
  &lt;a data-href=&quot;https://www.flickr.com/photos/mraible/37491517464/&quot; rel=&quot;lightbox[ossdev1year]&quot; href=&quot;https://farm5.staticflickr.com/4547/37491517464_14d37e8eda_c.jpg&quot; title=&quot;Matt the Hipster&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4547/37491517464_14d37e8eda_q.jpg&quot; width=&quot;150&quot; class=&quot;picture&quot; alt=&quot;Matt the Hipster&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
  Outside of my health concerns, I&apos;m still loving my job. The fact that I get paid to speak at great conferences, write example applications, and discover new ways to do things is awesome. It&apos;s also pretty sweet that I was able to &lt;a href=&quot;//raibledesigns.com/rd/entry/the_jhipster_mini_book_v4&quot;&gt;update the JHipster Mini-Book&lt;/a&gt; and &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/upgrading-21-points-health-from-v1-to-v4&quot;&gt;upgrade 21-Points Health&lt;/a&gt; during work hours. The fact that I got &lt;a href=&quot;https://www.okta.com/blog/2017/09/developer-dna-a-day-in-the-life-of-matt-raible/&quot;&gt;featured on the main Okta blog&lt;/a&gt; was pretty cool too.
&lt;/p&gt;
&lt;p&gt;The good news is my overseas travel isn&apos;t done this year. Today, I leave for &lt;a href=&quot;http://devoxx.be/&quot;&gt;Devoxx Belgium&lt;/a&gt;, one of my favorite conferences. It&apos;ll be my first time in Antwerp without Trish. However, I&apos;m speaking with friends &lt;a href=&quot;https://twitter.com/starbuxman&quot;&gt;Josh Long&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/deepu105&quot;&gt;Deepu Sasidharan&lt;/a&gt;, so it&apos;s sure to be a good time. Traveling to &lt;a href=&quot;https://devoxx.ma/&quot;&gt;Devoxx Morocco&lt;/a&gt; should be fun too. I&apos;ve never been to Casablanca before.&lt;/p&gt;
&lt;p&gt;In December, you can catch me at &lt;a href=&quot;https://springoneplatform.io/speakers/matt-raible&quot;&gt;SpringOne&lt;/a&gt; and &lt;a href=&quot;https://therichwebexperience.com/conference/clearwater/2017/12/speakers/matt_raible&quot;&gt;The Rich Web Experience&lt;/a&gt;. Next year, I&apos;ll be speaking at &lt;a href=&quot;https://www.meetup.com/DenverMicroservices/events/244459192/&quot;&gt;Denver Microservices meetup&lt;/a&gt;, &lt;a href=&quot;http://ujug.org/event/matt-raible/&quot;&gt;Utah JUG&lt;/a&gt;, &lt;a href=&quot;https://www.meetup.com/seajug/&quot;&gt;Seattle JUG&lt;/a&gt;, and &lt;a href=&quot;http://jazzcon.tech/&quot;&gt;JazzCon&lt;/a&gt;. I plan to do a JUG tour in the northeast US too.
&lt;/p&gt;
&lt;p&gt;You might&apos;ve noticed I don&apos;t write a lot of technical content here anymore. That&apos;s because I&apos;m doing most of my writing on &lt;a href=&quot;https://developer.okta.com/blog/&quot;&gt;developer.okta.com/blog&lt;/a&gt;. I&apos;m still writing for &lt;a href=&quot;https://www.infoq.com&quot;&gt;InfoQ&lt;/a&gt; as well. I really enjoyed attending the JavaOne keynotes and writing up what I saw.
&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.infoq.com/news/2017/10/javaone-opening&quot;&gt;Oracle Announced Plans to Open Source All Features of Their JDK and Address Shortcomings in Java EE&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.infoq.com/news/2017/10/javaone-keynote&quot;&gt;JavaOne Keynote: Oracle Talks Blockchain, Bots and Serverless&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.infoq.com/news/2017/10/javaone-community-keynote&quot;&gt;JavaOne Keynote: IBM on OpenJ9 and Open Liberty; Java Community in The Matrix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;ll leave you with this, a project I&apos;m working on actively and plan to finish before Devoxx Morocco.&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;Had a good hacking session today w/ &lt;a href=&quot;https://twitter.com/java_hipster?ref_src=twsrc%5Etfw&quot;&gt;@java_hipster&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://twitter.com/Ionicframework?ref_src=twsrc%5Etfw&quot;&gt;@Ionicframework&lt;/a&gt;. Creating a JHipster-enabled Ionic client works! &lt;a href=&quot;https://t.co/5biHQDO941&quot;&gt;https://t.co/5biHQDO941&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/926251064843583488?ref_src=twsrc%5Etfw&quot;&gt;November 3, 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;

&lt;p&gt;Viva la Open Source!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/happy_birthday_abbie11</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_abbie11"/>
        <published>2017-11-05T18:18:15-07:00</published>
        <updated>2018-08-29T16:41:32-06:00</updated> 
        <category term="/General" label="General" />
        <category term="abbie" 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;
&lt;a data-href=&quot;https://www.flickr.com/photos/mraible/24347262678/&quot; href=&quot;https://farm5.staticflickr.com/4559/24347262678_b10bd114f0_o.jpg&quot; title=&quot;Abbie at 15&quot; rel=&quot;lightbox[happy15thabbie]&quot;&gt;&lt;img src=&quot;https://farm5.staticflickr.com/4559/24347262678_db95186a5b_n.jpg&quot; width=&quot;208&quot; height=&quot;320&quot; alt=&quot;Abbie at 15&quot; class=&quot;picture&quot;&gt;&lt;/a&gt;
Abbie turned 15 today. About a month ago, she said she didn&apos;t want a birthday party, so we decided we&apos;d surprise her with one. Her mom did most of the work, inviting her friends, gather food and drinks, and hosting the event at her house.
&lt;/p&gt;
&lt;p&gt;
We told her we were going out to a family dinner, and we needed to pick her mom up along the way. We found out later that she knew about it the whole time, but the same friend that showed her the Evite told her it was next weekend. So she &lt;em&gt;kinda&lt;/em&gt; knew. However, when I put a tie on, Trish got fancy, and Jack dressed nice for dinner, she figured &quot;Oh well, I guess it&apos;s not tonight.&quot;
&lt;/p&gt;
We had a great time surprising her with a fondue dinner with friends. She&apos;s an excellent kid, and we&apos;re happy to have survived 14!
&lt;/p&gt;
&lt;p&gt;
Abbie still rides her horse, Tucker, a couple of times a week and she&apos;s won several ribbons at all the shows she&apos;s been in. She&apos;s a freshman in high school now. It&apos;s incredible to look back and see that I started this blog just a few months before &lt;a href=&quot;//raibledesigns.com/rd/entry/our_little_girl_has_arrived1&quot;&gt;she was born&lt;/a&gt;.
&lt;/p&gt;&lt;p&gt;
Happy 15th Birthday Abbie!&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v4</id>
        <title type="html">The JHipster Mini-Book v4.0 Now Available for Download!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_jhipster_mini_book_v4"/>
        <published>2017-09-22T08:22:04-06:00</published>
        <updated>2017-09-22T14:26:25-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="book" scheme="http://roller.apache.org/ns/tags/" />
        <category term="writing" scheme="http://roller.apache.org/ns/tags/" />
        <category term="infoq" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster-mini-book" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;The JHipster Mini-Book v4.0 is &lt;a href=&quot;https://www.infoq.com/minibooks/jhipster-4-mini-book&quot;&gt;now available as a free download from InfoQ&lt;/a&gt;. Get it while it&apos;s hot! You&apos;ll also be able to buy a print version in a week or two. You can read all about what&#8217;s changed since v2.0 on the &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-v4-released&quot;&gt;JHipster Mini-Book blog&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;The source code for the application developed in the book (21-Points Health) is &lt;a href=&quot;https://github.com/mraible/21-points&quot;&gt;available on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks to the &lt;a href=&quot;http://www.infoq.com&quot;&gt;InfoQ&lt;/a&gt; publishing team, &lt;a href=&quot;https://twitter.com/sharpedennis&quot;&gt;Dennis Sharpe&lt;/a&gt; for tech editing, and Lawrence Nyveen for copy editing. And most of all, thank you &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt; for making the publishing process so easy! &lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/devoxx_poland_a_huge_conference</id>
        <title type="html">Devoxx Poland: A Huge Conference in a Beautiful City</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/devoxx_poland_a_huge_conference"/>
        <published>2017-06-27T08:44:31-06:00</published>
        <updated>2017-06-27T14:52:09-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="krakow" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxpl" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ionic" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular" scheme="http://roller.apache.org/ns/tags/" />
        <category term="poland" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring-boot" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;It&apos;s been a little over six years since I &lt;a href=&quot;//raibledesigns.com/rd/entry/two_opening_days_with_a&quot;&gt;
    first ventured to Krak&#243;w, Poland&lt;/a&gt;. I have fond memories of that trip,
    mostly because Trish was with me and we explored lots of sites. Last month,
    I &lt;a href=&quot;//raibledesigns.com/rd/entry/speaking_adventures_at_j_spring&quot;&gt;
        visited Krak&#243;w for GeeCON&lt;/a&gt;, but only stayed for one night.
&lt;/p&gt;
&lt;p&gt;Last week, I had the pleasure of visiting a third time for my first
    &lt;a href=&quot;http://devoxx.pl&quot;&gt;Devoxx Poland&lt;/a&gt;. I was excited to travel
    internationally again with my favorite travel shirt on. This caused a &lt;a href=&quot;https://twitter.com/mraible/status/877295134294945792&quot;&gt;funny conversation with TSA&lt;/a&gt; just
    before my departure.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/5/4230/35389832432_51e0fe03fb_c.jpg&quot; title=&quot;Heading to the airport in my favorite travel shirt&quot; rel=&quot;lightbox[devoxxpoland2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/35389832432/in/album-72157685455292516/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4230/35389832432_51e0fe03fb_n.jpg&quot; width=&quot;320&quot; alt=&quot;Heading to the airport in my favorite travel shirt&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    I arrived in Krakow on a beautiful day and took an Ub&#235;r to my hotel next to the &lt;a href=&quot;http://www.icekrakow.com/&quot;&gt;venue&lt;/a&gt;.
    I took a stroll along the Vistula River to enjoy the sunshine.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/5/4213/34716670334_4dc1e72a8c_c.jpg&quot; title=&quot;A beautiful day in Krakow&quot; rel=&quot;lightbox[devoxxpoland2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/34716670334/in/album-72157685455292516/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4213/34716670334_4dc1e72a8c.jpg&quot; width=&quot;500&quot; alt=&quot;A beautiful day in Krakow&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;It&apos;s been a little over six years since I &lt;a href=&quot;//raibledesigns.com/rd/entry/two_opening_days_with_a&quot;&gt;
    first ventured to Krak&#243;w, Poland&lt;/a&gt;. I have fond memories of that trip,
    mostly because Trish was with me and we explored lots of sites. Last month,
    I &lt;a href=&quot;//raibledesigns.com/rd/entry/speaking_adventures_at_j_spring&quot;&gt;
        visited Krak&#243;w for GeeCON&lt;/a&gt;, but only stayed for one night.
&lt;/p&gt;
&lt;p&gt;Last week, I had the pleasure of visiting a third time for my first
    &lt;a href=&quot;http://devoxx.pl&quot;&gt;Devoxx Poland&lt;/a&gt;. I was excited to travel
    internationally again with my favorite travel shirt on. This caused a &lt;a href=&quot;https://twitter.com/mraible/status/877295134294945792&quot;&gt;funny conversation with TSA&lt;/a&gt; just
    before my departure.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/5/4230/35389832432_51e0fe03fb_c.jpg&quot; title=&quot;Heading to the airport in my favorite travel shirt&quot; rel=&quot;lightbox[devoxxpoland2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/35389832432/in/album-72157685455292516/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4230/35389832432_51e0fe03fb_n.jpg&quot; width=&quot;320&quot; alt=&quot;Heading to the airport in my favorite travel shirt&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    I arrived in Krakow on a beautiful day and took an Ub&#235;r to my hotel next to the &lt;a href=&quot;http://www.icekrakow.com/&quot;&gt;venue&lt;/a&gt;.
    I took a stroll along the Vistula River to enjoy the sunshine.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/5/4241/34748919143_9672c64024_c.jpg&quot; title=&quot;Along the Vistula River&quot; rel=&quot;lightbox[devoxxpoland2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/34748919143/in/album-72157685455292516/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4241/34748919143_9672c64024_m.jpg&quot; width=&quot;240&quot; alt=&quot;Along the Vistula River&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c1.staticflickr.com/5/4235/35389825542_fba39c9668_c.jpg&quot; title=&quot;Gorgeous day for a stroll in Krakow&quot; rel=&quot;lightbox[devoxxpoland2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/35389825542/in/album-72157685455292516/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4235/35389825542_fba39c9668_m.jpg&quot; width=&quot;240&quot; alt=&quot;Gorgeous day for a stroll in Krakow&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://c1.staticflickr.com/5/4213/34716670334_4dc1e72a8c_c.jpg&quot; title=&quot;A beautiful day in Krakow&quot; rel=&quot;lightbox[devoxxpoland2017]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/34716670334/in/album-72157685455292516/&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/5/4213/34716670334_4dc1e72a8c.jpg&quot; width=&quot;500&quot; alt=&quot;A beautiful day in Krakow&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I attended the conference happy hour that evening, then journeyed to a local restaurant for some delicious food and
   fun conversations. There&apos;s a chance one of those conversations inspires
    &lt;a href=&quot;https://twitter.com/mraible/status/879148355837808640&quot;&gt;a speaking tour in South Africa next year&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    On Thursday, I attended a couple sessions on application and microservices security, and delivered my talk on PWAs
    with Ionic, Angular, and Spring Boot. You can check out my presentation below or &lt;a href=&quot;https://speakerdeck.com/mraible/pwas-with-ionic-angular-and-spring-boot-devoxx-poland-2017&quot;&gt;on Speaker
    Deck&lt;/a&gt;. 
&lt;/p&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;e37f9244883b4319a2650633446313a9&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
I was amazed at the sheer size of Devoxx Poland! Not only was the venue massive, but its 2500 attendees filled it up quickly.
    Thursday evening was the speaker&apos;s dinner, on a boat no less! It was a great location, with lots of familiar faces.
&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;&lt;a href=&quot;https://twitter.com/hashtag/DevoxxPL?src=hash&quot;&gt;#DevoxxPL&lt;/a&gt; Speakers and Heroes &lt;a href=&quot;https://t.co/nat8xCS27F&quot;&gt;pic.twitter.com/nat8xCS27F&lt;/a&gt;&lt;/p&gt;&#8212; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/878004406049832961&quot;&gt;June 22, 2017&lt;/a&gt;&lt;/blockquote&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;&lt;a href=&quot;https://twitter.com/hashtag/DevoxxPL?src=hash&quot;&gt;#DevoxxPL&lt;/a&gt; Speakers and Heroes, Part II &lt;a href=&quot;https://t.co/5wNpoFweeZ&quot;&gt;pic.twitter.com/5wNpoFweeZ&lt;/a&gt;&lt;/p&gt;&#8212; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/878005090208014338&quot;&gt;June 22, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;

&lt;p&gt;
    Friday, I spoke about &lt;a href=&quot;https://speakerdeck.com/mraible/whats-new-in-jhipsterland-devoxx-poland-2017&quot;&gt;What&apos;s
    New in JHipsterLand&lt;/a&gt;. My presentation can be viewed below or &lt;a href=&quot;https://speakerdeck.com/mraible/whats-new-in-jhipsterland-devoxx-poland-2017&quot;&gt;on Speaker Deck&lt;/a&gt;.
    You can &lt;a href=&quot;https://speakerd.s3.amazonaws.com/presentations/ead4ec7cb572489ab67865f61767fa7c/What_s_New_in_JHipsterLand_-_Devoxx_Poland_2017.pdf&quot;&gt;download the PDF from Speaker Deck&lt;/a&gt; for clickable links.
&lt;/p&gt;
&lt;script async class=&quot;speakerdeck-embed&quot; data-id=&quot;ead4ec7cb572489ab67865f61767fa7c&quot; data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&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;Thanks &lt;a href=&quot;https://twitter.com/hashtag/DevoxxPL?src=hash&quot;&gt;#DevoxxPL&lt;/a&gt; - I had a blast! &lt;a href=&quot;https://t.co/Iho4HqTBYE&quot;&gt;pic.twitter.com/Iho4HqTBYE&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/878213036523126785&quot;&gt;June 23, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
    In other news, I&apos;ve been busy writing blog posts for the &lt;a href=&quot;https://twitter.com/oktadev&quot;&gt;@OktaDev&lt;/a&gt; blog.
&lt;/p&gt;
&lt;ul&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;/ul&gt;
&lt;p&gt;I also wrote an article for &lt;a href=&quot;https://scotch.io&quot;&gt;scotch.io&lt;/a&gt; titled &quot;&lt;a href=&quot;https://scotch.io/tutorials/the-ultimate-guide-to-progressive-web-applications&quot;&gt;The Ultimate Guide to
    Progressive Web Applications&lt;/a&gt;.&quot;&lt;/p&gt;
&lt;p&gt;For the next couple of weeks, I&apos;ll be on vacation in Montana. Then it&apos;s time for
    &lt;a href=&quot;https://uberconf.com/conference/denver/2017/07/home&quot;&gt;&#220;berConf&lt;/a&gt;, &lt;a href=&quot;https://virtualjug.com/&quot;&gt;vJUG&lt;/a&gt; (with &lt;a href=&quot;https://twitter.com/starbuxman&quot;&gt;Josh Long&lt;/a&gt;!), and
    &lt;a href=&quot;https://www.okta.com/oktane17/&quot;&gt;Oktane17&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If I don&apos;t see you on the rivers in Montana or at an upcoming conference, I hope you have a great summer!
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/speaking_adventures_at_j_spring</id>
        <title type="html">Speaking Adventures at J-Spring, Devoxx UK, GeeCON, and Spring I/O</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/speaking_adventures_at_j_spring"/>
        <published>2017-05-24T09:50:55-06:00</published>
        <updated>2017-05-24T15:56:09-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="geecon" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springio17" scheme="http://roller.apache.org/ns/tags/" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="microservices" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jspring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="spring" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxuk" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springboot" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;As a Developer Advocate at &lt;a href=&quot;https://okta.com&quot;&gt;Okta&lt;/a&gt;, I&apos;m expected to travel up to 25% per month
    to speak at conferences and meetups. This May was more like 50%! I had opportunities to contribute to a
    number of cool conferences in exotic cities that I was eager to accept.
&lt;/p&gt;
&lt;p&gt;
    My adventure began on Monday, May 8 when I flew to Amsterdam to speak at the
    &lt;a href=&quot;http://jspring.nl/&quot;&gt;J-Spring conference&lt;/a&gt;.
    It was the first time the &lt;a href=&quot;http://www.nljug.org/&quot;&gt;NLJUG&lt;/a&gt; hosted this conference in several years.
    I marveled at the venue and especially liked the outdoor area it offered during breaks. The walk from/to
    the train station was pretty nice too.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4272/34023195124_ceb14fe282_c.jpg&quot;
       title=&quot;J-Spring Outdoor Area&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34023195124/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4272/34023195124_ceb14fe282_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;J-Spring Outdoor Area&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/4200/34735030581_65ab0797b0_c.jpg&quot;
       title=&quot;Amsterdam Bike Paths&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34735030581/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4200/34735030581_65ab0797b0_m.jpg&quot; width=&quot;240&quot; alt=&quot;Amsterdam Bike Paths&quot;
            style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I spoke about Microservices for
    the Masses with Spring Boot, JHipster, and JWT. Feedback I received mentioned it was a bit too fast
    and I crammed too much into the 50-minute time slot. I do tend to mention everything I know about
    topics when I speak, so I apologize for trying to cram too much in.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;As a Developer Advocate at &lt;a href=&quot;https://okta.com&quot;&gt;Okta&lt;/a&gt;, I&apos;m expected to travel up to 25% per month
    to speak at conferences and meetups. This May was more like 50%! I had opportunities to contribute to a
    number of cool conferences in exotic cities that I was eager to accept.
&lt;/p&gt;
&lt;p&gt;
    My adventure began on Monday, May 8 when I flew to Amsterdam to speak at the
    &lt;a href=&quot;http://jspring.nl/&quot;&gt;J-Spring conference&lt;/a&gt;.
    It was the first time the &lt;a href=&quot;http://www.nljug.org/&quot;&gt;NLJUG&lt;/a&gt; hosted this conference in several years.
    I marveled at the venue and especially liked the outdoor area it offered during breaks. The walk from/to
    the train station was pretty nice too.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4272/34023195124_ceb14fe282_c.jpg&quot;
       title=&quot;J-Spring Outdoor Area&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34023195124/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4272/34023195124_ceb14fe282_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;J-Spring Outdoor Area&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/4200/34735030581_65ab0797b0_c.jpg&quot;
       title=&quot;Amsterdam Bike Paths&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34735030581/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4200/34735030581_65ab0797b0_m.jpg&quot; width=&quot;240&quot; alt=&quot;Amsterdam Bike Paths&quot;
            style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I spoke about Microservices for
    the Masses with Spring Boot, JHipster, and JWT. Feedback I received mentioned it was a bit too fast
    and I crammed too much into the 50-minute time slot. I do tend to mention everything I know about
    topics when I speak, so I apologize for trying to cram too much in.
&lt;/p&gt;
&lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;018d1c36fb8c468e91c93d178296f80e&quot; data-ratio=&quot;1.77469670710572&quot;
        src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
    After J-Spring, I flew to London to speak at &lt;a href=&quot;https://www.devoxx.co.uk/&quot;&gt;Devoxx UK&lt;/a&gt;. I arrived just in
    time to catch the speaker&apos;s dinner and had
    fun seeing and catching up with old friends from the conference circuit.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4226/34023199904_d8764ea9f4_c.jpg&quot;
       title=&quot;View from Room 404 in London&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34023199904/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4226/34023199904_d8764ea9f4_m.jpg&quot; width=&quot;240&quot;
            alt=&quot;View from Room 404 in London&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/4270/34735034351_9bfe4be80c_c.jpg&quot;
       title=&quot;Devoxx UK Venue&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34735034351/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4270/34735034351_9bfe4be80c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Devoxx UK Venue&quot;
            style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    Thursday morning, I had an Angular workshop
    and did my microservices presentation in the afternoon. Friday, I had an early morning talk on Front End Development
    for Back End Developers. You can find all my presentations below.
&lt;/p&gt;
&lt;table style=&quot;width: 100%&quot;&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
        &lt;td width=&quot;50%&quot;&gt;
            &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;dcd38052340b4f91b5d454d6da7bcb63&quot;
                    data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
        &lt;/td&gt;
        &lt;td width=&quot;50%&quot;&gt;
            &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;e013a60aaf2b495da36746feb28bc224&quot;
                    data-ratio=&quot;1.77469670710572&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;3ba7973631ef4603a4f4df5bd2a6b888&quot;
                    data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
    I rushed straight from my last talk on Friday to the airport to catch a flight to Boston for the weekend. In Boston,
    we celebrated Trish&apos;s brother&apos;s 50th birthday, Mother&apos;s Day, and had a blast with friends and family.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4220/34023204014_5600993dc0_c.jpg&quot;
       title=&quot;Happy Mother&apos;s Day!&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34023204014/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4220/34023204014_5600993dc0.jpg&quot; width=&quot;500&quot; alt=&quot;Happy Mother&apos;s Day!&quot;
            style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    The following Monday, I hopped on a plane to return to Europe with Krakow (for &lt;a
        href=&quot;https://geecon.org/&quot;&gt;GeeCON&lt;/a&gt;) as my destination. Three
    flights later and I arrived in time to take a nice stroll around the city, enjoying the greenery.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4275/34056217043_a76d037fd7_c.jpg&quot; title=&quot;Krakow&quot;
       rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34056217043/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4275/34056217043_a76d037fd7_q.jpg&quot; width=&quot;150&quot; alt=&quot;Krakow&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/4201/34023205364_6bbac55966_c.jpg&quot; title=&quot;Krakow&quot;
       rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34023205364/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4201/34023205364_6bbac55966_q.jpg&quot; width=&quot;150&quot; alt=&quot;Krakow&quot;
            style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4202/34702783102_49973cd47f_c.jpg&quot; title=&quot;Krakow&quot;
       rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34702783102/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4202/34702783102_49973cd47f_q.jpg&quot; width=&quot;150&quot; alt=&quot;Krakow&quot;
            style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    At GeeCON, I spoke about how to build a progressive web app with Ionic, Angular, and Spring Boot. Half of my talk
    was live coding and I
    &lt;em&gt;almost&lt;/em&gt; got all my demos working. Deploying to Cloud Foundry and my phone was the final step, and due to
    Xcode updating, that demo failed. I wrote a
    &lt;a href=&quot;http://developer.okta.com/blog/2017/05/17/develop-a-mobile-app-with-ionic-and-spring-boot&quot;&gt;tutorial about
        Ionic&lt;/a&gt; for the Okta developer blog that has everything (and more!) that I showed in my demo.
&lt;/p&gt;
&lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;8cf85e4d8acc4627b29a2ee42533fa74&quot; data-ratio=&quot;1.77777777777778&quot;
        src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
&lt;p&gt;
    I had to head straight to the airport after finishing my talk, this time heading for &lt;a
        href=&quot;http://2017.springio.net/&quot;&gt;Spring I/O&lt;/a&gt; in Barcelona.
    Barcelona has always been on Trish&apos;s bucket list, so I easily talked her into joining me. At Spring I/O, I did a
    workshop on developing with Spring Boot and Angular, followed by my Front End Development for Back End Developers
    talk. There weren&apos;t that many talks on front-end development, so I felt privileged to be one of the few talking
    about UI development.
&lt;/p&gt;
&lt;table width=&quot;100%&quot;&gt;
    &lt;tbody&gt;
    &lt;tr&gt;
        &lt;td width=&quot;50%&quot;&gt;
            &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;96b8761b8bcf430683e289c75c3cfc98&quot;
                    data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
        &lt;/td&gt;
        &lt;td width=&quot;50%&quot;&gt;
            &lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;7f4814b375cb4e3c9e3d7d4467793dfc&quot;
                    data-ratio=&quot;1.77777777777778&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
    I also enjoyed &lt;a href=&quot;https://twitter.com/deepu105&quot;&gt;Deepu&apos;s&lt;/a&gt; talk on JHipster and &lt;a
        href=&quot;https://twitter.com/sebi2706&quot;&gt;Sebastien&apos;s&lt;/a&gt; talk on &lt;a href=&quot;http://www.keycloak.org/&quot;&gt;Keycloak&lt;/a&gt;.
    It was the first time I&apos;d met these great guys in person, so that was a lot of fun.
&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;At &lt;a href=&quot;https://twitter.com/spring_io&quot;&gt;@spring_io&lt;/a&gt;
        where &lt;a href=&quot;https://twitter.com/java_hipster&quot;&gt;@java_hipster&lt;/a&gt;&apos;s meet &lt;a href=&quot;https://t.co/I9OPErVWeF&quot;&gt;pic.twitter.com/I9OPErVWeF&lt;/a&gt;
    &lt;/p&gt;&#8212; Deepu K Sasidharan (@deepu105) &lt;a href=&quot;https://twitter.com/deepu105/status/865163186479263744&quot;&gt;May 18,
        2017&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;
    On Friday, Trish and I hit some of the sites in Barcelona and had a wonderful time. The weather was beautiful, the
    architecture was amazing, and the experience was awesome.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4204/34056220883_3b09f9692f_c.jpg&quot;
       title=&quot;Amazing Architecture in Barcelona&quot; rel=&quot;lightbox[may2017speakingtour]&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[may2017speakingtour]&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 style=&quot;text-align: center&quot;&gt;
    &lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4196/34826704476_40e475dce8_c.jpg&quot;
       title=&quot;Barcelona Fountains&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34826704476/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4196/34826704476_40e475dce8.jpg&quot; width=&quot;500&quot; alt=&quot;Barcelona Fountains&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-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4249/34056228583_138e7d92d8_c.jpg&quot; title=&quot;Happiness&quot;
       rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34056228583/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4249/34056228583_138e7d92d8_m.jpg&quot; width=&quot;240&quot; alt=&quot;Happiness&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/4275/34023214754_b9cab3fcd1_c.jpg&quot;
       title=&quot;Sagrada Familia&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34023214754/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4275/34023214754_b9cab3fcd1_m.jpg&quot; width=&quot;240&quot; alt=&quot;Sagrada Familia&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 data-flickr-embed=&quot;true&quot; href=&quot;https://c1.staticflickr.com/5/4223/34056230883_2889fc6891_c.jpg&quot;
       title=&quot;Sagrada Familia&quot; rel=&quot;lightbox[may2017speakingtour]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/34056230883/in/album-72157682270620100/&quot;&gt;&lt;img
            src=&quot;https://c1.staticflickr.com/5/4223/34056230883_2889fc6891.jpg&quot; width=&quot;500&quot; alt=&quot;Sagrada Familia&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 photos on Flickr &amp;#8594; &lt;a href=&quot;https://www.flickr.com/photos/mraible/sets/72157682270620100/&quot;&gt;European Speaking Tour - May 2017&lt;/a&gt;
&lt;/div&gt;
&lt;!--Below are some of our favorite photos from the trip.--&gt;
&lt;p&gt;
    Thanks to the organizers of each conference for allowing me to speak and for covering my travel expenses. My company
    doesn&apos;t pay for overseas conferences (yet!), but they do pay me while I&apos;m there, so that&apos;s nice. To everyone that
    attended my sessions - thank you! I really appreciate the feedback and will do my best to improve future talks. If
    you have additional feedback, feel free to
    &lt;a href=&quot;//raibledesigns.com/contact.jsp&quot;&gt;contact me&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    In the meantime, keep an eye on the &lt;a href=&quot;http://developer.okta.com&quot;&gt;Okta developer
    blog&lt;/a&gt;. I&apos;ve been writing a lot of articles lately and there&apos;s more to come in the pipeline! Here&apos;s a few that&apos;ve
    been published in the last month.
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://developer.okta.com/blog/2017/04/17/angular-authentication-with-oidc&quot;&gt;Angular Authentication with
        OpenID Connect and Okta in 20 Minutes&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://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;http://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;http://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;/ul&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/let_the_okta_and_devoxx</id>
        <title type="html">Let the Okta and Devoxx Journeys Begin!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/let_the_okta_and_devoxx"/>
        <published>2017-03-16T11:43:59-06:00</published>
        <updated>2017-03-16T18:02:05-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="okta" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vws" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxfr" scheme="http://roller.apache.org/ns/tags/" />
        <category term="hefe" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stout" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxus" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
It&apos;s been almost a month since &lt;a href=&quot;https://stormpath.com/blog/stormpaths-new-path&quot;&gt;Stormpath joined forces with Okta&lt;/a&gt;. My first day at Okta was on February 27, and I was only briefly in the San Francisco headquarters. I had to fly out at noon on my second day, so I hunkered down in the Okta Pub and cranked out a presentation for a &lt;a href=&quot;https://www.meetup.com/kc-spring/events/237347674/&quot;&gt;talk with Micah Silverman&lt;/a&gt; at the Kansas City Spring User Group.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://www.flickr.com/photos/mraible/32660168943/&quot; title=&quot;The Okta Pub&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/1/597/32660168943_760470f40f.jpg&quot; width=&quot;500&quot; alt=&quot;The Okta Pub&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
That&apos;s right, Okta has a &lt;em&gt;pub&lt;/em&gt; in their SF HQ. When I first heard about this, I knew it&apos;d be a good fit for me!
&lt;/p&gt;

&lt;p&gt;Now properly fortified, I finished the presentation and headed for the airport, where I rejoiced in my clothing choices for the day.&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 love wearing this &lt;a href=&quot;https://twitter.com/goStormpath&quot;&gt;@goStormpath&lt;/a&gt; t-shirt when going through security at the airport. ?? &lt;a href=&quot;https://t.co/4oOGiaXEd9&quot;&gt;pic.twitter.com/4oOGiaXEd9&lt;/a&gt;&lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/836650699962236928&quot;&gt;February 28, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;
The whirlwind of ramping up at Okta hasn&apos;t died down yet. Last week, I figured out how to authenticate with Okta&apos;s API using Spring Boot and SAML. I also got an OAuth 2.0 example working. Then I moved onto Angular and got an example working with OpenID Connect (OIDC), &lt;a href=&quot;https://github.com/okta/okta-signin-widget&quot;&gt;Okta&apos;s Sign-In Widget&lt;/a&gt;, and the &lt;a href=&quot;https://github.com/okta/okta-auth-js&quot;&gt;Okta Auth SDK&lt;/a&gt;. I was especially pumped when I got an Angular client working with OIDC and a Spring Boot + Spring Security backend. This week, I wrote up my findings as tutorials and recorded a couple screencasts to accompany them. These will likely show up as blogs posts on &lt;a href=&quot;http://developer.okta.com/blog/&quot;&gt;Okta Developer Blog&lt;/a&gt; over the next few weeks.
&lt;/p&gt;
&lt;p&gt;
While the first couple of weeks at Okta has been exciting, I&apos;m more excited about the upcoming Devoxx conferences I&apos;ll be speaking at.
&lt;/p&gt; 
&lt;p&gt;Next week, &lt;a href=&quot;http://devoxx.us/&quot;&gt;Devoxx US&lt;/a&gt; will be happening for the first time! As a member of the program committee, I  promise you this is going to be a great show! We had an incredible number of high quality submissions and it shows in the &lt;a href=&quot;http://cfp.devoxx.us/2017/talks&quot;&gt;agenda&lt;/a&gt;. I&apos;m especially looking forward to &lt;a href=&quot;https://twitter.com/janellekz&quot;&gt;Janelle Klein&apos;s&lt;/a&gt; &lt;a href=&quot;http://cfp.devoxx.us/2017/talk/NAN-8167/What_is_%22Identity%22%3F&quot;&gt;What is Identity?&lt;/a&gt; keynote. I&apos;ll be doing talks on &lt;a href=&quot;http://cfp.devoxx.us/2017/speaker/matt_raible&quot;&gt;JHipster, Asciidoctor, and how NOT to restore a VW Bus&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Speaking of the bus, Hefe sure looks good, doesn&apos;t he? &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;div style=&quot;max-width: 500px; margin: 0 auto&quot;&gt;
&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-version=&quot;7&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:34.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/BRqXnjwBck-/&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-03-15T14:24:26+00:00&quot;&gt;Mar 15, 2017 at 7:24am PDT&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;p&gt;After returning from Devoxx US, Trish and I are taking Abbie and Jack on the spring break trip of a lifetime. I&apos;ve never been to &lt;a href=&quot;http://bigskyresort.com/&quot;&gt;Big Sky&lt;/a&gt;, so we&apos;re heading there for a week of skiing, frolicking, and playing in the snow. I might even go phoneless for the week to fully embrace the serenity that Montana provides.
&lt;/p&gt;
&lt;p&gt;I&apos;m off to &lt;a href=&quot;http://devoxx.fr/&quot;&gt;Devoxx France&lt;/a&gt; the following week. I&apos;m really looking forward to this conference because &lt;a href=&quot;http://cfp.devoxx.fr/2017/speaker/matt_raible&quot;&gt;my talks&lt;/a&gt; are all about Angular. I&apos;ll be doing a hands-on lab on getting started with Angular, as well as developing a &lt;abbr title=&quot;Progressive Web App&quot;&gt;PWA&lt;/a&gt; with Josh Long.
&lt;/p&gt;
&lt;p&gt;To make things even better while I&apos;m on the road, I&apos;m getting some work done on both VWs. We&apos;re getting Stout the Syncro painted and having a stereo installed in Hefe. With any luck, Stout 5.0 and Hefe 3.0 will be released in April, just in time for the car show season.&lt;/p&gt;
&lt;p&gt;So yeah, life is pretty darn good right now. Let me know if you&apos;ll be in Tahoe, San Jose, Big Sky, or Paris when I&apos;m there. I&apos;d love to chat about authentication, open source technologies, VWs, or good beer.
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/2016_a_year_in_review</id>
        <title type="html">2016 - A Year in Review</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/2016_a_year_in_review"/>
        <published>2017-02-01T17:46:59-07:00</published>
        <updated>2018-01-31T16:10:43-07:00</updated> 
        <category term="/Roller" label="Roller" />
        <category term="raibleranch" scheme="http://roller.apache.org/ns/tags/" />
        <category term="2016" scheme="http://roller.apache.org/ns/tags/" />
        <category term="apacheroller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="syncro" scheme="http://roller.apache.org/ns/tags/" />
        <category term="blogging" 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="yearinreview" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stormpath" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;When I wrote my &lt;a href=&quot;//raibledesigns.com/rd/entry/2015_a_year_in_review&quot;&gt;2015 year in review blog post&lt;/a&gt;,
    I was certain my &apos;66 VW Bus would finally be finished. AND IT IS! Do I need to even write this year&apos;s post? Yes,
    because
    I want to tell you how awesome it is to own this incredible-looking, awesomely-fast, mean machine. &lt;img src=&quot;//raibledesigns.com/images/smileys/wink.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;https://c1.staticflickr.com/1/325/31876057643_4a4cb6b330_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31876057643/in/datetaken-public/&quot; title=&quot;Hefe 2.0&quot; rel=&quot;lightbox[yearinreview2016]&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/1/325/31876057643_4a4cb6b330.jpg&quot; width=&quot;500&quot; alt=&quot;Hefe 2.0&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;But first, let&apos;s review the year using the following categories.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2016_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/2016_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/2016_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/2016_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/2016_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/2016_a_year_in_review#stout&quot;&gt;The Ski Bus (&lt;em&gt;aka&lt;/em&gt; Stout)&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2016_a_year_in_review#hefe&quot;&gt;The Porsche Bus (&lt;em&gt;aka&lt;/em&gt;
                Hefe)&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2016_a_year_in_review#2017&quot;&gt;2017&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;
    I had two different clients in 2016: &lt;a href=&quot;https://www.ca.com/&quot;&gt;CA Technologies&lt;/a&gt; and &lt;a
    href=&quot;https://stormpath.com&quot;&gt;Stormpath&lt;/a&gt;. I worked full-time for CA in January and February, helping them adopt
    AngularJS.
    To help them learn about Angular 2, I rewrote my AngularJS &lt;a
    href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angularjs&quot;&gt;getting started&lt;/a&gt; and &lt;a
    href=&quot;//raibledesigns.com/rd/entry/testing_angularjs_applications&quot;&gt;testing&lt;/a&gt; tutorials for Angular 2. The first
    versions were published at
    &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2&quot;&gt;Getting Started with Angular 2&lt;/a&gt; and &lt;a
    href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_applications&quot;&gt;Testing Angular 2 Applications&lt;/a&gt;.
    I refactored both tutorials to use Angular CLI in August and published &lt;a
    href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli&quot;&gt;Getting Started + Testing with Angular CLI and
    Angular 2 (RC5)&lt;/a&gt;. Since then, I&apos;ve been maintaining an up-to-date version &lt;a
    href=&quot;https://github.com/mraible/ng-demo/blob/master/README.adoc&quot;&gt;on GitHub&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    In April, I started working half-time for CA and half-time for Stormpath. For Stormpath, I worked on their Java SDK
    and helped them launch their &lt;a href=&quot;https://www.infoq.com/news/2016/08/stormpath-java-1.0&quot;&gt;Java SDK 1.0&lt;/a&gt;. I
    really enjoyed working with the team at Stormpath. This led to me think about my priorities in life. I realized
    that I wanted to work remotely, get paid to speak at conferences, and get paid to work on open source. Stormpath
    provided me with all of these opportunities and I &lt;a href=&quot;https://stormpath.com/blog/hello-stormpath-matt-raible&quot;&gt;started
    working full-time&lt;/a&gt; for them on September 26, 2016.
&lt;/p&gt;
&lt;p&gt;
    In May, I joined the board of the &lt;a href=&quot;http://www.denverjug.org/&quot;&gt;Denver Java User Group&lt;/a&gt;. I&apos;ve been helping
    organize meetups, find speakers, and secure location sponsors. If you&apos;re interested in speaking at DJUG in 2017, please let me know!
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;When I wrote my &lt;a href=&quot;//raibledesigns.com/rd/entry/2015_a_year_in_review&quot;&gt;2015 year in review blog post&lt;/a&gt;,
    I was certain my &apos;66 VW Bus would finally be finished. AND IT IS! Do I need to even write this year&apos;s post? Yes,
    because
    I want to tell you how awesome it is to own this incredible-looking, awesomely-fast, mean machine. &lt;img src=&quot;//raibledesigns.com/images/smileys/wink.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 data-flickr-embed=&quot;true&quot; data-header=&quot;false&quot; data-footer=&quot;false&quot;  href=&quot;https://www.flickr.com/photos/mraible/albums/72157666949317472&quot; title=&quot;Hello Hefe&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1538/26402259315_8fff390a71_z.jpg&quot; width=&quot;640&quot; height=&quot;500&quot; alt=&quot;Hello Hefe&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;But first, let&apos;s review the year using the following categories.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2016_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/2016_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/2016_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/2016_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/2016_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/2016_a_year_in_review#stout&quot;&gt;The Ski Bus (&lt;em&gt;aka&lt;/em&gt; Stout)&lt;/a&gt;
            &lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2016_a_year_in_review#hefe&quot;&gt;The Porsche Bus (&lt;em&gt;aka&lt;/em&gt;
                Hefe)&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/2016_a_year_in_review#2017&quot;&gt;2017&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;professional&quot;&gt;Professional&lt;/h2&gt;
&lt;p&gt;
    I had two different clients in 2016: &lt;a href=&quot;https://www.ca.com/&quot;&gt;CA Technologies&lt;/a&gt; and &lt;a
    href=&quot;https://stormpath.com&quot;&gt;Stormpath&lt;/a&gt;. I worked full-time for CA in January and February, helping them adopt
    AngularJS.
    To help them learn about Angular 2, I rewrote my AngularJS &lt;a
    href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angularjs&quot;&gt;getting started&lt;/a&gt; and &lt;a
    href=&quot;//raibledesigns.com/rd/entry/testing_angularjs_applications&quot;&gt;testing&lt;/a&gt; tutorials for Angular 2. The first
    versions were published at
    &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2&quot;&gt;Getting Started with Angular 2&lt;/a&gt; and &lt;a
    href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_applications&quot;&gt;Testing Angular 2 Applications&lt;/a&gt;.
    I refactored both tutorials to use Angular CLI in August and published &lt;a
    href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli&quot;&gt;Getting Started + Testing with Angular CLI and
    Angular 2 (RC5)&lt;/a&gt;. Since then, I&apos;ve been maintaining an up-to-date version &lt;a
    href=&quot;https://github.com/mraible/ng-demo/blob/master/README.adoc&quot;&gt;on GitHub&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
    In April, I started working half-time for CA and half-time for Stormpath. For Stormpath, I worked on their Java SDK
    and helped them launch their &lt;a href=&quot;https://www.infoq.com/news/2016/08/stormpath-java-1.0&quot;&gt;Java SDK 1.0&lt;/a&gt;. I
    really enjoyed working with the team at Stormpath. This led to me think about my priorities in life. I realized
    that I wanted to work remotely, get paid to speak at conferences, and get paid to work on open source. Stormpath
    provided me with all of these opportunities and I &lt;a href=&quot;https://stormpath.com/blog/hello-stormpath-matt-raible&quot;&gt;started
    working full-time&lt;/a&gt; for them on September 26, 2016.
&lt;/p&gt;
&lt;p&gt;
    In May, I joined the board of the &lt;a href=&quot;http://www.denverjug.org/&quot;&gt;Denver Java User Group&lt;/a&gt;. I&apos;ve been helping
    organize meetups, find speakers, and secure location sponsors. If you&apos;re interested in speaking at DJUG in 2017, please let me know!
&lt;/p&gt;
&lt;p&gt;
    I wrote about &lt;a href=&quot;//raibledesigns.com/rd/entry/life_as_an_open_source&quot;&gt;life as an open source developer&lt;/a&gt; in
    early November. At that time, I mentioned being more stressed than I was used to. My stress levels continued to be high through the
    end of the year because I get to create my own job. I get to choose the conferences I submit too, the talks I
    create, the example apps, the blog posts, everything. There&apos;s so much I want to do that I&apos;ve had to learn to &lt;em&gt;scale
        back&lt;/em&gt; and not try to do so much at once.
&lt;/p&gt;
&lt;p&gt;
    I didn&apos;t blog much on raibledesigns.com in Q4 of 2016, but I wrote a bunch of technical posts on the &lt;a
    href=&quot;https://stormpath.com/blog&quot;&gt;Stormpath
    blog&lt;/a&gt;.
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://stormpath.com/blog/angularjs-spring-boot-tutorial&quot;&gt;Tutorial: Get Started with AngularJS, Spring
        Boot, and Stormpath&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://stormpath.com/blog/stormpath-jhipster-application&quot;&gt;Add Stormpath to Your JHipster
        Application&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://stormpath.com/blog/angular-2-user-authentication&quot;&gt;Build an Angular 2 Application with User
        Authentication in 10 Minutes&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://stormpath.com/blog/java-sdk-architecture&quot;&gt;The Architecture of Stormpath&#8217;s Java SDK&lt;/a&gt;
    &lt;li&gt;&lt;a href=&quot;https://stormpath.com/blog/angularjs-spring-boot-tips&quot;&gt;Tips and Tricks for AngularJS and Spring
        Boot with Stormpath&lt;/a&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;According to TripIt, I flew &lt;a href=&quot;http://cem.re/year-in-review/55145c02b97d22c568e9f7668cf0eb65f2652779.html&quot;&gt;59K
    miles in 2016&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;speaking&quot;&gt;Speaking&lt;/h3&gt;
&lt;p&gt;I spoke at nine different events in 2016. You can find links to my presentations on &lt;a href=&quot;//raibledesigns.com/rd/page/publications&quot;&gt;my
    presentations page&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;February: Denver Open Source Users Group&lt;/li&gt;
    &lt;li&gt;April: Colorado Springs Open Source Software Meetup Group and Devoxx France&lt;/li&gt;
    &lt;li&gt;June: Devoxx UK and GeekOut&lt;/li&gt;
    &lt;li&gt;August: HTML5 Denver Users Group&lt;/li&gt;
    &lt;li&gt;September: vJUG24&lt;/li&gt;
    &lt;li&gt;November: Rocky Mountain Software Symposium&lt;/li&gt;
    &lt;li&gt;December: The Rich Web Experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My most memorable conference in 2016 was Devoxx France because I took Abbie and we experienced &lt;a
    href=&quot;//raibledesigns.com/rd/entry/devoxx_france_2016_springtime_in&quot;&gt;springtime in Paris&lt;/a&gt; together.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1650/26377054130_d1d6561024_c.jpg&quot; title=&quot;Obligatory Arc de Triomphe selfie&quot;
       rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377054130/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1650/26377054130_d1d6561024_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Obligatory Arc de Triomphe selfie&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1548/26377063160_2cc22299cf_c.jpg&quot; title=&quot;Abbie and Eiffel Tower&quot;
       rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377063160/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1548/26377063160_2cc22299cf_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Eiffel Tower&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://farm2.staticflickr.com/1490/26044647774_97f6749313_c.jpg&quot; title=&quot;Spring in Paris is beautiful!&quot;
       rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26044647774/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1490/26044647774_97f6749313.jpg&quot; width=&quot;500&quot;
        alt=&quot;Spring in Paris is beautiful!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    Becoming a &lt;a href=&quot;https://community.oracle.com/community/java/java-champions&quot;&gt;Java Champion&lt;/a&gt; at Devoxx France was certainly a surprise too!
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1495/26044726404_91272a2bae_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26044726404/in/album-72157667022214770/&quot;
       title=&quot;Les Cast Codeurs&quot; rel=&quot;lightbox[yearinreview2016]&quot;&gt;
        &lt;img src=&quot;https://farm2.staticflickr.com/1495/26044726404_91272a2bae_m.jpg&quot; width=&quot;240&quot; alt=&quot;Les Cast Codeurs&quot;
             style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1465/26044729304_080e658df0_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26044729304/in/album-72157667022214770/&quot;
       title=&quot;I&apos;m a Java Champion! :)&quot; rel=&quot;lightbox[yearinreview2016]&quot;&gt;
        &lt;img src=&quot;https://farm2.staticflickr.com/1465/26044729304_080e658df0_m.jpg&quot; width=&quot;240&quot;
             alt=&quot;I&apos;m a Java Champion! :)&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    I really enjoyed taking my mom with me to &lt;a href=&quot;//raibledesigns.com/rd/entry/a_delightful_trip_to_devoxx&quot;&gt;Devoxx
    UK and GeekOut&lt;/a&gt;. It was my first time speaking at both conferences and I was impressed by both personnel
    and venues.
&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[yearinreview2016]&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_m.jpg&quot; width=&quot;240&quot; alt=&quot;St. Paul&apos;s Cathedral&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://c5.staticflickr.com/8/7387/27340321980_2438e8585b_c.jpg&quot; title=&quot;Tallin, Estonia&quot;
       rel=&quot;lightbox[yearinreview2016]&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_m.jpg&quot; width=&quot;240&quot; alt=&quot;Tallin, Estonia&quot;
        style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&quot;devoxx4kids&quot;&gt;Devoxx4Kids&lt;/h3&gt;
&lt;p&gt;We only had two &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver&quot;&gt;Devoxx4Kids Denver&lt;/a&gt; workshops in 2016: &lt;a
    href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/228591168/&quot;&gt;Introduction to Object-Oriented JavaScript using
    Bitsbox&lt;/a&gt; and &lt;a href=&quot;https://www.meetup.com/Devoxx4Kids-Denver/events/232720431/&quot;&gt;Exploring JavaScript&lt;/a&gt;. The
    second one was taught by the world-famous &lt;a href=&quot;https://twitter.com/venkat_s&quot;&gt;Venkat Subramaniam&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;The great &lt;a
        href=&quot;https://twitter.com/venkat_s&quot;&gt;@venkat_s&lt;/a&gt; teaching &lt;a
        href=&quot;https://twitter.com/hashtag/Denver?src=hash&quot;&gt;#Denver&lt;/a&gt; kids about JavaScript. So awesome! &lt;a
        href=&quot;https://twitter.com/hashtag/Devoxx4Kids?src=hash&quot;&gt;#Devoxx4Kids&lt;/a&gt; &lt;a href=&quot;https://t.co/CqOW5ma6Cq&quot;&gt;pic.twitter.com/CqOW5ma6Cq&lt;/a&gt;
    &lt;/p&gt;&amp;mdash; Matt Raible (@mraible) &lt;a href=&quot;https://twitter.com/mraible/status/774645470681403392&quot;&gt;September 10,
        2016&lt;/a&gt;&lt;/blockquote&gt;
    &lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;
    I&apos;d like to plan a few Devoxx4Kids Denver events in 2017, so &lt;a href=&quot;//raibledesigns.com/rd/page/contact&quot;&gt;please let me know&lt;/a&gt;
    if you have a topic you&apos;d like to present.
&lt;/p&gt;
&lt;h3 id=&quot;projects&quot;&gt;Projects&lt;/h3&gt;
&lt;p&gt;
    I stopped working on AppFuse in February and announced I was &lt;a
    href=&quot;//raibledesigns.com/rd/entry/moving_appfuse_into_the_attic&quot;&gt;mothballing the project&lt;/a&gt; in April. &lt;b&gt;Reminder:&lt;/b&gt;
    the &lt;a href=&quot;http://demo.appfuse.org&quot;&gt;demos&lt;/a&gt;, &lt;a href=&quot;http://appfuse.org&quot;&gt;documentation&lt;/a&gt; and &lt;a
    href=&quot;http://issues.appfuse.org&quot;&gt;bug tracker&lt;/a&gt; will cease to exist on April 30, 2017.&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://www.infoq.com/minibooks/jhipster-4-mini-book&quot;&gt;
        &lt;img src=&quot;https://res.infoq.com/minibooks/jhipster-4-mini-book/en/cover/JHipster-Mini-book-COVER-thumb.jpg&quot;
             alt=&quot;The JHipster Mini-Book&quot; width=&quot;100&quot; class=&quot;picture&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    I spent many late nights in July through October updating the &lt;a
    href=&quot;https://www.infoq.com/minibooks/jhipster-2-mini-book&quot;&gt;JHipster Mini-Book&lt;/a&gt; for JHipster 3.x. On the book&apos;s
    blog, I wrote about &lt;a
    href=&quot;http://www.jhipster-book.com/#!/news/entry/book-updated-for-jhipster-3-and-jhipster-gets-dirty&quot;&gt;what&apos;s
    changed&lt;/a&gt; and &lt;a
    href=&quot;http://www.jhipster-book.com/#!/news/entry/jhipster-mini-book-v2-now-available-for-download&quot;&gt;how to buy a
    print version&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;personal&quot;&gt;Personal&lt;/h2&gt;

&lt;p&gt;I wrote down my goals at the beginning of 2016:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Finish the bus&lt;/li&gt;
    &lt;li&gt;Win a trophy&lt;/li&gt;
    &lt;li&gt;Ski a lot&lt;/li&gt;
    &lt;li&gt;Raft a lot&lt;/li&gt;
    &lt;li&gt;Stay in shape&lt;/li&gt;
    &lt;li&gt;July in Montana&lt;/li&gt;
    &lt;li&gt;Happy Trish&lt;/li&gt;
    &lt;li&gt;Ionic/Angular2 app&lt;/li&gt;
    &lt;li&gt;Learn how to make a good dirty martini&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I&apos;m proud to &lt;a href=&quot;//raibledesigns.com/rd/entry/the_bus_is_home&quot;&gt;the bus is finished&lt;/a&gt; and it won Best in Class
    at VWs on the Green.&lt;/p&gt;
&lt;div style=&quot;width: 350px; margin: 0 auto&quot;&gt;
&lt;blockquote class=&quot;instagram-media&quot; data-instgrm-captioned data-instgrm-version=&quot;7&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:47.22222222222222% 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/BFcYBZyFPFk/&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;Today was a great day! Won best in class Bus, Camper, Pickup Custom 1949-67 Split Window. #vwbus&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 photo posted by Matt Raible (@vwsforlife) on &lt;time style=&quot; font-family:Arial,sans-serif; font-size:14px; line-height:17px;&quot; datetime=&quot;2016-05-15T21:41:51+00:00&quot;&gt;May 15, 2016 at 2:41pm PDT&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;p&gt;We skied a lot, but never took our own raft on river. I stayed in shape and have records to prove it thanks to &lt;a
    href=&quot;http://www.21-points.com&quot;&gt;21-Points Health&lt;/a&gt; and &lt;a
    href=&quot;http://www.dailymile.com/people/mraible/training/2016/summary&quot;&gt;dailymile&lt;/a&gt;. This summer, I spent seven
    weekends in a row away from home; with three weeks in Montana. Not quite a month, but close. Trish was happy because
    we journeyed to Hawaii to celebrate her parents&apos; 50th anniversary.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c7.staticflickr.com/9/8060/29900654526_7c112a74e7_c.jpg&quot; title=&quot;Happy 50th Mau and Joe!&quot;
       rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900654526/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/9/8060/29900654526_7c112a74e7.jpg&quot; width=&quot;500&quot; alt=&quot;Happy 50th Mau and Joe!&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;Her happiness continued when she found her dream home in July. We moved into
    &lt;a href=&quot;//raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;The Raible Ranch&lt;/a&gt; in September.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/9/8085/29900652696_22d3a60f0b_c.jpg&quot; title=&quot;Home Sweet Home!&quot;
       rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900652696/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/9/8085/29900652696_22d3a60f0b.jpg&quot; width=&quot;500&quot; alt=&quot;Home Sweet Home!&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;
    Weeks later, she and Abbie bought their dream horse named Tucker. I wrote about him in &lt;a
    href=&quot;//raibledesigns.com/rd/entry/happy_birthday_abbie10&quot;&gt;Abbie&apos;s 14th birthday post&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c7.staticflickr.com/6/5717/30766171446_2e96dd2477_c.jpg&quot; title=&quot;Abbie and Tucker&quot;
       rel=&quot;lightbox[yearinreview2016]&quot; data-href=&quot;https://www.flickr.com/photos/mcginityphoto/30766171446/in/feed&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/6/5717/30766171446_2e96dd2477_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Tucker&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://c3.staticflickr.com/6/5348/30501849050_0001c1ee48_c.jpg&quot; title=&quot;Abbie and Tucker&quot;
       rel=&quot;lightbox[yearinreview2016]&quot; data-href=&quot;https://www.flickr.com/photos/mcginityphoto/30501849050/in/feed&quot;&gt;&lt;img
        src=&quot;https://c3.staticflickr.com/6/5348/30501849050_0001c1ee48_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Tucker&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I learned how to make an excellent dirty martini, but did not find the time to create an Ionic/Angular2 app.
&lt;h3 id=&quot;stout&quot;&gt;The Ski Bus (&lt;em&gt;aka&lt;/em&gt; Stout)&lt;/h3&gt;
&lt;p&gt;Stout the Syncro spent a couple months &lt;a href=&quot;https://www.flickr.com/photos/mraible/sets/72157674783246243&quot;&gt;getting
    upgrades&lt;/a&gt; in late 2015: transmission rebuilt, fridge installed, Propex heater installed, and new headlights.
    We leveraged these improvements on an &lt;a href=&quot;//raibledesigns.com/rd/entry/raible_road_trip_70_to&quot;&gt;epic family
        road trip to Jekyll Island (Georgia)&lt;/a&gt; for my Dad&apos;s 70th birthday.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1477/24510650770_94df1d646b_c.jpg&quot; title=&quot;Cards in the van&quot;
       rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/24510650770/in/album-72157661957952463/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1477/24510650770_94df1d646b_m.jpg&quot; width=&quot;240&quot; alt=&quot;Cards in the van&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://farm2.staticflickr.com/1720/24688342302_0a0cd91280_c.jpg&quot;
       title=&quot;Our campsite in Hot Springs, AR. 21F that night.&quot; rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/24688342302/in/album-72157661957952463/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1720/24688342302_0a0cd91280_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Our campsite in Hot Springs, AR. 21F that night.&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We made it back to Denver just in time for the AFC Championship game and thoroughly enjoyed ourselves tailgating
    beforehand.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1657/24438602429_06d112155c_c.jpg&quot;
       title=&quot;We made it to Denver at 11pm Saturday. Broncos tailgate on Sunday!&quot; rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/24438602429/in/album-72157661957952463/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1657/24438602429_06d112155c.jpg&quot; width=&quot;500&quot;
        alt=&quot;We made it to Denver at 11pm Saturday. Broncos tailgate on Sunday!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Watching the Broncos win Super Bowl 50 was definitely a highlight of 2016.&lt;/p&gt;
&lt;p&gt;We took Stout on a bunch of ski trips and winter camped several times. The Propex heater and Reflectix insulation
    worked great and kept it around 50&amp;deg;F even when it was 0&amp;deg;F out.&lt;/p&gt;
&lt;p&gt;I bought a new mountain bike (Yeti SB 95) in May and Trish and I drove the van to &lt;a
    href=&quot;http://syncrosolstice.com&quot;&gt;Syncro Solstice&lt;/a&gt; in Moab. We were hoping for a weekend of mountain biking and 4-wheeling, but Trish had a bad crash and
    stabbed herself in the chest with a handlebar. That ended our 4x4 aspirations for the weekend, but the van ran
    great!&lt;/p&gt;
&lt;p&gt;The other major road trip for Stout was when I drove from Colorado to Montana over four days. I drove to Grand
    Junction on Monday evenning, worked during the day on Tuesday, went mountain biking in the afternoon, then drove to
    Jackson Hole that night. Wednesday, I worked in Jackson Hole, went mountain biking, then drove to Montana that
    night. I woke up early on Thursday and made it to Missoula to start working promptly at 8am. That evening, I drove
    to Seeley Lake and setup camp at the first annual &lt;a href=&quot;http://www.thebobmusic.com/&quot;&gt;Bob Marshall Music
        Festival&lt;/a&gt;. Trish flew in on Friday and we danced and celebrated my birthday all weekend.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/8/7490/29900643306_92e64b8945_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643306/in/datetaken/&quot;
       title=&quot;I like how this birthday week is progressing!&quot; rel=&quot;lightbox[yearinreview2016]&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/8/7490/29900643306_92e64b8945_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;I like how this birthday week is progressing!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a rel=&quot;lightbox[yearinreview2016]&quot; href=&quot;https://c1.staticflickr.com/9/8468/29900643616_f47aa962c2_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643616/in/datetaken/&quot;
       title=&quot;It&amp;#x27;s easy to fall in love with Jackson, Wyoming on a day like today!&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/9/8468/29900643616_f47aa962c2_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;It&amp;#x27;s easy to fall in love with Jackson, Wyoming on a day like today!&quot;
        style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
    &lt;a rel=&quot;lightbox[yearinreview2016]&quot; href=&quot;https://c1.staticflickr.com/8/7526/29900643736_cf5b6ef57c_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643736/in/datetaken/&quot; title=&quot;Idaho Sunset in Teton Valley&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/8/7526/29900643736_cf5b6ef57c_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;Idaho Sunset in Teton Valley&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 rel=&quot;lightbox[yearinreview2016]&quot; href=&quot;https://c1.staticflickr.com/9/8819/29900643836_3b78c8a092_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643836/in/datetaken/&quot; title=&quot;Montana!&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/9/8819/29900643836_3b78c8a092.jpg&quot; width=&quot;500&quot; alt=&quot;Montana!&quot;
        style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3 id=&quot;hefe&quot;&gt;The Porsche Bus (&lt;em&gt;aka&lt;/em&gt; Hefe)&lt;/h3&gt;
&lt;p&gt;Hefe&apos;s debut at VWs on the Green was a wild success and we had a lot of fun that day. In June, we showed him at
    Colorado Concours d&apos;Elegance and won a blue ribbon. We trailered him to Montana and drove him in the Swan Valley
    parade &lt;em&gt;and&lt;/em&gt; the Seeley Lake parade.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c4.staticflickr.com/9/8265/29869377531_391704082d_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29869377531/in/album-72157673202240580/&quot;
       title=&quot;Hefe in the Swan Valley Parade&quot; rel=&quot;lightbox[yearinreview2016]&quot;&gt;&lt;img
        src=&quot;https://c4.staticflickr.com/9/8265/29869377531_391704082d_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Hefe in the Swan Valley Parade&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://c7.staticflickr.com/9/8770/29900642926_1ec60a28d1_c.jpg&quot;
       title=&quot;Our 2nd parade of the day! Hefe is lookin&apos; good. Happy 4th y&apos;all!&quot; rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900642926/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/9/8770/29900642926_1ec60a28d1_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Our 2nd parade of the day! Hefe is lookin&apos; good. Happy 4th y&apos;all!&quot;
        style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We hauled him back in Denver to be in the Colorado Bug-In at Bandimere Speedway, where he got second in the
    custom/radical class.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a rel=&quot;lightbox[yearinreview2016]&quot; href=&quot;https://c7.staticflickr.com/9/8509/29900643086_753e1e8e1c_c.jpg&quot;
       title=&quot;Hefe at his finest&quot; rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643086/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/9/8509/29900643086_753e1e8e1c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Hefe at his finest&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a rel=&quot;lightbox[yearinreview2016]&quot; href=&quot;https://c5.staticflickr.com/8/7472/29900643196_0a3d735d17_c.jpg&quot;
       title=&quot;Got Runner Up in our class. Lost to a very nice Karmann Ghia. However, they trailered theirs home and I&apos;m driving mine!&quot;
       rel=&quot;lightbox[yearinreview2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643196/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/8/7472/29900643196_0a3d735d17_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Got Runner Up in our class. Lost to a very nice Karmann Ghia. However, they trailered theirs home and I&apos;m driving mine!&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;
&lt;p&gt;On the way home from that event, one of the rear shocks blew up from rubbing against the axle. That was the beginning
    of the end for my air suspension. I drove Hefe to &lt;a href=&quot;http://kustomcoachwerks.com&quot;&gt;Kustom Coach Werks&lt;/a&gt; in
    early August to have fix the doors (they had gaps) and tune the suspension. When they finished, I called it &quot;release
    1.5&quot;.
&lt;/p&gt;
&lt;p&gt;
    I drove Hefe for a month without rear shocks and didn&apos;t have too many issues; it was just bouncy in the back. &lt;a
    href=&quot;https://www.facebook.com/pg/Colorado-Buses-at-the-Brewery-184288431618852&quot;&gt;Buses at the Brewery&lt;/a&gt; in
    Colorado Springs was a fun event and the first time that Hefe went viral on Facebook. This has happened a few times
    since then. He gets thousands of likes from being featured on a VW fan page.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a rel=&quot;lightbox[yearinreview2016]&quot; href=&quot;https://c1.staticflickr.com/9/8555/28695920833_7e4e36bd73_c.jpg&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/28695920833/in/datetaken-public/&quot;
       title=&quot;Buses at the Brewery&quot;&gt;&lt;img src=&quot;https://c1.staticflickr.com/9/8555/28695920833_7e4e36bd73.jpg&quot; width=&quot;500&quot;
                                         style=&quot;border: 1px solid black&quot; alt=&quot;Buses at the Brewery&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Before the drive to Colorado Springs, I noticed the rear suspension was missing bolts, causing the rear end to
    shimmy. I was able to find a new bolt and fix it, but the problem with bolts falling out continued in September. I
    tried &lt;a href=&quot;https://www.flickr.com/photos/mraible/29383276332/in/datetaken/&quot;&gt;smaller wheels (15&quot; Fuchs)&lt;/a&gt;, but
    the suspension was still really stiff in front. Because of the suspension issues, I shipped it back to KCW in
    October. They ripped out the air suspension and replaced it with coil over shocks, making for a much better ride. It
    now can cruise at 90 mph easily and looks great all the time! After these repairs, it&apos;s now Hefe 2.0.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/1/710/31888383051_1e996f40ac_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/31888383051/in/datetaken/&quot;
       title=&quot;2nd stop: liquor store for the KCW guys!&quot; rel=&quot;lightbox[yearinreview2016]&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/1/710/31888383051_1e996f40ac.jpg&quot; width=&quot;500&quot; style=&quot;border: 1px solid black&quot;
        alt=&quot;2nd stop: liquor store for the KCW guys!&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;If you&apos;re interested in reading about the suspension decision process, or to see pictures, see &lt;a
    href=&quot;http://www.kustomcoachwerks.com/forums//viewtopic.php?f=17&amp;t=8072&amp;start=930#p253244&quot;&gt;this thread on KCW&apos;s
    forums&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;2017&quot;&gt;2017&lt;/h2&gt;
&lt;p&gt;
    Professionally, I&apos;ll be speaking at a lot of conferences and meetups this year. As a Developer Evangelist for
    Stormpath, I&apos;m expected to speak at least once a month. I did a webinar on &lt;a
    href=&quot;https://www.youtube.com/watch?v=Jq3szz2KOOs&quot;&gt;Getting Started with Angular&lt;/a&gt; in mid-January and I&apos;m traveling
    next week to &lt;a href=&quot;http://jfokus.com&quot;&gt;Jfokus&lt;/a&gt; in Stockholm. See my &lt;a
    href=&quot;//raibledesigns.com/rd/page/publications&quot;&gt;future engagements&lt;/a&gt; for more scheduled events.
&lt;/p&gt;
&lt;p&gt;
    I suspect most of the coding I&apos;ll be doing will be related to Stormpath&apos;s SDKs, both &lt;a
    href=&quot;https://github.com/stormpath/stormpath-sdk-angular&quot;&gt;Angular&lt;/a&gt; and &lt;a
    href=&quot;https://github.com/stormpath/stormpath-sdk-java&quot;&gt;Java&lt;/a&gt;. Of course, I&apos;ll help out on &lt;a
    href=&quot;http://jhipster.github.io&quot;&gt;JHipster&lt;/a&gt; as much as I can too. With &lt;a href=&quot;https://twitter.com/java_hipster/status/826819045068505089&quot;&gt;JHipster
    4 on the horizon&lt;/a&gt;, there will be a lot of work to update the JHipster Mini-Book.
&lt;/p&gt;
&lt;p&gt;Hefe 3.0 will be released this spring after I get a sweet sound system installed. As far as personal goals for 2017,
    I have only one: to drive Hefe up the California coast. With a new house, two running VWs, and a job that&apos;s a
    helluva
    lot of fun, life is pretty awesome right now. &lt;img src=&quot;//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/life_as_an_open_source</id>
        <title type="html">Life as an Open Source Developer</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/life_as_an_open_source"/>
        <published>2016-11-03T16:29:01-06:00</published>
        <updated>2016-11-03T22:30:05-06:00</updated> 
        <category term="/Open Source" label="Open Source" />
        <category term="angularjs" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="stormpath" scheme="http://roller.apache.org/ns/tags/" />
        <category term="springboot" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="github" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;
It&apos;s been a little over a month since I started my &lt;a href=&quot;https://raibledesigns.com/rd/entry/life_update_a_summer_to&quot;&gt;
new gig at Stormpath&lt;/a&gt;. I gotta say, life is great as an open source developer! Yes, I did start working for them as a consultant in April, so it&apos;s not a huge change for me.
However, I only recently realized I haven&apos;t written a &lt;em&gt;single line&lt;/em&gt; of proprietary code the entire time.
My &lt;a href=&quot;https://github.com/mraible&quot;&gt;GitHub contributions&lt;/a&gt; look pretty good this year. They&apos;re nothing like &lt;a href=&quot;https://github.com/mojavelinux&quot;&gt;@mojavelinux&lt;/a&gt;, 
or &lt;a href=&quot;https://github.com/dsyer&quot;&gt;@dsyer&lt;/a&gt;, but I&apos;ll get there. &lt;img src=&quot;//raibledesigns.com/images/smileys/wink.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;https://github.com/mraible&quot; title=&quot;GitHub Profile - November 3, 2016&quot;&gt;
    &lt;img src=&quot;https://c7.staticflickr.com/6/5703/30128917414_8e7c7a8e57_z.jpg&quot; width=&quot;640&quot; alt=&quot;GitHub Profile - November 3, 2016&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;It&apos;s also been a bit more stress than I&apos;m used to. I think this comes from a couple things: 1) turning my hobby into my job and 2)
    I&apos;ve set a lot of high expectations for myself. As a developer evangelist, I get to create my own job. That means I can
    speak at the conferences I want to, write the code I want to, create the blog posts I want to, and everything else in between.
&lt;/p&gt;
&lt;p&gt;At the end of September, I finished &lt;a href=&quot;http://www.jhipster-book.com/#!/news/entry/book-updated-for-jhipster-3-and-jhipster-gets-dirty&quot;&gt;updating the 
JHipster Mini-Book for JHipster 3.x&lt;/a&gt;. It&apos;s gone through tech editing and it&apos;s being copy-edited right now. I hope to release it within a week. 
&lt;/p&gt;
&lt;p&gt;In early October, I said I&apos;d commit to writing one blog post per week, develop a JHipster module for Stormpath, and help get their 
    Angular 2 support good enough for an alpha release. I&apos;m happy to report I&apos;ve been able to accomplish most of these and I hope to show off
    our Angular 2 support soon.&lt;/p&gt;
&lt;p&gt;
I then channeled my efforts into integrating Stormpath&apos;s Java SDK with their AngularJS directives. You can read about how I did that in
&lt;a href=&quot;https://stormpath.com/blog/angularjs-spring-boot-tutorial&quot;&gt;Get Started with AngularJS, Spring Boot, and Stormpath&lt;/a&gt;.
Unlike &lt;a href=&quot;https://raibledesigns.com/rd/entry/getting_started_with_angularjs&quot;&gt;my previous AngularJS tutorial&lt;/a&gt;, this one connects to a 
backend and shows how to communicate with Spring Boot cross-domain.
&lt;/p&gt;
&lt;p&gt;If you like to read code more than words, you can look at the &lt;a href=&quot;https://github.com/stormpath/angularjs-spring-boot-stormpath-example&quot;&gt;example project&apos;s commits
on GitHub&lt;/a&gt;.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create an AngularJS UI: &lt;a href=&quot;https://github.com/stormpath/angularjs-spring-boot-stormpath-example/commit/652ee29d9a002f5d437d356481809fe74114fe7e&quot;&gt;search&lt;/a&gt; and &lt;a href=&quot;https://github.com/stormpath/angularjs-spring-boot-stormpath-example/commit/9a06e9071d5db9710c3a8555c0dfe81c752f2242&quot;&gt;edit&lt;/a&gt; features&lt;/li&gt;
&lt;li&gt;Create a Spring Boot app with Stormpath: &lt;a href=&quot;https://github.com/stormpath/angularjs-spring-boot-stormpath-example/commit/740ed84ccb16c94bfb6451c453c325b7f86fa870&quot;&gt;app from start.stormpath.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Develop an API to CRUD people with Spring Data REST: &lt;a href=&quot;https://github.com/stormpath/angularjs-spring-boot-stormpath-example/commit/f223f26dba108e864cec271b32b856423bc12d74&quot;&gt;/api/people&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Integrate AngularJS and Spring Boot apps: &lt;a href=&quot;https://github.com/stormpath/angularjs-spring-boot-stormpath-example/commit/88f43da9fc14bb59e6d1b7f36f658730029b4bd7&quot;&gt;cross-domain&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Integrate Stormpath into AngularJS for login, registration and forgot password: &lt;a href=&quot;https://github.com/stormpath/angularjs-spring-boot-stormpath-example/commit/2eee2b677237f793bf4ff25b6705d9c72efc984d&quot;&gt;Stormpath Angular SDK&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Last week, I released a &lt;a href=&quot;https://jhipster.github.io/modules/marketplace/#/details/generator-jhipster-stormpath&quot;&gt;JHipster module
 that integrates Stormpath&lt;/a&gt;. This exercise was good because I was able to identify some gaps in Stormpath&apos;s SDKs &lt;em&gt;and&lt;/em&gt; fix them.
Getting something to work made me feel good; having the ability to improve the developer experience
was even better! Of course, &lt;a href=&quot;https://stormpath.com/blog/stormpath-jhipster-application&quot;&gt;I blogged about what I learned&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
This week, I edited and code reviewed some posts from Karl Penzhorn on &lt;a href=&quot;https://stormpath.com/blog/crud-application-react-spring-boot-user-authentication&quot;&gt;
React with Spring Boot&lt;/a&gt; and using &lt;a href=&quot;https://stormpath.com/blog/optimize-react-webpack&quot;&gt;webpack with React&lt;/a&gt;. I also got to &lt;a href=&quot;https://github.com/mattlewis92/generator-angular-library/issues/14&quot;&gt;
bang my head against the wall&lt;/a&gt; writing Angular 2 tests. If you&apos;re writing a module for Angular 2, &lt;a href=&quot;https://www.npmjs.com/package/generator-angular2-module&quot;&gt;
generator-angular2-module&lt;/a&gt; provides a nice starting point.&lt;/p&gt;
&lt;p&gt;Last, but certainly not least, I&apos;ll be speaking at a few events about Microservices, JHipster, Angular 2 and Stormpath in the near feature. &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://nofluffjuststuff.com/conference/denver/2016/11/session?id=38028&quot;&gt;Rocky Mountain Software Symposium&lt;/a&gt;, November 19&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://therichwebexperience.com/conference/clearwater/2016/12/speakers/matt_raible&quot;&gt;The Rich Web Experience&lt;/a&gt;, December 9&lt;/li&gt;
    &lt;li&gt;A joint talk at &lt;a href=&quot;http://www.meetup.com/DenverJavaUsersGroup/events/231602438/&quot;&gt;Denver JUG&lt;/a&gt; with the infamous &lt;a href=&quot;https://twitter.com/starbuxman&quot;&gt;Josh Long&lt;/a&gt;, December 14&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have any questions about developer evangelism, the technologies I mentioned in this post, or Stormpath, please let me know. Otherwise, I hope to see you on the road soon!
    &lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/life_update_a_summer_to</id>
        <title type="html">Life Update: A Summer to Remember, a New House, and a Sweet New Gig</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/life_update_a_summer_to"/>
        <published>2016-09-26T07:29:24-06:00</published>
        <updated>2017-06-12T21:52:47-06:00</updated> 
        <category term="/General" label="General" />
        <category term="stormpath" scheme="http://roller.apache.org/ns/tags/" />
        <category term="summer2016" scheme="http://roller.apache.org/ns/tags/" />
        <category term="raibleranch" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vanlife" scheme="http://roller.apache.org/ns/tags/" />
        <category term="life" scheme="http://roller.apache.org/ns/tags/" />
        <category term="house" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: I had a super fun summer traveling with my family, recently moved to a new house in the
    country, and I&apos;ve
    joined &lt;a href=&quot;https://stormpath.com/&quot;&gt;Stormpath&lt;/a&gt; as a Developer Evangelist. &lt;em&gt;Wahoo!&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
    I&apos;ve written several &quot;life update&quot; posts in the past, but there&apos;s been few as epic as this one. When I wrote my 2016
    Goals, I listed &quot;July in Montana&quot; as one of them. And y&apos;all know that &quot;finish the bus&quot; was #1. Since &lt;a
    href=&quot;//raibledesigns.com/rd/entry/the_bus_is_home&quot;&gt;the bus is done&lt;/a&gt;, I wanted to show it off in my hometown 4th
    of July parade in Condon, Montana.
    &lt;/p&gt;
    &lt;p&gt;
    A path to these goals became clear in mid-June, shortly after &lt;a
    href=&quot;http://raibledesigns.com/rd/entry/a_delightful_trip_to_devoxx&quot;&gt;visiting London and Tallinn with my Mom&lt;/a&gt;. It
    involved a lot of driving, but I was determined to make it happen. I was so excited about my plan that I sent an email to my
    best friend, Owen, on June 15.
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: I had a super fun summer traveling with my family, recently moved to a new house in the
    country, and I&apos;ve
    joined &lt;a href=&quot;https://stormpath.com/&quot;&gt;Stormpath&lt;/a&gt; as a Developer Evangelist. &lt;em&gt;Wahoo!&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
    I&apos;ve written several &quot;life update&quot; posts in the past, but there&apos;s been few as epic as this one. When I wrote my 2016
    Goals, I listed &quot;July in Montana&quot; as one of them. And y&apos;all know that &quot;finish the bus&quot; was #1. Since &lt;a
    href=&quot;//raibledesigns.com/rd/entry/the_bus_is_home&quot;&gt;the bus is done&lt;/a&gt;, I wanted to show it off in my hometown 4th
    of July parade in Condon, Montana.
    &lt;/p&gt;
    &lt;p&gt;
    A path to these goals became clear in mid-June, shortly after &lt;a
    href=&quot;http://raibledesigns.com/rd/entry/a_delightful_trip_to_devoxx&quot;&gt;visiting London and Tallinn with my Mom&lt;/a&gt;. It
    involved a lot of driving, but I was determined to make it happen. I was so excited about my plan that I sent an email to my
    best friend, Owen, on June 15.
&lt;/p&gt;

&lt;div class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;Hey Owen!
    &lt;/p&gt;
    &lt;p&gt;
        Hope you&apos;re doing well and enjoying the summer. I just wanted to give you a heads up that I&apos;ll be in Montana
        quite a bit this summer. First of all, we&apos;ll be driving up with the bus (it&apos;s finally done!) next week. We&apos;re
        not staying though - we have a flight out of Missoula to Hawaii on Saturday morning. We&apos;re going with Trish&apos;s
        family to celebrate her parent&apos;s 50th wedding anniversary.
    &lt;/p&gt;
    &lt;p&gt;
        We return on June 3rd, just in time to drive the bus in the parade on the 4th! I&apos;ll likely drive it down to
        Seeley Lake to be in theirs as well.
    &lt;/p&gt;
    &lt;p&gt;
        We&apos;re driving back to Denver on July 9 to be in a VW show on the 10th. Then I&apos;ll be driving our van back to
        MT starting on July 11. I plan to take it slow and work from the van on my way. My goal is to arrive by
        Thursday, July 14 for the &lt;a href=&quot;http://www.thebobmusic.com/&quot;&gt;Bob Marshall Music Festival&lt;/a&gt;.
    &lt;/p&gt;

    &lt;p&gt;Trish will fly in for the weekend. My birthday is that Saturday, the 16th! I plan to camp in Seeley and enjoy the
        music. Then, I&apos;ll hang out another week with my folks, working remotely and playing. I&apos;ll return to Denver on
        July
        23.&lt;/p&gt;
    &lt;p&gt;
        Can&apos;t wait to drink some beer with you old buddy!
    &lt;/p&gt;
    &lt;p&gt;
        Cheers,
    &lt;/p&gt;
    &lt;p style=&quot;margin-bottom: 0&quot;&gt;
        Matt&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
    Fast forward to today, September 26, 2016 &amp;#8594; it&apos;s fun to reminisce that I traveled to Hawaii for a wonderful
    anniversary
    celebration, flew to Montana for two 4th of July parades, showed Hefe at the Colorado Bug-In, and lived the
    &lt;a href=&quot;https://www.instagram.com/explore/tags/vanlife/&quot;&gt;#vanlife&lt;/a&gt;
    on the way to &lt;a href=&quot;//raibledesigns.com/rd/entry/the_cabin&quot;&gt;The Cabin&lt;/a&gt; via Grand Junction,
    Jackson Hole, Missoula and Seeley Lake.
&lt;/p&gt;
&lt;p&gt;You can see why it was a summer to remember. Here&apos;s some pics:&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c5.staticflickr.com/9/8433/29307988564_7ddd6725a5_c.jpg&quot; title=&quot;Hefe is ready to road trip!&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29307988564/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/9/8433/29307988564_7ddd6725a5_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;Hefe is ready to road trip!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c1.staticflickr.com/6/5478/29307988864_f3da3e3472_c.jpg&quot; title=&quot;Sunset in Hanalei Bay&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29307988864/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/6/5478/29307988864_f3da3e3472_q.jpg&quot; width=&quot;150&quot; alt=&quot;Sunset in Hanalei Bay&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c6.staticflickr.com/9/8205/29308746733_382d0d1a47_c.jpg&quot; title=&quot;Hanalei Happy Hour&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29308746733/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c6.staticflickr.com/9/8205/29308746733_382d0d1a47_q.jpg&quot; width=&quot;150&quot; alt=&quot;Hanalei Happy Hour&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://c7.staticflickr.com/9/8060/29900654526_7c112a74e7_c.jpg&quot; title=&quot;Happy 50th Mau and Joe!&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900654526/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/9/8060/29900654526_7c112a74e7.jpg&quot; width=&quot;500&quot; alt=&quot;Happy 50th Mau and Joe!&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://c5.staticflickr.com/9/8013/29820949332_d483dd7980_c.jpg&quot;
       title=&quot;Jack is wiped after last night&apos;s red eye. It&apos;s great to be at The Cabin!&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29820949332/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/9/8013/29820949332_d483dd7980_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;Jack is wiped after last night&apos;s red eye. It&apos;s great to be at The Cabin!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c7.staticflickr.com/9/8770/29900642926_1ec60a28d1_c.jpg&quot;
       title=&quot;Our 2nd parade of the day! Hefe is lookin&apos; good. Happy 4th y&apos;all!&quot; rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900642926/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/9/8770/29900642926_1ec60a28d1_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;Our 2nd parade of the day! Hefe is lookin&apos; good. Happy 4th y&apos;all!&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c3.staticflickr.com/9/8321/29900656386_eb51615eec_c.jpg&quot; title=&quot;Hefe on Front Road&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900656386/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c3.staticflickr.com/9/8321/29900656386_eb51615eec_q.jpg&quot; width=&quot;150&quot; alt=&quot;Hefe on Front Road&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://c4.staticflickr.com/9/8265/29869377531_391704082d_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/29869377531/in/album-72157673202240580/&quot; title=&quot;Hefe in the Swan Valley Parade&quot; rel=&quot;lightbox[lifeupdate-201609]&quot;&gt;&lt;img src=&quot;https://c4.staticflickr.com/9/8265/29869377531_391704082d.jpg&quot; width=&quot;500&quot; alt=&quot;Hefe in the Swan Valley 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://c7.staticflickr.com/9/8509/29900643086_753e1e8e1c_c.jpg&quot; title=&quot;Hefe at his finest&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643086/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/9/8509/29900643086_753e1e8e1c_m.jpg&quot; width=&quot;240&quot; alt=&quot;Hefe at his finest&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c5.staticflickr.com/8/7472/29900643196_0a3d735d17_c.jpg&quot;
       title=&quot;Got Runner Up in our class. Lost to a very nice Karmann Ghia. However, they trailered theirs home and I&apos;m driving mine!&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643196/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/8/7472/29900643196_0a3d735d17_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Got Runner Up in our class. Lost to a very nice Karmann Ghia. However, they trailered theirs home and I&apos;m driving mine!&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://c3.staticflickr.com/8/7490/29900643306_92e64b8945_c.jpg&quot;
       title=&quot;I like how this birthday week is progressing!&quot; rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643306/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c3.staticflickr.com/8/7490/29900643306_92e64b8945_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;I like how this birthday week is progressing!&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c1.staticflickr.com/9/8468/29900643616_f47aa962c2_c.jpg&quot;
       title=&quot;It&apos;s easy to fall in love with Jackson, Wyoming on a day like today!&quot; rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643616/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/9/8468/29900643616_f47aa962c2_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;It&apos;s easy to fall in love with Jackson, Wyoming on a day like today!&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c1.staticflickr.com/8/7526/29900643736_cf5b6ef57c_c.jpg&quot; title=&quot;Idaho Sunset in Teton Valley&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900643736/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/8/7526/29900643736_cf5b6ef57c_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;Idaho Sunset in Teton Valley&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://c5.staticflickr.com/9/8337/29900644356_1322c8c20c_c.jpg&quot;
       title=&quot;The siding is almost finished on The House! Dad rented a high lift and finished 80% today. This is the before photo.&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900644356/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/9/8337/29900644356_1322c8c20c_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;The siding is almost finished on The House! Dad rented a high lift and finished 80% today. This is the before photo.&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c7.staticflickr.com/9/8503/29900646086_3c589a535e_c.jpg&quot;
       title=&quot;My parents finally finished the siding on their epic retirement house! Congrats awesome people!&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900646086/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c7.staticflickr.com/9/8503/29900646086_3c589a535e_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;My parents finally finished the siding on their epic retirement house! Congrats awesome people!&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://c3.staticflickr.com/8/7505/29900655586_508a346031_c.jpg&quot;
       title=&quot;Celebrating our third anniversary at Garden of the Gods&quot; rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900655586/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c3.staticflickr.com/8/7505/29900655586_508a346031.jpg&quot; width=&quot;500&quot;
        alt=&quot;Celebrating our third anniversary at Garden of the Gods&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://c5.staticflickr.com/9/8499/29307996604_354f4d13a4_c.jpg&quot;
       title=&quot;Jack&apos;s first day of middle school and Abbie&apos;s first day of 8th grade! Same school for the first time in three years. They&apos;re so excited to be reunited!&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29307996604/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/9/8499/29307996604_354f4d13a4_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;Jack&apos;s first day of middle school and Abbie&apos;s first day of 8th grade! Same school for the first time in three years. They&apos;re so excited to be reunited!&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c2.staticflickr.com/9/8555/28695920833_7e4e36bd73_c.jpg&quot; title=&quot;Buses at the Brewery&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/28695920833/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c2.staticflickr.com/9/8555/28695920833_7e4e36bd73_q.jpg&quot; width=&quot;150&quot; alt=&quot;Buses at the Brewery&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c5.staticflickr.com/9/8469/29820954092_6f93e4633f_c.jpg&quot;
       title=&quot;Jack and his buddies on his 12th birthday!&quot; rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29820954092/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/9/8469/29820954092_6f93e4633f_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;Jack and his buddies on his 12th birthday!&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New House&lt;/strong&gt;&lt;br&gt;
    Trish and I&apos;ve been looking for a new house for a while now. I wrote about how we &lt;a
        href=&quot;//raibledesigns.com/rd/entry/life_update_the_bus_project&quot;&gt;tried to sell our home near DU last year&lt;/a&gt;. For the first year of our search,
    we were focused on finding a
    place near the kids&apos; school. This spring, we shifted our focus to looking for horse property. Trish was a
    competitive equestrian jumper in high school and she&apos;s got Abbie into it so why not? After all, their horse hobby is much less
    expensive than my VW obsession. &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 late July, Trish found the property of her dreams in Centennial, Colorado (just north of Parker). At the time, I was still in Montana and the kids were in
    Florida with their Mom. Nevertheless, it felt right and we went for it. We put an offer on the home
    on July 19 and today I&apos;m writing this blog post inside our new home. We moved in last week and couldn&apos;t be
    happier. Of course, we wish we were &lt;em&gt;fully&lt;/em&gt; moved in, but
    we realize that&apos;ll probably take another week or two. The only downside of the move is we had to sell our &lt;a
    href=&quot;//raibledesigns.com/rd/entry/another_dream_realized_mountain_views&quot;&gt;mountain views&lt;/a&gt; in Fraser.
    The good news is we have new mountain views, two acres of land and plenty of room for our classic VW collection.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c1.staticflickr.com/9/8085/29900652696_22d3a60f0b_c.jpg&quot; title=&quot;Home Sweet Home!&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900652696/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c1.staticflickr.com/9/8085/29900652696_22d3a60f0b.jpg&quot; width=&quot;500&quot; alt=&quot;Home Sweet Home!&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

&lt;/p&gt;

&lt;a href=&quot;https://stormpath.com/&quot;&gt;&lt;img src=&quot;https://stormpath.com/wp-content/uploads/2016/08/logo.png&quot;
                                          alt=&quot;Stormpath&quot;
                                          style=&quot;float: right; width: 200px; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;a name=&quot;stormpath&quot;&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;New Gig at Stormpath&lt;/strong&gt;&lt;br&gt;
    I&apos;ve been working with &lt;a href=&quot;https://stormpath.com&quot;&gt;Stormpath&lt;/a&gt; as a consultant since April. I contributed a fair amount of my
    time to helping them develop and
    launch their &lt;a href=&quot;https://www.infoq.com/news/2016/08/stormpath-java-1.0&quot;&gt;Java SDK 1.0 release&lt;/a&gt;. After the
    first
    couple months,
    I started talking with their co-founder and CTO, &lt;a href=&quot;https://twitter.com/lhazlewood&quot;&gt;Les Hazlewood&lt;/a&gt;, about joining
    Stormpath full-time. At first I was more interested in continuing my career as an independent consultant. Then I
    really
    started to think about what I liked to do for work. It came down to a few things: develop open source software,
    write about
    what I&apos;ve learned as a developer and preach the gospel of good developer tools. I sent Les a &quot;Stormpath Employment
    Proposal&quot; in late July.
&lt;/p&gt;
&lt;p&gt;After many conversations with Les and Alex (Stormpath&apos;s CEO), I flew out for interviews in early September.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://c5.staticflickr.com/6/5619/29820954652_d5f99d2bda_c.jpg&quot; title=&quot;High plains&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29820954652/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/6/5619/29820954652_d5f99d2bda_q.jpg&quot; width=&quot;150&quot; alt=&quot;High plains&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c3.staticflickr.com/9/8272/29900651746_08817ba3c3_c.jpg&quot; title=&quot;The Rocky Mountains&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900651746/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c3.staticflickr.com/9/8272/29900651746_08817ba3c3_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Rocky Mountains&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;

    &lt;a href=&quot;https://c5.staticflickr.com/6/5109/29900652036_faf53318eb_c.jpg&quot; title=&quot;Landing at SFO&quot;
       rel=&quot;lightbox[lifeupdate-201609]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/29900652036/in/album-72157673202240580/&quot;&gt;&lt;img
        src=&quot;https://c5.staticflickr.com/6/5109/29900652036_faf53318eb_q.jpg&quot; width=&quot;150&quot; alt=&quot;Landing at SFO&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&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 photos on Flickr &amp;#8594; &lt;a href=&quot;https://www.flickr.com/photos/mraible/albums/72157673202240580&quot;&gt;2016: A Summer to Remember&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;The interviews went great and I&apos;m happy to say that Stormpath has offered me an tremendous opportunity to code,
    learn, and educate. Simply put: they gave me an offer I couldn&apos;t refuse. I quickly accepted and today is my first
    day as a Stormpath Developer Evangelist.
&lt;/p&gt;
&lt;p&gt;
    It takes a special kind of company to entice me to work for them full-time and I&apos;m
    looking forward to doing great things with Stormpath. Now more than ever, there&apos;s a good chance I&apos;ll see you on the
    road or at a conference soon!
&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/getting_started_with_angular_cli</id>
        <title type="html">Getting Started + Testing with Angular CLI and Angular 2 (RC5)</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/getting_started_with_angular_cli"/>
        <published>2016-08-23T17:18:41-06:00</published>
        <updated>2017-04-28T20:38:39-06:00</updated> 
        <category term="/The Web" label="The Web" />
        <category term="npm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jasmine" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="karma" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="typescript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="node" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular-cli" scheme="http://roller.apache.org/ns/tags/" />
        <category term="protractor" scheme="http://roller.apache.org/ns/tags/" />
        <category term="asciidoctor" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;I started creating Angular 2 applications when it was in beta (&lt;a
    href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2&quot;&gt;back in March&lt;/a&gt;). To keep up with Angular 2&apos;s
    changes,
    I wrote a &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;tutorial about developing with
        RC1&lt;/a&gt; in June. Earlier this month, RC5 was released
    and &lt;a href=&quot;https://angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html&quot;&gt;many things changed once again&lt;/a&gt;. I think
    Scott Davis sums it up nicely in a tweet.&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;They keep saying &quot;Release Candidate&quot;, but I
        don&apos;t think it means what they think it means...&lt;br&gt;&lt;br&gt;/cc &lt;a
            href=&quot;https://twitter.com/hashtag/angular2?src=hash&quot;&gt;#angular2&lt;/a&gt; &lt;a
            href=&quot;https://twitter.com/hashtag/rc5?src=hash&quot;&gt;#rc5&lt;/a&gt; &lt;a href=&quot;https://t.co/WmNalTYgTN&quot;&gt;https://t.co/WmNalTYgTN&lt;/a&gt;
    &lt;/p&gt;&amp;mdash; Scott Davis (@scottdavis99) &lt;a href=&quot;https://twitter.com/scottdavis99/status/763399251229417472&quot;&gt;August
        10, 2016&lt;/a&gt;&lt;/blockquote&gt;
    &lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;To keep up with the rapid pace of change in Angular 2, I decided to write another tutorial, this time using &lt;a
    href=&quot;https://github.com/angular/angular-cli&quot;&gt;Angular CLI&lt;/a&gt;. The biggest change I found since
    writing the last tutorial is testing infrastructure changes. Since &lt;a
        href=&quot;https://angular.io/docs/ts/latest/testing/&quot;&gt;Angular&apos;s Testing documentation&lt;/a&gt; hasn&apos;t been updated
    recently, hopefully this tutorial will help.&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;I started creating Angular 2 applications when it was in beta (&lt;a
    href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2&quot;&gt;back in March&lt;/a&gt;). To keep up with Angular 2&apos;s
    changes,
    I wrote a &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;tutorial about developing with
        RC1&lt;/a&gt; in June. Earlier this month, RC5 was released
    and &lt;a href=&quot;https://angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html&quot;&gt;many things changed once again&lt;/a&gt;. I think
    Scott Davis sums it up nicely in a tweet.&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;They keep saying &quot;Release Candidate&quot;, but I
        don&apos;t think it means what they think it means...&lt;br&gt;&lt;br&gt;/cc &lt;a
            href=&quot;https://twitter.com/hashtag/angular2?src=hash&quot;&gt;#angular2&lt;/a&gt; &lt;a
            href=&quot;https://twitter.com/hashtag/rc5?src=hash&quot;&gt;#rc5&lt;/a&gt; &lt;a href=&quot;https://t.co/WmNalTYgTN&quot;&gt;https://t.co/WmNalTYgTN&lt;/a&gt;
    &lt;/p&gt;&amp;mdash; Scott Davis (@scottdavis99) &lt;a href=&quot;https://twitter.com/scottdavis99/status/763399251229417472&quot;&gt;August
        10, 2016&lt;/a&gt;&lt;/blockquote&gt;
    &lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;/div&gt;

&lt;p&gt;To keep up with the rapid pace of change in Angular 2, I decided to write another tutorial, this time using &lt;a
    href=&quot;https://github.com/angular/angular-cli&quot;&gt;Angular CLI&lt;/a&gt;. The biggest change I found since
    writing the last tutorial is testing infrastructure changes. Since &lt;a
        href=&quot;https://angular.io/docs/ts/latest/testing/&quot;&gt;Angular&apos;s Testing documentation&lt;/a&gt; hasn&apos;t been updated
    recently, hopefully this tutorial will help.&lt;/p&gt;
&lt;p&gt;Below is a table of contents in case you want to skip right to a particular section.&lt;/p&gt;

&lt;div id=&quot;toc&quot; class=&quot;toc&quot;&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_what_you_ll_build&quot;&gt;What you&apos;ll build&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_what_you_ll_need&quot;&gt;What you&apos;ll need&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_create_your_project&quot;&gt;Create your project&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_run_the_application&quot;&gt;Run the application&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_add_a_search_feature&quot;&gt;Add a search feature&lt;/a&gt;
            &lt;ul class=&quot;sectlevel2&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_the_basics&quot;&gt;The Basics&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_the_backend&quot;&gt;The Backend&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_add_an_edit_feature&quot;&gt;Add an edit feature&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_testing&quot;&gt;Testing&lt;/a&gt;
            &lt;ul class=&quot;sectlevel2&quot;&gt;
                &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_unit_test_the_searchservice&quot;&gt;Unit test the SearchService&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_unit_test_the_searchcomponent&quot;&gt;Unit test the SearchComponent&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_integration_test_the_search_ui&quot;&gt;Integration test the search UI&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_testing_the_search_feature&quot;&gt;Testing the search feature&lt;/a&gt;&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_testing_the_edit_feature&quot;&gt;Testing the edit feature&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_continuous_integration&quot;&gt;Continuous Integration&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_source_code&quot;&gt;Source code&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_cli#_summary&quot;&gt;Summary&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/div&gt;

&lt;h3 id=&quot;_what_you_ll_build&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_what_you_ll_build&quot;&gt;&lt;/a&gt;What you&apos;ll build&lt;/h3&gt;
&lt;p&gt;You&apos;ll build a simple web application with Angular CLI, a new tool for Angular 2 development. You&apos;ll
    create an application with search and edit features.&lt;/p&gt;

&lt;h3 id=&quot;_what_you_ll_need&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_what_you_ll_need&quot;&gt;&lt;/a&gt;What you&apos;ll need&lt;/h3&gt;

&lt;ul&gt;
    &lt;li&gt;About 30-40 minutes.
    &lt;/li&gt;
    &lt;li&gt;A favorite text editor or IDE. I recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ
        IDEA&lt;/a&gt; and its
        &lt;a href=&quot;https://plugins.jetbrains.com/plugin/8395?pr=idea&quot;&gt;Angular 2 TypeScript Live
            Templates
            plugin&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; and npm installed. I recommend using &lt;a
        href=&quot;https://github.com/creationix/nvm&quot;&gt;nvm&lt;/a&gt;.
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://github.com/angular/angular-cli&quot;&gt;Angular CLI&lt;/a&gt; installed. If you don&apos;t have
        Angular CLI installed, install it using &lt;code&gt;npm install -g angular-cli@latest&lt;/code&gt;.
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The latest release of Angular CLI (beta 10) uses Angular 2 RC4. Because of this, I used
    the master branch of Angular CLI to create this tutorial. To do this, clone &lt;a
        href=&quot;https://github.com/angular/angular-cli&quot;&gt;angular-cli&lt;/a&gt; and
    run &lt;code&gt;npm link&lt;/code&gt; in the directory you cloned it into. If you have issues,
    see &lt;a href=&quot;https://github.com/angular/angular-cli/issues/1773&quot;&gt;#1733&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
    &lt;a href=&quot;https://augury.angular.io/&quot;&gt;Angular Augury&lt;/a&gt; is a Google Chrome Dev Tools
    extension for debugging Angular 2 applications.
    I haven&apos;t needed it much myself, but I can see how it might come in handy.&lt;/p&gt;

&lt;h3 id=&quot;_create_your_project&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_create_your_project&quot;&gt;&lt;/a&gt;Create your project&lt;/h3&gt;
&lt;p&gt;Create a new project using the &lt;code&gt;ng new&lt;/code&gt; command:&lt;/p&gt;

&lt;pre&gt;ng new ng2-demo&lt;/pre&gt;

&lt;p&gt;This will create a &lt;code&gt;ng2-demo&lt;/code&gt; project and run &lt;code&gt;npm install&lt;/code&gt; in it. It takes
    about a minute to complete, but will vary based on your internet connection speed.&lt;/p&gt;

&lt;pre&gt;[mraible:~/dev] 45s $ ng new ng2-demo
installing ng2
  create .editorconfig
  create README.md
  create src/app/app.component.css
  create src/app/app.component.html
  create src/app/app.component.spec.ts
  create src/app/app.component.ts
  create src/app/environment.ts
  create src/app/index.ts
  create src/app/shared/index.ts
  create src/favicon.ico
  create src/index.html
  create src/main.ts
  create src/system-config.ts
  create src/tsconfig.json
  create src/typings.d.ts
  create angular-cli-build.js
  create angular-cli.json
  create config/environment.dev.ts
  create config/environment.js
  create config/environment.prod.ts
  create config/karma-test-shim.js
  create config/karma.conf.js
  create config/protractor.conf.js
  create e2e/app.e2e-spec.ts
  create e2e/app.po.ts
  create e2e/tsconfig.json
  create e2e/typings.d.ts
  create .gitignore
  create package.json
  create public/.npmignore
  create tslint.json
  create typings.json
Successfully initialized git.
- Installing packages for tooling via npm
  -- es6-shim (global)
  -- angular-protractor (global dev)
  -- jasmine (global dev)
  -- selenium-webdriver (global dev)

Installed packages for tooling via npm.
[mraible:~/dev] 1m5s $&lt;/pre&gt;

&lt;p&gt;You can see the what version of Angular CLI you&apos;re using with &lt;code&gt;ng --version&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;$ ng --version
angular-cli: local (v1.0.0-beta.11-webpack.2, branch: master)
node: 4.4.7
os: darwin x64&lt;/pre&gt;

&lt;h3 id=&quot;_run_the_application&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_run_the_application&quot;&gt;&lt;/a&gt;Run the application&lt;/h3&gt;

&lt;p&gt;The project is configured with a simple web server for development. To start it, run:&lt;/p&gt;

&lt;pre&gt;ng serve&lt;/pre&gt;

&lt;p&gt;You should see a screen like the one below at &lt;a href=&quot;http://localhost:4200&quot;&gt;http://localhost:4200&lt;/a&gt;.&lt;/p&gt;

&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/mraible/ng2-demo/master/src/assets/images/default-homepage.png&quot;
         alt=&quot;Default Homepage&quot; width=&quot;600&quot;&gt;
&lt;/p&gt;
&lt;p&gt;You can make sure your new project&apos;s tests pass, run &lt;code&gt;ng test&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;$ ng test
Built project successfully. Stored in &quot;dist/&quot;.
...
Chrome 52.0.2743 (Mac OS X 10.11.6): Executed 2 of 2 SUCCESS (0.039 secs / 0.012 secs)&lt;/pre&gt;

&lt;h3 id=&quot;_add_a_search_feature&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_add_a_search_feature&quot;&gt;&lt;/a&gt;Add a search feature&lt;/h3&gt;
&lt;p&gt;To add a search feature, open the project in an IDE or your favorite text editor. For IntelliJ IDEA, use
    File &amp;gt; New Project &amp;gt; Static Web and point to the &lt;code&gt;ng2-demo&lt;/code&gt; directory.&lt;/p&gt;

&lt;h3 id=&quot;_the_basics&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_the_basics&quot;&gt;&lt;/a&gt;The Basics&lt;/h3&gt;
&lt;p&gt;In a terminal window, cd into your project&apos;s directory and run the following command. This will
    create a search component.&lt;/p&gt;
&lt;pre&gt;$ ng g component search
installing component
  create src/app/search/search.component.css
  create src/app/search/search.component.html
  create src/app/search/search.component.spec.ts
  create src/app/search/search.component.ts
  create src/app/search/index.ts&lt;/pre&gt;

&lt;div class=&quot;quote&quot;&gt;
    &lt;p style=&quot;margin-top: 0&quot;&gt;&lt;strong&gt;Adding a Search Route&lt;/strong&gt;&lt;br&gt;

        In previous versions of CLI, you could generate a route
        &lt;strong&gt;and&lt;/strong&gt; a component. However, since beta 8, route generation has been
        disabled. This will likely be re-enabled in a future release.&lt;/p&gt;

    &lt;p&gt;The &lt;a href=&quot;https://angular.io/docs/ts/latest/guide/router.html&quot;&gt;Router
        documentation&lt;/a&gt;
        for Angular 2 RC5 provides the information you need to
        setup a route to the &lt;code&gt;SearchComponent&lt;/code&gt; you just generated. Here&apos;s a quick
        summary:&lt;/p&gt;

    &lt;p&gt;Create &lt;code&gt;src/app/app.routing.ts&lt;/code&gt; to define your routes.&lt;/p&gt;

    &lt;pre class=&quot;brush: js&quot;&gt;
import { Routes, RouterModule } from &apos;@angular/router&apos;;
import { SearchComponent } from &apos;./search/index&apos;;

const appRoutes: Routes = [
  { path: &apos;search&apos;, component: SearchComponent },
  { path: &apos;&apos;, redirectTo: &apos;/search&apos;, pathMatch: &apos;full&apos; }
];

export const appRoutingProviders: any[] = [];

export const routing = RouterModule.forRoot(appRoutes);
&lt;/pre&gt;
    &lt;p class=&quot;alert alert-warning&quot;&gt;
        Without the last path to redirect, there&apos;s a &lt;a
        href=&quot;http://stackoverflow.com/questions/38998085/error-cannot-match-any-routes-in-angular-2-rc5-with-angular-cli&quot;&gt;Cannot
        match any routes: &apos;&apos;&lt;/a&gt; console error.
    &lt;/p&gt;
    &lt;p&gt;In &lt;code&gt;src/app/app.module.ts&lt;/code&gt;, import the two constants you exported and
        configure them in &lt;code&gt;@NgModule&lt;/code&gt;:&lt;/p&gt;

    &lt;pre class=&quot;brush: js&quot;&gt;
import { routing, appRoutingProviders } from &apos;./app.routing&apos;;

import { SearchComponent } from &apos;./search/search.component&apos;;

@NgModule({
  ...
  imports: [
    ...
    routing
  ],
  providers: [appRoutingProviders],
  ...
})
export class AppModule { }
&lt;/pre&gt;
    &lt;p&gt;In &lt;code&gt;src/app/app.component.html&lt;/code&gt;, add a &lt;code&gt;RouterOutlet&lt;/code&gt; to display routes.&lt;/p&gt;

    &lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;!-- Routed views go here --&amp;gt;
&amp;lt;router-outlet&amp;gt;&amp;lt;/router-outlet&amp;gt;
&lt;/pre&gt;
    &lt;p style=&quot;margin-bottom: 0&quot;&gt;Now that you have routing setup, you can continue writing the search feature.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;To allow navigation to the &lt;code&gt;SearchComponent&lt;/code&gt;, you can add a link in &lt;code&gt;src/app/app.component.html&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;nav&amp;gt;
  &amp;lt;a routerLink=&quot;/search&quot; routerLinkActive=&quot;active&quot;&amp;gt;Search&amp;lt;/a&amp;gt;
&amp;lt;/nav&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Open &lt;code&gt;src/app/search/search.component.html&lt;/code&gt; and replace its default HTML with the following:&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;h2&amp;gt;Search&amp;lt;/h2&amp;gt;
&amp;lt;form&amp;gt;
  &amp;lt;input type=&quot;search&quot; name=&quot;query&quot; &amp;#91;(ngModel)&amp;#93;=&quot;query&quot; (keyup.enter)=&quot;search()&quot;&amp;gt;
  &amp;lt;button type=&quot;button&quot; (click)=&quot;search()&quot;&amp;gt;Search&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;pre&amp;gt;{{searchResults | json}}&amp;lt;/pre&amp;gt;
&lt;/pre&gt;
&lt;p&gt;If you still have &lt;code&gt;ng serve&lt;/code&gt; running, your browser should refresh automatically.
    If not, navigate to &lt;a href=&quot;http://localhost:4200&quot;&gt;http://localhost:4200&lt;/a&gt;, and you should see
    the search form.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/mraible/ng2-demo/master/src/assets/images/search-without-css.png&quot;
         alt=&quot;Search component&quot; width=&quot;600&quot;&gt;
&lt;/p&gt;
&lt;p&gt;If you want to add CSS for this components, open &lt;code&gt;src/app/search/search.component.css&lt;/code&gt; and
    add some CSS. For example:&lt;/p&gt;
&lt;pre class=&quot;brush: css&quot;&gt;
:host {
  display: block;
  padding: 0 20px;
}
&lt;/pre&gt;
&lt;p&gt;This section has shown you how to generate a new component to a basic Angular 2 application
    with Angular CLI. The next section shows you how to create a use a JSON file and &lt;code&gt;localStorage&lt;/code&gt; to
    create a fake API.&lt;/p&gt;

&lt;h3 id=&quot;_the_backend&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_the_backend&quot;&gt;&lt;/a&gt;The Backend&lt;/h3&gt;
&lt;p&gt;To get search results, create a &lt;code&gt;SearchService&lt;/code&gt; that makes HTTP requests to a JSON
    file. Start by generating a new service.&lt;/p&gt;
&lt;pre&gt;ng g service search&lt;/pre&gt;
&lt;p&gt;Move the generated &lt;code&gt;search.service.ts&lt;/code&gt; and its test to &lt;code&gt;app/shared/search&lt;/code&gt;. You
    will likely need to create this directory.&lt;/p&gt;
&lt;p&gt;Then, create &lt;code&gt;src/app/shared/search/data/people.json&lt;/code&gt; to hold your data.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
[
  {
    &quot;id&quot;: 1,
    &quot;name&quot;: &quot;Peyton Manning&quot;,
    &quot;phone&quot;: &quot;(303) 567-8910&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;1234 Main Street&quot;,
      &quot;city&quot;: &quot;Greenwood Village&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;80111&quot;
    }
  },
  {
    &quot;id&quot;: 2,
    &quot;name&quot;: &quot;Demaryius Thomas&quot;,
    &quot;phone&quot;: &quot;(720) 213-9876&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;5555 Marion Street&quot;,
      &quot;city&quot;: &quot;Denver&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;80202&quot;
    }
  },
  {
    &quot;id&quot;: 3,
    &quot;name&quot;: &quot;Von Miller&quot;,
    &quot;phone&quot;: &quot;(917) 323-2333&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;14 Mountain Way&quot;,
      &quot;city&quot;: &quot;Vail&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;81657&quot;
    }
  }
]
&lt;/pre&gt;
&lt;p&gt;Modify &lt;code&gt;src/app/shared/search/search.service.ts&lt;/code&gt; and provide &lt;code&gt;Http&lt;/code&gt; as
    a dependency in its constructor. In this same file, create a &lt;code&gt;getAll()&lt;/code&gt; method to gather all the people. Also,
    define the &lt;code&gt;Address&lt;/code&gt; and &lt;code&gt;Person&lt;/code&gt; classes that JSON will be marshalled to.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { Injectable } from &apos;@angular/core&apos;;
import { Http, Response } from &apos;@angular/http&apos;;

@Injectable()
export class SearchService {
  constructor(private http: Http) {}

  getAll() {
    return this.http.get(&apos;app/shared/search/data/people.json&apos;).map((res: Response) =&gt; res.json());
  }
}

export class Address {
  street: string;
  city: string;
  state: string;
  zip: string;

  constructor(obj?: any) {
    this.street = obj &amp;&amp; obj.street || null;
    this.city = obj &amp;&amp; obj.city || null;
    this.state = obj &amp;&amp; obj.state || null;
    this.zip = obj &amp;&amp; obj.zip || null;
  }
}

export class Person {
  id: number;
  name: string;
  phone: string;
  address: Address;

  constructor(obj?: any) {
    this.id = obj &amp;&amp; Number(obj.id) || null;
    this.name = obj &amp;&amp; obj.name || null;
    this.phone = obj &amp;&amp; obj.phone || null;
    this.address = obj &amp;&amp; obj.address || null;
  }
}
&lt;/pre&gt;
&lt;p&gt;To make these classes available for consumption by your components, edit &lt;code&gt;src/app/shared/index.ts&lt;/code&gt;
    and add the following:&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;export * from &apos;./search/search.service&apos;;&lt;/pre&gt;
&lt;p&gt;In &lt;code&gt;search.component.ts&lt;/code&gt;, add imports for these classes.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { Person, SearchService } from &apos;../shared/index&apos;;&lt;/pre&gt;
&lt;p&gt;You can now add &lt;code&gt;query&lt;/code&gt; and &lt;code&gt;searchResults&lt;/code&gt; variables. While you&apos;re
    there, modify the constructor to inject the &lt;code&gt;SearchService&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
export class SearchComponent implements OnInit {
  query: string;
  searchResults: Array&amp;lt;Person&gt;;

  constructor(private searchService: SearchService) {}
&lt;/pre&gt;
&lt;p&gt;Then implement the &lt;code&gt;search()&lt;/code&gt; method to call the service&apos;s &lt;code&gt;getAll()&lt;/code&gt; method.&lt;/p&gt;

&lt;pre class=&quot;brush: js&quot;&gt;
search(): void {
  this.searchService.getAll().subscribe(
    data =&gt; { this.searchResults = data; },
    error =&gt; console.log(error)
  );
}
&lt;/pre&gt;
&lt;p&gt;At this point, you&apos;ll likely see the following message in your browser&apos;s console.&lt;/p&gt;
&lt;pre&gt;ORIGINAL EXCEPTION: No provider for SearchService!&lt;/pre&gt;
&lt;p&gt;To fix the &quot;No provider&quot; error from above, update &lt;code&gt;app.component.ts&lt;/code&gt; to import the &lt;code&gt;SearchService&lt;/code&gt;
    and add the service to the list of providers.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { SearchService } from &apos;./shared/index&apos;;

@Component({
  ...
  styleUrls: [&apos;app.component.css&apos;],
  viewProviders: [SearchService]
})
&lt;/pre&gt;
&lt;p&gt;Now clicking the search button should work. To make the results look better, remove the
    &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; tag and replace it with a &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;table *ngIf=&quot;searchResults&quot;&amp;gt;
  &amp;lt;thead&amp;gt;
  &amp;lt;tr&amp;gt;
    &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;
    &amp;lt;th&amp;gt;Phone&amp;lt;/th&amp;gt;
    &amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;
  &amp;lt;/tr&amp;gt;
  &amp;lt;/thead&amp;gt;
  &amp;lt;tbody&amp;gt;
  &amp;lt;tr *ngFor=&quot;let person of searchResults; let i=index&quot;&amp;gt;
    &amp;lt;td&amp;gt;{{person.name}}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;{{person.phone}}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;{{person.address.street}}&amp;lt;br/&amp;gt;
      {{person.address.city}}, {{person.address.state}} {{person.address.zip}}
    &amp;lt;/td&amp;gt;
  &amp;lt;/tr&amp;gt;
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Then add some additional CSS to improve its table layout.&lt;/p&gt;
&lt;pre class=&quot;brush: css&quot;&gt;
table {
  margin-top: 10px;
  border-collapse: collapse;
}

th {
  text-align: left;
  border-bottom: 2px solid #ddd;
  padding: 8px;
}

td {
  border-top: 1px solid #ddd;
  padding: 8px;
}
&lt;/pre&gt;
&lt;p&gt;Now the search results look better.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;img
        src=&quot;https://raw.githubusercontent.com/mraible/ng2-demo/master/src/assets/images/search-results.png&quot;
        alt=&quot;Search Results&quot; width=&quot;600&quot;&gt;
&lt;/p&gt;
&lt;p&gt;But wait, we still don&apos;t have search functionality! To add a search feature, add a
    &lt;code&gt;search()&lt;/code&gt; method to &lt;code&gt;SearchService&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
search(q: string) {
  if (!q || q === &apos;*&apos;) {
    q = &apos;&apos;;
  } else {
    q = q.toLowerCase();
  }
  return this.getAll().map(data =&gt; {
    let results: any = [];
    data.map(item =&gt; {
      if (JSON.stringify(item).toLowerCase().includes(q)) {
        results.push(item);
      }
    });
    return results;
  });
}
&lt;/pre&gt;
&lt;p&gt;Then refactor &lt;code&gt;SearchComponent&lt;/code&gt; to call this method with its &lt;code&gt;query&lt;/code&gt; variable.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
search(): void {
  this.searchService.search(this.query).subscribe(
    data =&gt; { this.searchResults = data; },
    error =&gt; console.log(error)
  );
}
&lt;/pre&gt;
&lt;p&gt;Now search results will be filtered by the query value you type in.&lt;/p&gt;
&lt;p&gt;This section showed you how to fetch and display search results. The next section builds on
    this and shows how to edit and save a record.&lt;/p&gt;

&lt;h3 id=&quot;_add_an_edit_feature&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_add_an_edit_feature&quot;&gt;&lt;/a&gt;Add an edit feature&lt;/h3&gt;

&lt;p&gt;Modify &lt;code&gt;search.component.html&lt;/code&gt; to add a click handler for editing a person.&lt;/p&gt;

&lt;pre class=&quot;brush: xml&quot;&gt;
&amp;lt;td&amp;gt;&amp;lt;a (click)=&quot;onSelect(person)&quot;&amp;gt;{{person.name}}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
&lt;/pre&gt;

&lt;div class=&quot;alert alert-warning&quot;&gt;
    &lt;p&gt;In previous versions of Angular 2, you could embed a link with parameters directly into the HTML.
        For example:&lt;/p&gt;
    &lt;pre&gt;&amp;lt;a &amp;#91;routerLink&amp;#93;=&quot;&amp;#91;&apos;/edit&apos;, person.id&amp;#93;&quot;&amp;gt;&lt;/pre&gt;

    &lt;p&gt;Unfortunately, this doesn&apos;t work with RC5. Another issue is adding &lt;code&gt;href=&quot;&quot;&lt;/code&gt; causes
        the page to refresh. Without &lt;code&gt;href&lt;/code&gt;, the link doesn&apos;t look like a link.
        If you know of a solution to this problem, please send me a pull request.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Then add &lt;code&gt;onSelect(person)&lt;/code&gt; to &lt;code&gt;search.component.ts&lt;/code&gt;. You&apos;ll need to import
    &lt;code&gt;Router&lt;/code&gt; and set it as a local variable to make this work.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { Router } from &apos;@angular/router&apos;;
...
export class SearchComponent implements OnInit {
  ...

  constructor(private searchService: SearchService, private router: Router) { }

  ...

  onSelect(person: Person) {
    this.router.navigate([&apos;/edit&apos;, person.id]);
  }
}
&lt;/pre&gt;
&lt;p&gt;Run the following command to generate an &lt;code&gt;EditComponent&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;$ ng g component edit
installing component
  create src/app/edit/edit.component.css
  create src/app/edit/edit.component.html
  create src/app/edit/edit.component.spec.ts
  create src/app/edit/edit.component.ts
  create src/app/edit/index.ts&lt;/pre&gt;
&lt;p&gt;Add a route for this component in &lt;code&gt;app.routing.ts&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { EditComponent } from &apos;./edit/index&apos;;

const appRoutes: Routes = [
  { path: &apos;search&apos;, component: SearchComponent },
  { path: &apos;edit/:id&apos;, component: EditComponent },
  { path: &apos;&apos;, redirectTo: &apos;/search&apos;, pathMatch: &apos;full&apos; }
];
&lt;/pre&gt;
&lt;p&gt;Update &lt;code&gt;src/app/edit/edit.component.html&lt;/code&gt; to display an editable form. You might notice
    I&apos;ve added &lt;code&gt;id&lt;/code&gt; attributes to most elements. This is to
    make things easier when writing integration tests with Protractor.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
&amp;lt;div *ngIf=&quot;person&quot;&amp;gt;
  &amp;lt;h3&amp;gt;{{editName}}&amp;lt;/h3&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Id:&amp;lt;/label&amp;gt;
    {{person.id}}
  &amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Name:&amp;lt;/label&amp;gt;
    &amp;lt;input &amp;#91;(ngModel)&amp;#93;=&quot;editName&quot; name=&quot;name&quot; id=&quot;name&quot; placeholder=&quot;name&quot;/&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Phone:&amp;lt;/label&amp;gt;
    &amp;lt;input &amp;#91;(ngModel)&amp;#93;=&quot;editPhone&quot; name=&quot;phone&quot; id=&quot;phone&quot; placeholder=&quot;Phone&quot;/&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;fieldset&amp;gt;
    &amp;lt;legend&amp;gt;Address:&amp;lt;/legend&amp;gt;
    &amp;lt;address&amp;gt;
      &amp;lt;input &amp;#91;(ngModel)&amp;#93;=&quot;editAddress.street&quot; id=&quot;street&quot;&amp;gt;&amp;lt;br/&amp;gt;
      &amp;lt;input &amp;#91;(ngModel)&amp;#93;=&quot;editAddress.city&quot; id=&quot;city&quot;&amp;gt;,
      &amp;lt;input &amp;#91;(ngModel)&amp;#93;=&quot;editAddress.state&quot; id=&quot;state&quot; size=&quot;2&quot;&amp;gt;
      &amp;lt;input &amp;#91;(ngModel)&amp;#93;=&quot;editAddress.zip&quot; id=&quot;zip&quot; size=&quot;5&quot;&amp;gt;
    &amp;lt;/address&amp;gt;
  &amp;lt;/fieldset&amp;gt;
  &amp;lt;button (click)=&quot;save()&quot; id=&quot;save&quot;&amp;gt;Save&amp;lt;/button&amp;gt;
  &amp;lt;button (click)=&quot;cancel()&quot; id=&quot;cancel&quot;&amp;gt;Cancel&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Modify &lt;code&gt;EditComponent&lt;/code&gt; to import model and service classes and to use the
    &lt;code&gt;SearchService&lt;/code&gt; to get data.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { Component, OnInit, OnDestroy } from &apos;@angular/core&apos;;
import { Address, Person, SearchService } from &apos;../shared/index&apos;;
import { Subscription } from &apos;rxjs&apos;;
import { ActivatedRoute, Router } from &apos;@angular/router&apos;;

@Component({
  selector: &apos;app-edit&apos;,
  templateUrl: &apos;edit.component.html&apos;,
  styleUrls: [&apos;edit.component.css&apos;]
})
export class EditComponent implements OnInit, OnDestroy {
  person: Person;
  editName: string;
  editPhone: string;
  editAddress: Address;

  sub: Subscription;

  constructor(private route: ActivatedRoute,
              private router: Router,
              private service: SearchService) {
  }

  ngOnInit() {
    this.sub = this.route.params.subscribe(params =&gt; {
      let id = + params[&apos;id&apos;]; // (+) converts string &apos;id&apos; to a number
      this.service.get(id).subscribe(person =&gt; {
        if (person) {
          this.editName = person.name;
          this.editPhone = person.phone;
          this.editAddress = person.address;
          this.person = person;
        } else {
          this.gotoList();
        }
      });
    });
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }

  cancel() {
    this.router.navigate([&apos;/search&apos;]);
  }

  save() {
    this.person.name = this.editName;
    this.person.phone = this.editPhone;
    this.person.address = this.editAddress;
    this.service.save(this.person);
    this.gotoList();
  }

  gotoList() {
    if (this.person) {
      this.router.navigate([&apos;/search&apos;, {term: this.person.name} ]);
    } else {
      this.router.navigate([&apos;/search&apos;]);
    }
  }
}
&lt;/pre&gt;
&lt;p&gt;Modify &lt;code&gt;SearchService&lt;/code&gt; to contain functions for finding a person by their id, and saving
    them. While you&apos;re in there, modify the &lt;code&gt;search()&lt;/code&gt; method to
    be aware of updated objects in &lt;code&gt;localStorage&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
search(q: string) {
  if (!q || q === &apos;*&apos;) {
    q = &apos;&apos;;
  } else {
    q = q.toLowerCase();
  }
  return this.getAll().map(data =&gt; {
    let results: any = [];
    data.map(item =&gt; {
      // check for item in localStorage
      if (localStorage[&apos;person&apos; + item.id]) {
        item = JSON.parse(localStorage[&apos;person&apos; + item.id]);
      }
      if (JSON.stringify(item).toLowerCase().includes(q)) {
        results.push(item);
      }
    });
    return results;
  });
}

get(id: number) {
  return this.getAll().map(all =&gt; {
    if (localStorage[&apos;person&apos; + id]) {
      return JSON.parse(localStorage[&apos;person&apos; + id]);
    }
    return all.find(e =&gt; e.id === id);
  });
}

save(person: Person) {
  localStorage[&apos;person&apos; + person.id] = JSON.stringify(person);
}
&lt;/pre&gt;
&lt;p&gt;You can add CSS to &lt;code&gt;src/app/edit/edit.component.css&lt;/code&gt; if you want to make the form look a
    bit better.&lt;/p&gt;
&lt;pre class=&quot;brush: css&quot;&gt;
:host {
  display: block;
  padding: 0 20px;
}

button {
  margin-top: 10px;
}
&lt;/pre&gt;
&lt;p&gt;At this point, you should be able to search for a person and update their information.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;img src=&quot;https://rawgit.com/mraible/ng2-demo/master//src/assets/images/edit-form.png&quot;
         alt=&quot;Edit form&quot;
         width=&quot;600&quot;&gt;
&lt;/p&gt;
&lt;p&gt;The &amp;lt;form&amp;gt; in &lt;code&gt;src/app/edit/edit.component.html&lt;/code&gt; calls a &lt;code&gt;save()&lt;/code&gt;
    function to update a person&apos;s data. You already implemented this above.
    The function calls a &lt;code&gt;gotoList()&lt;/code&gt; function that appends the person&apos;s name to the URL when
    sending the user back to the search screen.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
gotoList() {
  if (this.person) {
    this.router.navigate([&apos;/search&apos;, {term: this.person.name} ]);
  } else {
    this.router.navigate([&apos;/search&apos;]);
  }
}
&lt;/pre&gt;
&lt;p&gt;Since the &lt;code&gt;SearchComponent&lt;/code&gt; doesn&apos;t execute a search automatically when you execute this
    URL, add the following logic to do so in its constructor.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { Router, ActivatedRoute } from &apos;@angular/router&apos;;
import { Subscription } from &apos;rxjs&apos;;
...
  sub: Subscription;

  constructor(private searchService: SearchService, private router: Router, private route: ActivatedRoute) {
    this.sub = this.route.params.subscribe(params =&gt; {
      if (params[&apos;term&apos;]) {
        this.query = decodeURIComponent(params[&apos;term&apos;]);
        this.search();
      }
    });
  }
&lt;/pre&gt;
&lt;p&gt;You&apos;ll want to implement &lt;code&gt;OnDestroy&lt;/code&gt; and define the &lt;code&gt;ngOnDestroy&lt;/code&gt; method to
    clean up this subscription.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { Component, OnInit, OnDestroy } from &apos;@angular/core&apos;;

export class SearchComponent implements OnInit, OnDestroy {
...
  ngOnDestroy() {
    this.sub.unsubscribe();
  }
}
&lt;/pre&gt;
&lt;p&gt;After making all these changes, you should be able to search/edit/update a person&apos;s information. If
    it works - nice job!&lt;/p&gt;

&lt;h3 id=&quot;_testing&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_testing&quot;&gt;&lt;/a&gt;Testing&lt;/h3&gt;

&lt;p&gt;Now that you&apos;ve built an application, it&apos;s important to test it to ensure it works. The best reason for
    writing tests is to automate your testing. Without tests, you&apos;ll likely be testing manually. This manual testing will
    take longer and longer as your application grows.&lt;/p&gt;
&lt;p&gt;In this section, you&apos;ll learn to use &lt;a href=&quot;http://jasmine.github.io/&quot;&gt;Jasmine&lt;/a&gt; for unit testing
    controllers and &lt;a href=&quot;https://angular.github.io/protractor/&quot;&gt;Protractor&lt;/a&gt; for
    integration testing. Angular&apos;s testing documentation lists &lt;a
        href=&quot;https://angular.io/docs/ts/latest/guide/testing.html&quot;&gt;good reasons to test&lt;/a&gt;, but doesn&apos;t currently have many examples.&lt;/p&gt;

&lt;h3 id=&quot;_unit_test_the_searchservice&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_unit_test_the_searchservice&quot;&gt;&lt;/a&gt;Unit test
    the SearchService&lt;/h3&gt;
&lt;p&gt;Modify &lt;code&gt;src/app/shared/search/search.service.spec.ts&lt;/code&gt; and setup the test&apos;s infrastructure
    using &lt;a href=&quot;https://angular.io/docs/js/latest/api/http/testing/MockBackend-class.html&quot;&gt;MockBackend&lt;/a&gt;
    and &lt;a href=&quot;https://angular.io/docs/ts/latest/api/http/index/BaseRequestOptions-class.html&quot;&gt;BaseRequestOptions&lt;/a&gt;.
&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { MockBackend } from &apos;@angular/http/testing&apos;;
import { Http, ConnectionBackend, BaseRequestOptions, Response, ResponseOptions } from &apos;@angular/http&apos;;
import { SearchService } from &apos;./search.service&apos;;
import { tick, fakeAsync } from &apos;@angular/core/testing/fake_async&apos;;
import { inject, TestBed } from &apos;@angular/core/testing/test_bed&apos;;

describe(&apos;SearchService&apos;, () =&gt; {
  beforeEach(() =&gt; {

    TestBed.configureTestingModule({
      providers: [
        {
          provide: Http, useFactory: (backend: ConnectionBackend, defaultOptions: BaseRequestOptions) =&gt; {
          return new Http(backend, defaultOptions);
        }, deps: [MockBackend, BaseRequestOptions]
        },
        {provide: SearchService, useClass: SearchService},
        {provide: MockBackend, useClass: MockBackend},
        {provide: BaseRequestOptions, useClass: BaseRequestOptions}
      ]
    });
  });
});
&lt;/pre&gt;
&lt;p&gt;If you run &lt;code&gt;ng test&lt;/code&gt;, you will likely see some errors about the test stubs that Angular
    CLI created for you. You can ignore these for now.&lt;/p&gt;
&lt;pre&gt;ERROR in [default] /Users/mraible/ng2-demo/src/app/edit/edit.component.spec.ts:10:20
Supplied parameters do not match any signature of call target.

ERROR in [default] /Users/mraible/ng2-demo/src/app/search/search.component.spec.ts:10:20
Supplied parameters do not match any signature of call target.&lt;/pre&gt;
&lt;p&gt;Add the first test of &lt;code&gt;getAll()&lt;/code&gt; to &lt;code&gt;search.service.spec.ts&lt;/code&gt;. This test shows
    how &lt;code&gt;MockBackend&lt;/code&gt; can be used to mock results and set the response.&lt;/p&gt;
&lt;p class=&quot;alert alert-info&quot;&gt;
    &lt;strong&gt;TIP:&lt;/strong&gt;
    When you are testing code that returns either a Promise or an RxJS Observable, you can use
    the &lt;code&gt;fakeAsync&lt;/code&gt; helper to test that code as if it were synchronous.
    Promises are be fulfilled and Observables are notified immediately after you call &lt;code&gt;tick()&lt;/code&gt;.
&lt;/p&gt;
&lt;p&gt;The test below should be on the same level as &lt;code&gt;beforeEach&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
it(&apos;should retrieve all search results&apos;,
  inject([SearchService, MockBackend], fakeAsync((searchService: SearchService, mockBackend: MockBackend) =&gt; {
    let res: Response;
    mockBackend.connections.subscribe(c =&gt; {
      expect(c.request.url).toBe(&apos;app/shared/search/data/people.json&apos;);
      let response = new ResponseOptions({body: &apos;[{&quot;name&quot;: &quot;John Elway&quot;}, {&quot;name&quot;: &quot;Gary Kubiak&quot;}]&apos;});
      c.mockRespond(new Response(response));
    });
    searchService.getAll().subscribe((response) =&gt; {
      res = response;
    });
    tick();
    expect(res[0].name).toBe(&apos;John Elway&apos;);
  }))
);
&lt;/pre&gt;
&lt;p&gt;Notice that tests continually run as you add them when using &lt;code&gt;ng test&lt;/code&gt;. You can run tests
    once by using &lt;code&gt;ng test --watch=false&lt;/code&gt;.
    You will likely see &quot;Executed 5 of 5 &lt;span style=&quot;color: red&quot;&gt;(1 FAILED)&lt;/span&gt;&quot; in your terminal.
    Add a couple more tests for filtering by search term and fetching by id.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
it(&apos;should filter by search term&apos;,
  inject([SearchService, MockBackend], fakeAsync((searchService: SearchService, mockBackend: MockBackend) =&gt; {
    let res;
    mockBackend.connections.subscribe(c =&gt; {
      expect(c.request.url).toBe(&apos;app/shared/search/data/people.json&apos;);
      let response = new ResponseOptions({body: &apos;[{&quot;name&quot;: &quot;John Elway&quot;}, {&quot;name&quot;: &quot;Gary Kubiak&quot;}]&apos;});
      c.mockRespond(new Response(response));
    });
    searchService.search(&apos;john&apos;).subscribe((response) =&gt; {
      res = response;
    });
    tick();
    expect(res[0].name).toBe(&apos;John Elway&apos;);
  }))
);

it(&apos;should fetch by id&apos;,
  inject([SearchService, MockBackend], fakeAsync((searchService: SearchService, mockBackend: MockBackend) =&gt; {
    let res;
    mockBackend.connections.subscribe(c =&gt; {
      expect(c.request.url).toBe(&apos;app/shared/search/data/people.json&apos;);
      let response = new ResponseOptions({body: &apos;[{&quot;id&quot;: 1, &quot;name&quot;: &quot;John Elway&quot;}, {&quot;id&quot;: 2, &quot;name&quot;: &quot;Gary Kubiak&quot;}]&apos;});
      c.mockRespond(new Response(response));
    });
    searchService.search(&apos;2&apos;).subscribe((response) =&gt; {
      res = response;
    });
    tick();
    expect(res[0].name).toBe(&apos;Gary Kubiak&apos;);
  }))
);
&lt;/pre&gt;
&lt;h3 id=&quot;_unit_test_the_searchcomponent&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_unit_test_the_searchcomponent&quot;&gt;&lt;/a&gt;Unit
    test the SearchComponent&lt;/h3&gt;
&lt;p&gt;To unit test the &lt;code&gt;SearchComponent&lt;/code&gt;, create a &lt;code&gt;MockSearchProvider&lt;/code&gt; that has
    &lt;a  href=&quot;http://angular-tips.com/blog/2014/03/introduction-to-unit-test-spies/&quot;&gt;spies&lt;/a&gt;.
    These allow you to &lt;em&gt;spy&lt;/em&gt; on functions to check if they were called.&lt;/p&gt;
&lt;p&gt;Create &lt;code&gt;src/app/shared/search/mocks/search.service.ts&lt;/code&gt; and populate it with spies for each
    method, as well as methods to set the response and subscribe to results.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { SpyObject } from &apos;./helper&apos;;
import { SearchService } from &apos;../search.service&apos;;
import Spy = jasmine.Spy;

export class MockSearchService extends SpyObject {
  getAllSpy: Spy;
  getByIdSpy: Spy;
  searchSpy: Spy;
  saveSpy: Spy;
  fakeResponse: any;

  constructor() {
    super( SearchService );

    this.fakeResponse = null;
    this.getAllSpy = this.spy(&apos;getAll&apos;).andReturn(this);
    this.getByIdSpy = this.spy(&apos;get&apos;).andReturn(this);
    this.searchSpy = this.spy(&apos;search&apos;).andReturn(this);
    this.saveSpy = this.spy(&apos;save&apos;).andReturn(this);
  }

  subscribe(callback: any) {
    callback(this.fakeResponse);
  }

  setResponse(json: any): void {
    this.fakeResponse = json;
  }
}
&lt;/pre&gt;
&lt;p&gt;In this same directory, create a &lt;code&gt;helper.ts&lt;/code&gt; class to implement the
    &lt;code&gt;SpyObject&lt;/code&gt; that &lt;code&gt;MockSearchService&lt;/code&gt; extends.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import {StringMapWrapper} from &apos;@angular/core/src/facade/collection&apos;;

export interface GuinessCompatibleSpy extends jasmine.Spy {
  /** By chaining the spy with and.returnValue, all calls to the function will return a specific
   * value. */
  andReturn(val: any): void;
  /** By chaining the spy with and.callFake, all calls to the spy will delegate to the supplied
   * function. */
  andCallFake(fn: Function): GuinessCompatibleSpy;
  /** removes all recorded calls */
  reset();
}

export class SpyObject {
  static stub(object = null, config = null, overrides = null) {
    if (!(object instanceof SpyObject)) {
      overrides = config;
      config = object;
      object = new SpyObject();
    }

    let m = StringMapWrapper.merge(config, overrides);
    StringMapWrapper.forEach(m, (value, key) =&amp;gt; { object.spy(key).andReturn(value); });
    return object;
  }

  constructor(type = null) {
    if (type) {
      for (let prop in type.prototype) {
        let m = null;
        try {
          m = type.prototype&amp;#91;prop&amp;#93;;
        } catch (e) {
          // As we are creating spys for abstract classes,
          // these classes might have getters that throw when they are accessed.
          // As we are only auto creating spys for methods, this
          // should not matter.
        }
        if (typeof m === &apos;function&apos;) {
          this.spy(prop);
        }
      }
    }
  }

  spy(name) {
    if (!this&amp;#91;name&amp;#93;) {
      this&amp;#91;name&amp;#93; = this._createGuinnessCompatibleSpy(name);
    }
    return this&amp;#91;name&amp;#93;;
  }

  prop(name, value) { this&amp;#91;name&amp;#93; = value; }

  /** @internal */
  _createGuinnessCompatibleSpy(name): GuinessCompatibleSpy {
    let newSpy: GuinessCompatibleSpy = &amp;lt;any&amp;gt;jasmine.createSpy(name);
    newSpy.andCallFake = &amp;lt;any&amp;gt;newSpy.and.callFake;
    newSpy.andReturn = &amp;lt;any&amp;gt;newSpy.and.returnValue;
    newSpy.reset = &amp;lt;any&amp;gt;newSpy.calls.reset;
    // revisit return null here (previously needed for rtts_assert).
    newSpy.and.returnValue(null);
    return newSpy;
  }
}
&lt;/pre&gt;
&lt;p&gt;Alongside, create &lt;code&gt;routes.ts&lt;/code&gt; to mock Angular&apos;s &lt;code&gt;Router&lt;/code&gt; and &lt;code&gt;ActivatedRoute&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { ActivatedRoute, Params } from &apos;@angular/router&apos;;
import { Observable } from &apos;rxjs&apos;;

export class MockActivatedRoute extends ActivatedRoute {
  params: Observable&amp;lt;Params&amp;gt;

  constructor(parameters?: { [key: string]: any; }) {
    super();
    this.params = Observable.of(parameters);
  }
}

export class MockRouter {
  navigate = jasmine.createSpy(&apos;navigate&apos;);
}
&lt;/pre&gt;
&lt;p&gt;With mocks in place, you can &lt;code&gt;TestBed.configureTestingModule()&lt;/code&gt; to setup &lt;code&gt;SearchComponent&lt;/code&gt;
    to use these as providers.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { ActivatedRoute, Router } from &apos;@angular/router&apos;;
import { MockActivatedRoute, MockRouter } from &apos;../shared/search/mocks/routes&apos;;
import { MockSearchService } from &apos;../shared/search/mocks/search.service&apos;;
import { SearchComponent } from &apos;./search.component&apos;;
import { TestBed } from &apos;@angular/core/testing/test_bed&apos;;
import { FormsModule } from &apos;@angular/forms&apos;;
import { SearchService } from &apos;../shared/search/search.service&apos;;

describe(&apos;Component: Search&apos;, () =&gt; {
  let mockSearchService: MockSearchService;
  let mockActivatedRoute: MockActivatedRoute;
  let mockRouter: MockRouter;

  beforeEach(() =&gt; {
    mockSearchService = new MockSearchService();
    mockActivatedRoute = new MockActivatedRoute({&apos;term&apos;: &apos;peyton&apos;});
    mockRouter = new MockRouter();

    TestBed.configureTestingModule({
      declarations: [SearchComponent],
      providers: [
        {provide: SearchService, useValue: mockSearchService},
        {provide: ActivatedRoute, useValue: mockActivatedRoute},
        {provide: Router, useValue: mockRouter}
      ],
      imports: [FormsModule]
    });
  });
});
&lt;/pre&gt;
&lt;p&gt;Add two tests, one to verify a search term is used when it&apos;s set on the component, and a second
    to verify search is called when a term is passed in as a route parameter.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
it(&apos;should search when a term is set and search() is called&apos;, () =&gt; {
  let fixture = TestBed.createComponent(SearchComponent);
  let searchComponent = fixture.debugElement.componentInstance;
  searchComponent.query = &apos;M&apos;;
  searchComponent.search();
  expect(mockSearchService.searchSpy).toHaveBeenCalledWith(&apos;M&apos;);
});

it(&apos;should search automatically when a term is on the URL&apos;, () =&gt; {
  let fixture = TestBed.createComponent(SearchComponent);
  fixture.detectChanges();
  expect(mockSearchService.searchSpy).toHaveBeenCalledWith(&apos;peyton&apos;);
});
&lt;/pre&gt;

&lt;p&gt;After adding these tests, you should see the first instance of all tests passing (Executed 8 of 8
    &lt;span style=&quot;color: green&quot;&gt;SUCCESS&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;Update the test for &lt;code&gt;EditComponent&lt;/code&gt;, verifying fetching a single record works. Notice
    how you can access the component directly with &lt;code&gt;fixture.debugElement.componentInstance&lt;/code&gt;, or
    its rendered version with &lt;code&gt;fixture.debugElement.nativeElement&lt;/code&gt;.
&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { MockSearchService } from &apos;../shared/search/mocks/search.service&apos;;
import { EditComponent } from &apos;./edit.component&apos;;
import { TestBed } from &apos;@angular/core/testing/test_bed&apos;;
import { SearchService } from &apos;../shared/search/search.service&apos;;
import { MockRouter, MockActivatedRoute } from &apos;../shared/search/mocks/routes&apos;;
import { ActivatedRoute, Router } from &apos;@angular/router&apos;;
import { FormsModule } from &apos;@angular/forms&apos;;

describe(&apos;Component: Edit&apos;, () =&gt; {
  let mockSearchService: MockSearchService;
  let mockActivatedRoute: MockActivatedRoute;
  let mockRouter: MockRouter;

  beforeEach(() =&gt; {
    mockSearchService = new MockSearchService();
    mockActivatedRoute = new MockActivatedRoute({&apos;id&apos;: 1});
    mockRouter = new MockRouter();

    TestBed.configureTestingModule({
      declarations: [EditComponent],
      providers: [
        {provide: SearchService, useValue: mockSearchService},
        {provide: ActivatedRoute, useValue: mockActivatedRoute},
        {provide: Router, useValue: mockRouter}
      ],
      imports: [FormsModule]
    });
  });

  it(&apos;should fetch a single record&apos;, () =&gt; {
    const fixture = TestBed.createComponent(EditComponent);

    let person = {name: &apos;Emmanuel Sanders&apos;, address: {city: &apos;Denver&apos;}};
    mockSearchService.setResponse(person);

    fixture.detectChanges();
    // verify service was called
    expect(mockSearchService.getByIdSpy).toHaveBeenCalledWith(1);

    // verify data was set on component when initialized
    let editComponent = fixture.debugElement.componentInstance;
    expect(editComponent.editAddress.city).toBe(&apos;Denver&apos;);

    // verify HTML renders as expected
    let compiled = fixture.debugElement.nativeElement;
    expect(compiled.querySelector(&apos;h3&apos;).innerHTML).toBe(&apos;Emmanuel Sanders&apos;);
  });
});
&lt;/pre&gt;
&lt;p&gt;You should see &quot;Executed 8 of 8 &lt;span style=&quot;color: green&quot;&gt;SUCCESS&lt;/span&gt; (0.238 secs / 0.259
    secs)&quot; in the shell window that&apos;s running &lt;code&gt;ng test&lt;/code&gt;. If you don&apos;t, try cancelling the command and
    restarting.&lt;/p&gt;
&lt;h3 id=&quot;_integration_test_the_search_ui&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_integration_test_the_search_ui&quot;&gt;&lt;/a&gt;Integration test the search UI&lt;/h3&gt;
&lt;p&gt;To test if the application works end-to-end, you can write tests with &lt;a
    href=&quot;http://angular.github.io/protractor&quot;&gt;Protractor&lt;/a&gt;. These are also known as integration
    tests, since they test the &lt;em&gt;integration&lt;/em&gt; between all layers of your application.&lt;/p&gt;
&lt;p&gt;To verify end-to-end tests work in the project before you begin, run the following commands in three
    different console windows.&lt;/p&gt;
&lt;pre&gt;ng serve
ng e2e&lt;/pre&gt;
&lt;p&gt;All tests should pass.&lt;/p&gt;
&lt;pre&gt;$ ng e2e

&amp;gt; ng2-demo@0.0.0 pree2e /Users/mraible/dev/ng2-demo
&amp;gt; webdriver-manager update

Updating selenium standalone to version 2.52.0
downloading https://selenium-release.storage.googleapis.com/2.52/selenium-server-standalone-2.52.0.jar...
Updating chromedriver to version 2.21
downloading https://chromedriver.storage.googleapis.com/2.21/chromedriver_mac32.zip...
chromedriver_2.21mac32.zip downloaded to /Users/mraible/dev/ng2-demo/node_modules/protractor/selenium/chromedriver_2.21mac32.zip
selenium-server-standalone-2.52.0.jar downloaded to /Users/mraible/dev/ng2-demo/node_modules/protractor/selenium/selenium-server-standalone-2.52.0.jar

&amp;gt; ng2-demo@0.0.0 e2e /Users/mraible/dev/ng2-demo
&amp;gt; protractor &quot;config/protractor.conf.js&quot;

[00:01:07] I/direct - Using ChromeDriver directly...
[00:01:07] I/launcher - Running 1 instances of WebDriver
Spec started

  ng2-demo App
    &amp;#10004; should display message saying app works

Executed 1 of 1 spec SUCCESS in 0.684 sec.
[00:01:09] I/launcher - 0 instance(s) of WebDriver still running
[00:01:09] I/launcher - chrome #01 passed

All end-to-end tests pass.&lt;/pre&gt;
&lt;h3 id=&quot;_testing_the_search_feature&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_testing_the_search_feature&quot;&gt;&lt;/a&gt;Testing the
    search feature&lt;/h3&gt;
&lt;p&gt;Create end-to-end tests in &lt;code&gt;e2e/search.e2e-spec.ts&lt;/code&gt; to verify the search feature works.
    Populate it with the following code:&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
describe(&apos;Search&apos;, () =&gt; {

  beforeEach(() =&gt; {
    browser.get(&apos;/search&apos;);
    element(by.linkText(&apos;Search&apos;)).click();
  });

  it(&apos;should have an input and search button&apos;, () =&gt; {
    expect(element(by.css(&apos;app-root app-search form input&apos;)).isPresent()).toEqual(true);
    expect(element(by.css(&apos;app-root app-search form button&apos;)).isPresent()).toEqual(true);
  });

  it(&apos;should allow searching&apos;, () =&gt; {
    let searchButton = element(by.css(&apos;button&apos;));
    let searchBox = element(by.css(&apos;input&apos;));
    searchBox.sendKeys(&apos;M&apos;);
    searchButton.click().then(() =&gt; {
      var list = element.all(by.css(&apos;app-search table tbody tr&apos;));
      expect(list.count()).toBe(3);
    });
  });
});
&lt;/pre&gt;
&lt;h3 id=&quot;_testing_the_edit_feature&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_testing_the_edit_feature&quot;&gt;&lt;/a&gt;Testing the edit feature&lt;/h3&gt;
&lt;p&gt;Create a &lt;code&gt;e2e/edit.e2e-spec.ts&lt;/code&gt; test to verify the &lt;code&gt;EditComponent&lt;/code&gt; renders a
    person&apos;s information and that their information can be updated.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
describe(&apos;Edit&apos;, () =&gt; {

  beforeEach(() =&gt; {
    browser.get(&apos;/edit/1&apos;);
  });

  let name = element(by.id(&apos;name&apos;));
  let street = element(by.id(&apos;street&apos;));
  let city = element(by.id(&apos;city&apos;));

  it(&apos;should allow viewing a person&apos;, () =&gt; {
    expect(element(by.css(&apos;h3&apos;)).getText()).toEqual(&apos;Peyton Manning&apos;);
    expect(name.getAttribute(&apos;value&apos;)).toEqual(&apos;Peyton Manning&apos;);
    expect(street.getAttribute(&apos;value&apos;)).toEqual(&apos;1234 Main Street&apos;);
    expect(city.getAttribute(&apos;value&apos;)).toEqual(&apos;Greenwood Village&apos;);
  });

  it(&apos;should allow updating a name&apos;, function () {
    let save = element(by.id(&apos;save&apos;));
    // send individual characters since sendKeys passes partial values sometimes
    // https://github.com/angular/protractor/issues/698
    &apos; Won!&apos;.split(&apos;&apos;).forEach((c) =&gt; name.sendKeys(c));
    save.click();
    // verify one element matched this change
    var list = element.all(by.css(&apos;app-search table tbody tr&apos;));
    expect(list.count()).toBe(1);
  });
});
&lt;/pre&gt;
&lt;p&gt;Run &lt;code&gt;ng e2e&lt;/code&gt; to verify all your end-to-end tests pass. You should see a success message
    similar to the one below in your terminal window.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;img  src=&quot;https://raw.githubusercontent.com/mraible/ng2-demo/master/src/assets/images/protractor-success.png&quot;
          alt=&quot;Protractor success&quot; width=&quot;600&quot;&gt;
&lt;/p&gt;
&lt;p&gt;If you made it this far and have all your specs passing - congratulations! You&apos;re well on your way to
    writing quality code with Angular 2 and verifying it works.&lt;/p&gt;
&lt;p&gt;You can see the test coverage of your project by opening &lt;code&gt;coverage/index.html&lt;/code&gt; in your
    browser. You might notice that the new components and service could use some additional coverage. If you feel
    the need to improve this coverage, please send me a pull request!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;img
        src=&quot;https://raw.githubusercontent.com/mraible/ng2-demo/master/src/assets/images/test-coverage.png&quot;
        alt=&quot;Test coverage&quot; width=&quot;600&quot;&gt;
&lt;/p&gt;
&lt;h3 id=&quot;_continuous_integration&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_continuous_integration&quot;&gt;&lt;/a&gt;Continuous Integration&lt;/h3&gt;
&lt;p&gt;At the time of this writing, Angular CLI did not have any continuous integration support. However, it&apos;s
    easy to add with &lt;a href=&quot;https://travis-ci.org/&quot;&gt;Travis CI&lt;/a&gt;. If you&apos;ve checked in your project to GitHub,
    you can easily use Travis CI.
    Simply login and enable builds for the GitHub repo you created the project in. Then add the following
    &lt;code&gt;.travis.yml&lt;/code&gt;
    in your root directory and &lt;code&gt;git push&lt;/code&gt;. This will trigger the first build.&lt;/p&gt;
&lt;pre&gt;
language: node_js
sudo: true

cache:
  directories:
    - node
    - node_modules

dist: trusty

node_js:
  - &apos;5.6.0&apos;

branches:
  only:
  - master

before_install:
 - npm install -g angular-cli
 - export CHROME_BIN=/usr/bin/google-chrome
 - export DISPLAY=:99.0
 - sh -e /etc/init.d/xvfb start
 - sudo apt-get update
 - sudo apt-get install -y libappindicator1 fonts-liberation
 - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
 - sudo dpkg -i google-chrome*.deb

script:
 - ng test --watch false # http://mseemann.de/frontend/2016/05/31/setup-angular-2-app-part-1.html
 - ng serve &amp;
 - ng e2e

notifications:
  webhooks:
    on_success: change  # options: [always|never|change] default: always
    on_failure: always  # options: [always|never|change] default: always
    on_start: false     # default: false
&lt;/pre&gt;
&lt;div class=&quot;paragraph&quot;&gt;
    &lt;p&gt;&lt;a href=&quot;https://travis-ci.org/mraible/ng2-demo/builds/154182594&quot;&gt;Here&lt;/a&gt; is a build showing all unit
        and integration tests passing.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id=&quot;_source_code&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_source_code&quot;&gt;&lt;/a&gt;Source code&lt;/h3&gt;
&lt;p&gt;A completed project with this code in it is available on GitHub at &lt;a
    href=&quot;https://github.com/mraible/ng2-demo&quot;&gt;https://github.com/mraible/ng2-demo&lt;/a&gt;.
    If you have ideas for improvements, please leave a comment or send a pull request.
&lt;/p&gt;
&lt;p&gt;
    This tutorial was originally written using &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt;.
    This means you can &lt;a href=&quot;http://gist.asciidoctor.org/?github-mraible%2Fng2-demo%2F%2FREADME.adoc&quot;&gt;read it using DocGist&lt;/a&gt; if you like.
&lt;/p&gt;
&lt;h3 id=&quot;_summary&quot;&gt;&lt;a class=&quot;anchor&quot; href=&quot;#_summary&quot;&gt;&lt;/a&gt;Summary&lt;/h3&gt;
&lt;p&gt;I hope you&apos;ve enjoyed this in-depth tutorial on how to get started with Angular 2 and Angular CLI.
    Angular CLI takes much of the pain out of setting up an Angular 2 project and using Typescript. I expect great
    things from Angular CLI, mostly because the Angular 2 setup process can be tedious and CLI greatly simplifies things. &lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/upcoming_events_devoxx4kids_denver_testing</id>
        <title type="html">Upcoming Events: Devoxx4Kids Denver, Testing Angular 2, DevoxxUS CFP and VJUG24</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/upcoming_events_devoxx4kids_denver_testing"/>
        <published>2016-08-12T15:29:01-06:00</published>
        <updated>2016-08-12T21:31:20-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="angular" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx4kids" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vjug24" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="denver" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;It&apos;s been awhile since I&apos;ve posted anything on this here blog. That usually means one thing - I&apos;ve been off having fun! That couldn&apos;t be more true this summer. The day after my &lt;a href=&quot;//raibledesigns.com/rd/entry/a_delightful_trip_to_devoxx&quot;&gt;last post&lt;/a&gt;, I began traveling and haven&apos;t stopped since. In fact, this weekend will be the first weekend I&apos;ve been home &lt;em&gt;since&lt;/em&gt; writing that post. Hawaii, Montana, Denver, Montana, Colorado Springs and Utah - it&apos;s been a fabulous summer. I&apos;ll write more about those adventures soon.&lt;/p&gt;
&lt;p&gt;In the meantime, I wanted to mention some upcoming events you might be interested in:&lt;/p&gt;
&lt;ul&gt;
     &lt;li style=&quot;margin-bottom: 5px&quot;&gt;&lt;strong&gt;September 10:&lt;/strong&gt; Devoxx4Kids Denver has an upcoming workshop on &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/events/232720431/&quot;&gt;Exploring JavaScript&lt;/a&gt; with the world famous &lt;a href=&quot;https://twitter.com/venkat_s&quot;&gt;Dr. Venkat Subramaniam&lt;/a&gt;. If you know Venkat, you know this is a session you shouldn&apos;t miss. Your kids will love it, you&apos;ll get a lot of good laughs and everyone is sure to have a good time. Make sure and &lt;a href=&quot;http://www.meetup.com/Devoxx4Kids-Denver/events/232720431/&quot;&gt;RSVP&lt;/a&gt; soon so you get in before this baby fills up!&lt;/li&gt;
     &lt;li style=&quot;margin-bottom: 5px&quot;&gt;&lt;strong&gt;August 22:&lt;/strong&gt; HTML5 Denver has a sessions on &lt;a href=&quot;http://www.meetup.com/HTML5-Denver-Users-Group/events/228220656/&quot;&gt;ES6 vs. Typescript and Testing Angular 2 Applications&lt;/a&gt;. The first session will be delivered by my good friend Geoffrey Filippi and I&apos;ll be performing the second act with the help of &lt;a href=&quot;https://github.com/angular/angular-cli&quot;&gt;angular-cli&lt;/a&gt;.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px&quot;&gt;
&lt;a class=&quot;picture&quot; href=&quot;https://c3.staticflickr.com/9/8576/28835656442_50394481d7_c.jpg&quot; rel=&quot;lightbox[devoxxus]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/28835656442/in/datetaken-public/&quot; title=&quot;Devoxx US&quot;&gt;&lt;img src=&quot;https://c3.staticflickr.com/9/8576/28835656442_50394481d7.jpg&quot; width=&quot;250&quot; alt=&quot;Devoxx US&quot; style=&quot;border: 1px solid black; margin: 10px; margin-top: 5px&quot;&gt;&lt;/a&gt;
&lt;strong&gt;September 1:&lt;/strong&gt; One of my favorite conferences, &lt;a href=&quot;https://devoxx.be/&quot;&gt;Devoxx&lt;/a&gt;, is coming to the US! &lt;a href=&quot;http://devoxx.us/&quot;&gt;DevoxxUS&lt;/a&gt; recently &lt;a href=&quot;http://us13.campaign-archive2.com/?u=ed850ea0ed618350b3fc5901f&amp;id=18fd4297cc&quot;&gt;announced&lt;/a&gt; that registration is open. Even more interesting is that the &lt;abbr title=&quot;Call For Papers&quot;&gt;CFP&lt;/abbr&gt; begins September 1st. I&apos;m biased because I&apos;m on the program committee, but I&apos;d love to see your ideas for great talks!&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px&quot;&gt;&lt;strong&gt;September 27:&lt;/strong&gt; Our good friends from &lt;a href=&quot;http://virtualjug.com/&quot;&gt;vJUG&lt;/a&gt; are hosting the first &lt;a href=&quot;http://virtualjug.com/vjug24/&quot;&gt;24 hour Virtual Java Conference&lt;/a&gt; in the world! I&apos;ll be speaking about the &lt;a href=&quot;https://virtualjug.com/vjug24-session-the-art-of-angular-in-2016-by-matt-raible/&quot;&gt;Art of Angular in 2016&lt;/a&gt; at 10pm EDT.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;September:&lt;/strong&gt; I&apos;m looking for new clients. My current contracts end on August 31 and I&apos;m searching for the next cool team to work with. My expertise: Java, JavaScript and I&apos;m &lt;em&gt;really&lt;/em&gt; good at CSS. This is a hard combination to find! &lt;a href=&quot;http://raibledesigns.com/rd/page/contact&quot;&gt;LMK if you have a need&lt;/a&gt;.
&lt;/ul&gt;
&lt;p&gt;I hope to see you at one of these events! </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/testing_angular_2_0_rc1</id>
        <title type="html">Testing Angular 2.0 RC1 Applications</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/testing_angular_2_0_rc1"/>
        <published>2016-06-06T09:57:13-06:00</published>
        <updated>2016-06-21T05:06:24-06:00</updated> 
        <category term="/The Web" label="The Web" />
        <category term="protractor" scheme="http://roller.apache.org/ns/tags/" />
        <category term="asciidoctor" scheme="http://roller.apache.org/ns/tags/" />
        <category term="npm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="karma" scheme="http://roller.apache.org/ns/tags/" />
        <category term="git" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jasmine" scheme="http://roller.apache.org/ns/tags/" />
        <category term="node" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;As mentioned &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;on Friday&lt;/a&gt;, there&apos;s been
    quite a bit that&apos;s changed with Angular 2 between its
    Beta 9 and RC 1 releases. This article is an update to the
    &lt;a href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_applications&quot;&gt;Testing Angular 2 Applications&lt;/a&gt; I wrote in
    March.
    That tutorial was based on Angular 2.0 Beta 9. Rather than simply updating that
    tutorial and blog post for 2.0 RC1, I decided to create a new version for posterity&apos;s sake. The 2.0 Beta 9 version
    will
    remain on my blog and I&apos;ve &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/releases/tag/2.0.0-beta.9&quot;&gt;tagged
        the source on GitHub&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;If you&apos;ve already read the first version of &lt;a href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_applications&quot;&gt;Testing
    Angular 2 Applications&lt;/a&gt;,
    checkout the &lt;a
        href=&quot;https://github.com/mraible/angular2-tutorial/pull/2/files#diff-c5cd85f8ff52aad4b08a3dd38575dddf&quot;&gt;
        diff of the Asciidoctor version&lt;/a&gt; to see what&apos;s changed.&lt;/p&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_build&quot;&gt;What you&apos;ll build&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You&apos;ll learn to use &lt;a href=&quot;http://jasmine.github.io/&quot;&gt;Jasmine&lt;/a&gt; for unit testing controllers and &lt;a
                href=&quot;http://www.protractortest.org/&quot;&gt;Protractor&lt;/a&gt; for
                integration testing. See Angular 2&apos;s &lt;a href=&quot;https://angular.io/docs/ts/latest/guide/testing.html&quot;&gt;guide
                    to unit testing&lt;/a&gt;
                if you&apos;d like more information on testing and why it&apos;s important.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;The best reason for writing tests is to automate your testing. Without tests, you&apos;ll likely be testing
                manually.
                This manual testing will take longer and longer as your codebase grows.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_need&quot;&gt;What you&apos;ll need&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;ulist&quot;&gt;
            &lt;ul&gt;
                &lt;li&gt;About 15-30 minutes.&lt;/li&gt;
                &lt;li&gt;A favorite text editor or IDE. I recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ
                    IDEA&lt;/a&gt;.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt; installed.&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; and npm installed. I recommend using &lt;a
                    href=&quot;https://github.com/creationix/nvm&quot;&gt;nvm&lt;/a&gt;.
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;get_the_tutorial_project&quot;&gt;Get the tutorial project&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Clone the &lt;a href=&quot;https://github.com/mraible/angular2-tutorial&quot;&gt;angular2-tutorial repository&lt;/a&gt;, checkout the &lt;code&gt;testing-start&lt;/code&gt; branch, and install its dependencies.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;git clone https://github.com/mraible/angular2-tutorial.git
cd angular2-tutorial
git checkout testing-start
npm install&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;If you haven&apos;t completed the &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;Getting
                Started with Angular 2.0 RC1&lt;/a&gt; tutorial,
                you should peruse it so you understand how this application works.
                You can also simply start the app with &lt;code&gt;npm start&lt;/code&gt; and view it in your browser at &lt;a
                    href=&quot;http://localhost:5555/&quot; class=&quot;bare&quot;&gt;http://localhost:5555/&lt;/a&gt;.
            &lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</summary>
        <content type="html">&lt;p&gt;As mentioned &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;on Friday&lt;/a&gt;, there&apos;s been
    quite a bit that&apos;s changed with Angular 2 between its
    Beta 9 and RC 1 releases. This article is an update to the
    &lt;a href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_applications&quot;&gt;Testing Angular 2 Applications&lt;/a&gt; I wrote in
    March.
    That tutorial was based on Angular 2.0 Beta 9. Rather than simply updating that
    tutorial and blog post for 2.0 RC1, I decided to create a new version for posterity&apos;s sake. The 2.0 Beta 9 version
    will
    remain on my blog and I&apos;ve &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/releases/tag/2.0.0-beta.9&quot;&gt;tagged
        the source on GitHub&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;If you&apos;ve already read the first version of &lt;a href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_applications&quot;&gt;Testing
    Angular 2 Applications&lt;/a&gt;,
    checkout the &lt;a
        href=&quot;https://github.com/mraible/angular2-tutorial/pull/2/files#diff-c5cd85f8ff52aad4b08a3dd38575dddf&quot;&gt;
        diff of the Asciidoctor version&lt;/a&gt; to see what&apos;s changed.&lt;/p&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_build&quot;&gt;What you&apos;ll build&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You&apos;ll learn to use &lt;a href=&quot;http://jasmine.github.io/&quot;&gt;Jasmine&lt;/a&gt; for unit testing controllers and &lt;a
                href=&quot;http://www.protractortest.org/&quot;&gt;Protractor&lt;/a&gt; for
                integration testing. See Angular 2&apos;s &lt;a href=&quot;https://angular.io/docs/ts/latest/guide/testing.html&quot;&gt;guide
                    to unit testing&lt;/a&gt;
                if you&apos;d like more information on testing and why it&apos;s important.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;The best reason for writing tests is to automate your testing. Without tests, you&apos;ll likely be testing
                manually.
                This manual testing will take longer and longer as your codebase grows.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_need&quot;&gt;What you&apos;ll need&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;ulist&quot;&gt;
            &lt;ul&gt;
                &lt;li&gt;About 15-30 minutes.&lt;/li&gt;
                &lt;li&gt;A favorite text editor or IDE. I recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ
                    IDEA&lt;/a&gt;.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt; installed.&lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; and npm installed. I recommend using &lt;a
                    href=&quot;https://github.com/creationix/nvm&quot;&gt;nvm&lt;/a&gt;.
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;get_the_tutorial_project&quot;&gt;Get the tutorial project&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Clone the &lt;a href=&quot;https://github.com/mraible/angular2-tutorial&quot;&gt;angular2-tutorial repository&lt;/a&gt;, checkout the &lt;code&gt;testing-start&lt;/code&gt; branch, and install its dependencies.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;git clone https://github.com/mraible/angular2-tutorial.git
cd angular2-tutorial
git checkout testing-start
npm install&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;If you haven&apos;t completed the &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;Getting
                Started with Angular 2.0 RC1&lt;/a&gt; tutorial,
                you should peruse it so you understand how this application works.
                You can also simply start the app with &lt;code&gt;npm start&lt;/code&gt; and view it in your browser at &lt;a
                    href=&quot;http://localhost:5555/&quot; class=&quot;bare&quot;&gt;http://localhost:5555/&lt;/a&gt;.
            &lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;unit_test_the_searchservice&quot;&gt;Unit test the SearchService&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Create &lt;code&gt;src/client/app/shared/search/search.service.spec.ts&lt;/code&gt; and setup the test&apos;s
                infrastructure using &lt;a
                    href=&quot;https://angular.io/docs/js/latest/api/http/testing/MockBackend-class.html&quot;&gt;MockBackend&lt;/a&gt;
                and &lt;a href=&quot;https://angular.io/docs/js/latest/api/http/BaseRequestOptions-class.html&quot;&gt;BaseRequestOptions&lt;/a&gt;.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import {
  beforeEachProviders,
  it,
  describe,
  expect,
  inject,
  fakeAsync,
  tick
} from &apos;@angular/core/testing&apos;;
import { MockBackend } from &apos;@angular/http/testing&apos;;
import { provide } from &apos;@angular/core&apos;;
import { Http, ConnectionBackend, BaseRequestOptions, Response, ResponseOptions } from &apos;@angular/http&apos;;
import { SearchService } from &apos;./search.service&apos;;

export function main() {
  describe(&apos;Search Service&apos;, () =&gt; {
    beforeEachProviders(() =&gt; {
      return [BaseRequestOptions, MockBackend, SearchService,
        provide(Http, {
          useFactory: (backend:ConnectionBackend, defaultOptions:BaseRequestOptions) =&gt; {
            return new Http(backend, defaultOptions);
          }, deps: [MockBackend, BaseRequestOptions]
        }),
      ];
    });
  });
}

&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;If you run &lt;code&gt;npm test&lt;/code&gt;, all tests will pass, but you don&apos;t see &quot;Search Service&quot; as a listed
                test. You can fix this by adding the first test of &lt;code&gt;getAll()&lt;/code&gt;.
                This test shows how &lt;code&gt;MockBackend&lt;/code&gt; can be used to mock results and set the response.&lt;/p&gt;
        &lt;/div&gt;
        &lt;p class=&quot;alert alert-success&quot;&gt;&lt;b&gt;TIP&lt;/b&gt;: When you are testing code that returns either a Promise or an RxJS
            Observable, you can use the &lt;code&gt;fakeAsync&lt;/code&gt; helper to test that code as
            if it were synchronous.
            Promises are be fulfilled and Observables are notified immediately after you call &lt;code&gt;tick()&lt;/code&gt;.&lt;/p&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;The test below should be on the same level as &lt;code&gt;beforeEachProviders&lt;/code&gt;.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;it(&apos;should retrieve all search results&apos;,
  inject([SearchService, MockBackend], fakeAsync((searchService:SearchService, mockBackend:MockBackend) =&amp;gt; {
    var res:Response;
    mockBackend.connections.subscribe(c =&amp;gt; {
      expect(c.request.url).toBe(&apos;app/shared/search/data/people.json&apos;);
      let response = new ResponseOptions({body: &apos;[{&quot;name&quot;: &quot;John Elway&quot;}, {&quot;name&quot;: &quot;Gary Kubiak&quot;}]&apos;});
      c.mockRespond(new Response(response));
    });
    searchService.getAll().subscribe((response) =&amp;gt; {
      res = response;
    });
    tick();
    expect(res[0].name).toBe(&apos;John Elway&apos;);
  }))
);
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Running &lt;code&gt;npm test&lt;/code&gt; should result in &quot;12 tests completed&quot;. Add a couple more tests for
                filtering by search term and fetching by id.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
it(&apos;should filter by search term&apos;,
  inject([SearchService, MockBackend], fakeAsync((searchService:SearchService, mockBackend:MockBackend) =&gt; {
    var res;
    mockBackend.connections.subscribe(c =&gt; {
      expect(c.request.url).toBe(&apos;app/shared/search/data/people.json&apos;);
      let response = new ResponseOptions({body: &apos;[{&quot;name&quot;: &quot;John Elway&quot;}, {&quot;name&quot;: &quot;Gary Kubiak&quot;}]&apos;});
      c.mockRespond(new Response(response));
    });
    searchService.search(&apos;john&apos;).subscribe((response) =&gt; {
      res = response;
    });
    tick();
    expect(res[0].name).toBe(&apos;John Elway&apos;);
  }))
);

it(&apos;should fetch by id&apos;,
  inject([SearchService, MockBackend], fakeAsync((searchService:SearchService, mockBackend:MockBackend) =&gt; {
    var res;
    mockBackend.connections.subscribe(c =&gt; {
      expect(c.request.url).toBe(&apos;app/shared/search/data/people.json&apos;);
      let response = new ResponseOptions({body: &apos;[{&quot;id&quot;: 1, &quot;name&quot;: &quot;John Elway&quot;}, {&quot;id&quot;: 2, &quot;name&quot;: &quot;Gary Kubiak&quot;}]&apos;});
      c.mockRespond(new Response(response));
    });
    searchService.search(&apos;2&apos;).subscribe((response) =&gt; {
      res = response;
    });
    tick();
    expect(res[0].name).toBe(&apos;Gary Kubiak&apos;);
  }))
);
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;If you want to have tests continually run as you add them, you can run the following commands in separate
                shell windows.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;npm run build.test.watch
npm run karma.start&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;p&gt;NOTE: See &lt;a
            href=&quot;https://www.jetbrains.com/help/idea/15.0/running-unit-tests-on-karma.html?origin=old_help&quot;&gt;Running
            Unit Tests on Karma&lt;/a&gt; to
            learn how to run your tests from IntelliJ IDEA.&lt;/p&gt;

    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;unit_test_the_searchcomponent&quot;&gt;Unit test the SearchComponent&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;To unit test the &lt;code&gt;SearchComponent&lt;/code&gt;, create a &lt;code&gt;MockSearchProvider&lt;/code&gt; that has &lt;a
                href=&quot;http://angular-tips.com/blog/2014/03/introduction-to-unit-test-spies/&quot;&gt;spies&lt;/a&gt;.
                These allow you to &lt;em&gt;spy&lt;/em&gt; on functions to check if they were called.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Create &lt;code&gt;src/client/app/shared/search/mocks/search.service.ts&lt;/code&gt; and populate it with spies for
                each method, as well as methods to set the response and subscribe to results.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { provide } from &apos;@angular/core&apos;;
import { SpyObject } from &apos;./helper&apos;;

import { SearchService } from &apos;../search.service&apos;;
import Spy = jasmine.Spy;

export class MockSearchService extends SpyObject {
  getAllSpy:Spy;
  getByIdSpy:Spy;
  searchSpy:Spy;
  saveSpy:Spy;
  fakeResponse:any;

  constructor() {
    super(SearchService);

    this.fakeResponse = null;
    this.getAllSpy = this.spy(&apos;getAll&apos;).andReturn(this);
    this.getByIdSpy = this.spy(&apos;get&apos;).andReturn(this);
    this.searchSpy = this.spy(&apos;search&apos;).andReturn(this);
    this.saveSpy = this.spy(&apos;save&apos;).andReturn(this);
  }

  subscribe(callback:any) {
    callback(this.fakeResponse);
  }

  setResponse(json:any):void {
    this.fakeResponse = json;
  }

  getProviders():Array&amp;lt;any&amp;gt; {
    return [provide(SearchService, {useValue: this})];
  }
}
&lt;/pre&gt;
                &lt;p&gt;
                    In this same directory, create a &lt;code&gt;helper.ts&lt;/code&gt; class to implement the
                    &lt;code&gt;SpyObject&lt;/code&gt;
                    that &lt;code&gt;MockSearchService&lt;/code&gt; extends.
                &lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import {StringMapWrapper} from &apos;@angular/core/src/facade/collection&apos;;

export interface GuinessCompatibleSpy extends jasmine.Spy {
  /** By chaining the spy with and.returnValue, all calls to the function will return a specific
   * value. */
  andReturn(val: any): void;
  /** By chaining the spy with and.callFake, all calls to the spy will delegate to the supplied
   * function. */
  andCallFake(fn: Function): GuinessCompatibleSpy;
  /** removes all recorded calls */
  reset();
}

export class SpyObject {
  static stub(object = null, config = null, overrides = null) {
    if (!(object instanceof SpyObject)) {
      overrides = config;
      config = object;
      object = new SpyObject();
    }

    var m = StringMapWrapper.merge(config, overrides);
    StringMapWrapper.forEach(m, (value, key) =&amp;gt; { object.spy(key).andReturn(value); });
    return object;
  }

  constructor(type = null) {
    if (type) {
      for (var prop in type.prototype) {
        var m = null;
        try {
          m = type.prototype&amp;#91;prop&amp;#93;;
        } catch (e) {
          // As we are creating spys for abstract classes,
          // these classes might have getters that throw when they are accessed.
          // As we are only auto creating spys for methods, this
          // should not matter.
        }
        if (typeof m === &apos;function&apos;) {
          this.spy(prop);
        }
      }
    }
  }

  spy(name) {
    if (!this&amp;#91;name&amp;#93;) {
      this&amp;#91;name&amp;#93; = this._createGuinnessCompatibleSpy(name);
    }
    return this&amp;#91;name&amp;#93;;
  }

  prop(name, value) { this&amp;#91;name&amp;#93; = value; }

  /** @internal */
  _createGuinnessCompatibleSpy(name): GuinessCompatibleSpy {
    var newSpy: GuinessCompatibleSpy = &amp;lt;any&amp;gt;jasmine.createSpy(name);
    newSpy.andCallFake = &amp;lt;any&amp;gt;newSpy.and.callFake;
    newSpy.andReturn = &amp;lt;any&amp;gt;newSpy.and.returnValue;
    newSpy.reset = &amp;lt;any&amp;gt;newSpy.calls.reset;
    // revisit return null here (previously needed for rtts_assert).
    newSpy.and.returnValue(null);
    return newSpy;
  }
}
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Alongside, create &lt;code&gt;routes.ts&lt;/code&gt; to mock Angular&apos;s &lt;code&gt;RouteSegment&lt;/code&gt; and passing
                parameters between components.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { RouteSegment } from &apos;@angular/router&apos;;

export class MockRouteSegment implements RouteSegment {
  urlSegments:any;
  parameters:any;
  outlet:string;
  _type:any;
  _componentFactory:any;
  type:any;
  stringifiedUrlSegments:string;

  constructor(parameters?:{ [key:string]:any; }) {
    this.parameters = parameters;
  }

  getParam(param:string) {
    return this.parameters[param];
  }
}
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;With mocks in place, you can create a spec for &lt;code&gt;SearchComponent&lt;/code&gt; that uses these as providers.
                Create a file at &lt;code&gt;src/search/components/search.component.spec.ts&lt;/code&gt; and populate it with the
                following code.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { provide } from &apos;@angular/core&apos;;
import { TestComponentBuilder } from &apos;@angular/compiler/testing&apos;;
import {
  it,
  describe,
  expect,
  inject,
  beforeEachProviders,
} from &apos;@angular/core/testing&apos;;

import { RouteSegment } from &apos;@angular/router&apos;;
import { MockRouteSegment } from &apos;../shared/search/mocks/routes&apos;;
import { MockSearchService } from &apos;../shared/search/mocks/search.service&apos;;

import { SearchComponent } from &apos;./search.component&apos;;

export function main() {
  describe(&apos;Search component&apos;, () =&gt; {
    var mockSearchService:MockSearchService;

    beforeEachProviders(() =&gt; {
      mockSearchService = new MockSearchService();

      return [
        mockSearchService.getProviders(),
        provide(RouteSegment, { useValue: new MockRouteSegment({ &apos;term&apos;: &apos;peyton&apos; }) })
      ];
    });
  });
}
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Add two tests, one to verify a search term is used when it&apos;s set on the component and a second to verify
                search is called when a term is passed in as a route
                parameter.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
it(&apos;should search when a term is set and search() is called&apos;, inject([TestComponentBuilder], (tcb:TestComponentBuilder) =&gt; {
  return tcb.createAsync(SearchComponent).then((fixture) =&gt; {
    let searchComponent = fixture.debugElement.componentInstance;
    searchComponent.query = &apos;M&apos;;
    searchComponent.search();
    expect(mockSearchService.searchSpy).toHaveBeenCalledWith(&apos;M&apos;);
  });
}));

it(&apos;should search automatically when a term is on the URL&apos;, inject([TestComponentBuilder], (tcb:TestComponentBuilder) =&gt; {
  return tcb.createAsync(SearchComponent).then((fixture) =&gt; {
    fixture.detectChanges();
    expect(mockSearchService.searchSpy).toHaveBeenCalledWith(&apos;peyton&apos;);
  });
}));
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Add a spec for the &lt;code&gt;EditComponent&lt;/code&gt; as well, verifying fetching a single record works. Notice
                how you can access the component directly with
                &lt;code&gt;fixture.debugElement.componentInstance&lt;/code&gt;, or its rendered version with &lt;code&gt;fixture.debugElement.nativeElement&lt;/code&gt;.
                Create a file at &lt;code&gt;src/search/components/edit.component.spec.ts&lt;/code&gt; and populate it with the code
                below.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
import { provide } from &apos;@angular/core&apos;;
import { TestComponentBuilder } from &apos;@angular/compiler/testing&apos;;
import {
  it,
  describe,
  expect,
  inject,
  beforeEachProviders,
} from &apos;@angular/core/testing&apos;;

import { RouteSegment } from &apos;@angular/router&apos;;
import { ROUTER_FAKE_PROVIDERS } from &apos;@angular/router/testing&apos;;
import { MockRouteSegment } from &apos;../shared/search/mocks/routes&apos;;
import { MockSearchService } from &apos;../shared/search/mocks/search.service&apos;;

import { EditComponent } from &apos;./edit.component&apos;;

export function main() {
  describe(&apos;Edit component&apos;, () =&gt; {
    var mockSearchService:MockSearchService;

    beforeEachProviders(() =&gt; {
      mockSearchService = new MockSearchService();

      return [
        mockSearchService.getProviders(),
        ROUTER_FAKE_PROVIDERS,
        provide(RouteSegment, { useValue: new MockRouteSegment({ &apos;id&apos;: &apos;1&apos; }) })
      ];
    });

    it(&apos;should fetch a single record&apos;, inject([TestComponentBuilder], (tcb:TestComponentBuilder) =&gt; {
      return tcb.createAsync(EditComponent).then((fixture) =&gt; {
        let person = {name: &apos;Emmanuel Sanders&apos;, address: {city: &apos;Denver&apos;}};
        mockSearchService.setResponse(person);

        fixture.detectChanges();
        // verify service was called
        expect(mockSearchService.getByIdSpy).toHaveBeenCalledWith(1);

        // verify data was set on component when initialized
        let editComponent = fixture.debugElement.componentInstance;
        expect(editComponent.editAddress.city).toBe(&apos;Denver&apos;);

        // verify HTML renders as expected
        var compiled = fixture.debugElement.nativeElement;
        expect(compiled.querySelector(&apos;h3&apos;)).toHaveText(&apos;Emmanuel Sanders&apos;);
      });
    }));
  });
}
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You should see &quot;&lt;span style=&quot;color: green&quot;&gt;&amp;#10004; 22 tests completed&lt;/span&gt;&quot; in the shell window that&apos;s
                running &lt;code&gt;npm run karma.start&lt;/code&gt;. If you don&apos;t, try cancelling the command and restarting.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;integration_test_the_search_ui&quot;&gt;Integration test the search UI&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;To test if the application works end-to-end, you can write tests with &lt;a
                href=&quot;http://angular.github.io/protractor&quot;&gt;Protractor&lt;/a&gt;. These are also known as integration tests,
                since they test the &lt;em&gt;integration&lt;/em&gt; between all layers of your application.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;To verify end-to-end tests work in the project before you begin, run the following commands in three
                different console windows.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;# npm run webdriver-update &amp;lt;- You will need to run this the first time
npm run webdriver-start
npm run serve.e2e
npm run e2e&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You should receive an error stating that the &quot;nav text for About&quot; is incorrect.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div id=&quot;protractor-nav-error&quot; class=&quot;imageblock&quot;&gt;
            &lt;div style=&quot;text-align: center&quot;&gt;

                &lt;a href=&quot;https://c6.staticflickr.com/8/7393/27377971101_9a4bdfee36_c.jpg&quot;
                   title=&quot;Protractor nav test error&quot; rel=&quot;lightbox[testing-angular2.0rc1]&quot;
                   data-href=&quot;https://www.flickr.com/photos/mraible/27377971101/in/datetaken-public/&quot;&gt;&lt;img
                    src=&quot;https://c6.staticflickr.com/8/7393/27377971101_9a4bdfee36_z.jpg&quot; width=&quot;640&quot;
                    alt=&quot;Protractor nav test error&quot;&gt;&lt;/a&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;This happens because we added a Search link to the navbar and didn&apos;t update the test (in &lt;code&gt;app.component.e2e.ts&lt;/code&gt;)
                that looks for the last child. &lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;it(&apos;should have correct nav text for About&apos;, () =&amp;gt; {
    expect(element(by.css(&apos;sd-app sd-navbar nav a:last-child&apos;)).getText()).toEqual(&apos;ABOUT&apos;);
});
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Replace this test with the one below, and add a new one to verify the Search link is last.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;it(&apos;should have correct nav text for About&apos;, () =&amp;gt; {
  expect(element(by.css(&apos;sd-app sd-navbar nav a:nth-child(2)&apos;)).getText()).toEqual(&apos;ABOUT&apos;);
});

it(&apos;should have correct nav text for Search&apos;, () =&amp;gt; {
  expect(element(by.css(&apos;sd-app sd-navbar nav a:last-child&apos;)).getText()).toEqual(&apos;SEARCH&apos;);
});
&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Now when you run &lt;code&gt;npm run e2e&lt;/code&gt;, all specs should pass.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;_testing_the_search_feature&quot;&gt;Testing the search feature&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create a new &lt;code&gt;search.component.e2e-spec.ts&lt;/code&gt; spec in the same directory as your &lt;code&gt;SearchComponent&lt;/code&gt;.
                    Add tests to verify elements are rendered correctly and
                    search works. At the time of this writing, Protractor&apos;s &lt;code&gt;by.model&lt;/code&gt; and
                    &lt;code&gt;by.repeater&lt;/code&gt; don&apos;t work with Angular 2. For this reason, I used &lt;code&gt;by.css&lt;/code&gt; to
                    verify the HTML renders as expected.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
describe(&apos;Search&apos;, () =&gt; {

  beforeEach(() =&gt; {
    browser.get(&apos;/search&apos;);
  });

  it(&apos;should have an input and search button&apos;, () =&gt; {
    expect(element(by.css(&apos;sd-app sd-search form input&apos;)).isPresent()).toEqual(true);
    expect(element(by.css(&apos;sd-app sd-search form button&apos;)).isPresent()).toEqual(true);
  });

  it(&apos;should allow searching&apos;, () =&gt; {
    let searchButton = element(by.css(&apos;button&apos;));
    let searchBox = element(by.css(&apos;input&apos;));
    searchBox.sendKeys(&apos;M&apos;);
    searchButton.click().then(() =&gt; {
      // doesn&apos;t work as expected - results in 0
      //expect(element.all(by.repeater(&apos;person of searchResults&apos;)).count()).toEqual(3);
      var list = element.all(by.css(&apos;sd-search table tbody tr&apos;));
      expect(list.count()).toBe(3);
    });
  });
});
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;_testing_the_edit_feature&quot;&gt;Testing the edit feature&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create a &lt;code&gt;edit.component.e2e-spec.ts&lt;/code&gt; spec to verify the &lt;code&gt;EditComponent&lt;/code&gt;
                    renders a person&apos;s information and that you can update their information.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;
describe(&apos;Edit&apos;, () =&gt; {

  beforeEach(() =&gt; {
    browser.get(&apos;/edit/1&apos;);
  });

  let name = element(by.id(&apos;name&apos;));
  let street = element(by.id(&apos;street&apos;));
  let city = element(by.id(&apos;city&apos;));

  it(&apos;should allow viewing a person&apos;, () =&gt; {
    expect(element(by.css(&apos;h3&apos;)).getText()).toEqual(&apos;Peyton Manning&apos;);
    expect(name.getAttribute(&apos;value&apos;)).toEqual(&apos;Peyton Manning&apos;);
    expect(street.getAttribute(&apos;value&apos;)).toEqual(&apos;1234 Main Street&apos;);
    expect(city.getAttribute(&apos;value&apos;)).toEqual(&apos;Greenwood Village&apos;);
  });

  it(&apos;should allow updating a name&apos;, function () {
    let save = element(by.id(&apos;save&apos;));
    // send individual characters since sendKeys passes partial values sometimes
    // https://github.com/angular/protractor/issues/698
    &apos; Won!&apos;.split(&apos;&apos;).forEach((c) =&gt; name.sendKeys(c));
    save.click();
    // verify one element matched this change
    var list = element.all(by.css(&apos;sd-search table tbody tr&apos;));
    expect(list.count()).toBe(1);
  });
});
&lt;/pre&gt;
                    &lt;p&gt;
                        Run &lt;code&gt;npm run e2e&lt;/code&gt; to verify all your end-to-end tests pass. You might receive a
                        failure for the &quot;Home&quot; test.
                    &lt;/p&gt;
                    &lt;div style=&quot;text-align: center&quot;&gt;
                        &lt;a href=&quot;https://c1.staticflickr.com/8/7227/27173055360_80b1055f07_c.jpg&quot;
                           data-href=&quot;https://www.flickr.com/photos/mraible/27173055360/in/datetaken-public/&quot;
                           title=&quot;Protractor home error&quot; rel=&quot;lightbox[testing-angular2.0rc1]&quot;&gt;&lt;img
                            src=&quot;https://c1.staticflickr.com/8/7227/27173055360_80b1055f07_z.jpg&quot; width=&quot;640&quot;
                            alt=&quot;Protractor home error&quot;&gt;&lt;/a&gt;
                    &lt;/div&gt;
                    &lt;p&gt;If you do, open &lt;code&gt;src/client/app/+home/home.component.e2e-spec.ts&lt;/code&gt; and change line 17
                        from this:&lt;/p&gt;
&lt;pre class=&quot;brush: css&quot;&gt;
element(by.css(&apos;sd-home form input&apos;)).sendKeys(&apos;Tim Berners-Lee&apos;);
&lt;/pre&gt;
                    &lt;p&gt;To this:&lt;/p&gt;
&lt;pre class=&quot;brush: css&quot;&gt;
let input = element(by.css(&apos;sd-home form input&apos;));
&apos;Tim Berners-Lee&apos;.split(&apos;&apos;).forEach((c) =&gt; input.sendKeys(c));
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Run &lt;code&gt;npm run e2e&lt;/code&gt; again. You should see a success message similar to the one below in your
                    terminal window.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div id=&quot;protractor-success&quot; class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://c1.staticflickr.com/8/7345/26840174984_01e6906f98_c.jpg&quot;
                       title=&quot;Protractor success&quot; rel=&quot;lightbox[testing-angular2.0rc1]&quot;
                       data-href=&quot;https://www.flickr.com/photos/mraible/26840174984/in/datetaken-public/&quot;&gt;&lt;img
                        src=&quot;https://c1.staticflickr.com/8/7345/26840174984_01e6906f98_z.jpg&quot; width=&quot;640&quot;
                        alt=&quot;Protractor success&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;If you made it this far and have all 13 specs passing - congratulations!
                    You&apos;re well on your way to writing quality code with Angular 2 and verifying it works.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
   &lt;h3 id=&quot;_continuous_integration&quot;&gt;Continuous Integration&lt;/h3&gt;
    &lt;div class=&quot;paragraph&quot;&gt;
        &lt;p&gt;The angular2-seed project ships with a &lt;code&gt;.travis.yml&lt;/code&gt; that you can use to run continuous integration for this application
            through &lt;a href=&quot;https://travis-ci.org/&quot;&gt;Travis CI&lt;/a&gt;. To enable builds on Travis CI, login and enable builds for the
            GitHub repo you created the project in. Then trigger your first build with a &lt;code&gt;git push&lt;/code&gt;.&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&quot;paragraph&quot;&gt;
        &lt;p&gt;When I first tried this, I received a &lt;a href=&quot;https://travis-ci.org/mraible/angular2-tutorial/jobs/135517549#L1189&quot;&gt;failure&lt;/a&gt; because
            Protractor on Travis CI is &lt;a href=&quot;https://github.com/mgechev/angular2-seed/issues/970&quot;&gt;unable to navigate directly&lt;/a&gt;
            to the search and edit components. I was able to workaround this by modifying &lt;code&gt;search.component.e2e-spec.ts&lt;/code&gt; to start
            at the top and navigate to the component.&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&quot;listingblock&quot;&gt;
        &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;beforeEach(() =&amp;gt; {
  browser.get(&apos;/&apos;);
  element(by.linkText(&apos;SEARCH&apos;)).click();
});&lt;/pre&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;paragraph&quot;&gt;
        &lt;p&gt;I did something similar with &lt;code&gt;edit.component.e2e-spec.ts&lt;/code&gt;:&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&quot;listingblock&quot;&gt;
        &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;beforeEach(() =&amp;gt; {
  browser.get(&apos;/&apos;);
  element(by.linkText(&apos;SEARCH&apos;)).click();
  let search = element(by.css(&apos;sd-search form input&apos;));
  &apos;Man&apos;.split(&apos;&apos;).forEach((c) =&amp;gt; search.sendKeys(c));
  element(by.css(&apos;sd-search form button&apos;)).click();
  element(by.linkText(&apos;Peyton Manning&apos;)).click();
});&lt;/pre&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;paragraph&quot;&gt;
        &lt;p&gt;After making these changes, &lt;a href=&quot;https://travis-ci.org/mraible/angular2-tutorial/builds/135598015&quot;&gt;all e2e tests passed in Travis CI&lt;/a&gt;.&lt;/p&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;source_code&quot;&gt;Source code&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;A completed project with this code in it is available on GitHub at &lt;a
                href=&quot;https://github.com/mraible/angular2-tutorial&quot;&gt;https://github.com/mraible/angular2-tutorial&lt;/a&gt;.
                If you have ideas for improvements, please leave a comment or send a pull request.
            &lt;/p&gt;
            &lt;p&gt;
                I wrote this tutorial in &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt; so you can also &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/blob/master/TESTING.adoc&quot;&gt;read this tutorial on GitHub&lt;/a&gt; or
                &lt;a href=&quot;http://gist.asciidoctor.org/?github-mraible%2Fangular2-tutorial%2F%2FTESTING.adoc&quot;&gt;using DocGist&lt;/a&gt;.
            &lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;I hope you&apos;ve enjoyed this quick-and-easy tutorial on testing Angular 2.0 RC1 applications. You can see
                the test coverage of your project by running
                &lt;code&gt;npm run serve.coverage&lt;/code&gt;. You&apos;ll notice that the new components and service could use some
                additional coverage. I&apos;ll leave that as a task
                for the reader.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div id=&quot;test-coverage&quot; class=&quot;imageblock&quot;&gt;
            &lt;div style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://c3.staticflickr.com/8/7381/27350245922_7e184fc630_c.jpg&quot; title=&quot;Test Coverage&quot;
                   rel=&quot;lightbox[testing-angular2.0rc1]&quot;
                   data-href=&quot;https://www.flickr.com/photos/mraible/27350245922/in/datetaken-public/&quot;&gt;&lt;img
                    src=&quot;https://c3.staticflickr.com/8/7381/27350245922_7e184fc630_z.jpg&quot; width=&quot;640&quot;
                    alt=&quot;Test Coverage&quot;&gt;&lt;/a&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;I learned a lot about testing from &lt;a href=&quot;https://www.ng-book.com/2/&quot;&gt;ng-book 2&lt;/a&gt; and
                its Testing chapter. If you have any Angular 2 testing tips and tricks you&apos;d like to share, I&apos;d love to
                hear about them.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1</id>
        <title type="html">Getting Started with Angular 2.0 RC1</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1"/>
        <published>2016-06-03T07:16:18-06:00</published>
        <updated>2016-08-23T23:09:58-06:00</updated> 
        <category term="/The Web" label="The Web" />
        <category term="asciidoctor" scheme="http://roller.apache.org/ns/tags/" />
        <category term="npm" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="node" scheme="http://roller.apache.org/ns/tags/" />
        <category term="git" scheme="http://roller.apache.org/ns/tags/" />
        <category term="typescript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular2" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;A few months ago, I wrote a tutorial on &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2&quot;&gt;Getting
    Started with Angular 2&lt;/a&gt;. That tutorial was based on Angular 2.0.0 Beta 9. Rather than simply updating that
    tutorial
    and blog post for 2.0.0 RC1, I decided to create a new version for posterity&apos;s sake. The 2.0 Beta 9 version will
    remain on my blog and I&apos;ve &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/releases/tag/2.0.0-beta.9&quot;&gt;tagged
        the source on GitHub&lt;/a&gt;.
    This is an updated version of Getting Started with Angular 2, complete with the
    &lt;a href=&quot;https://angular.io/docs/ts/latest/guide/router.html&quot;&gt;largely undocumented component router&lt;/a&gt;,
    and lazy-loaded components.
&lt;/p&gt;
&lt;p&gt;If you&apos;d just like to see what&apos;s changed since the last release of this tutorial, you can
    &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/pull/2&quot;&gt;view the pull request on GitHub&lt;/a&gt;. Note that I did
    &lt;a href=&quot;https://help.github.com/articles/syncing-a-fork/&quot;&gt;sync my angular2-tutorial project&lt;/a&gt; with &lt;a
        href=&quot;https://github.com/mgechev/angular2-seed&quot;&gt;angular2-seed&lt;/a&gt;. This made it fairly easy to upgrade,
    believe it or not. My upgrade notes are &lt;a href=&quot;&quot;&gt;in a gist&lt;/a&gt;. The best diff to read to see what changed is
    likely &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/pull/2/files#diff-7bd4a925c695c2eb0eced3872b9b965f&quot;&gt;
    the diff of this tutorial&lt;/a&gt;.
&lt;/p&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_build&quot;&gt;What you&apos;ll build&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You&apos;ll build a simple web application with Angular 2 and TypeScript. You&apos;ll add search and edit features
                with mock data.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_need&quot;&gt;What you&apos;ll need&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;ulist&quot;&gt;
            &lt;ul&gt;
                &lt;li&gt;About 15-30 minutes.
                &lt;/li&gt;
                &lt;li&gt;A favorite text editor or IDE. I recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ
                    IDEA&lt;/a&gt;.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt; installed.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; and npm installed. I recommend using &lt;a
                    href=&quot;https://github.com/creationix/nvm&quot;&gt;nvm&lt;/a&gt;.
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;create_your_project&quot;&gt;Create your project&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Clone the &lt;a href=&quot;https://github.com/mgechev/angular2-seed&quot;&gt;angular2-seed&lt;/a&gt; repository using git:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;git clone https://github.com/mgechev/angular2-seed.git angular2-tutorial
cd angular2-tutorial&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</summary>
        <content type="html">&lt;p&gt;A few months ago, I wrote a tutorial on &lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2&quot;&gt;Getting
    Started with Angular 2&lt;/a&gt;. That tutorial was based on Angular 2.0.0 Beta 9. Rather than simply updating that
    tutorial
    and blog post for 2.0.0 RC1, I decided to create a new version for posterity&apos;s sake. The 2.0 Beta 9 version will
    remain on my blog and I&apos;ve &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/releases/tag/2.0.0-beta.9&quot;&gt;tagged
        the source on GitHub&lt;/a&gt;.
    This is an updated version of Getting Started with Angular 2, complete with the
    &lt;a href=&quot;https://angular.io/docs/ts/latest/guide/router.html&quot;&gt;largely undocumented component router&lt;/a&gt;,
    and lazy-loaded components.
&lt;/p&gt;
&lt;p&gt;If you&apos;d just like to see what&apos;s changed since the last release of this tutorial, you can
    &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/pull/2&quot;&gt;view the pull request on GitHub&lt;/a&gt;. Note that I did
    &lt;a href=&quot;https://help.github.com/articles/syncing-a-fork/&quot;&gt;sync my angular2-tutorial project&lt;/a&gt; with &lt;a
        href=&quot;https://github.com/mgechev/angular2-seed&quot;&gt;angular2-seed&lt;/a&gt;. This made it fairly easy to upgrade,
    believe it or not. My upgrade notes are &lt;a href=&quot;https://gist.github.com/mraible/d9754864249e1b4bfa344ce80074d73d&quot;&gt;in a gist&lt;/a&gt;. The best diff to read to see what changed is
    likely &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/pull/2/files#diff-7bd4a925c695c2eb0eced3872b9b965f&quot;&gt;
    the diff of this tutorial&lt;/a&gt;.
&lt;/p&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_build&quot;&gt;What you&apos;ll build&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You&apos;ll build a simple web application with Angular 2 and TypeScript. You&apos;ll add search and edit features
                with mock data.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_need&quot;&gt;What you&apos;ll need&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;ulist&quot;&gt;
            &lt;ul&gt;
                &lt;li&gt;About 15-30 minutes.
                &lt;/li&gt;
                &lt;li&gt;A favorite text editor or IDE. I recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ
                    IDEA&lt;/a&gt;.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt; installed.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; and npm installed. I recommend using &lt;a
                    href=&quot;https://github.com/creationix/nvm&quot;&gt;nvm&lt;/a&gt;.
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;create_your_project&quot;&gt;Create your project&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Clone the &lt;a href=&quot;https://github.com/mgechev/angular2-seed&quot;&gt;angular2-seed&lt;/a&gt; repository using git:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;git clone https://github.com/mgechev/angular2-seed.git angular2-tutorial
cd angular2-tutorial&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            NOTE: The angular2-seed project requires node v4.x.x or higher and npm 2.14.7. I used node v4.2.6 and npm
            3.9.3.
        &lt;/p&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Install the project&apos;s dependencies:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
                &lt;pre&gt;npm install&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;run_the_application&quot;&gt;Run the application&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;The project is configured with a simple web server for development. To start it, run:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
                &lt;pre&gt;npm start&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You should see a screen like the one below at &lt;a href=&quot;http://localhost:5555&quot;&gt;http://localhost:5555&lt;/a&gt;.
            &lt;/p&gt;
        &lt;/div&gt;
        &lt;div id=&quot;default-homepage&quot; class=&quot;imageblock&quot;&gt;
            &lt;div style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm2.staticflickr.com/1560/25886693062_4dd41acd3d_c.jpg&quot; title=&quot;Default homepage&quot;
                   rel=&quot;lightbox[getting-started-with-angular2]&quot;
                   data-href=&quot;https://www.flickr.com/photos/mraible/25886693062/in/datetaken-public/&quot;&gt;&lt;img
                    src=&quot;https://farm2.staticflickr.com/1560/25886693062_4dd41acd3d_z.jpg&quot; width=&quot;640&quot;
                    alt=&quot;Default homepage&quot;&gt;&lt;/a&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You can see your new project&apos;s test coverage by running &lt;code&gt;npm test&lt;/code&gt;:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;=============================== Coverage summary ===============================
Statements   : 96.36% ( 159/165 )
Branches     : 62.5% ( 120/192 )
Functions    : 100% ( 35/35 )
Lines        : 100% ( 129/129 )
================================================================================&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;add_a_search_feature&quot;&gt;Add a search feature&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;To add a search feature, open the project in an IDE or your favorite text editor. For IntelliJ IDEA, use
                File &amp;gt; New Project &amp;gt; Static Web and point to the directory you cloned angular2-seed to.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;the_basics&quot;&gt;The Basics&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create a &lt;code&gt;src/client/app/+search&lt;/code&gt; folder and a &lt;code&gt;search.component.html&lt;/code&gt; file in it. The + prefix is an indicator
                    to Angular that you want to lazy-load the components in this directory. Populate the HTML file you created with the following:
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;h2&amp;gt;Search&amp;lt;/h2&amp;gt;
&amp;lt;form&amp;gt;
  &amp;lt;input type=&quot;search&quot; [(ngModel)]=&quot;query&quot; (keyup.enter)=&quot;search()&quot;&amp;gt;
  &amp;lt;button type=&quot;button&quot; (click)=&quot;search()&quot;&amp;gt;Search&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;div *ngIf=&quot;loading&quot;&amp;gt;loading...&amp;lt;/div&amp;gt;
&amp;lt;pre&amp;gt;{{searchResults | json}}&amp;lt;/pre&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/client/app/+search/search.component.ts&lt;/code&gt; to define the
                    &lt;code&gt;SearchComponent&lt;/code&gt; and point to this template.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { Component } from &apos;@angular/core&apos;;
import { CORE_DIRECTIVES, FORM_DIRECTIVES } from &apos;@angular/common&apos;;
import { ROUTER_DIRECTIVES } from &apos;@angular/router&apos;;

@Component({
  selector: &apos;sd-search&apos;,
  moduleId: module.id,
  templateUrl: &apos;search.component.html&apos;,
  directives: [FORM_DIRECTIVES, CORE_DIRECTIVES, ROUTER_DIRECTIVES]
})
export class SearchComponent {
  loading: boolean;
  query: string;
  searchResults: any;

  constructor() {
    console.log(&apos;initialized search component&apos;);
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/client/app/+search/index.ts&lt;/code&gt; to export &lt;code&gt;SearchComponent&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;/**
* This barrel file provides the export for the lazy loaded SearchComponent.
*/
export * from &apos;./search.component&apos;;
&lt;/pre&gt;
&lt;p&gt;Update &lt;code&gt;src/client/app/app.component.ts&lt;/code&gt; to import this component and include its route.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { SearchComponent } from &apos;./+search/index&apos;;

@Routes([
  { path: &apos;/&apos;, component: HomeComponent },
  { path: &apos;/about&apos;, component: AboutComponent },
  { path: &apos;/search&apos;, component: SearchComponent }
])
&lt;/pre&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Your browser should refresh automatically, thanks to &lt;a href=&quot;http://browsersync.io&quot;&gt;Browsersync&lt;/a&gt;.
                    Navigate to
                    &lt;a href=&quot;http://localhost:5555/search&quot;&gt;http://localhost:5555/search&lt;/a&gt; and you should see the
                    search component.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div id=&quot;search-component&quot; class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://farm2.staticflickr.com/1552/25374766404_b0830ff897_c.jpg&quot; title=&quot;Search component&quot;
                       rel=&quot;lightbox[getting-started-with-angular2]&quot;
                       data-href=&quot;https://www.flickr.com/photos/mraible/25374766404/in/datetaken-public/&quot;&gt;&lt;img
                        src=&quot;https://farm2.staticflickr.com/1552/25374766404_b0830ff897_z.jpg&quot; width=&quot;640&quot;
                        alt=&quot;Search component&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;You can see it needs a bit of styling. Angular 2 allows you to provide styles specific for your
                    component using a &lt;code&gt;styleUrls&lt;/code&gt;
                    property on your component.
                    Add this property to &lt;code&gt;search.component.ts&lt;/code&gt; like you see below.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;templateUrl: &apos;search.component.html&apos;,
styleUrls: [&apos;search.component.css&apos;],
directives: [FORM_DIRECTIVES, CORE_DIRECTIVES, ROUTER_DIRECTIVES]
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/client/app/+search/search.component.css&lt;/code&gt; and add some CSS.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: css&quot;&gt;:host {
  display: block;
  padding: 0 16px;
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;There, that looks better!&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://c2.staticflickr.com/8/7433/26828737033_fd196ee3f3_c.jpg&quot;
                       title=&quot;Search component with styling&quot; rel=&quot;lightbox[getting-started-with-angular2]&quot;
                       data-href=&quot;https://www.flickr.com/photos/mraible/25886691122/in/datetaken-public/&quot;&gt;&lt;img
                        src=&quot;https://c2.staticflickr.com/8/7433/26828737033_fd196ee3f3_z.jpg&quot; width=&quot;640&quot;
                        alt=&quot;Search component with styling&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Finally, update &lt;code&gt;src/client/app/shared/navbar/navbar.component.html&lt;/code&gt; to include a link to the search
                    route.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;nav&amp;gt;
  &amp;lt;a &amp;#91;routerLink&amp;#93;=&quot;&amp;#91;&apos;/&apos;&amp;#93;&quot;&amp;gt;HOME&amp;lt;/a&amp;gt;
  &amp;lt;a &amp;#91;routerLink&amp;#93;=&quot;&amp;#91;&apos;/about&apos;&amp;#93;&quot;&amp;gt;ABOUT&amp;lt;/a&amp;gt;
  &amp;lt;a &amp;#91;routerLink&amp;#93;=&quot;&amp;#91;&apos;/search&apos;&amp;#93;&quot;&amp;gt;SEARCH&amp;lt;/a&amp;gt;
&amp;lt;/nav&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;This section has shown you how to add a new component to a basic Angular 2 application.
                    The next section shows you how to create a use a JSON file and &lt;code&gt;localStorage&lt;/code&gt; to create a
                    fake API.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;the_backend&quot;&gt;The Backend&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;To get search results, create a &lt;code&gt;SearchService&lt;/code&gt; that makes HTTP requests to a JSON file.
                    Start
                    by creating &lt;code&gt;src/client/app/shared/search/data/people.json&lt;/code&gt; to hold your data.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;[
  {
    &quot;id&quot;: 1,
    &quot;name&quot;: &quot;Peyton Manning&quot;,
    &quot;phone&quot;: &quot;(303) 567-8910&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;1234 Main Street&quot;,
      &quot;city&quot;: &quot;Greenwood Village&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;80111&quot;
    }
  },
  {
    &quot;id&quot;: 2,
    &quot;name&quot;: &quot;Demaryius Thomas&quot;,
    &quot;phone&quot;: &quot;(720) 213-9876&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;5555 Marion Street&quot;,
      &quot;city&quot;: &quot;Denver&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;80202&quot;
    }
  },
  {
    &quot;id&quot;: 3,
    &quot;name&quot;: &quot;Von Miller&quot;,
    &quot;phone&quot;: &quot;(917) 323-2333&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;14 Mountain Way&quot;,
      &quot;city&quot;: &quot;Vail&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;81657&quot;
    }
  }
]
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/client/app/shared/search/search.service.ts&lt;/code&gt; and provide &lt;code&gt;Http&lt;/code&gt; as a
                    dependency in its constructor.
                    In this same file, define the &lt;code&gt;Address&lt;/code&gt; and &lt;code&gt;Person&lt;/code&gt; classes that JSON will be
                    marshalled to.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { Injectable } from &apos;@angular/core&apos;;
import { Http, Response } from &apos;@angular/http&apos;;

@Injectable()
export class SearchService {
  constructor(private http:Http) {}

  getAll() {
    return this.http.get(&apos;app/shared/search/data/people.json&apos;).map((res:Response) =&amp;gt; res.json());
  }
}

export class Address {
  street:string;
  city:string;
  state:string;
  zip:string;

  constructor(obj?:any) {
    this.street = obj &amp;amp;&amp;amp; obj.street || null;
    this.city = obj &amp;amp;&amp;amp; obj.city || null;
    this.state = obj &amp;amp;&amp;amp; obj.state || null;
    this.zip = obj &amp;amp;&amp;amp; obj.zip || null;
  }
}

export class Person {
  id:number;
  name:string;
  phone:string;
  address:Address;

  constructor(obj?:any) {
    this.id = obj &amp;amp;&amp;amp; Number(obj.id) || null;
    this.name = obj &amp;amp;&amp;amp; obj.name || null;
    this.phone = obj &amp;amp;&amp;amp; obj.phone || null;
    this.address = obj &amp;amp;&amp;amp; obj.address || null;
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;In &lt;code&gt;search.component.ts&lt;/code&gt;, add imports for these classes.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { Person, SearchService } from &apos;../shared/index&apos;;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;You can now add a type to the searchResults variable. While you&apos;re there, modify the constructor to
                    inject the
                    &lt;code&gt;SearchService&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;searchResults: Array&amp;lt;Person&amp;gt;;

constructor(public searchService: SearchService) {}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then implement the &lt;code&gt;search()&lt;/code&gt; method to call the service&apos;s &lt;code&gt;getAll()&lt;/code&gt; method.
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(): void {
  this.searchService.getAll().subscribe(
    data =&amp;gt; {this.searchResults = data;},
    error =&amp;gt; console.log(error)
  );
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;At this point, you&apos;ll likely see the following message in your browser&apos;s console.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
                    &lt;pre&gt;ORIGINAL EXCEPTION: No provider for SearchService!&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;This happens because the app hasn&apos;t provided this service to components. To fix this, create
                    &lt;code&gt;src/client/app/shared/search/index.ts&lt;/code&gt; and populate it with the following.
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;/**
 * This barrel file provides the export for the shared SearchService.
 */
export * from &apos;./search.service&apos;;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;
                    Then add a reference to this file in &lt;code&gt;src/client/app/shared/index.ts&lt;/code&gt; so its
                    included in the shared export.
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;/**
 * This barrel file provides the exports for the shared resources (services, components).
 */
export * from &apos;./name-list/index&apos;;
export * from &apos;./navbar/index&apos;;
export * from &apos;./toolbar/index&apos;;
export * from &apos;./search/index&apos;;&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;To fix the &quot;No provider&quot; error from above, update &lt;code&gt;app.component.ts&lt;/code&gt; to import the
                    &lt;code&gt;SearchService&lt;/code&gt; and add the service to the list of provider.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { NameListService, NavbarComponent, ToolbarComponent, SearchService } from &apos;./shared/index&apos;;

@Component({
  selector: &apos;sd-app&apos;,
  viewProviders: [NameListService, SearchService, HTTP_PROVIDERS]
  moduleId: module.id,
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Now clicking the search button should work. To make the results look better,
                    remove the &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; tag in &lt;code&gt;search.component.html&lt;/code&gt;
                    and replace it with a &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;table *ngIf=&quot;searchResults&quot;&amp;gt;
  &amp;lt;thead&amp;gt;
  &amp;lt;tr&amp;gt;
    &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;
    &amp;lt;th&amp;gt;Phone&amp;lt;/th&amp;gt;
    &amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;
  &amp;lt;/tr&amp;gt;
  &amp;lt;/thead&amp;gt;
  &amp;lt;tbody&amp;gt;
  &amp;lt;tr *ngFor=&quot;let person of searchResults; let i=index&quot;&amp;gt;
    &amp;lt;td&amp;gt;{{person.name}}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;{{person.phone}}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;{{person.address.street}}&amp;lt;br/&amp;gt;
      {{person.address.city}}, {{person.address.state}} {{person.address.zip}}
    &amp;lt;/td&amp;gt;
  &amp;lt;/tr&amp;gt;
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then add some additional CSS for this component in &lt;code&gt;search.component.css&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: css&quot;&gt;table {
  margin-top: 10px;
  border-collapse: collapse;
}

th {
  text-align: left;
  border-bottom: 2px solid #ddd;
  padding: 8px;
}

td {
  border-top: 1px solid #ddd;
  padding: 8px;
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Now the search results look better.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div id=&quot;search-results&quot; class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://farm2.staticflickr.com/1677/25706917270_bf07c541e4_c.jpg&quot; title=&quot;Search results&quot;
                       rel=&quot;lightbox[getting-started-with-angular2]&quot;
                       data-href=&quot;https://www.flickr.com/photos/mraible/25706917270/in/datetaken-public/&quot;&gt;&lt;img
                        src=&quot;https://farm2.staticflickr.com/1677/25706917270_bf07c541e4_z.jpg&quot; width=&quot;640&quot;
                        alt=&quot;Search results&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;But wait, we still don&apos;t have search functionality! To add a search feature, add a
                    &lt;code&gt;search()&lt;/code&gt; method to
                    &lt;code&gt;search.service.ts&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(q:string) {
  if (!q || q === &apos;*&apos;) {
    q = &apos;&apos;;
  } else {
    q = q.toLowerCase();
  }
  return this.getAll().map(data =&amp;gt; {
    let results:any = [];
    data.map(item =&amp;gt; {
      if (JSON.stringify(item).toLowerCase().includes(q)) {
        results.push(item);
      }
    });
    return results;
  });
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then refactor &lt;code&gt;SearchComponent&lt;/code&gt; to call this method with its &lt;code&gt;query&lt;/code&gt; variable.
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(): void {
  this.searchService.search(this.query).subscribe(
    data =&amp;gt; {this.searchResults = data;},
    error =&amp;gt; console.log(error)
  );
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Now search results will be filtered by the query value you type in.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;This section showed you how to fetch and display search results. The next section builds on this and
                    shows how to edit and save a record.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;add_an_edit_feature&quot;&gt;Add an edit feature&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Modify &lt;code&gt;search.component.html&lt;/code&gt; to add a link for editing a person.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;td&amp;gt;&amp;lt;a &amp;#91;routerLink&amp;#93;=&quot;&amp;#91;&apos;/edit&apos;, person.id&amp;#93;&quot;&amp;gt;{{person.name}}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/client/app/+edit/edit.component.html&lt;/code&gt; to display an editable form. You might
                    notice I&apos;ve added &lt;code&gt;id&lt;/code&gt;
                    attributes to most elements. This is to
                    make things easier when writing integration tests with Protractor.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;div *ngIf=&quot;person&quot;&amp;gt;
  &amp;lt;h3&amp;gt;{{editName}}&amp;lt;/h3&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Id:&amp;lt;/label&amp;gt;
    {{person.id}}
  &amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Name:&amp;lt;/label&amp;gt;
    &amp;lt;input [(ngModel)]=&quot;editName&quot; id=&quot;name&quot; placeholder=&quot;name&quot;/&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Phone:&amp;lt;/label&amp;gt;
    &amp;lt;input [(ngModel)]=&quot;editPhone&quot; id=&quot;phone&quot; placeholder=&quot;Phone&quot;/&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;fieldset&amp;gt;
    &amp;lt;legend&amp;gt;Address:&amp;lt;/legend&amp;gt;
    &amp;lt;address&amp;gt;
      &amp;lt;input [(ngModel)]=&quot;editAddress.street&quot; id=&quot;street&quot;&amp;gt;&amp;lt;br/&amp;gt;
      &amp;lt;input [(ngModel)]=&quot;editAddress.city&quot; id=&quot;city&quot;&amp;gt;,
      &amp;lt;input [(ngModel)]=&quot;editAddress.state&quot; id=&quot;state&quot; size=&quot;2&quot;&amp;gt;
      &amp;lt;input [(ngModel)]=&quot;editAddress.zip&quot; id=&quot;zip&quot; size=&quot;5&quot;&amp;gt;
    &amp;lt;/address&amp;gt;
  &amp;lt;/fieldset&amp;gt;
  &amp;lt;button (click)=&quot;save()&quot; id=&quot;save&quot;&amp;gt;Save&amp;lt;/button&amp;gt;
  &amp;lt;button (click)=&quot;cancel()&quot; id=&quot;cancel&quot;&amp;gt;Cancel&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create an &lt;code&gt;EditComponent&lt;/code&gt; in &lt;code&gt;src/search/components/edit.component.ts&lt;/code&gt; that
                    references this template and handles communication with the &lt;code&gt;SearchService&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { Component, OnInit } from &apos;@angular/core&apos;;
import { Person, Address, SearchService } from &apos;../shared/index&apos;;
import { RouteSegment, Router } from &apos;@angular/router&apos;;

@Component({
  selector: &apos;sd-edit&apos;,
  moduleId: module.id,
  templateUrl: &apos;edit.component.html&apos;,
  styleUrls: [&apos;edit.component.css&apos;]
})
export class EditComponent implements OnInit {

  person: Person;
  editName: string;
  editPhone: string;
  editAddress: Address;

  constructor(
    private _service: SearchService,
    private _router: Router,
    private _routeSegment: RouteSegment
  ) { }

  ngOnInit() {
    let id = +this._routeSegment.getParam(&apos;id&apos;);
    this._service.get(id).subscribe(person =&gt; {
      if (person) {
        this.editName = person.name;
        this.editPhone = person.phone;
        this.editAddress = person.address;
        this.person = person;
      } else {
        this.gotoList();
      }
    });
  }

  cancel() {
    this._router.navigate([&apos;/search&apos;]);
  }

  save() {
    this.person.name = this.editName;
    this.person.phone = this.editPhone;
    this.person.address = this.editAddress;
    this._service.save(this.person);
    this.gotoList();
  }

  gotoList() {
    if (this.person) {
      this._router.navigate([&apos;/search&apos;, {term: this.person.name} ]);
    } else {
      this._router.navigate([&apos;/search&apos;]);
    }
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/client/app/+edit/index.ts&lt;/code&gt; to export &lt;code&gt;EditComponent&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;brush: js&quot;&gt;/**
 * This barrel file provides the export for the lazy loaded EditComponent.
 */
export * from &apos;./edit.component&apos;;
&lt;/pre&gt;
                &lt;p&gt;Modify &lt;code&gt;SearchService&lt;/code&gt; to contain functions for finding a person by their id, and saving
                    them. While you&apos;re in there, modify
                    the &lt;code&gt;search()&lt;/code&gt; method to
                    be aware of updated objects in &lt;code&gt;localStorage&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(q:string) {
  if (!q || q === &apos;*&apos;) {
    q = &apos;&apos;;
  } else {
    q = q.toLowerCase();
  }
  return this.getAll().map(data =&amp;gt; {
    let results = [];
    data.map(item =&amp;gt; {
      // check for item in localStorage
      if (localStorage[&apos;person&apos; + item.id]) {
        item = JSON.parse(localStorage[&apos;person&apos; + item.id]);
      }
      if (JSON.stringify(item).toLowerCase().includes(q)) {
        results.push(item);
      }
    });
    return results;
  });
}

get(id: number) {
  return this.getAll().map(all =&amp;gt; {
    if (localStorage[&apos;person&apos; + id]) {
      return JSON.parse(localStorage[&apos;person&apos; + id]);
    }
    return all.find(e =&amp;gt; e.id === id);
  });
}

save(person: Person) {
  localStorage[&apos;person&apos; + person.id] = JSON.stringify(person);
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;To make the app aware of this new component, add an import and route configuration in &lt;code&gt;app.component.ts&lt;/code&gt;.
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import { EditComponent } from &apos;../+edit/index&apos;;

@Routes([
  { path: &apos;/&apos;, component: HomeComponent },
  { path: &apos;/about&apos;, component: AboutComponent },
  { path: &apos;/search&apos;, component: SearchComponent },
  { path: &apos;/edit/:id&apos;, component: EditComponent }
])
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then create &lt;code&gt;src/client/app/+edit/edit.component.css&lt;/code&gt; to make the form look a bit better.
                &lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: css&quot;&gt;:host {
  display: block;
  padding: 0 16px;
}

button {
  margin-top: 10px;
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;At this point, you should be able to search for a person and update their information.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div id=&quot;edit-form&quot; class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://farm2.staticflickr.com/1603/25886692692_42abb78ef6_c.jpg&quot; title=&quot;Edit component&quot;
                       rel=&quot;lightbox[getting-started-with-angular2]&quot;
                       data-href=&quot;https://www.flickr.com/photos/mraible/25886692692/in/datetaken-public/&quot;&gt;&lt;img
                        src=&quot;https://farm2.staticflickr.com/1603/25886692692_42abb78ef6_z.jpg&quot; width=&quot;640&quot;
                        alt=&quot;Edit component&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;The &amp;lt;form&amp;gt; in &lt;code&gt;src/client/app/+edit/edit.component.html&lt;/code&gt; calls a
                    &lt;code&gt;save()&lt;/code&gt; function to update a person&apos;s
                    data. You already implemented this above.
                    The function calls a &lt;code&gt;gotoList()&lt;/code&gt; function that appends the person&apos;s name to the URL when
                    sending the user back to the
                    search screen.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;gotoList() {
  if (this.person) {
    this._router.navigate([&apos;/search&apos;, {term: this.person.name} ]);
  } else {
    this._router.navigate([&apos;/search&apos;]);
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Since the &lt;code&gt;SearchComponent&lt;/code&gt; doesn&apos;t execute a search automatically when you execute this
                    URL, add the following logic to do
                    so in its constructor.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;constructor(public searchService: SearchService, routeSegment: RouteSegment) {
  if (routeSegment.getParam(&apos;term&apos;)) {
    this.query = decodeURIComponent(routeSegment.getParam(&apos;term&apos;));
    this.search();
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;You&apos;ll need to import &lt;code&gt;RouteSegment&lt;/code&gt; in order for everything to compile.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
                    &lt;pre class=&quot;brush: js&quot;&gt;import { ROUTER_DIRECTIVES, RouteSegment } from &apos;@angular/router&apos;;&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;After making all these changes, you should be able to search/edit/update a person&apos;s information. If
                    it works - nice job!&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;source_code&quot;&gt;Source code&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;A completed project with this code in it is available on GitHub at &lt;a
                href=&quot;https://github.com/mraible/angular2-tutorial&quot;&gt;https://github.com/mraible/angular2-tutorial&lt;/a&gt;.
                If you have ideas for improvements, please leave a comment or send a pull request.
            &lt;/p&gt;
            &lt;p&gt;
                I originally wrote this tutorial in &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt; because it has a
                slick feature where you
                can include the source code from files rather than copying and pasting. Since GitHub
                &lt;a href=&quot;https://github.com/github/markup/issues/172&quot;&gt;doesn&apos;t support includes&lt;/a&gt;, I changed things so the
                code is now embedded in the document. You can now &lt;a href=&quot;https://github.com/mraible/angular2-tutorial/blob/master/README.adoc&quot;&gt;read this tutorial on GitHub&lt;/a&gt; or
                &lt;a href=&quot;http://gist.asciidoctor.org/?github-mraible%2Fangular2-tutorial%2F%2FREADME.adoc&quot;&gt;using DocGist&lt;/a&gt;.
            &lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;I hope you&apos;ve enjoyed this quick-and-easy tutorial on how to get started with Angular 2.0 RC1. In a future
                tutorial, I&apos;ll show you &lt;a href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_0_rc1&quot;&gt;how to write unit tests and integration tests&lt;/a&gt; for this application.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;I used a number of resources while creating this application. &lt;a href=&quot;https://www.ng-book.com/2/&quot;&gt;ng-book
                    2&lt;/a&gt; was an invaluable resource
                    and I highly recommend it if you&apos;re learning Angular 2. I found Chariot Solution&apos;s article on
                    &lt;a href=&quot;http://chariotsolutions.com/blog/post/angular2-observables-http-separating-services-components/&quot;&gt;Angular2
                        Observables, Http, and
                        separating services and components&lt;/a&gt;
                    to be quite helpful. Finally, the &lt;a href=&quot;https://github.com/angular/angular-cli&quot;&gt;angular-cli&lt;/a&gt;
                    project was a big help, especially its
                    &lt;code&gt;ng generate route &amp;lt;object&amp;gt;&lt;/code&gt; feature.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Kudos to all the pioneers in Angular 2 land that&apos;ve been using it and writing about it on blogs and
                    Stack Overflow.
                    Getting started with Angular 2 would&apos;ve been a real pain without your trailblazing.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/moving_appfuse_into_the_attic</id>
        <title type="html">Moving AppFuse into the Attic</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/moving_appfuse_into_the_attic"/>
        <published>2016-04-28T15:40:16-06:00</published>
        <updated>2016-04-29T13:12:19-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="opensource" scheme="http://roller.apache.org/ns/tags/" />
        <category term="appfuse" scheme="http://roller.apache.org/ns/tags/" />
        <category term="attic" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;&lt;img src=&quot;http://static.appfuse.org/images/appfuse-icon.gif&quot; class=&quot;picture&quot; style=&quot;border: 0; margin-top: -25px&quot;&gt;
In mid-February, I decided to stop working on &lt;a href=&quot;https://github.com/appfuse/appfuse&quot;&gt;AppFuse&lt;/a&gt;. My reason was simple: I was no longer getting any value from my contributions to the project. I sent &lt;a href=&quot;http://appfuse.547863.n4.nabble.com/New-version-of-AppFuse-td4657900.html&quot;&gt;a message&lt;/a&gt; to the developers mailing list the next day:&lt;/p&gt;
&lt;blockquote class=&quot;quote&quot; style=&quot;margin-left: 20px&quot;&gt;
&lt;p style=&quot;margin-top: 0&quot;&gt;Hello everyone, &lt;/p&gt;
&lt;p&gt;
Last night, I started working on AppFuse 4.0, with the following features from the roadmap: &lt;/p&gt;
&lt;ul&gt;
       &lt;li&gt;Remove XML wherever possible&lt;/li&gt;
       &lt;li&gt;Java 8&lt;/li&gt;
       &lt;li&gt;Spring Boot&lt;/li&gt;
       &lt;li&gt;Spring Data&lt;/li&gt;
       &lt;li&gt;JSR 303 (might require removing or developing client-side support)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
As I started removing XML and integrating Spring Boot and Spring Data, it quickly became apparent that it&#8217;d be a lot of work to make all of these changes. My guess is it&#8217;d take over 100 hours of my time to do everything. This is time I&#8217;d be taking away from my family and personal time. 
&lt;/p&gt;
&lt;p&gt;
At the end of last year, I wanted to make AppFuse 4.0 happen because I thought it&#8217;d help me stay up-to-date with Java technologies and learn some things along the way. As I dug into the codebase last night, I realized it&#8217;d be more of a headache than a learning experience. It seems there would be little reward for all the work. 
&lt;/p&gt;
&lt;p&gt;
Because there&#8217;s little-to-no activity on the mailing list these days, it seems like it&#8217;s the right time to shutdown the project and dedicate my free time to other open source endeavors. As you might know, I&#8217;m a big fan of JHipster (&lt;a href=&quot;http://jhipster.github.io/&quot;&gt;http://jhipster.github.io/&lt;/a&gt;). It combines AngularJS and Spring Boot and has all the features that AppFuse has - but with a more modern technology stack. 
&lt;/p&gt;
&lt;p&gt;
If we had everything hosted on GitHub, I think it&#8217;d make sense to add a line to the README that says &#8220;This project is no longer maintained&#8221;. However, since there&#8217;s a lot hosted on appfuse.org (with Confluence), it might not be that easy. Maybe it&#8217;s possible to export everything from Confluence to static HTML pages and host them somewhere with the same URLs so there&#8217;s not a bunch of 404s from shutting down the project. 
&lt;/p&gt;
&lt;p&gt;
Thank you for your contributions over the years. AppFuse was pretty cool back in the day, but now there&#8217;s better solutions. 
&lt;/p&gt;
&lt;p&gt;
Cheers, 
&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0&quot;&gt;
Matt&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
The good news is I&apos;ve worked out a deal with &lt;a href=&quot;http://contegix.com&quot;&gt;Contegix&lt;/a&gt; to keep appfuse.org up and running for the next year. The &lt;a href=&quot;http://demo.appfuse.org&quot;&gt;demos&lt;/a&gt;, &lt;a href=&quot;http://appfuse.org&quot;&gt;documentation&lt;/a&gt; and &lt;a href=&quot;http://issues.appfuse.org&quot;&gt;bug tracker&lt;/a&gt; will be available until April 30, 2017. Bamboo and FishEye will be discontinued in the next week since they&apos;re too memory intensive for a smaller server. I&apos;d love to figure out a way to export all the documentation from Confluence to Asciidoctor so everything can be on GitHub for years to come. However, there&apos;s something to be said for just letting a project fade away rather than holding onto nostalgic artifacts.&lt;/p&gt;
&lt;p&gt;On a related note, &lt;a href=&quot;https://community.oracle.com/community/java/javanet-forge-sunset&quot;&gt;Java.net will be closing in a year from today&lt;/a&gt;. AppFuse started &lt;a href=&quot;https://sourceforge.net/projects/struts/files/appfuse/&quot;&gt;on SourceForge&lt;/a&gt;, but moved to &lt;a href=&quot;http://appfuse.java.net&quot;&gt;appfuse.java.net&lt;/a&gt; shortly after. Today, the only thing left on java.net are AppFuse&apos;s mailing lists. I suppose it makes sense that both projects will cease to exist around the same time. &lt;/p&gt;
&lt;p&gt;AppFuse&apos;s &lt;a href=&quot;https://github.com/appfuse&quot;&gt;source code will remain on GitHub&lt;/a&gt;. I have no plans to delete it.&lt;/p&gt;
&lt;p&gt;Thanks to everyone that used and contributed to AppFuse over the years. It was a pretty wild and crazy ride from 2003-2007! &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/devoxx_france_2016_springtime_in</id>
        <title type="html">Devoxx France 2016: Springtime in Paris</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/devoxx_france_2016_springtime_in"/>
        <published>2016-04-26T07:13:18-06:00</published>
        <updated>2016-04-26T13:13:18-06:00</updated> 
        <category term="/Java" label="Java" />
        <category term="infoq" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxxfr" scheme="http://roller.apache.org/ns/tags/" />
        <category term="paris" scheme="http://roller.apache.org/ns/tags/" />
        <category term="asciidoctor" scheme="http://roller.apache.org/ns/tags/" />
        <category term="devoxx" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jhipster" scheme="http://roller.apache.org/ns/tags/" />
        <category term="travel" scheme="http://roller.apache.org/ns/tags/" />
        <category term="france" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angularjs" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p&gt;I had the good fortune to visit Paris last week for &lt;a href=&quot;http://www.devoxx.fr/&quot;&gt;Devoxx France&lt;/a&gt;. When traveling
    to conferences in exotic locations,
    I like to bring a travel partner. This time, I asked my daughter, Abbie, to join me. She gladly accepted. Springtime
    in Paris can be a beautiful event. The grass is green, the flowers are blooming and the sun&apos;s rays blanket the city.
&lt;/p&gt;
&lt;p&gt;We arrived in Paris on Tuesday, April 19 and quickly found our way to our &lt;a href=&quot;http://www.lemeridienetoile.com/&quot;&gt;hotel&lt;/a&gt;.
    Its location was ideal: across the street from Le Palais des Congr&#232;s de Paris convention center and mall. Since the
    conference
    was at the convention center, it made logistics for my talks very convenient. We grabbed a quick bite after settling
    in,
    then took a 15-minute stroll to the Arc de Triomphe.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1650/26377054130_d1d6561024_c.jpg&quot; title=&quot;Obligatory Arc de Triomphe selfie&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377054130/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1650/26377054130_d1d6561024_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Obligatory Arc de Triomphe selfie&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1548/26377063160_2cc22299cf_c.jpg&quot; title=&quot;Abbie and Eiffel Tower&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377063160/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1548/26377063160_2cc22299cf_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Eiffel Tower&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    That evening, we joined Ippon developers and friends at a
    &lt;a href=&quot;http://blog.ippon.fr/2016/04/07/le-before-du-devoxx-avec-matt-raible/&quot;&gt;special event for Java Hipsters&lt;/a&gt;.
    Their
    &lt;a href=&quot;http://rooftop-work.paris/&quot;&gt;rooftop location&lt;/a&gt; had great views, cold &quot;Java&quot; beer and I met a lot of
    enthusiastic
    developers. I especially enjoyed talking with the original Java Hipster and founder of
    &lt;a href=&quot;http://jhipster.github.io/&quot;&gt;JHipster&lt;/a&gt;, &lt;a href=&quot;http://www.julien-dubois.com/&quot;&gt;Julien Dubois&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1697/26046785153_7fdd931724_c.jpg&quot; title=&quot;Java Beer!&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046785153/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1697/26046785153_7fdd931724_q.jpg&quot; width=&quot;150&quot; alt=&quot;Java Beer!&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1718/26046789653_ac527f73ec_c.jpg&quot;
       title=&quot;The original Java Hipster, Julien Dubious&quot; rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046789653/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1718/26046789653_ac527f73ec_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;The original Java Hipster, Julien Dubious&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1588/26046794363_3a057b8e6e_c.jpg&quot; title=&quot;Fun event!&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046794363/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1588/26046794363_3a057b8e6e_q.jpg&quot; width=&quot;150&quot; alt=&quot;Fun event!&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The sunset over Paris provided a splendid backdrop for the festivities.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1591/26046797633_60beba62be_c.jpg&quot; title=&quot;Sunset over Paris&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046797633/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1591/26046797633_60beba62be.jpg&quot; width=&quot;500&quot; alt=&quot;Sunset over Paris&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;</summary>
        <content type="html">&lt;p&gt;I had the good fortune to visit Paris last week for &lt;a href=&quot;http://www.devoxx.fr/&quot;&gt;Devoxx France&lt;/a&gt;. When traveling
    to conferences in exotic locations,
    I like to bring a travel partner. This time, I asked my daughter, Abbie, to join me. She gladly accepted. Springtime
    in Paris can be a beautiful event. The grass is green, the flowers are blooming and the sun&apos;s rays blanket the city.
&lt;/p&gt;
&lt;p&gt;We arrived in Paris on Tuesday, April 19 and quickly found our way to our &lt;a href=&quot;http://www.lemeridienetoile.com/&quot;&gt;hotel&lt;/a&gt;.
    Its location was ideal: across the street from Le Palais des Congr&#232;s de Paris convention center and mall. Since the
    conference
    was at the convention center, it made logistics for my talks very convenient. We grabbed a quick bite after settling
    in,
    then took a 15-minute stroll to the Arc de Triomphe.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1650/26377054130_d1d6561024_c.jpg&quot; title=&quot;Obligatory Arc de Triomphe selfie&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377054130/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1650/26377054130_d1d6561024_m.jpg&quot; width=&quot;240&quot;
        alt=&quot;Obligatory Arc de Triomphe selfie&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1548/26377063160_2cc22299cf_c.jpg&quot; title=&quot;Abbie and Eiffel Tower&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377063160/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1548/26377063160_2cc22299cf_m.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Eiffel Tower&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://farm2.staticflickr.com/1634/26046780663_83b2de9696_c.jpg&quot; title=&quot;The Arc is massive!&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046780663/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1634/26046780663_83b2de9696.jpg&quot; width=&quot;500&quot; alt=&quot;The Arc is massive!&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    That evening, we joined Ippon developers and friends at a
    &lt;a href=&quot;http://blog.ippon.fr/2016/04/07/le-before-du-devoxx-avec-matt-raible/&quot;&gt;special event for Java Hipsters&lt;/a&gt;.
    Their
    &lt;a href=&quot;http://rooftop-work.paris/&quot;&gt;rooftop location&lt;/a&gt; had great views, cold &quot;Java&quot; beer and I met a lot of
    enthusiastic
    developers. I especially enjoyed talking with the original Java Hipster and founder of
    &lt;a href=&quot;http://jhipster.github.io/&quot;&gt;JHipster&lt;/a&gt;, &lt;a href=&quot;http://www.julien-dubois.com/&quot;&gt;Julien Dubois&lt;/a&gt;.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1697/26046785153_7fdd931724_c.jpg&quot; title=&quot;Java Beer!&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046785153/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1697/26046785153_7fdd931724_q.jpg&quot; width=&quot;150&quot; alt=&quot;Java Beer!&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1718/26046789653_ac527f73ec_c.jpg&quot;
       title=&quot;The original Java Hipster, Julien Dubious&quot; rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046789653/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1718/26046789653_ac527f73ec_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;The original Java Hipster, Julien Dubious&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1588/26046794363_3a057b8e6e_c.jpg&quot; title=&quot;Fun event!&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046794363/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1588/26046794363_3a057b8e6e_q.jpg&quot; width=&quot;150&quot; alt=&quot;Fun event!&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;The sunset over Paris provided a splendid backdrop for the festivities.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1591/26046797633_60beba62be_c.jpg&quot; title=&quot;Sunset over Paris&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046797633/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1591/26046797633_60beba62be.jpg&quot; width=&quot;500&quot; alt=&quot;Sunset over Paris&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;On Wednesday, Abbie and I got up early and headed to Versailles. We toured Ch&#226;teau de Versailles, the Gardens and
    &lt;a href=&quot;http://en.chateauversailles.fr/marie-antoinettes-estate&quot;&gt;Marie-Antoinette&apos;s estate&lt;/a&gt;. I&apos;d never visited
    this
    area of Versailles and never realized what I was missing. We rented a boat and practiced rowing on the Grand Canal
    to get
    ready for rafting season.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1592/26046801963_95dafdd5b7_c.jpg&quot; title=&quot;Abbie and Louis&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26046801963/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1592/26046801963_95dafdd5b7_n.jpg&quot; width=&quot;240&quot; alt=&quot;Abbie and Louis&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1717/26584955241_4b69591dea_c.jpg&quot; title=&quot;Lots of gold at Versailles!&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26584955241/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1717/26584955241_4b69591dea_n.jpg&quot; width=&quot;240&quot;
        alt=&quot;Lots of gold at Versailles!&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://farm2.staticflickr.com/1583/26584961021_29d12506dd_c.jpg&quot; title=&quot;The Gardens&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26584961021/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1583/26584961021_29d12506dd.jpg&quot; width=&quot;500&quot; alt=&quot;The Gardens&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://farm2.staticflickr.com/1490/26044647774_97f6749313_c.jpg&quot; title=&quot;Spring in Paris is beautiful!&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26044647774/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1490/26044647774_97f6749313.jpg&quot; width=&quot;500&quot;
        alt=&quot;Spring in Paris is beautiful!&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://farm2.staticflickr.com/1531/26377129570_b72406b68e_c.jpg&quot; title=&quot;Hameau de la Reine&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377129570/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1531/26377129570_b72406b68e_q.jpg&quot; width=&quot;150&quot; alt=&quot;Hameau de la Reine&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1441/26377132120_90c70026c8_c.jpg&quot;
       title=&quot;The Queen&apos;s house and billiard room&quot; rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26377132120/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1441/26377132120_90c70026c8_q.jpg&quot; width=&quot;150&quot;
        alt=&quot;The Queen&apos;s house and billiard room&quot; style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1644/26624011386_06b02e4cee_c.jpg&quot; title=&quot;The Apollo Fountain&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26624011386/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1644/26624011386_06b02e4cee_q.jpg&quot; width=&quot;150&quot; alt=&quot;The Apollo Fountain&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    That evening, we stopped by the &lt;a href=&quot;http://uk.le-sud-restaurant.com/&quot;&gt;Restaurant Le Sud&lt;/a&gt; for the speaker&apos;s
    dinner. It was
    fun seeing familiar faces and meeting new folks.
&lt;/p&gt;
&lt;p&gt;Thursday was my first talk, but we had the morning free to explore. We headed for the Eiffel Tower and rode its north
    elevator
    straight to the top. The views where spectacular and Abbie got goosebumps from the gentle sway.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1445/26650599775_547452b330_c.jpg&quot; title=&quot;Great view from the top&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26650599775/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1445/26650599775_547452b330_m.jpg&quot; width=&quot;240&quot; alt=&quot;Great view from the top&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1588/26650603845_9df85f8e47_c.jpg&quot; title=&quot;It&apos;s a long way down&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26650603845/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1588/26650603845_9df85f8e47_m.jpg&quot; width=&quot;240&quot; alt=&quot;It&apos;s a long way down&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://farm2.staticflickr.com/1441/26650605665_a3a0a2e5a9_c.jpg&quot; title=&quot;Happiness in Paris&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26650605665/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1441/26650605665_a3a0a2e5a9_m.jpg&quot; width=&quot;240&quot; alt=&quot;Happiness in Paris&quot;
        style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1710/26624042686_d3004caf1d_c.jpg&quot; title=&quot;Tour Eiffel&quot;
       rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26624042686/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1710/26624042686_d3004caf1d_m.jpg&quot; width=&quot;240&quot; alt=&quot;Tour Eiffel&quot;
        style=&quot;border: 1px solid black; margin-left: 15px;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    I transformed from an old-fashioned, whiskey-drinking Java developer to a Java Hipster
    &lt;a href=&quot;https://cfp.devoxx.fr/2016/talk/OJD-3590/Get_Hip_with_JHipster:_Spring_Boot_+_AngularJS_+_Bootstrap&quot;&gt;a few
        hours later&lt;/a&gt;. You can see
    the slides from my &quot;Get Hip with JHipster&quot; presentation below, or &lt;a
    href=&quot;http://www.slideshare.net/mraible/get-hip-with-jhipster-spring-boot-angularjs-bootstrap-devoxx-france-2016&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/key/DICuqemFX1Sjx7&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&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;We wanted to see the &lt;a href=&quot;https://en.wikipedia.org/wiki/Catacombs_of_Paris&quot;&gt;Catacombs of Paris&lt;/a&gt; that night,
    and made it just minutes before it closed. Seeing the remains of millions of people&apos;s bones stacked on top of each other
    frightened Abbie more than standing on the glass floor in the Eiffel Tower. I experienced more heebie jeebies from
    the floor.
    We popped out of the Catacombs near the excellent
    &lt;a href=&quot;https://www.tripadvisor.com/Restaurant_Review-g187147-d5562763-Reviews-Thai_paragon-Paris_Ile_de_France.html&quot;&gt;Thai
        Paragon&lt;/a&gt; and stopped for a delicious meal.
    Abbie tried duck for the first time and loved it.
&lt;/p&gt;
&lt;p&gt;
    I had two talks on Friday, a quickie on &lt;a
    href=&quot;https://cfp.devoxx.fr/2016/talk/PGF-2414/Writing_an_InfoQ_Mini_Book_with_Asciidoctor&quot;&gt;how to write an InfoQ
    Mini-Book with Asciidoctor&lt;/a&gt;
    and a 45-minute session on &lt;a href=&quot;https://cfp.devoxx.fr/2016/talk/LUI-4351/The_Art_of_Angular_in_2016&quot;&gt;The Art of
    Angular in 2016&lt;/a&gt;.
    I wrote the InfoQ Mini-Book presentation using &lt;a href=&quot;https://github.com/opendevise/bespoke-emulating-shower&quot;&gt;Asciidoctor&apos;s
    Bespoke support&lt;/a&gt; and really enjoyed
    the experience. Thanks to &lt;a href=&quot;https://twitter.com/mojavelinux&quot;&gt;Dan Allen&lt;/a&gt; for assembling this easy to use
    starter template!
    Dan was also a great help in getting the JHipster Book printed for the first time and I was pumped to have a copy
    with me to show off.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1485/26046771893_34ea82fccc_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26046771893/in/album-72157667022214770/&quot; title=&quot;JHipster Book in print!&quot; rel=&quot;lightbox[devoxxfr2016]&quot;&gt;
        &lt;img src=&quot;https://farm2.staticflickr.com/1485/26046771893_34ea82fccc_n.jpg&quot; width=&quot;240&quot; alt=&quot;JHipster Book in print!&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1584/26046773243_b3c3a8f4b2_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26046773243/in/album-72157667022214770/&quot; title=&quot;heroku deploy:jar&quot; rel=&quot;lightbox[devoxxfr2016]&quot;&gt;
        &lt;img src=&quot;https://farm2.staticflickr.com/1584/26046773243_b3c3a8f4b2_n.jpg&quot; width=&quot;240&quot; alt=&quot;heroku deploy:jar&quot; style=&quot;border: 1px solid black; margin-left: 15px&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
    You can &lt;a href=&quot;http://mraible.github.io/infoq-mini-book-presentation/&quot;&gt;view the presentation online&lt;/a&gt; and
    checkout
    &lt;a href=&quot;https://github.com/mraible/infoq-mini-book-presentation&quot;&gt;its repository on GitHub&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;For my Angular presentation, I invited Abbie to kick things off, so she could experience what it&apos;s like to speak at a
    conference.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1619/26044723184_ee99bd81d9_c.jpg&quot;
       title=&quot;Moments before Abbie and I spoke about the Art of #Angular in 2016.&quot; rel=&quot;lightbox[devoxxfr2016]&quot;
       data-href=&quot;https://www.flickr.com/photos/mraible/26044723184/in/album-72157667022214770/&quot;&gt;&lt;img
        src=&quot;https://farm2.staticflickr.com/1619/26044723184_ee99bd81d9.jpg&quot; width=&quot;500&quot;
        alt=&quot;Moments before Abbie and I spoke about the Art of #Angular in 2016.&quot; style=&quot;border: 1px solid black;&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;She did great and I followed her intro with my presentation on working with Angular 2. You can see my presentation
    below or &lt;a href=&quot;http://www.slideshare.net/mraible/the-art-of-angular-in-2016-devoxx-france-2016&quot;&gt;check it out 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/f4qsdZ0gkbnbKN&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&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
    At the end of the conference, we attended the &lt;a href=&quot;https://lescastcodeurs.com/&quot;&gt;Les Cast Codeurs Podcast&lt;/a&gt;. It
    was all in French, but you
    could tell everyone was having a good time from the smiles and laughter in the audience. During the session, the
    Devoxx Crew surprised me
    with a &lt;a href=&quot;https://java-champions.java.net/&quot;&gt;Java Champion&lt;/a&gt; award. I was very &lt;a href=&quot;https://twitter.com/mraible/status/723565855821443072&quot;&gt;surprised and humbled to
    receive this recognition&lt;/a&gt;. It
    was pretty cool having Abbie with me for such an honor.
&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1495/26044726404_91272a2bae_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26044726404/in/album-72157667022214770/&quot; title=&quot;Les Cast Codeurs&quot; rel=&quot;lightbox[devoxxfr2016]&quot;&gt;
        &lt;img src=&quot;https://farm2.staticflickr.com/1495/26044726404_91272a2bae_m.jpg&quot; width=&quot;240&quot; alt=&quot;Les Cast Codeurs&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
    &lt;a href=&quot;https://farm2.staticflickr.com/1465/26044729304_080e658df0_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/26044729304/in/album-72157667022214770/&quot; title=&quot;I&amp;#x27;m a Java Champion! :)&quot; rel=&quot;lightbox[devoxxfr2016]&quot;&gt;
        &lt;img src=&quot;https://farm2.staticflickr.com/1465/26044729304_080e658df0_m.jpg&quot; width=&quot;240&quot; alt=&quot;I&amp;#x27;m a Java Champion! :)&quot; style=&quot;border: 1px solid black; margin-left: 15px&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/72157667022214770&quot;&gt;Devoxx France 2016&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
    Thanks to Devoxx France and Ippon Technologies for providing us with the opportunity for such a fun adventure. We
    had a blast!&lt;/p&gt;
</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/the_bus_is_home</id>
        <title type="html">The Bus is Home!</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/the_bus_is_home"/>
        <published>2016-04-13T14:07:22-06:00</published>
        <updated>2016-04-13T20:07:22-06:00</updated> 
        <category term="/The Bus" label="The Bus" />
        <category term="porschebus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="21windows" scheme="http://roller.apache.org/ns/tags/" />
        <category term="busproject" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vwbus" scheme="http://roller.apache.org/ns/tags/" />
        <category term="21years" scheme="http://roller.apache.org/ns/tags/" />
        <category term="vw" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;/p&gt;The day has finally arrived! The Bus is home 12 years and 3 days after &lt;a href=&quot;//raibledesigns.com/rd/entry/vw_bus_could_this_be&quot;&gt;I bought it&lt;/a&gt;. I detailed much of the slow and patience-heavy project in &lt;a href=&quot;//raibledesigns.com/rd/entry/10_years_ago_today_i&quot;&gt;10 years ago today, I bought a VW Bus&lt;/a&gt; and &lt;a href=&quot;//raibledesigns.com/rd/entry/when_is_the_bus_gonna&quot;&gt;When is the bus gonna be done?&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;It&apos;s a glorious day in Raibleland and a real gas to drive. &lt;a href=&quot;https://www.flickr.com/photos/mraible/sets/72157666949317472&quot;&gt;Hello Hefe&lt;/a&gt;!&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a data-flickr-embed=&quot;true&quot; data-header=&quot;false&quot; data-footer=&quot;false&quot;  href=&quot;https://www.flickr.com/photos/mraible/albums/72157666949317472&quot; title=&quot;Hello Hefe&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1538/26402259315_8fff390a71_z.jpg&quot; width=&quot;640&quot; height=&quot;500&quot; alt=&quot;Hello Hefe&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;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/getting_started_with_angular_2</id>
        <title type="html">Getting Started with Angular 2</title>
        <author><name>Matt Raible</name></author>
        <link rel="alternate" type="text/html" href="https://raibledesigns.com/rd/entry/getting_started_with_angular_2"/>
        <published>2016-03-23T09:23:53-06:00</published>
        <updated>2016-06-03T13:19:37-06:00</updated> 
        <category term="/The Web" label="The Web" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="angular2" scheme="http://roller.apache.org/ns/tags/" />
        <category term="typescript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="node" scheme="http://roller.apache.org/ns/tags/" />
        <category term="git" scheme="http://roller.apache.org/ns/tags/" />
        <category term="asciidoctor" scheme="http://roller.apache.org/ns/tags/" />
        <category term="npm" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">&lt;p class=&quot;alert alert-info&quot;&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;Click here&lt;/a&gt; to see an updated version of this tutorial that&apos;s been upgraded for Angular 2.0 RC1.&lt;/p&gt;
&lt;p&gt;I was hired by one of my current clients in November to help them develop a project management
    application with AngularJS. I&apos;m proud to say we&apos;ve built the application, it looks great, and it&apos;s
    scheduled to be released next month. The team had lots of experience with ExtJS, but was new to AngularJS.
    While using AngularJS worked, they&apos;re keen on moving to Angular 2 shortly after it&apos;s released.
&lt;/p&gt;
&lt;p&gt;
    To help them learn Angular 2, I decided to write a couple tutorials similar to the AngularJS tutorials
    I wrote last year. In this tutorial, I did my best to keep the functionality and features similar
    to &lt;a href=&quot;http://raibledesigns.com/rd/entry/getting_started_with_angularjs&quot;&gt;Getting Started with AngularJS&lt;/a&gt;
    so you can compare &lt;a href=&quot;https://github.com/mraible/angular-tutorial&quot;&gt;the code&lt;/a&gt; between the two.
&lt;/p&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_build&quot;&gt;What you&apos;ll build&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You&apos;ll build a simple web application with Angular 2 and TypeScript. You&apos;ll add search and edit features with mock data.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_need&quot;&gt;What you&apos;ll need&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;ulist&quot;&gt;
            &lt;ul&gt;
                &lt;li&gt;About 15-30 minutes.
                &lt;/li&gt;
                &lt;li&gt;A favorite text editor or IDE. I recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ IDEA&lt;/a&gt;.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt; installed.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; and npm installed. I recommend using &lt;a href=&quot;https://github.com/creationix/nvm&quot;&gt;nvm&lt;/a&gt;.
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&quot;create_your_project&quot;&gt;Create your project&lt;/h3&gt;
&lt;p&gt;Clone the &lt;a href=&quot;https://github.com/mgechev/angular2-seed&quot;&gt;angular2-seed&lt;/a&gt; repository using git:&lt;/p&gt;
&lt;pre&gt;git clone https://github.com/mgechev/angular2-seed.git angular2-tutorial
cd angular2-tutorial&lt;/pre&gt;</summary>
        <content type="html">&lt;p class=&quot;alert alert-info&quot;&gt;&lt;a href=&quot;//raibledesigns.com/rd/entry/getting_started_with_angular_2_rc1&quot;&gt;Click here&lt;/a&gt; to see an updated version of this tutorial that&apos;s been upgraded for Angular 2.0 RC1.&lt;/p&gt;
&lt;p&gt;I was hired by one of my current clients in November to help them develop a project management
    application with AngularJS. I&apos;m proud to say we&apos;ve built the application, it looks great, and it&apos;s
    scheduled to be released next month. The team had lots of experience with ExtJS, but was new to AngularJS.
    While using AngularJS worked, they&apos;re keen on moving to Angular 2 shortly after it&apos;s released.
&lt;/p&gt;
&lt;p&gt;
    To help them learn Angular 2, I decided to write a couple tutorials similar to the AngularJS tutorials
    I wrote last year. In this tutorial, I did my best to keep the functionality and features similar
    to &lt;a href=&quot;http://raibledesigns.com/rd/entry/getting_started_with_angularjs&quot;&gt;Getting Started with AngularJS&lt;/a&gt;
    so you can compare &lt;a href=&quot;https://github.com/mraible/angular-tutorial&quot;&gt;the code&lt;/a&gt; between the two.
&lt;/p&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_build&quot;&gt;What you&apos;ll build&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You&apos;ll build a simple web application with Angular 2 and TypeScript. You&apos;ll add search and edit features with mock data.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;what_you_ll_need&quot;&gt;What you&apos;ll need&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;ulist&quot;&gt;
            &lt;ul&gt;
                &lt;li&gt;About 15-30 minutes.
                &lt;/li&gt;
                &lt;li&gt;A favorite text editor or IDE. I recommend &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;IntelliJ IDEA&lt;/a&gt;.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt; installed.
                &lt;/li&gt;
                &lt;li&gt;&lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt; and npm installed. I recommend using &lt;a href=&quot;https://github.com/creationix/nvm&quot;&gt;nvm&lt;/a&gt;.
                &lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;create_your_project&quot;&gt;Create your project&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Clone the &lt;a href=&quot;https://github.com/mgechev/angular2-seed&quot;&gt;angular2-seed&lt;/a&gt; repository using git:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;git clone https://github.com/mgechev/angular2-seed.git angular2-tutorial
cd angular2-tutorial&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            NOTE: The angular2-seed project requires node v4.x.x or higher and npm 2.14.7. I used node v4.2.6 and npm 3.6.0.
        &lt;/p&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Install &lt;code&gt;ts-node&lt;/code&gt; for TypeScript:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
                &lt;pre&gt;npm install -g ts-node&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;Install the project&apos;s dependencies:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
                &lt;pre&gt;npm install&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;run_the_application&quot;&gt;Run the application&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;The project is configured with a simple web server for development. To start it, run:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
                &lt;pre&gt;npm start&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You should see a screen like the one below at &lt;a href=&quot;http://localhost:5555&quot;&gt;http://localhost:5555&lt;/a&gt;.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div id=&quot;default-homepage&quot; class=&quot;imageblock&quot;&gt;
            &lt;div style=&quot;text-align: center&quot;&gt;
                &lt;a href=&quot;https://farm2.staticflickr.com/1560/25886693062_4dd41acd3d_c.jpg&quot; title=&quot;Default homepage&quot; rel=&quot;lightbox[getting-started-with-angular2]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/25886693062/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1560/25886693062_4dd41acd3d_z.jpg&quot; width=&quot;640&quot; alt=&quot;Default homepage&quot;&gt;&lt;/a&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;You can see your new project&apos;s test coverage by running &lt;code&gt;npm test&lt;/code&gt;:&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;listingblock&quot;&gt;
            &lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;=============================== Coverage summary ===============================
Statements : 86.11% ( 93/108 )
Branches : 48.28% ( 70/145 )
Functions : 100% ( 25/25 )
Lines : 94.32% ( 83/88 )
================================================================================&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;add_a_search_feature&quot;&gt;Add a search feature&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;To add a search feature, open the project in an IDE or your favorite text editor. For IntelliJ IDEA, use
                File &amp;gt; New Project &amp;gt; Static Web and point to the directory you cloned angular2-seed to.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;the_basics&quot;&gt;The Basics&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create a file at &lt;code&gt;src/search/components/search.component.html&lt;/code&gt; with the following HTML:&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;h2&amp;gt;Search&amp;lt;/h2&amp;gt;
&amp;lt;form&amp;gt;
  &amp;lt;input type=&quot;search&quot; [(ngModel)]=&quot;query&quot; (keyup.enter)=&quot;search()&quot;&amp;gt;
  &amp;lt;button type=&quot;button&quot; (click)=&quot;search()&quot;&amp;gt;Search&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;
&amp;lt;div *ngIf=&quot;loading&quot;&amp;gt;loading...&amp;lt;/div&amp;gt;
&amp;lt;pre&amp;gt;{{searchResults | json}}&amp;lt;/pre&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/search/components/search.component.ts&lt;/code&gt; to define the &lt;code&gt;SearchComponent&lt;/code&gt; and point to this template.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {Component} from &apos;angular2/core&apos;;
import {CORE_DIRECTIVES, FORM_DIRECTIVES} from &apos;angular2/common&apos;;
import {ROUTER_DIRECTIVES} from &apos;angular2/router&apos;;

@Component({
  selector: &apos;sd-search&apos;,
  moduleId: module.id,
  templateUrl: &apos;./search.component.html&apos;,
  directives: [FORM_DIRECTIVES, CORE_DIRECTIVES, ROUTER_DIRECTIVES]
})
export class SearchComponent {
  loading: boolean;
  query: string;
  searchResults: any;

  constructor() {
    console.log(&apos;initialized search component&apos;);
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Update &lt;code&gt;src/app/components/app.component.ts&lt;/code&gt; to import this component and include its route.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {SearchComponent} from &apos;../../search/components/search.component&apos;;

@RouteConfig([
  { path: &apos;/&apos;,      name: &apos;Home&apos;,  component: HomeComponent  },
  { path: &apos;/about&apos;, name: &apos;About&apos;, component: AboutComponent },
  { path: &apos;/search&apos;, name: &apos;Search&apos;, component: SearchComponent }
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Your browser should refresh automatically, thanks to &lt;a href=&quot;http://browsersync.io&quot;&gt;Browsersync&lt;/a&gt;. Navigate to
                    &lt;a href=&quot;http://localhost:5555/search&quot;&gt;http://localhost:5555/search&lt;/a&gt; and you should see the search component.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div id=&quot;search-component&quot; class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://farm2.staticflickr.com/1552/25374766404_b0830ff897_c.jpg&quot; title=&quot;Search component&quot; rel=&quot;lightbox[getting-started-with-angular2]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/25374766404/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1552/25374766404_b0830ff897_z.jpg&quot; width=&quot;640&quot; alt=&quot;Search component&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;You can see it needs a bit of styling. Angular 2 allows you to provide styles specific for your component using a &lt;code&gt;styleUrls&lt;/code&gt;
                    property on your component.
                    Add this property to &lt;code&gt;search.component.ts&lt;/code&gt; you see below.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;templateUrl: &apos;./search.component.html&apos;,
styleUrls: [&apos;./search.component.css&apos;],
directives: [FORM_DIRECTIVES, CORE_DIRECTIVES, ROUTER_DIRECTIVES]
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/search/components/search.component.css&lt;/code&gt; and add some CSS.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: css&quot;&gt;:host {
  display: block;
  padding: 0 16px;
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;There, that looks better!&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://farm2.staticflickr.com/1563/25886691122_c209b90e33_c.jpg&quot; title=&quot;Search component with styling&quot; rel=&quot;lightbox[getting-started-with-angular2]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/25886691122/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1563/25886691122_c209b90e33_z.jpg&quot; width=&quot;640&quot; alt=&quot;Search component with styling&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Finally, update &lt;code&gt;src/app/components/navbar.component.html&lt;/code&gt; to include a link to the search route.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;nav&amp;gt;
  &amp;lt;a [routerLink]=&quot;[&apos;Home&apos;]&quot;&amp;gt;HOME&amp;lt;/a&amp;gt;
  &amp;lt;a [routerLink]=&quot;[&apos;About&apos;]&quot;&amp;gt;ABOUT&amp;lt;/a&amp;gt;
  &amp;lt;a [routerLink]=&quot;[&apos;Search&apos;]&quot;&amp;gt;SEARCH&amp;lt;/a&amp;gt;
&amp;lt;/nav&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;This section has shown you how to add a new component to a basic Angular 2 application.
                    The next section shows you how to create a use a JSON file and &lt;code&gt;localStorage&lt;/code&gt; to create a fake API.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;the_backend&quot;&gt;The Backend&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;To get search results, create a &lt;code&gt;SearchService&lt;/code&gt; that makes HTTP requests to a JSON file. Start
                    by creating &lt;code&gt;src/shared/data/people.json&lt;/code&gt; to hold your data.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;[
  {
    &quot;id&quot;: 1,
    &quot;name&quot;: &quot;Peyton Manning&quot;,
    &quot;phone&quot;: &quot;(303) 567-8910&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;1234 Main Street&quot;,
      &quot;city&quot;: &quot;Greenwood Village&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;80111&quot;
    }
  },
  {
    &quot;id&quot;: 2,
    &quot;name&quot;: &quot;Demaryius Thomas&quot;,
    &quot;phone&quot;: &quot;(720) 213-9876&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;5555 Marion Street&quot;,
      &quot;city&quot;: &quot;Denver&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;80202&quot;
    }
  },
  {
    &quot;id&quot;: 3,
    &quot;name&quot;: &quot;Von Miller&quot;,
    &quot;phone&quot;: &quot;(917) 323-2333&quot;,
    &quot;address&quot;: {
      &quot;street&quot;: &quot;14 Mountain Way&quot;,
      &quot;city&quot;: &quot;Vail&quot;,
      &quot;state&quot;: &quot;CO&quot;,
      &quot;zip&quot;: &quot;81657&quot;
    }
  }
]
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/shared/services/search.service.ts&lt;/code&gt; and provide &lt;code&gt;Http&lt;/code&gt; as a dependency in its constructor.
                    In this same file, define the &lt;code&gt;Address&lt;/code&gt; and &lt;code&gt;Person&lt;/code&gt; classes that JSON will be marshalled to.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {Injectable} from &apos;angular2/core&apos;;
import {Http, Response} from &apos;angular2/http&apos;;

@Injectable()
export class SearchService {
  constructor(private http:Http) {}

  getAll() {
    return this.http.get(&apos;shared/data/people.json&apos;).map((res:Response) =&amp;gt; res.json());
  }
}

export class Address {
  street:string;
  city:string;
  state:string;
  zip:string;

  constructor(obj?:any) {
    this.street = obj &amp;amp;&amp;amp; obj.street || null;
    this.city = obj &amp;amp;&amp;amp; obj.city || null;
    this.state = obj &amp;amp;&amp;amp; obj.state || null;
    this.zip = obj &amp;amp;&amp;amp; obj.zip || null;
  }
}

export class Person {
  id:number;
  name:string;
  phone:string;
  address:Address;

  constructor(obj?:any) {
    this.id = obj &amp;amp;&amp;amp; Number(obj.id) || null;
    this.name = obj &amp;amp;&amp;amp; obj.name || null;
    this.phone = obj &amp;amp;&amp;amp; obj.phone || null;
    this.address = obj &amp;amp;&amp;amp; obj.address || null;
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;In &lt;code&gt;search.component.ts&lt;/code&gt;, add imports for these classes.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {Person, SearchService} from &apos;../../shared/services/search.service&apos;;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;You can now add a type to the searchResults variable. While you&apos;re there, modify the constructor to inject the
                    &lt;code&gt;SearchService&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;searchResults: Array&amp;lt;Person&amp;gt;;

constructor(public searchService: SearchService) {}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then implement the &lt;code&gt;search()&lt;/code&gt; method to call the service&apos;s &lt;code&gt;getAll()&lt;/code&gt; method.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(): void {
  this.searchService.getAll().subscribe(
    data =&amp;gt; {this.searchResults = data;},
    error =&amp;gt; console.log(error)
  );
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;At this point, you&apos;ll likely see the following message in your browser&apos;s console.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
                    &lt;pre&gt;EXCEPTION: No provider for SearchService! (SearchComponent -&amp;gt; SearchService)&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;This happens because the app hasn&apos;t provided this service to components. To fix this, modify
                    &lt;code&gt;app.component.ts&lt;/code&gt; to import this component and add the service to the list of providers.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {NameListService} from &apos;../../shared/services/name-list.service&apos;;
import {SearchService} from &apos;../../shared/services/search.service&apos;;

@Component({
  selector: &apos;sd-app&apos;,
  viewProviders: [NameListService, SearchService],
  moduleId: module.id,
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Next, you&apos;ll likely get an error about the &lt;code&gt;Http&lt;/code&gt; dependency in &lt;code&gt;SearchService&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
                    &lt;pre&gt;EXCEPTION: No provider for Http! (SearchComponent -&amp;gt; SearchService -&amp;gt; Http)&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;To solve this problem, modify &lt;code&gt;src/main.ts&lt;/code&gt; to import the &lt;code&gt;Http&lt;/code&gt; service and make it
                    available to the app.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {HTTP_PROVIDERS} from &apos;angular2/http&apos;;

bootstrap(AppComponent, [
  HTTP_PROVIDERS, ROUTER_PROVIDERS,
  provide(APP_BASE_HREF, { useValue: &apos;&amp;lt;%= APP_BASE %&amp;gt;&apos; })
]);
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Now the page will load without errors. However, when you click on the button, you&apos;ll see the following error.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
                    &lt;pre&gt;ORIGINAL EXCEPTION: TypeError: this.http.get(...).map is not a function&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;I was stuck here for quite some time when I first encountered this issue. I was able to solve it
                    with a simple import in &lt;code&gt;main.ts&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
                    &lt;pre class=&quot;brush: js&quot;&gt;import &apos;rxjs/add/operator/map&apos;;&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Now clicking the search button should work. To make the results look better,
                    remove the &lt;code&gt;&amp;lt;pre&amp;gt;&lt;/code&gt; tag in &lt;code&gt;search.component.html&lt;/code&gt;
                    and replace it with a &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;table *ngIf=&quot;searchResults&quot;&amp;gt;
  &amp;lt;thead&amp;gt;
  &amp;lt;tr&amp;gt;
    &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;
    &amp;lt;th&amp;gt;Phone&amp;lt;/th&amp;gt;
    &amp;lt;th&amp;gt;Address&amp;lt;/th&amp;gt;
  &amp;lt;/tr&amp;gt;
  &amp;lt;/thead&amp;gt;
  &amp;lt;tbody&amp;gt;
  &amp;lt;tr *ngFor=&quot;#person of searchResults; #i=index&quot;&amp;gt;
    &amp;lt;td&amp;gt;{{person.name}}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;{{person.phone}}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;{{person.address.street}}&amp;lt;br/&amp;gt;
      {{person.address.city}}, {{person.address.state}} {{person.address.zip}}
    &amp;lt;/td&amp;gt;
  &amp;lt;/tr&amp;gt;
  &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then add some additional CSS for this component in &lt;code&gt;search.component.css&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: css&quot;&gt;table {
  margin-top: 10px;
  border-collapse: collapse;
}

th {
  text-align: left;
  border-bottom: 2px solid #ddd;
  padding: 8px;
}

td {
  border-top: 1px solid #ddd;
  padding: 8px;
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Now the search results look better.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div id=&quot;search-results&quot; class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://farm2.staticflickr.com/1677/25706917270_bf07c541e4_c.jpg&quot; title=&quot;Search results&quot; rel=&quot;lightbox[getting-started-with-angular2]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/25706917270/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1677/25706917270_bf07c541e4_z.jpg&quot; width=&quot;640&quot; alt=&quot;Search results&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;But wait, we still don&apos;t have search functionality! To add a search feature, add a &lt;code&gt;search()&lt;/code&gt; method to
                    &lt;code&gt;search.service.ts&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(q:string) {
  if (!q || q === &apos;*&apos;) {
    q = &apos;&apos;;
  } else {
    q = q.toLowerCase();
  }
  return this.getAll().map(data =&amp;gt; {
    let results = [];
    data.map(item =&amp;gt; {
      if (JSON.stringify(item).toLowerCase().includes(q)) {
        results.push(item);
      }
    });
    return results;
  });
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then refactor &lt;code&gt;SearchComponent&lt;/code&gt; to call this method with its &lt;code&gt;query&lt;/code&gt; variable.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(): void {
  this.searchService.search(this.query).subscribe(
    data =&amp;gt; {this.searchResults = data;},
    error =&amp;gt; console.log(error)
  );
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Now search results will be filtered by the query value you type in.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;This section showed you how to fetch and display search results. The next section builds on this and shows how to edit and save a record.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;add_an_edit_feature&quot;&gt;Add an edit feature&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Modify &lt;code&gt;search.component.html&lt;/code&gt; to add a link for editing a person.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;td&amp;gt;&amp;lt;a [routerLink]=&quot;[&apos;Edit&apos;, { id: person.id }]&quot;&amp;gt;{{person.name}}&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create &lt;code&gt;src/search/components/edit.component.html&lt;/code&gt; to display an editable form. You might notice I&apos;ve added &lt;code&gt;id&lt;/code&gt;
                    attributes to most elements. This is to
                    make things easier when writing integration tests with Protractor.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;div *ngIf=&quot;person&quot;&amp;gt;
  &amp;lt;h3&amp;gt;{{editName}}&amp;lt;/h3&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Id:&amp;lt;/label&amp;gt;
    {{person.id}}
  &amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Name:&amp;lt;/label&amp;gt;
    &amp;lt;input [(ngModel)]=&quot;editName&quot; id=&quot;name&quot; placeholder=&quot;name&quot;/&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;label&amp;gt;Phone:&amp;lt;/label&amp;gt;
    &amp;lt;input [(ngModel)]=&quot;editPhone&quot; id=&quot;phone&quot; placeholder=&quot;Phone&quot;/&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;fieldset&amp;gt;
    &amp;lt;legend&amp;gt;Address:&amp;lt;/legend&amp;gt;
    &amp;lt;address&amp;gt;
      &amp;lt;input [(ngModel)]=&quot;editAddress.street&quot; id=&quot;street&quot;&amp;gt;&amp;lt;br/&amp;gt;
      &amp;lt;input [(ngModel)]=&quot;editAddress.city&quot; id=&quot;city&quot;&amp;gt;,
      &amp;lt;input [(ngModel)]=&quot;editAddress.state&quot; id=&quot;state&quot; size=&quot;2&quot;&amp;gt;
      &amp;lt;input [(ngModel)]=&quot;editAddress.zip&quot; id=&quot;zip&quot; size=&quot;5&quot;&amp;gt;
    &amp;lt;/address&amp;gt;
  &amp;lt;/fieldset&amp;gt;
  &amp;lt;button (click)=&quot;save()&quot; id=&quot;save&quot;&amp;gt;Save&amp;lt;/button&amp;gt;
  &amp;lt;button (click)=&quot;cancel()&quot; id=&quot;cancel&quot;&amp;gt;Cancel&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Create an &lt;code&gt;EditComponent&lt;/code&gt; in &lt;code&gt;src/search/components/edit.component.ts&lt;/code&gt; that references this template and handles communication with the &lt;code&gt;SearchService&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {Component, OnInit} from &apos;angular2/core&apos;;
import {Person, Address, SearchService} from &apos;../../shared/services/search.service&apos;;
import {RouteParams, Router} from &apos;angular2/router&apos;;
import {CanDeactivate, ComponentInstruction} from &apos;angular2/router&apos;;

@Component({
  selector: &apos;sd-edit&apos;,
  moduleId: module.id,
  templateUrl: &apos;./edit.component.html&apos;,
  styleUrls: [&apos;./edit.component.css&apos;]
})
export class EditComponent implements OnInit, CanDeactivate {

  person: Person;
  editName: string;
  editPhone: string;
  editAddress: Address;

  constructor(
    private _service: SearchService,
    private _router: Router,
    private _routeParams: RouteParams
  ) { }

  ngOnInit() {
    let id = +this._routeParams.get(&apos;id&apos;);
    this._service.get(id).subscribe(person =&amp;gt; {
      if (person) {
        this.editName = person.name;
        this.editPhone = person.phone;
        this.editAddress = person.address;
        this.person = person;
      } else {
        this.gotoList();
      }
    });
  }

  routerCanDeactivate(next: ComponentInstruction, prev: ComponentInstruction): any {
    if (!this.person || this.person.name === this.editName || this.person.phone === this.editPhone
      || this.person.address === this.editAddress) {
      return true;
    }

    return new Promise&amp;lt;boolean&amp;gt;((resolve, reject) =&amp;gt; resolve(window.confirm(&apos;Discard changes?&apos;)));
  }

  cancel() {
    this._router.navigate([&apos;Search&apos;]);
  }

  save() {
    this.person.name = this.editName;
    this.person.phone = this.editPhone;
    this.person.address = this.editAddress;
    this._service.save(this.person);
    this.gotoList();
  }

  gotoList() {
    if (this.person) {
      this._router.navigate([&apos;Search&apos;, { term: this.person.name }]);
    } else {
      this._router.navigate([&apos;Search&apos;]);
    }
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Modify &lt;code&gt;SearchService&lt;/code&gt; to contain functions for finding a person by their id, and saving them. While you&apos;re in there, modify
                    the &lt;code&gt;search()&lt;/code&gt; method to
                    be aware of updated objects in &lt;code&gt;localStorage&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;search(q:string) {
  if (!q || q === &apos;*&apos;) {
    q = &apos;&apos;;
  } else {
    q = q.toLowerCase();
  }
  return this.getAll().map(data =&amp;gt; {
    let results = [];
    data.map(item =&amp;gt; {
      // check for item in localStorage
      if (localStorage[&apos;person&apos; + item.id]) {
        item = JSON.parse(localStorage[&apos;person&apos; + item.id]);
      }
      if (JSON.stringify(item).toLowerCase().includes(q)) {
        results.push(item);
      }
    });
    return results;
  });
}

get(id: number) {
  return this.getAll().map(all =&amp;gt; {
    if (localStorage[&apos;person&apos; + id]) {
      return JSON.parse(localStorage[&apos;person&apos; + id]);
    }
    return all.find(e =&amp;gt; e.id === id);
  });
}

save(person: Person) {
  localStorage[&apos;person&apos; + person.id] = JSON.stringify(person);
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;To make the app are of this new component, add an import and route configuration in &lt;code&gt;app.component.ts&lt;/code&gt;.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;import {EditComponent} from &apos;../../search/components/edit.component&apos;;

@RouteConfig([
  { path: &apos;/&apos;,      name: &apos;Home&apos;,  component: HomeComponent  },
  { path: &apos;/about&apos;, name: &apos;About&apos;, component: AboutComponent },
  { path: &apos;/search&apos;, name: &apos;Search&apos;, component: SearchComponent },
  { path: &apos;/edit/:id&apos;, name: &apos;Edit&apos;, component: EditComponent }
])
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Then create &lt;code&gt;src/search/components/edit.component.css&lt;/code&gt; to make the form look a bit better.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: css&quot;&gt;:host {
  display: block;
  padding: 0 16px;
}

button {
  margin-top: 10px;
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;At this point, you should be able to search for a person and update their information.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div id=&quot;edit-form&quot; class=&quot;imageblock&quot;&gt;
                &lt;div style=&quot;text-align: center&quot;&gt;
                    &lt;a href=&quot;https://farm2.staticflickr.com/1603/25886692692_42abb78ef6_c.jpg&quot; title=&quot;Edit component&quot; rel=&quot;lightbox[getting-started-with-angular2]&quot; data-href=&quot;https://www.flickr.com/photos/mraible/25886692692/in/datetaken-public/&quot;&gt;&lt;img src=&quot;https://farm2.staticflickr.com/1603/25886692692_42abb78ef6_z.jpg&quot; width=&quot;640&quot; alt=&quot;Edit component&quot;&gt;&lt;/a&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;The &amp;lt;form&amp;gt; in &lt;code&gt;src/search/components/edit.component.html&lt;/code&gt; calls a &lt;code&gt;save()&lt;/code&gt; function to update a person&apos;s
                    data. You already implemented this above.
                    The function calls a &lt;code&gt;gotoList()&lt;/code&gt; function that appends the person&apos;s name to the URL when sending the user back to the
                    search screen.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;gotoList() {
  if (this.person) {
    this._router.navigate([&apos;Search&apos;, { term: this.person.name }]);
  } else {
    this._router.navigate([&apos;Search&apos;]);
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Since the &lt;code&gt;SearchComponent&lt;/code&gt; doesn&apos;t execute a search automatically when you execute this URL, add the following logic to do
                    so in its constructor.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
&lt;pre class=&quot;brush: js&quot;&gt;constructor(public searchService: SearchService, params: RouteParams) {
  if (params.get(&apos;term&apos;)) {
    this.query = decodeURIComponent(params.get(&apos;term&apos;));
    this.search();
  }
}
&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;You&apos;ll need to import &lt;code&gt;RouteParams&lt;/code&gt; in order for everything to compile.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;listingblock&quot;&gt;
                &lt;div class=&quot;content&quot;&gt;
                    &lt;pre class=&quot;brush: js&quot;&gt;import {ROUTER_DIRECTIVES, RouteParams} from &apos;angular2/router&apos;;&lt;/pre&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;After making all these changes, you should be able to search/edit/update a person&apos;s information. If it works - nice job!&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;source_code&quot;&gt;Source code&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;A completed project with this code in it is available on GitHub at &lt;a href=&quot;https://github.com/mraible/angular2-tutorial&quot;&gt;https://github.com/mraible/angular2-tutorial&lt;/a&gt;.
                  If you have ideas for improvements, please leave a comment or send a pull request. 
            &lt;/p&gt;
            &lt;p&gt;
                I originally wrote this tutorial in &lt;a href=&quot;http://asciidoctor.org/&quot;&gt;Asciidoctor&lt;/a&gt; because it has a slick feature where you
                can include the source code from files rather than copying and pasting. Unfortunately, GitHub
                &lt;a href=&quot;https://github.com/github/markup/issues/172&quot;&gt;doesn&apos;t support includes&lt;/a&gt;. You can
                &lt;a href=&quot;http://gist.asciidoctor.org/?github-mraible%2Fangular2-tutorial%2F%2FREADME.adoc&quot;&gt;use DocGist to view this tutorial&lt;/a&gt;,
                but &lt;a href=&quot;https://github.com/asciidoctor/docgist/issues/11&quot;&gt;includes don&apos;t work&lt;/a&gt; there either.
            &lt;/p&gt;
            &lt;p&gt;If you&apos;d like to see the Asciidoctor-generated version of this tutorial, you can install the gem, checkout the project from GitHub,
                and then run &lt;code&gt;asciidoctor README.adoc&lt;/code&gt; to produce a &lt;code&gt;README.html&lt;/code&gt; file.
            &lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
    &lt;h3 id=&quot;summary&quot;&gt;Summary&lt;/h3&gt;
    &lt;div class=&quot;sectionbody&quot;&gt;
        &lt;div class=&quot;paragraph&quot;&gt;
            &lt;p&gt;I hope you&apos;ve enjoyed this quick-and-easy tutorial on how to get started with Angular 2. In a future tutorial,
                I&apos;ll show you &lt;a href=&quot;//raibledesigns.com/rd/entry/testing_angular_2_applications&quot;&gt;how to write unit tests and integration tests for this application&lt;/a&gt;. I&apos;ve also started looking into creating an ES6 version of this tutorial using So&#243;s G&#225;bor&apos;s &lt;a href=&quot;https://github.com/blacksonic/angular2-es6-starter&quot;&gt;angular2-es6-starter&lt;/a&gt;. If you know of a better starter for Angular 2 and ES6, please let me know.&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sect2&quot;&gt;
            &lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;I used a number of resources while creating this application. &lt;a href=&quot;https://www.ng-book.com/2/&quot;&gt;ng-book 2&lt;/a&gt; was an invaluable resource
                    and I highly recommend it if you&apos;re learning Angular 2. I found Chariot Solution&apos;s article on
                    &lt;a href=&quot;http://chariotsolutions.com/blog/post/angular2-observables-http-separating-services-components/&quot;&gt;Angular2 Observables, Http, and
                        separating services and components&lt;/a&gt;
                    to be quite helpful. Finally, the &lt;a href=&quot;https://github.com/angular/angular-cli&quot;&gt;angular-cli&lt;/a&gt; project was a big help, especially its
                    &lt;code&gt;ng generate route &amp;lt;object&amp;gt;&lt;/code&gt; feature.&lt;/p&gt;
            &lt;/div&gt;
            &lt;div class=&quot;paragraph&quot;&gt;
                &lt;p&gt;Kudos to all the pioneers in Angular 2 land that&apos;ve been using it and writing about it on blogs and Stack Overflow.
                    Getting started with Angular 2 would&apos;ve been a real pain without your trailblazing.&lt;/p&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://raibledesigns.com/rd/entry/happy_birthday_abbie9</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_abbie9"/>
        <published>2015-11-05T06:37:43-07:00</published>
        <updated>2015-11-05T12:37:43-07:00</updated> 
        <category term="/General" label="General" />
        <category term="birthday" scheme="http://roller.apache.org/ns/tags/" />
        <category term="happy" scheme="http://roller.apache.org/ns/tags/" />
        <category term="teenager" scheme="http://roller.apache.org/ns/tags/" />
        <category term="abbie" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;We now have a teenager. Abbie turns 13 today and we&apos;re celebrating with smiles in the Raible household. Abbie is in 7th grade now. She&apos;s a straight-A student and still loves to pick on her little brother. She&apos;s old enough that she&apos;s picked up an after school job babysitting and often has more money in her back account than I do. Trish takes her horseback riding a couple times per week and she recently competed in her first horse show competition. You can tell by the photo below that she enjoyed the experience.&lt;/p&gt;
&lt;p style=&quot;text-align: center&quot;&gt;
&lt;a href=&quot;https://farm1.staticflickr.com/573/22813519081_515a9101c7_c.jpg&quot; data-href=&quot;https://www.flickr.com/photos/mraible/22813519081/&quot; title=&quot;Abbie at her first competitive horse show&quot; rel=&quot;lightbox[abbie13]&quot;&gt;&lt;img src=&quot;https://farm1.staticflickr.com/573/22813519081_515a9101c7.jpg&quot; width=&quot;500&quot; alt=&quot;Abbie at her first competitive horse show&quot; style=&quot;border: 1px solid black&quot;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;If you&apos;re a long-time reader, you might remember the &lt;a href=&quot;//raibledesigns.com/rd/entry/our_little_girl_has_arrived1&quot;&gt;day she was born&lt;/a&gt;. I &lt;a href=&quot;//raibledesigns.com/rd/entry/roller_installed_successfully&quot;&gt;started this blog&lt;/a&gt; only a few months before.&lt;/p&gt;
&lt;p&gt;Happy Birthday Abbie! Most people are scared of their children&apos;s teenage years. We&apos;re not. You&apos;re an awesome human and we love your fun-loving spirit, your kindness and your ability to rile up Jack like no other. We can&apos;t wait to experience your teenage years with you and support you in whatever challenges you take on. &amp;#128523;&lt;/p&gt;</content>
    </entry>
</feed>

