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.

eXtremeTable - another table tag for sorting and paging

From the AppFuse mailing list and the Spring Forums, I learned about eXtremeTable. This JSP Tag looks similar to the Display Tag, except that it includes support for checkboxes and filtering columns out-of-the-box. If you've used this tag, please let me know how it's working for you.

eXtremeTable Demo

Posted in Java at Jul 11 2005, 07:33:47 AM MDT 26 Comments

What's the best way to synch iPhoto Libraries?

Having two 17" PowerBooks around the house has led to a problem. We've accidentally imported our photos onto both machines, and now we don't have a true master that contains all our pictures. To rectify the problem, I tried using rsync to update my ~/Pictures/iPhoto Library directory with the one from the 2nd machine. All the pictures were migrated successfully, but not the photo albums, nor the thumbnails in iPhoto. I even tried importing the new pictures, but it says the file is not a valid image (even though I can open it in Preview just fine). Any ideas for a better synchronization strategy?

Posted in Mac OS X at Jul 11 2005, 06:02:50 AM MDT 6 Comments

New Bike - Giant FCR3

I had the pleasure of buying a new bike this weekend (my last one was stolen in June). Rather than replacing it with a mountain bike, I got a commuter. I've heard they're great for riding around town and can make the ride-to-work thing a lot faster. I'll probably buy a mountain bike too, but I'm going to hold off until next year for that - the Bus will be taking over as my top time-consuming hobby in the near future.

New Commuter - Giant FCR3

Update: More about the Giant FCR3.

Update 2: I set a new record on the ride to work this morning: 23 minutes! I took the long way to get home and it took 45 minutes. My goal is to reduce both times by 25% by the end of summer.

Posted in General at Jul 10 2005, 11:20:46 PM MDT 10 Comments

What a great vacation

We just rolled in last night from our family road trip to Montana. It was definitely a long drive - taking 2 days both ways. Yellowstone was awesome. We arrived at Old Faithful just minutes before it went off. We also strolled around a number of geysers and Abbie loved all of them. They were very beautiful and easily the best part of the drive up. Abbie even got to go fishing for the first time, in the Snake River just south of Yellowstone.

Tetons Windy Swimming

First Time Fishing Gooey Geyser

Once we got to the cabin, a great time was had by all. We attended the local 4th of July festivities and I got to catch up with some folks I went to grade school and high school with. It was fun meeting everyone's kids and spouses, and you can't beat the beer prices in Montana ($1.50 for a cold Bud Light). Abbie loved all the horses running around.

On the eve of the 4th, we had an excellent fireworks show and also broke ground on The New Cabin that my dad is building. Julie had a lot of fun operating the Excavator. The rest of the week was spent swimming, fishing, taking saunas, and tearing off the roof of the cabin. My mom even bought a 4-wheeler, which was a blast to ride around. I'd longed for one ever since I knew what they were, so it was pretty cool to have a childhood dream come true - in the same location I'd always wanted one.

The Parade The Excavator

This lifejacket is too big! New ATV

I definitely recommend the road trip thing if you have kids. It was a great way to spend quality time together and enjoy some of the beautiful world we live in.

As for e-mail, that wasn't bad at all - only 243 messages. We had so much fun on this trip, I think we're going to include the drive up as part of the tradition. It's neat to think that I'll be taking the same vacation every summer for the rest of my life. It'll be especially fun to watch the kids grow up and how their perception changes each year. Now I just need to figure out a way to spend the whole month of July in Montana. Those Europeans are smart - we all need to take a month off in the summer.

Posted in General at Jul 09 2005, 12:42:07 PM MDT 3 Comments

Off to Big Sky Country

Holland Lake In only a few more hours, we're heading on Raible Family Roadtrip #9. Number 7 was when Julie, Abbie and I traveled up the California coast, and number 8 was when my Dad and I drove my '66 Bus to Denver from San Diego. This time it's going to be much more special. The end destination is my favorite place on earth. We're heading for the cabin, which is a log cabin my grandpa built in 1918. I was born in one corner, my sister in the other, and I spent the first 16 years of my life there.

Spending the 4th of July at the cabin has been a long standing family tradition. It's always fun to watch the parade and the O-Mok-See in the small town I grew up in. The Swan Valley is a very special place and my friends that visit often return. It really is one of those uniquely special places on Earth.

I love road trips. Julie hates them, but tolerates the fact that I love them. The main reason we're not flying to Montana is because the flights are very expensive. It's a 1 and 1/2 hour plane ride and a 15-hour drive in the car. It's a good thing we have a DVD system in our Odyssey for the kids - 15 hours is a heckuva long trip.

While I was at JavaOne last week, Julie did some research and discovered that Yellowstone isn't too far out of our way, so we're staying there tomorrow night. I've been to Yellowstone a few times, and every time it takes my breath away. I can't wait to see the look on Abbie's face when she sees an Elk right outside her window.

The best part about the whole trip? It's sure to be the family, laughing and creating memories. But I'm also going unplugged - which I haven't done in a while. For the next week, I'll be without a laptop and refusing to check voicemail or e-mail. E-mail is going to suck when I get back, but the peace of mind while I'm gone is sure to be priceless.

Posted in General at Jul 01 2005, 11:25:40 PM MDT 6 Comments

Web Framework Comparison Whitepaper

Working at Virtuas in June was really a lot of fun. We worked a fair amount preparing for JavaOne, and also found time to work on a number of whitepapers. These whitepapers are part of an Open Source Landscape Series that has been posted to Virtuas's site. For your convenience, here's a current list:

In addition to the whitepaper, I also wrote an article for JDJ that'll be showing up in the July issue.

Posted in Java at Jun 30 2005, 07:54:10 PM MDT 8 Comments

[JavaOne] Web Frameworks and Birthday Celebrations

Yesterday was a fun afternoon. James Goodwill and I sat in the same room for 3 hours and watched 3 different presentations: Tapestry in Action, JSF and Spring and the Web Framework Smackdown. The Web Framework Smackdown was particularly enjoyable. It was great to see all the framework guys "duke it out" and there were plenty below the belt comments. After that, we hit a bunch of the Birthday Celebration festivities, including Free Booze, an Art Auction and Dennis Miller. Unfortunately, we missed Zepperella - an all-female Led Zeppelin cover band.

Following JavaOne festivities, we met up with the Geronimo guys - only to discover they had just passed the TCK for J2EE 1.4. This resulted in many hours of celebrating and good times. As usual, I took plenty of pictures.

James and Floyd

Today I slept in because I know I won't get any sleep when I get home (parents with small children hardly ever get to sleep much). I attended the Web Tier Expert Group meeting this afternoon, which was really great. We had folks from JSF, JSP and the Servlet teams, all trying to figure out what's next and what we need to do to make web development in Java easier. There were a lot of great ideas, and the next versions of all 3 specs should really improve things.

Posted in JavaOne at Jun 30 2005, 07:44:37 PM MDT Add a Comment

[JavaOne] Tapestry in Action

Last night was much milder than the previous night, and I actually feel pretty good today. I'm sitting in Howard's Tapestry in Action session, having just missed the session on Shale. This is a introduction to Tapestry, but it seemed like the most interesting session for this time slot.

Yesterday was a long day, mainly because of the Bomb Squad festivities from Monday. I did a book signing and actually managed to sign a few books. Spring Live is now #11 on the best sellers list at JavaOne.

Last night was a good time. We hit the Mergere party and learned a bit about Maven 2. It was cool to learn that Ant 1.7 is going to include Maven 2's dependency resolution. From there, we tried to go to a session on APT, but the room was packed and lacked A/C, so we bailed. From there, a whole slew of us (from Virtuas) went to a Southeast Asian restaurant that served excellent food, family-style, for hours on end. We hit the Tangosol+Solarmetric party after that and closed down the place. Click on the image below to see a bunch of pictures from the event.

JavaOne 2005 - Tuesday

Tonight, there's a big party at Moscone - complete with comedian Dennis Miller.

Posted in JavaOne at Jun 29 2005, 02:30:58 PM MDT 2 Comments

[JavaOne] Pictures from Monday

Click on the image below to see a bunch of pictures from the first day at JavaOne.

Posted in JavaOne at Jun 28 2005, 07:32:16 PM MDT 5 Comments

[JavaOne] Experiences with the 1.5 Language Features

This is the last session I plan on attending today, and it's titled "Experiences with the 1.5 Language Features: Tips and Techniques" by Tim Hanson and Jess Garms of BEA. Tonight looks to be a good time with the JBoss Party, Java Blogger Meetup (@ Thirsty Bear), the Pavilion Party. Times for the events are 5-9, 6-8 and 6:30-8. This conference is definitely packed, and I expect the parties to be the same. In other words, the best part of this shindig is yet to begin. ;-)

This talk is about how to make effective use of the new 1.5 Language Features in your applications.

For Each Loop: Initialization expression is evaluated once (unlike former). Major limitation of using the new for each loop is you don't have access to the index or the iterator.

Annotations: Built-in annotations - i.e. @SuppressWarnings("deprecation"). Possible values: all, deprecation, unchecked, fallthrough, path, serial, finally. This annotation is not supported in the latest version of Java 5, it is supported in Mustang and Eclipse 3.1. @Deprecated is another built-in annotations. If you use this tag, you should use the @deprecated javadoc tag as well. Last one is @Override, which is used to indicate that a method declaration is intended to override a method declaration in a superclass. If the superclass signature changes, this annotation will make sure you change it in child classes.

Annotations are especially useful for frameworks (i.e. EJBs, Web Services, etc.). Not a preprocessor, not a silver bullet.

Enums: Better than static final int. Type-safe. Utility classes: java.util.EnumMap and EnumSet. Public static final int-like behavior: Comparable, statically importable (even as an inner class).

Varargs: Special syntax for cleaning up code. Allows you to use "String... args" instead of a whole slew of methods that take multiple arguments. Use them sparingly - avoid code that casts.

Covariant Returns: Replaces three anti-patterns.

Using Generics: Example from Collections - static List Collections.singletonList(T o). There is a two-pass inferencing process to determine what T is. Other Generified classes: Class (public T newInstance()), Comparable (public int compareTo(T o)), Enum> (public Class getDeclaringClass()). You can also use wildcards with generics, which has a syntax of List instead of List. This allows you to specify subtypes, and not be tied to a strictly typed solution. Wildcards are great to use in APIs and to hide implementations from users.

I give up - this guy has been going on about Generics for far too long. Time to go hunt down some parties.

Posted in JavaOne at Jun 27 2005, 06:20:51 PM MDT 1 Comment