Matt RaibleMatt Raible is a Web Developer and Java Champion. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.

The kids actually like skiing!

Helmet Stickers The kids and I had a blast skiing at Winter Park today. I can't remember a day I've been more proud of my kids and their willingness to ski. I woke them up just before 6 AM this morning. I was very impressed when they both popped out of bed with huge smiles on their faces. They were actually excited to go skiing. Their enthusiasm didn't end throughout the day and we had a ton of fun.

I was most impressed with Abbie - she now wants to ski blues all the time. Not only that, but when she falls she has no problem getting up herself. Jack, on the other hand, can barely do "Pizza" and says "I can't" and "I'm scared" most of the time. I somehow convinced Abbie that if you believe you can do something, you can do it. She's been using that mantra whenever we ski and it's worked awesome for her.

For the last run today, I told Abbie we could do a blue; Jack would only do it if I carried him. We rode to the top of Winter Park and skied down a steep blue/black. I imagine it was a pretty funny scene because it looked like I was in way over my head. Abbie was going slow, snow-plowing like mad, and I was skiing with Jack in my arms while he carried my poles. Several folks stopped to see if we needed help, but I told them it was all pre-planned. Abbie fell several times, but got up by herself every time and even got "the burn" towards the bottom. It's a good thing I've been running to work lately, carrying a 4-year-old top-to-bottom on a steep blue with 8" of powder can be quite a workout.

Posted in General at Jan 24 2009, 05:24:34 PM MST 1 Comment

Traveling to Tahoe without a Driver's License

View from our room This past weekend, I had quite the adventure traveling to Lake Tahoe. On Thursday night, I flew into Denver from LA and had a busy night tidying up loose ends. After 3 hours of sleep and a late start, I was on my way to DIA early Friday morning. As I was approaching the parking garage, the lights went on in my review mirror.

When the cop asked me for my license and registration, I opened my wallet and felt my heart sink.

My driver's license was missing.

I quickly realized I left it in my pants the night before and explained this to the officer. Luckily, I found my birth certificate in my car's console and was able to show him that. He still wasn't convinced. Then he looked at my coat and said "What about your ski pass?" It had a picture on it and seemed to satisfy his identification criteria.

The cop then asked me why I was speeding (63 in a 45) and I politely explained my flight was departing in 30 minutes and I was hoping to make it. He said, "You won't make it. They won't let you check-in." I said I checked in online. He seemed to know this might work and quickly filled out the rest of my ticket. At this point, I didn't think it was possible to make my flight. I felt defeated and dreaded waiting all day until the next Frontier flight to Sacramento.

I arrived at the counter (to check-in my skis) 20 minutes before the flight was scheduled for departure. Frontier was awesome - they checked in my bags and sent me on my way as fast as they could. TSA wasn't too bad; I just had to go through the extra screening. Of course, I had to run all the way through Terminal A to make my flight on time.

While taxiing to the runway, I reflected on how awesome it was that I was utterly defeated 30 minutes prior and how the good people of Frontier Airlines made it all possible. Of course, when I arrived in Sacramento, my adventures continued with late baggage and rental car issues.

The good news is it all worked out in the end and I had a great weekend of skiing at Heavenly and Kirkwood. The snow wasn't great, but we skied in t-shirts all weekend. The Tahoe Trip seems to have become an annual tradition. Next year I'll make sure and bring my license. ;-)

Posted in General at Jan 22 2009, 04:09:27 PM MST 7 Comments

LA Tech Meetup Tonight

If you live in LA - or just happen to be in town - you should join us for some beers and tech talk this evening. We're meeting at The Village Idiot around 7 and plan on being there until 9. Hope to see you there!

In other Tech Meetup News, it looks like we'll be doing one in Denver next Thursday (January 22nd). Venue TBD.

Posted in Java at Jan 14 2009, 11:40:12 AM MST Add a Comment

Choosing an Ajax Framework

This past week, my colleagues and I have been researching Ajax Frameworks. We're working on a project that's following SOFEA-style architecture principles and we want the best framework for our needs. I'm writing this post to see 1) if you, the community, agree with our selection process and 2) to learn about your experiences with the frameworks we're evaluating. Below is the process we're following to make our choice.

  1. Choose a short list of frameworks to prototype with.
  2. Create an application prototype with each framework.
  3. Document findings and create a matrix with important criteria.
  4. Create presentation to summarize document.
  5. Deliver document, presentation (with demos) and recommendation.

For #1, we chose Ext JS, Dojo, YUI and GWT because we feel these Ajax libraries offer the most UI widgets. We also considered Prototype/Scriptaculous, jQuery and MooTools, but decided against them because of their lack of UI widgets.

For #2, we time-boxed ourselves to 3 days of development. In addition to basic functionality, we added several features (i.e. edit in place, drag and drop, calendar widgets, transitions, charts, grid) that might be used in the production application. We all were able to complete most of the functionality of the application. Of course, there's still some code cleanup as well as styling to make each app look good for the demo. The nice thing about doing this is we're able to look at each others code and see how the same thing is done in each framework. None of us are experts in any of the frameworks, so it's possible we could do things better. However, I think it's good we all started somewhat green because it shows what's possible for someone relatively new to the frameworks.

For #3, we're creating a document with the following outline:

Introduction

Ajax Framework Candidates
(intro and explanation)

  Project Information
  (history)
  (license / cost)
  (number of committers)
  (support options)
  (mailing list traffic (nov/dec 2008))

Matrix and Notes

Conclusion

For the Matrix referenced in the outline above, we're using a table with weights and ranks:

Weight Criteria Dojo YUI GWT Ext JS Notes
# Important Criteria for Customer 0..1 0..1 0..1 0..1 Notes about rankings

Our strategy for filling in this matrix:

  • Customer adjusts the weight for each criteria (removing/adding as needed) so all weights add up to 1.
  • We rank each framework with 0, .5 or 1 where 0 = doesn't satisfy criteria, .5 = partially satisfies, 1 = satisfies.

The list of criteria provided to us by our client is as follows (in no particular order).

  • Quality of Documentation/Tutorials/Self Help
  • Browser support (most important browsers/versions based on web stats)
  • Testability (esp. Selenium compatibility)
  • Licensing
  • Project health/adoption
  • Performance
  • Scalability
  • Flexibility/extensibility
  • Productivity (app dev, web dev)
  • Richness of widget/component library
  • Charting capability
  • Ability to create new widgets
  • Match to existing Java team skill-set
  • Ease of deployment (on Ops, QA, Users)
  • Degree of risk generally
  • Ability to integrate with existing site (which includes Prototype)
  • Easy to style with CSS
  • Validation (esp. marking form elements invalid)
  • Component Theme-ing/Decoration
  • CDN Availability (i.e. Google's Ajax Libraries API or Ext CDN)

What do you think? How could this process be improved? Of course, if you have framework answers (0, .5 or 1) for our matrix, we'd love to hear your opinions.

Posted in Java at Jan 08 2009, 09:36:22 PM MST 39 Comments

R.I.P. Giant FCR3

This week, I started a new gig at a new office in downtown Denver. On the first day, I was disappointed to find our building doesn't allow bikes inside. The next day, I went out and bought a new lock. Today, I walked out for the ride home to discover my bike had been stolen. :'(

At first I was shocked, then pissed, and then I noticed my lock was still there. This means, 1) I didn't wrap it around a tube or 2) someone cracked the lock and re-locked it. Of course, I find it hard to believe after all these years that I'd miss the tube when locking my bike. However, it'd be pretty strange if someone stole it and then went through the trouble to lock the lock again. Regardless, the awesome commuter I bought over 3 years ago is gone. You will be missed my friend.

New Commuter - Giant FCR3

Rather than buying a new one, I think it's a good opportunity to take things up a notch and start running to work instead. It's 6 miles and surely doable with some practice. There's also a good chance it's the worst idea I've had in a long time.

Update: Running wasn't too bad.

Posted in General at Jan 08 2009, 09:08:37 PM MST 9 Comments

Happy Birthday Mom!

For the last couple weeks, I've been enjoying a great Christmas vacation in Oregon with most of my family. Abbie and Jack didn't join me, but they got to spend 3 weeks in West Palm Beach, Florida. Poor kids.

Mom on Playa Carrillo I made sure the end of my vacation would land on a very special person's birthday. My Mom. Not only is my mom one of the coolest people in the world, she also has an excellent job title: Burn Boss. Growing up in Montana, I was always proud that Barb Raible was my mom. She was famous for her kindness in the Swan Valley. I hope she's always famous for her story about nailing a bear's nuts to a tree.

My mom is a Montana Native who wasn't afraid to raise her kids in the backwoods at her family's homestead. It sounds like a crazy idea to me, but she made it happen - cooking over a wood stove every day and working at the Swan Valley Ranger Station to make ends meet. She was responsible for getting us out of Montana and onto Oregon. She went back to school in her early 40s, got a degree in Forestry from the University of Montana and moved the whole family to Oregon for a job with the BLM.

I moved to Oregon on June 14, 1990 driving a '73 Plymouth Duster with a homemade International trailer in tow. We certainly looked like we were from Montana when we rolled into town. We moved into a house on Felony Flats. My sister and I got jobs at McDonald's (Dad's advice) and started school at North Salem High school in the fall. I met many good friends at North Salem - Jess, Matt, Clint and Michelle becoming favorites over the years.

Sunrise in Bend For New Years, Jess, Clint and I rented a condo in Bend, Oregon. Matt joined us on Friday after most of us experienced an Epic Powder Day at Mt. Bachelor. It was the first time we'd all been together in 9 years. We had a blast.

This vacation in Oregon has been very special to me. I've reunited with many old friends, enjoyed 2 epic powder days and had a great time with my Mom, Dad, Sister and her fiancé Mya.

As much fun as I've had, I'm looking forward to getting back to Denver and hanging out with my kids. January 2009 is sure to be one for the books. I start a new gig at a new office tomorrow. On Wednesday, the kids return from Florida to a mountain of presents at my house. My parents are coming to town next weekend, followed by a trip to Tahoe and a weekend in Steamboat to finish out the month.

Yeah, 2009 is going to be a lot of fun. Maybe I'll see you on the slopes. ;-)

Posted in General at Jan 04 2009, 12:08:28 PM MST Add a Comment

2008 - A Year in Review

In 2005 and 2006, I did "A Year in Review" entries. 2007 was the year I got divorced, which probably motivated me to write a bit less. This year I'm back and ready to spend the next few hours writing, copying/pasting and linking like a madman. Hope you enjoy!

Workin' on the Feedlot 2008 was the year I traveled the world and developed a true passion for skiing. In January, my good friend Jason Miller moved back to Denver after quitting his job at Bear Stearns in NYC. We spent the first weekend in Nebraska working on Cletus's feedlot. The next week, my car stereo got stolen and I wondered if my bad knee would make it through the ski season (the good news is not only did I ski the rest of the season, but my knee healed itself over the summer).

Abbie and Jack on Green Mountain At the end of January, the kids and I hiked to the top of Green Mountain and Don Brown made Maven not suck. Then I wondered if there was room for both Rails and Grails at a company and quickly learned both.

February started fantastically with a 14" Powder Day at Steamboat. I wondered if there is no "best" web framework and reviewed Grails and Rails books. After spending an awesome weekend in Tahoe, I took the kids on The Ski Train and learned more about Selenium at Google.

Breathtaking Miller and Vial Lake Tahoe - Last Run

This brings us to one of my favorite posts of all time. On February 28th, Jack got a bead stuck in his nose. After taking him to the ER and paying $800, we found out magic recipe for bead removal is to "hold one nostril and give him a CPR-type breath/blow into his mouth". The reason I love the post so much is it's solved the problem for other frantic parents when they Google for "bead stuck in nose". Whenever I get a new comment, it always makes me smile.

March started out with a Powder Day at Whistler. I thoroughly enjoyed the rest of the weekend with good friends Jarvis and Korn Dog. After returning to Denver, I was allowed to blog about building a UI Frameworks Team at LinkedIn and posted my thoughts on Grails vs. Rails.

View from Our Condo In mid-March, I achieved an all-Mac family and traveled to Lake Chelan for my sister's birthday. Shortly after, The AppFuse Primer was released. At the end of the month, I attended TSSJS in Vegas and moderated a Web Framework Smackdown.

In April, the LinkedIn Denver office opened and we all celebrated by attending the Rockie's Home Opener. The ski season came to an end and I wrote a howto for configuring Apache with mod_proxy and SSL on OS X. Then I discovered the JavaOne parties and wrote about running Spring MVC Web Applications in OSGi.

April ended with 82°F and May started with snow. I attended JavaOne (or at least the parties), released AppFuse 2.0.2 and figured out how to do extensionless URLs with the UrlRewriteFilter. The kids and I spent an afternoon in Rocky Mountain National Park and I did some coding in my backyard.

Jack's Special Rock Nice Trail Beautiful Smile Here's Hoping for another run in October

On Memorial Day, I enjoyed a liver-wrenching, Rockies-filled weekend with my sister her girlfriend Mya and Mr. Miller. I also contemplated making AppFuse Struts 2-specific.

June started with some mountain bike riding, planning some excellent vacations and getting a dream machine. I rode the annual trip to Big Head Todd at Red Rocks with Matt and Bruce. I took the kids on their first camping trip for Father's Day and had a blast. It took us several hours to find the campsite and my car kept starting all night long. It's sure to be a family tradition from now on.

Catchin' Bugs

The next weekend, I attended the American Craft Beer Fest in Boston. To end the month, I embarked upon Raible Road Trip #12 with Abbie, Jack and my Dad.

Grand Tetons In July, the bus project began and I posted pictures of the trip to Montana. This year, I hope to spend the whole month of July at the cabin. I bought an iPhone (one of my best technology-related purchases to date). OSCON was fun but the week after wasn't.

Nice 'n Snug August revealed my favorite birthday present. I didn't blog much the rest of the month, revealing why later.

Jack on his 4th Birthday Jack's Birthday Weekend was an outstandingly fun mixture of old friends and good Colorado beer. In September, I went to see the bus at MotorWorks, Abbie lost her first tooth and co-workers and I performance tested Memcached.

What followed was wonderful. Miller and I headed to Oktoberfest for the Best. Vacation. Ever. We still talk about how much fun we had on that vacation. October finished with the Colorado Software Summit and a hunting trip to the cabin.

November was a crazy month. I got laid off and celebrated Abbie's birthday on the same day. Jack got a mohawk and I traveled coast-to-coast in the same week. To close the month, I announced what's next and headed to Costa Rica.

Costa Rica, courtesy of Rob Misek

I had a fantastic time in Costa Rica and was impressed to see Abbie is a blue skier shortly after. I did a Dojo/Comet Research Project for a week and enjoyed the location of my newest client last week. A small adventure turned into a scary adventure and I enjoyed telling my stories to fellow Java Enthusiasts in Portland.

Phew! It's been quite a year. For 2009, I'm still hoping for what I tweeted shortly after Costa Rica. I'd like to visit 3 foreign countries, take 3 months of vacation and spend 1 month in Montana. I have technology goals too, but those aren't nearly as much fun to dream about. ;-)

Happy New Year!

Posted in Roller at Dec 31 2008, 04:56:32 PM MST 2 Comments

Portland Tech Meetup Tomorrow Night

If you live in Portland, Oregon - or just happen to be in town - you might want to join us for some beers and tech talk tomorrow (Monday) night. Patrick Lightbody, Howard Lewis Ship and myself will be meeting around 6:30 at the Rogue Distillery & Public House (map). With 36 taps and the delicious beer from Rogue Ales, this is sure to be a fun night.

If you're on Facebook, you can let us know you're coming by RSVP'ing to the Event. Otherwise, please leave a comment or just show up.

Posted in Java at Dec 28 2008, 04:18:35 PM MST 3 Comments

My "almost slept in a snow cave" Adventure with Clint Foster

Yesterday began innocently as one of the best ski days of my life. I woke up early, drove to Eugene (Oregon) to pick up my good friend Clint Foster, then headed up to Willamette Pass. It was an Epic Powder Day with over 2 feet of fresh pow pow and face shots on almost every run. After lunch and some liquid courage, we stepped it up a notch and skied some cornices and awesome trees.

Getting ready for a Cornice Jump Epic Powder Day Willamette Pass

Around 2:30, our luck began to change. In our quest for untracked powder, Clint led us off the back side of Willamette Pass. There were no out-of-bounds signs or ropes to indicate this was a bad idea. The steep tree run we found was great, but our attitude changed quickly when we reached the bottom.

With 2 feet of snow and no trail, we found ourselves trudging down a flat path that got us nowhere fast. For two hours, we slogged through the deep snow down a cross-country ski trail (there were blue signs with arrows). As we started to pass the 2nd lake (I believe they were called Rosary Lakes), we decided it was time to bite the bullet and turn around. We had no map or compass. If we kept going in our current direction, we didn't know when (or if) we'd get out. If we turned around, we knew it would take 4-5 hours, but at least we knew it would get us out. "And besides", Clint said, "the trail is already broken." The time was 4:30 and it was starting to get dark.

Yes, the trail was broken, but it wasn't broken for hiking sideways up the mountain we'd skied down. We couldn't take our skis off because we'd immediately sink up to our waste in the snow. It was slow going, sometimes only a step or two at a time. If I wasn't sweating and breathing hard, I'd start to get cold and shiver. We were soaked on the outside from the snow and soaked on the inside from sweating. It was snowing pretty good too, so we knew we might lose our trail if we dug a snow cave and spent the night.

The scariest part happened when we were about an hour from getting out. Clint started to cramp up and it seemed for moment that we were destined to spend the night in a snow cave. While it was his idea to take the trail, he was the reason I made it out last night. He broke trail for most of the hike out. I tried, but would get tired so quickly it didn't help much. So when he, the trail breaker, started to cramp up, it began to look grim. I don't know if it was the thought of sleeping in a snow cave or because we could see the top of the ridge, but Clint's cramps subsided and we were able to make it out. We ended up on a groomed run and had to hike another 45 minutes to get to the top of the mountain and ski down the front-side.

As for Search and Rescue, they were looking for us, but had only recently started searching. The resort had night-skiing and it wasn't until 9:00 that anyone thought we might be missing. Clint's wife, Autumn, was on the ball and had contracted the authorities to inspire their search. We couldn't have asked for a better concerned relative. Autumn is a special person who has a way of making things happen. If we'd spent the night in a snow cave, there's a good chance she would've had the National Guard looking for us the next day.

We made it back to the car just after 10 PM. We first started our run at 2:30 PM. From the point we turned around, it took about 5 hours to hike out. I've never been so tired after a day of skiing. We arrived back at Clint's place just after midnight after a 2-hour drive in the blowing snow and rain. Autumn greeted us with warm clothes, hot tea and the best hugs I've gotten in a long time.

If you ever get a chance to meet Clint and Autumn, I'd highly recommend it. They're the ones who got married in Costa Rica recently. As far as skiing with Clint, that's fun too, but I wouldn't recommend following him out-of-bounds. ;-)

Posted in General at Dec 27 2008, 11:58:54 AM MST 7 Comments

My Christmas Travel Adventure

I'm currently sitting at the Los Angeles Airport (LAX) waiting to board a flight to Portland (the real one, in Oregon). The flight is delayed an hour, but I'm confident it won't be cancelled and I'll arrive there later this evening. This is a story about my adventure getting to this point. It's not that exciting, but it certainly has the potential to become exciting. Hence the reason for this post.

Yesterday afternoon, I noticed the weather was getting kinda nasty in Oregon. Soon after, I talked with my Dad in Salem. He confirmed the bad weather and told me their power had been out for several hours. Then I noticed Patrick's tweet that he was having trouble getting from San Francisco to Portland.

This morning, I used KATU's Flight Status page and flightstats.com to setup text message alerts for my flight and the earlier one I was hoping to catch. At 9:49 this morning, I received a text message that my flight was cancelled. I realized this could be a very bad situation with everyone traveling for the holidays and began to think the worst. I knew it couldn't get much worse than renting a car and driving the from LA to Salem.

Yesterday afternoon, when I first suspected my flight might be cancelled, I called Alaska Air. It was busy. Today, I called them over 10 times with the same result. I called Orbitz (since I'd booked through them) and they couldn't help much either. While I was musing over how much fun my evening was going to be, a co-worker suggested I call American Express Travel. I'd used my Amex to buy my ticket, so it seemed like it might work.

Not only was Amex Travel extremely nice, but they were actually able to help me. The guy who helped me was named Tim and he said they had connections to a travel-agent-only line for Alaska. He said he'd call Alaska to find out what my situation was. He took my cell number and called me back in less than an hour. Unfortunately, I was in an important meeting and couldn't answer his call.

I didn't get a chance to call Tim back until I was on the way to the airport. This time I talked with Wendy from Marathon Travel. She had talked to Tim and while we were talking, she 1) booked me on the later flight at 8:40 and 2) sent me an e-mail with my confirmation number. She noted in her e-mail that it might not work:

If they give you any trouble or want to make you pay for the ticket, you may have to resort to your last option of renting a car and driving. I hope they cooperate and everything works out well for you. In any case have a safe journey and Happy Holidays.

Thanks to Wendy and especially Amex Travel for being so helpful. I never realized they had such good customer service. I'm very impressed.

The good news is everything did work out. Or at least it has so far. There's still quite a journey that has to take place. My sister drove from Chelan, WA to Salem, OR earlier today and it took her 3.5 hours to get from Portland to Salem (a 40 mile drive). Apparently, 6 inches of ice on the freeway can mess up traffic a bit.

I just got off the phone with my Dad where I gave him the good news (I'm coming) and bad news (please pick me up). There was no hesitation on his part and I'm hopeful that my bad-ass family won't let a little snow and ice get in their way. Now let's hope Alaska Air cooperates and holds up their end of the bargain.

Update: The rest of the trip was completed without a hitch. It took 3 hours for my sister and dad to drive to PDX and another 2 hours to get home. 6 inches of unplowed ice on I-5 was very interesting. We saw several rigs spin off the road in front of us. We made it safe and sound to Salem just after 3 AM.

Posted in General at Dec 23 2008, 08:18:49 PM MST 1 Comment