Matt RaibleMatt Raible is a writer with a passion for software. 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.
You searched this site for "matt". 1,142 entries found.

You can also try this same search on Google.

The Scenic Way to Santa Fe

After having a successful run at ski season with our VW Syncro, Trish and I figured we'd see how it performed in the summer. We took it 4x4ing in Moab, rafting in Dinosaur National Monument and camping for Father's Day Weekend. It was a trusty steed for our kids, dogs, skis and raft. Earlier this month, we planned a week-long road trip to Santa Fe to see one of my old college roommates. Because of the holiday weekend, it turned into a 10-day road trip. We left Denver in style on the morning of the 4th.

Happy 4th from our Red, White and Blues!

The motorcycle on the back didn't seem to slow us down much. We drove from Denver to Winter Park, taking the long way over Squaw Pass to avoid traffic.

The Scenic Route over Squaw Pass Colorado High Country

When we arrived at our Ski Shack, the engine was making a loud knocking sound. We dismissed it as a random occurrence. When I drove to the gas station 45 minutes later, the knocking was loud enough that heads turned when I drove past. After fueling up, I started the van and began driving back to our condo. The engine sputtered, the tires screeched and then the engine died. I pulled to the side, conveniently still in the gas station's parking lot. The engine would no longer turn over.

[Read More]

Posted in General at Jul 27 2014, 11:56:52 AM MDT 2 Comments

Why I prefer IntelliJ IDEA over Eclipse

Over the last couple months, I've received a few emails asking why I prefer IntelliJ IDEA over Eclipse. They usually go something like this:

I keep seeing you recommending IntelliJ. I keep trying it intermittently with using Eclipse, but I feel like I'm missing something obvious that makes so many people think it's better. Granted having the usual plugins incorporated is nice, but other things like the build process and debugger sometimes seems a step back from Eclipse. Could you please blog a '10 reasons why I love IntelliJ' or point me to something that would clue me in?

I grew to love IntelliJ for a few reasons. It all started in 2006 when I decided to migrate AppFuse from Ant to Maven. Before that, I was a huge Eclipse fan (2002 - 2006). Before Eclipse, I used HomeSite, an HTML Editor to write all my Java code (1999-2002). Eclipse was the first IDE that didn't hog all my system's memory and was pleasant to work with.

The reason I started using IntelliJ in 2006 was because of it's multi-module Maven support. Eclipse's Maven support was terrible, and m2e hasn't gotten a whole lot better in recent years AFAIK.

Back then, I used to think everything should be built and run from the command line. A couple years later, I realized it was better to run tests and debug from an IDE. Now I'm more concerned with the ability to run tests and debug in an IDE than I am from the build system.

In 2009, I started doing a lot more front-end work: writing HTML, CSS and JavaScript. I also started digging into alternate languages for these: Jade, GWT, CoffeeScript, LESS, SASS - even Scala. I found IntelliJ's support, and plugins, to be outstanding for these languages and really enjoyed how it would tell me I had invalid JavaScript, HTML and CSS.

My original passion in software was HTML and JavaScript and I found that hasn't changed in the last 15 years. AFAIK, Eclipse still has terrible web tools support; it excels at Java (and possibly C++ support). Even today, I write most of my HTML code (for InfoQ and this blog) in IntelliJ.

In reality, it probably doesn't matter which IDE you use, as long as you're productive with it. Once you learn one IDE well, the way others do things will likely seem backwards. I'm so familiar with debugging in IntelliJ, that when I tried to use Eclipse's debugger a few weeks ago, it seemed backwards to me. ;)

In a nutshell: the technologies I've worked with have been better embraced by IntelliJ. Has this happened to you? Have certain technologies caused you to use one IDE over another?

Posted in Java at Jul 21 2014, 01:33:55 PM MDT 16 Comments

Father's Day Weekend on The Arkansas River

I really enjoy being a father. I consider it one of my greatest responsibilities, one that has many rewards. There's nothing like hearing your son say "Dad, I'm really glad you made me go on this trip" (on our Yampa trip) or your daughter making you a Happy Father's Day book that says "you invented FUN!" Like many years in the past, we celebrated Father's Day Weekend with a camping trip.

Trish and I both invited our Dad's to join us, and they delightfully agreed. Trish transported her Dad to Denver by flying to Pennsylvania last Wednesday and road-tripping back with him. I flew my Dad in and picked him up from the airport Friday afternoon. We had a bit of road-tripping ourselves, with a drive to Fort Collins (to pick up our enhanced Syncro), then to Winter Park (to pick up our raft), then back to Denver.

Saturday morning, we packed up our sleeping bags, life jackets and border collies and drove to the Cotopaxi KOA on the Arkansas River. We arrived late afternoon, and were quickly impressed with the KOA's glamping attributes. We had an excellent riverside spot, with RV hookups for the van and a sweet concrete patio. We enjoyed a wagon ride, frisbee, fishing, and marshmallows by the fire before retiring for the night.

Dad at Cotopaxi KOA New bumpers and RV hookups Frisbee! Banjo Happiness

Crazies on the wagon ride

Nice spot to wake up Let's Go!

[Read More]

Posted in General at Jun 19 2014, 08:53:10 AM MDT Add a Comment

Rafting the Yampa through Dinosaur National Monument

In January, my friend Brice sent out an email to a bunch of folks asking us to apply for a river permit lottery. He sent us links to lotteries for Dinosaur National Monument - Yampa River and Desolation Gray - Green River. There were 10 of us on the email and we all applied for both permits. In mid-February, I found out I won the Yampa permit and the trip planning began. This was a huge deal for some since they'd been trying to get this permit for 10 years.

When we got all the details worked out, we were scheduled to launch on Saturday, May 31 and take out on Wednesday, June 4. Our put-in was Deerlodge Park and take-out, Split Mountain. If you're interested, you can see a map.

Over the next four months, many emails flew between us (33 pages if printed out) and much planning ensued. We had a planning BBQ, endured a permit-award-never-sent-fiasco and I tried to back out for Abbie's 5th grade continuation ceremony. Since I was the permit holder (and had to go), the crew convinced me it was a trip of a lifetime. We left Abbie in Denver for her ceremony and took Jack with us. When we launched on May 31, we had 21 people, 8 rafts and one inflatable kayak. Of the crew, 6 were children (aged 6 - 11).

Eddy... Set... Go!

[Read More]

Posted in General at Jun 11 2014, 10:30:23 PM MDT 1 Comment

How do you stay current with emerging technologies?

I recently received an email from a former co-worker. She was curious to know what I read/do to know what it is "trending" in the software world. I think this is good knowledge to share, and I'm also interested in what others do to keep up. Here's my response to her:

My technique for staying up-to-date is mostly reading, and attending some user group meetings. For reading, I read news.ycombinator.com, as well as infoq.com - who I now write for. DZone.com (esp. Javalobby and its HTML5 Zone) is also pretty good, as is arstechnica.com. I don't read nearly as much as I used to when I was subscribed to all of their RSS feeds and read them religiously.

Nowadays, most of my information comes from Twitter. I follow people that are involved in technologies I'm interested in. I try to keep the number of people I follow to 50 as I don't want to spend too much time reading tweets.

For meetups, most are on meetup.com these days. I'd find a couple that have technologies you're interested in (e.g. a local HTML5 meetup or Java user group) and join the group. You'll get email notifications when they have meetings.

Other than that, sometimes I do "conference driven learning". I'll pick a few technologies I'm interested in learning, submit a talk to a conference or user group, then be forced to learn and present on them when it gets accepted. It can be stressful, but it works and usually results in a good presentation because I can share the experience of learning.

One interesting thing I've realized about Twitter is I can make technologies seem "hot" based on the people I follow. If I'm following a bunch of AngularJS folks, my feed is filled with Angular-related tweets and it seems like the hottest technology ever. If I tweak who I follow to have a bunch of Groovy enthusiasts, or Scala folks, the same thing happens.

Of course, the best way to learn new technologies is to use them in your daily job. I strive to do this with my clients, but it doesn't always work out. I've found that working on open source projects and speaking at conferences can help you learn if you're in a stagnant environment. Then again, if you're not happy at work, quit.

What do you do to stay on top of emerging trends in technology?

Posted in Java at May 28 2014, 10:48:38 AM MDT 4 Comments

Syncro Solstice 2014

Our Camping Crew I like to think I've been part of the VW Community for many years. In reality, I've been sitting on the sidelines, waiting for the restoration of my '66 to finish. When we bought our Syncro last year, I became an active participant again. Last Thursday, we took full advantage of this wonderful community - joining a bunch of folks in Moab for Syncro Solstice.

The Syncro Solstice is an annual Volkswagen Transporter Jamboree produced by enthusiasts in the Intermountain area. The event hosts both 2WD and 4WD vehicles in an off-road desert-style family-camp-and-expedition Jamboree, held late spring in Moab, Utah. Our Eurovan, Bus, Doka and Microbus friends are a hit and also very welcome.

My parents joined us for this camping extravaganza, as did our "we love to go camping" border collies. The people were great, the vans were inspiring and the views, mesmerizing. We love Moab and the weather was gorgeous the entire time.

VW Sunset

Syncro Camp B Sunset

[Read More]

Posted in The Bus at May 21 2014, 10:21:11 AM MDT Add a Comment

Farewell to the 2013-2014 Ski Season

We took things up a notch for this year's ski season: we bought a ski bus (a.k.a. The Syncro) and rented our ski shack out for the season. Our goal was to ski all over Colorado since Abbie had free days at every resort. Personally, I racked up 28 days of skiing, Trish had similar numbers and, Abbie and Jack got between 15 and 20.

Let the VW adventures begin! We picked up the ski bus with a road trip from Sun Valley, ID to Denver. We were hoping to ski at Jackson Hole on the way home. The sub-zero temperatures quickly changed our minds and we learned about its sub-par wind resistance driving through Wyoming.

The kids and I started the season with a trip to A-Basin, followed by a day at Keystone. Then Trish and I hit Mary Jane before heading to Montana for Christmas.

Keystone Kids at Keystone Ski Bus next to a Sportmobile

Around this same time, Trish sold her Xterra and we became a one-vehicle family. The Syncro had its first (and only!) breakdown on the way to my parent's on Christmas Eve. We raced Santa Claus to The Cabin, packed in a rented sedan with two kids, two dogs and two cats. We realized afterward the car had bald tires and a broken windshield-washing system. Thank goodness the roads were dry.

The Syncro remained in Bozeman for a week while getting repairs done at Straightaway Motors. We enjoyed the beauty of Montana without it, sledding, skiing at Big Mountain and celebrating New Years with good friends in West Glacier. Taking Trish and the kids skiing in Montana was a ski-life highlight for me. As a teenager, I learned how to downhill ski at Big Mountain and it was really cool to show my family its awesomeness.

[Read More]

Posted in General at May 10 2014, 12:30:54 PM MDT 1 Comment

Spring Break in Florida: Golf, Beaches and Boats!

Florida is a beautiful state, with sandy beaches, excellent fishing, fun people and a great enthusiasm for golf. When I dreamed up Trish, I knew she'd have an awesome family, but I never expected her parents to have a house on a golf course. Trish's grandma, Claire Stanley, is a legend in her own right. I've never met her, but I knew I loved her when Trish's dad first told me about her "layered shots". When I saw Claire's name listed several times on the walls of the The Country Club of Naples, a deep respect came over me. Claire picked out her house on the 17th hole (Trish's favorite number) of the Country Club in 1966, when the establishment was founded. My bus was born in 1966.

Today, Trish's parents have turned it into a golf and relaxation oasis, complete with beautiful orchid gardens, a sweet pool and Japanese decorations from the country where they first met.

As a golf enthusiast, I'm embarrassed that we've only visited her parents in Naples once before. We bought Abbie and Jack golf clubs last year for Jack's birthday, and they both like to play the game. To make up for our lack of visiting family in Florida, we took our kids on a golf vacation for this year's Spring Break.

[Read More]

Posted in General at Apr 14 2014, 08:34:59 PM MDT 1 Comment

Developing an iOS Native App with Ionic

In my current project, I've been helping a client develop a native iOS app for their customers. It's written mostly in Objective-C and talks to a REST API. I talked about how we documented our REST API a couple days ago. We developed a prototype for this application back in December, using AngularJS and Bootstrap. Rather than using PhoneGap, we loaded our app in a UIWebView.

It all seemed to work well until we needed to read an activation code with the device's camera. Since we didn't know how to do OCR in JavaScript, we figured a mostly-native app was the way to go. We hired an outside company to do iOS development in January and they've been developing the app since the beginning of February. In the last couple weeks, we encountered some screens that seemed fitting for HTML5, so we turned back to our AngularJS prototype.

The prototype used Bootstrap heavily, but we quickly learned it didn't look like an iOS 7 app, which is what our UX Designer requested. A co-worker pointed out Ionic, developed by Drifty. It's basically Bootstrap for Native, so the apps you develop look and behave like a mobile application.

What is Ionic?
Free and open source, Ionic offers a library of mobile-optimized HTML, CSS and JS components for building highly interactive apps. Built with Sass and optimized for AngularJS.

I started developing with Ionic a few weeks ago. Using its CSS classes and AngularJS directives, I was able to create several new screens in a matter of days. Most of the time, I was learning new things: how to override its back button behavior (to launch back into the native app), how to configure routes with ui-router, and how to make the $ionicLoading service look native. Now that I know a lot of the basics, I feel like I can really crank out some code.

Tip: I learned how subviews work with ui-router thanks to a YouTube video of Tim Kindberg on Angular UI-Router. However, subviews never fully made sense until I saw Jared Bell's diagram.

To demonstrate how easy it is to use Ionic, I whipped up a quick example application. You can get the source on GitHub at https://github.com/mraible/boot-ionic. The app is a refactored version of Josh Long's x-auth-security that uses Ionic instead of raw AngularJS and Bootstrap. To keep things simple, I did not develop the native app that wraps the HTML.

[Read More]

Posted in The Web at Mar 27 2014, 04:38:55 PM MDT 9 Comments

Documenting your Spring API with Swagger

Over the last several months, I've been developing a REST API using Spring Boot. My client hired an outside company to develop a native iOS app, and my development team was responsible for developing its API. Our main task involved integrating with Epic, a popular software system used in Health care. We also developed a Crowd-backed authentication system, based loosely on Philip Sorst's Angular REST Security.

To document our API, we used Spring MVC integration for Swagger (a.k.a. swagger-springmvc). I briefly looked into swagger4spring-web, but gave up quickly when it didn't recognize Spring's @RestController. We started with swagger-springmvc 0.6.5 and found it fairly easy to integrate. Unfortunately, it didn't allow us to annotate our model objects and tell clients which fields were required. We were quite pleased when a new version (0.8.2) was released that supports Swagger 1.3 and its @ApiModelProperty.

What is Swagger?
The goal of Swagger is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection.

To demonstrate how Swagger works, I integrated it into Josh Long's x-auth-security project. If you have a Boot-powered project, you should be able to use the same steps.

[Read More]

Posted in Java at Mar 25 2014, 01:07:18 PM MDT 14 Comments