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 "read Economics 22nd Edition online free". 1,100 entries found.

You can also try this same search on Google.

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

The Art of AngularJS

Last night, I had the pleasure of speaking at Denver's DeRailed about AngularJS. Fernand (the group's leader) asked me to speak in December, just after I'd finished a European speaking tour. The Modern Java Web Developer talk I created for that tour included a 20-minute AngularJS Deep Dive screencast. I figured it wouldn't be much work to augment the screencast and create an hour long talk, so I agreed.

When I started creating the presentation last week, I decided I didn't want to make the audience watch my screencast as part of the presentation. They could easily do that on their own time. So I wrote, from scratch, a brand new presentation on AngularJS. I tried to include all the things about Angular that I thought were important and useful for me in my learning process. The result is a presentation I'm proud of and enjoyed delivering.

You can click through it below, download it from my presentations page, or view it on SlideShare.

You might notice the presentation has a whole lot of code in it. Normally, when I copy/paste code into a presentation, I use IntelliJ IDEA and everything works. This time, there was something amiss between IDEA 13 and Keynote 6. I tried using IDEA's plugins (namely Copy on steroids and Copy as HTML), but none of them worked. IDEA 12 resulted in the same problem. Then I turned to other solutions. I installed highlight and copied code from the command line. This worked, but the fonts and colors weren't to my liking. Finally, I decided to try another editor: Sublime Text with SublimeHighlight. This worked great and I'm very happy with the results.

Most of my presentations end with a Questions/Contact slide. For this one, I added a few more: people to follow on Twitter, resources to learn from and projects with useful code. Below are a handful of links that greatly enhanced my AngularJS knowledge in the last year.

One of the audience members at DeRailed recommended thinkster.io as a good resource too.

Thanks to Fernand for inviting me to speak and causing me to write this presentation. Creating it greatly improved my AngularJS knowledge and I learned about some new tools in the process. If you'd like to tap into my wealth of knowledge, I'm available for a new gig in April. ;)

Posted in The Web at Feb 27 2014, 09:44:29 AM MST 4 Comments

Heli Skiing in British Columbia with CMH Gothics

I first learned how to downhill ski in Montana while I was in grade school. A couple times a year, the whole school would go on a field trip to Big Mountain (now Whitefish Mountain). I didn't ski a whole lot in high school, nor in college (at the University of Denver). However, several friends went to DU for the skiing. They'd schedule their classes so they had a couple days off per week, and they'd head for the hills. Two friends in particular, Chris and Chris, were some of the best skiers I'd ever seen. They'd fly through the moguls with legs like rubber bands, upper-body barely moving, legs absorbing the world famous bumps at Mary Jane.

I used to talk about Chris and Chris, long after college, as the amazing skiers with the rubber band legs. I didn't start skiing a lot until I worked for a .com in the late 90s. The VP of Development (whom we now call "The Professor") told us that one of the perks was a "9-inch Rule". The rule was that if it snowed 9", you could take the day off and go skiing, as long as you went to the resort that had the fresh powder. It was crazy how few people took advantage of this, but he and I never missed a day that year. That was likely the first year I'd skied more than 10 days in my life, and I'll bet I skied 20 with him.

I continued to ski a fair bit with my practice wife, then took a couple years off when the kids were born. We got them on skis when they were two years old, and they've been skiing ever since. The funny thing is, I never got really good at skiing until I started taking tips from The Professor. The year was 2010, and I got good enough to be able to ski top-to-bottom bump runs without stopping. Skiing had become a passion for me.

When I met Trish a few months later, I asked her if she skied (hoping to God she did). Her response blew my mind.

"No, I tele."

She went on to explain how she'd started with Alpine, moved to snowboarding for six years and was now addicted to free heeling. I just gazed with a dumb stare and my mouth open.

Last year, Chris M. decided it was high time we did a helicopter ski trip.

[Read More]

Posted in General at Feb 11 2014, 11:18:39 AM MST 1 Comment

Comparing JVM Web Frameworks at vJUG

A couple months ago, I was invited to speak at Virtual JUG - an online-only Java User Group organized by the ZeroTurnaround folks. They chose my Comparing JVM Web Frameworks presentation and we agreed I'd speak yesterday morning. They used a combination of Google Hangouts, live streaming on YouTube and IRC to facilitate the meeting. It all went pretty smoothly and produced a comfortable speaking environment. To practice for vJUG, I delivered the same talk on Tuesday night at the Denver Open Source Users Group.

The last time I delivered this talk was at Devoxx France in March 2013. I didn't change any of the format this time, keeping with referencing the Paradox of Choice and encouraging people to define constraints to help them make their decision. I did add a few new slides regarding RebelLabs' Curious Coder’s Java Web Frameworks Comparison: Spring MVC, Grails, Vaadin, GWT, Wicket, Play, Struts and JSF and The 2014 Decision Maker’s Guide to Java Web Frameworks.

I also updated all the pretty graphs (which may or may not have any significance) with the latest stats from Dice.com, LinkedIn, StackOverflow and respective mailing lists. Significant changes I found compared to one year ago:

[Read More]

Posted in Java at Feb 06 2014, 10:54:17 AM MST 6 Comments

2013 - A Year in Review

2013 was an amazing year: Trish and I got married, celebrated on a 'round-the-world honeymoon and invested in a new 4x4 VW Bus. I finally achieved my goal of vacationing 25% and I got to spend more than two months in the presence of my wonderful parents.

For this Year in Review post, I'll use the same format as I did last year:

Professional

For the last few years, I've generally had one client per year. That changed this year when my contract with Oracle ended in May. Fortunately, I had the opportunity to develop a cool dashboard application before I finished. I wrote about it in a four-part series.

[Read More]

Posted in Roller at Jan 31 2014, 08:53:10 AM MST Add a Comment

AppFuse 3.0 Released!

The AppFuse Team is pleased to announce the release of AppFuse 3.0. This release is AppFuse's first release as a 10-year old and includes a whole slew of improvements.

  • Java 7 and Maven 3 are now minimal requirements
  • Replaced MyFaces and Tomahawk with PrimeFaces for JSF
    • Removed SiteMesh in favor of JSF's built-in layout support
  • Added Wicket support
  • Migrated from jMock to Mockito for tests
  • Integrated wro4j and WebJars
  • Migrated to Bootstrap 3 and defaulted to Bootswatch's Spacelab theme

In addition, this release includes upgrades to all dependencies to bring them up-to-date with their latest releases. Most notable are Spring 4, Spring Security 3.2 and Bootstrap 3. For more details on specific changes see the release notes.

What is AppFuse?
AppFuse is a full-stack framework for building web applications on the JVM. It was originally developed to eliminate the ramp-up time when building new web applications. Over the years, it has matured into a very testable and secure system for creating Java-based webapps.

Demos for this release can be viewed at http://demo.appfuse.org. Please see the QuickStart Guide to get started with this release.

If you have questions about AppFuse, please read the FAQ or join the user mailing list. If you find any issues, please report them on the users mailing list. You can also post them to Stack Overflow with the "appfuse" tag.

Thanks to everyone for their help contributing patches, writing documentation and participating on the mailing lists.

We greatly appreciate the help from our sponsors, particularly Atlassian, Contegix, and JetBrains. Atlassian and Contegix are especially awesome: Atlassian has donated licenses to all its products and Contegix has donated an entire server to the AppFuse project.

Posted in Java at Dec 23 2013, 02:31:15 PM MST 1 Comment

Happy Birthday Abbie!

Abbie's 5th Grade School Picture. She can start dating when she's 25 Today marks 11 years since my little girl was born. She's not so little now, and growing up quite fast. Luckily, she's still shorter than most kids in her class, so she doesn't seem like an 11 year old. To celebrate, we started the morning with a birthday song, complete with our border collies (Sagan and Jake) barking loudly. It was a fun beginning and inspired a good mood all around.

Speaking of inspiration, I'd like to thank the state of Colorado and their 5th graders ski free program. It's motivated us to try and ski all the Colorado resorts this year. It all begins soon, with the Syncro Rescue in early December. Abbie is a pretty fast skier now, and I can't wait to ski the powder and ride the lifts with her. Our first road trip with the kids (and pets) will be for Christmas at The Cabin. We plan on skiing a bunch at Whitefish Mountain, where I learned how to downhill.

Happy Birthday Abbie! I hope you're ready for a winter of adventure! We had a blast celebrating your birthday with you tonight. :)

Abbie's 11th Birthday at Benihana

Posted in General at Nov 05 2013, 11:41:28 PM MST Add a Comment

Around The World Honeymoon: 3rd Stop, Thailand

In August, Trish and I journeyed on a 'round the world honeymoon, to Ireland, Italy, Thailand and Fiji. Thailand is somewhere I've always wanted to go, and we were looking forward to some beach time as we boarded our flight from Turin to Istanbul.

Flying over Istanbul Turkey We had high hopes for leaving the airport in Istanbul and grabbing dinner. With a six hour layover, we figured it wouldn't be too difficult. After waiting an hour in line to get out, the security guard told us we'd need a visa, which were available for $20 and another hour wait in line. We gave up and headed for the a lounge to relax and do a bit of writing. In fact, that's where I started writing the blog post about our wedding month. The flight to Bangkok started around midnight and arrived in the early afternoon on Monday, August 12. The Bangkok airport was massive and impressive, and we grabbed a bit to eat before boarding for Koh Samui.

Our hotel was the W Retreat Koh Samui and it was spectacular. Upon arrival, we were greeted by the General Manager (Brian Segrave) as we marveled at the view. Shortly after, a driver whisked us up to our bungalow in a "buggie" (golf cart). Our accommodations were exquisite, with a rose petal-filled bathtub, fondu, an outdoor shower and our own private pool. Basically, everything you'd want in a Honeymoon Getaway Suite.

After 2 days of traveling we make it to our room at the W in Thailand, whew!

And rose petals in our tub..I'm in heaven. They had fondue waiting for us in our room - sweet! Outdoor shower in our room!

No way!  We have our own little pool and veranda!

[Read More]

Posted in General at Oct 31 2013, 06:49:39 PM MDT 3 Comments

We Bought a Ski Bus!

This summer while vacationing in Montana, I gave my Cadillac Escalade to my parents. My reason was simple - it'd been molested too many times in the big city. We did enjoy catching the criminals (busted two would-be-thieves in the act in 2010), but we were ready for a new car.

We started looking for one shortly after arriving home from our honeymoon - from the Nissan Armada to the Tesla. But none of them really appealed to me. Then I found a rig that made my heart leap, the VW Syncro Westfalia, aka The Greatest Car Ever Built.

Everyone from pro snowboarder Jussi Oksanen to Maverick’s surfing legend Grant Washburn to actor Tom Hanks, who calls his Syncro addiction "a rare dementia," has succumbed to the Vanagon. The only drawback: production ceased in 1992, and there are only so many of these babies left (maybe as few as 5,000), so the vehicles are appreciating in value.

The first one I found stood out because it fixed the problem that many VW Busses have - crappy engines. Rather than a powerless ol' VW engine, it had a Subaru SVX H6 3.3L (240HP). I found a maroon syncro that was similar to the aforementioned one, but ended up buying the blue one after I asked the owner why his was better. He replied with a 12-item list and a closing paragraph that sealed the deal for me.

Any van you end up with will have its own eccentricities, personality traits, faults and virtues. Owning one, especially a Syncro is a labor of love, not necessarily a good investment purely in terms of money but man, I've racked-up more memories in that Syncro over the past 10 years than with anything else in my life. I've owned Syncros for years and will continue to do so, it gets in your blood and there's no cure.

Trish has always wanted an RV for photography, and I've longed for a VW Bus that runs. With our plan of skiing all over Colorado this year (Abbie gets free days at every resort), it should be a heckuva ski season!

Right 3/4

I can't wait to go and rescue it in December with my Dad. We figured it'd be fun since we did our first bus rescue in 2004. For more pictures, see my 1990 Syncro Westy SVX Full Camper set on Flickr or the original listing.

As for my '66 Porsche Bus, that's progressing nicely. It should be starting and drivable (though not street legal) in the next couple weeks.

Update: Dad is out, Trish is in for the Syncro Rescue Road Trip. She wasn't about to let us have all the fun. ;)

Posted in The Bus at Oct 22 2013, 11:47:18 AM MDT 1 Comment

JavaOne 2013: My Presentations

I flew into San Francisco this past Monday to speak at JavaOne 2013, and to meet with my new client. I made sure to wear a Broncos shirt since I was riding the train through Oakland and had some co-workers that were Raiders fans. My trip started off nicely as the Broncos dismantled the Raiders on Monday Night Football. My new team and I watched it during a team dinner at Havana in Walnut Creek. Historically, the Broncos and Raiders have had a heated rivalry historically, so the win was the perfect start to the week. :)

On Tuesday, I worked from my hotel in the morning, then met James Ward to do some last minute prep for our smackdown. The prior week, we both upgraded our respective apps to use the latest versions of Grails and Play Framework. I ran into a few issues when upgrading, while Play required some API changes.

We both added Memcachier to our apps (to share caching between dynos) and ran some Apache Bench tests. The results showed quite a bit of slowdown compared to last time, which we attributed to caching needing to make network hops. Other than that, we both had to make changes to our framework's buildpacks to get the latest versions running on Heroku, and when we headed for our talk, my instance of Grails wasn't running (60 second boot timeout on startup). The good news is it somehow solved its issues during our talk and was up and running when I checked it after, as it is now. Below is an embedded version of the presentation we delivered. You can also click here to see it in a new window, or view it on SlideShare.

On Wednesday morning, I tried to attend Venkat's Programming with Lambda Expressions in Java, but quickly discovered it was sold out. My talk on The Modern Java Web Developer started shortly after and I had a fantastic time talking to a packed room and preaching the virtues of learning and staying up-to-date with web technologies. I made sure to include a slide on Avatar, an Oracle-sponsored JavaScript-based framework that requires "very minor JavaScript knowledge". You can view my presentation below or on SlideShare.

According to @JavaOneConf, all JavaOne 2013 presentations will be published on Parleys.com.

After completing my talks, I journeyed to my client and practiced what I preached, successfully finishing a spike that reduced page load time from 8 seconds to 2 seconds. That evening, I attended the Oracle Appreciation Event at Treasure Island, had some cold beer and listened to some loud music.

I had a great time speaking at JavaOne this year, and look forward to my next speaking engagement. In November, I'll be traveling to Devoxx where I'll be giving a 3-hour University session on The Modern Java Web Developer. Hope to see you there!

Posted in Java at Sep 27 2013, 01:35:01 PM MDT 5 Comments