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.

A Story about My Mom

Beautiful Water My Mom is one of the coolest people I've ever met. She was born in Billings, Montana on January 4, 1950. That makes her a Montana Native. She grew up in the city, but moved to The Cabin in her 20s. Life at the cabin wasn't easy. My parents were pretty darn poor the entire time we lived there. To help reduce the cost of living, we raised a lot of animals. We had chickens for eggs, goats for milk, rabbits to eat and every so often, we'd get a couple of pigs to raise for food.

The pigs presented an interesting problem: bears. Bears love pigs. I can remember a couple of times where bears would sneak in and run off with one of the pigs for dinner. Bears were dangerous and my parents didn't like them - both for fear they'd harm one of us, but more because they'd harm the animals and our food supply. Bears were also good eatin', so if there was one hanging around, my parents didn't hesitate to try and shoot it.

When I was 2 years old, I got a puppy for my birthday. We named him "Woofer". He grew into a big ol' Hound Dog and turned out to be great at treeing bears. He had a very deep bark that would apparently scare them into climbing trees, making them easy targets.

The story I'd like to tell about my Mom happened when I was a kid. I don't know how old I was - but I was young enough that I don't remember the story. My dad was out of town, and a bear had been hanging around. My Mom was not happy and set out one day with the rifle and Woofer. They ended up getting the bear up a tree and my Mom shot him down. Apparently, she was pretty mad at the bear for threatening her children and all. She hauled him back to the "skinning tree", which was next to our house. I can see her now, yelling at the bear, telling him he deserved it and what a cocksucker he was. Foaming at the mouth, she whipped out her hunting knife, grabbed him by the balls, and sliced them right off. Still swearing at him, she grabbed a hammer and nail, and angrily nailed his nuts to a tree. "Serves you right you motherfucker", she probably muttered to herself.

To this day, that nail is still here and a small tuft of hair hangs from it. I apologize for the swearing in this story, but my Mom has always cussed like a sailor. ;-)

I'd like to take this opportunity to thank my Mom for all she's taught me. One of the things I've always admired about her is how happy she is all the time. She's a true optimist and enjoys almost everything she does, from being a "Burn Boss" to running in marathons. She's an incredible lady and I'm very proud to call her my Mom. Happy Mother's Day Mom!

Posted in General at May 13 2007, 09:58:54 AM MDT 9 Comments

Off to Florida

While I've been trouncing around the globe with my Dad, Julie and the kids have been splashing around Julie's mom's pool in Florida. Tonight I'll be joining them via a Frontier red eye. I'm not looking forward to the flight, but it'll be great to see everyone. Hopefully by this time tomorrow, I'll be sipping on a cold Corona and sitting by the pool. I like the idea of going on vacation a lot better than attending the JavaOne festivities. ;-)

Sunset in West Palm

Cheers!

Posted in General at May 08 2007, 08:02:25 PM MDT 3 Comments

What a Trip - Amsterdam was a blast!

Last week's trip to Europe for ApacheCon EU was nothing short of spectacular. Amsterdam was an incredible city that amazed me with its awesome biking system (and usage!), incredible atmosphere and a nice sense of relaxation. I think the picture below sums up our trip nicely. The weather couldn't have been better - sunny and warm with a cool breeze.

Amsterdam 2007

ApacheCon was likely an excellent conference, but I'm proud to say I didn't attend a single session. I did manage to make it to Sun's party on Thursday night (thanks Dave!), but that was about it. At the party, the Wicket guys had a BOF, which my dad and I sat in on. Thanks to Martin, Eelco and others for the good conversation, even if we did have to shout.

Wicket BOF

After my talk on Friday, we scrambled for the airport. It was pretty hectic after my talk with our departure looming and the fact that I still needed to pack. To top it off, the power went out in the hotel shortly after my talk. After arriving at the airport, I realized I forgot my passport in the room - Doh! (you're right Neil). Luckily, I was able to sweet talk my way onto the plane anyway and we arrived in Stuttgart an hour later.

The weather wasn't nearly as nice in Germany, but we did have a great time. The folks we went to visit have same last name as my family. Roland Raible was driving his VW Bus through Montana in the early 80s, when he noticed the "Raible" name on our mailbox. Curious, he drove up our front road and made it all the way to the cabin. I remember him driving up the road - I was only 9 years old when it happened. He hopped out of his van and yelled to us "My last name is Raible!" We don't know if we're actually related, but Roland and my dad have stayed in touch ever since that initial meeting. My dad visited him for the first time last year, following one of his trips to Africa.

Roland, his wife Helga and their 2 children all live in Wangen, which is a countryish town in Southern Germany. It rained the two days we were there, but we did make it to "Fidelisback", a bakery that's been around for over 500 years. The beer was excellent, as was the food. On Saturday, we traveled to the Zeppelin Museum and some stone-age huts along Lake Constance. Both places were very cool and educational. We enjoyed the audio tour at the Zeppelin Museum just like we did at the Van Gogh Museum in Amsterdam.

On Sunday, we left Stuttgart around 11 and arrived in Amsterdam at noon. Bruce hooked me up and left my passport in a locker. It was surprisingly easy to travel between The Netherlands and Germany with nothing but a driver's license. We arrived at my house in Denver at 11:00 on Sunday night.

If you ever get a chance to visit Amsterdam for Queen's Day - I highly recommend it. I know we'll be back.

For some photos of our trip, see my Europe 2007 Set on Flickr. Also, checkout Dave's Amsterdam vacation wrap-up for some good photos of Queen's Day.

Posted in General at May 08 2007, 06:17:46 PM MDT 3 Comments

ApacheCon EU: Comparing Java Web Frameworks Presentation

I said I'd post my presentation after my talk this morning, so here it is:

Download Comparing Java Web Frameworks Presentation (1.1 MB)

I went a bit long on the presentation, but the crowd (standing room only) seemed to enjoy it. Thanks to all who attended!

Posted in Java at May 04 2007, 02:45:55 AM MDT 23 Comments

Java Web Framework Tools: How many are there?

How many tools are there for the various open source web frameworks in Java? Here's my count:

So where did I get these numbers?

Struts 2's number (4) is based on tmjee's comment on a recent post. Spring MVC consists of Spring IDE, Gaijun Studio and IDEA (which supports Spring XML code-completion). There's no Stripes tools that I know of. JSF's number (12) is from research I did in October 2005 (if you have a definitive list, let me know). Tapestry has Spindle (which only supports 3.0) and 4.0 has an IDEA Plugin. Wicket has NetBeans support (which also exists for JSF (+Facelets), Tapestry and WebWork).

Please let me know if you have any corrections to these numbers. You can also download my presentation if you'd like to refute anything before tomorrow morning. It's noon in Amsterdam right now, so you have 18 hours or so.

Update: I've updated the graphs based on comments. Thanks for your input!

Posted in Java at May 03 2007, 02:17:28 AM MDT 19 Comments

Having fun in Amsterdam

My dad, Bruce and I arrived on Sunday morning in Amsterdam at the early hour of 8 a.m. I drugged myself with some Melatonin, so I didn't work as nearly as long as I would've liked. They did have an electrical plug (that required and worked with my MacBook adapter) so I was able to pull out the 15" and work for 5 hours. The flight was 9 hours and I managed to never step out of my seat (good ol' bladder of steel developed at The Cabin). Bruce said he slept 30 minutes at the end of the flight; my dad managed to get 7 hours.

The weather has been beautiful and we've been enjoying the sunshine and good beer. Queen's Day was crazy and quite a sight to see. The amount of boats in the canals and people in the streets was amazing. The only downside so far is neither my dad nor I brought our camera cords. If you're at ApacheCon EU and reading this, we could use a USB or Sony camera connector. I'll try to post some pics if I can borrow a cord.

Posted in General at May 02 2007, 07:38:59 AM MDT Add a Comment

The Flight to Amsterdam

Tomorrow morning, my dad, Bruce and I will be getting on a Continental flight headed for Amsterdam. We stop in Houston for a couple hours, then it's a 10-hour flight from there. Bruce found a diagram of our plane and it appears to have power outlets. Inspired by this news, I went out and bought an adapter for my MacBook Pro.

Now the question is - where there be enough room for my 17" laptop?

The last flight I was on (to Boston a few weeks ago), there was no room for a laptop. When the guy leaned back in front of me, I ended up with barely enough room to scratch my nose. A 15" laptop wouldn't have solved that problem. Has anyone out there flown internationally in a Boeing 767? We're in economy, so it might be tight, but I would like to get some work done on the flight. I'm willing to take both my MacBooks, but it would suck if I couldn't use either one. On the other hand, it'd be nice if I knew my 17" would work fine and I only had to take one. Thanks for any advice.

Update: The adventure/drama has already begun! My dad forgot his passport in Oregon and we've been on the phone with Fedex and UPS trying to get it here before our flight takes off at 11:20. Fedex was $384 for a "it should get there" delivery. UPS gave us a "guaranteed delivery" for $75 and told us it would get here by 9. Once they gave us the tracking number, they switched it to 10. Those bastards! Oh well, at least I'm on the flight - who knows about my dad. ;-)

Saturday @ 7 AM: UPS Tracking shows his passport is in Ontario, Canada (an arrival scan, no departure shown). WTF - the two hour flight from Portland to Denver wasn't short enough?!

Saturday @ 9 AM: Julie has the passport in her hands and is driving out to the airport to give it to my dad. He came with me an hour ago to check in and explain his situation. Looks like he's going to make it!

Posted in General at Apr 27 2007, 12:40:57 PM MDT 4 Comments

Help me help you (market your web framework)

Rather than trolling through google searches, mailing list archives and Amazon book searches, I'd like to try something new. For those projects represented in my Comparing Java Web Frameworks talks (MyFaces, Spring MVC, Stripes, Struts 2, Tapestry and Wicket), would you be interested in helping me gather statistics? I think by allowing projects to gather their own statistics, we'll get a more accurate number of their statistics. Here's the questions I need you to answer:

  1. How many tools (i.e. IDE plugins) are available for your web framework?
  2. How many jobs are available for your framework on Dice.com? What about Indeed.com?
  3. How many messages where posted to your user mailing list (or forum) in March 2007?
  4. How many books are available for your framework?

Of course, if you don't have time, I'll be more than happy to gather these statistics myself. However, those that do answer might get some extra marketing love during my talk. Answering in a comment or sending me an e-mail are the best ways to provide your findings. Thanks!

Update: Alastair asks for further clarification. Here goes:

> If you have lots of IDE tooling available, it probably means the configuration for the framework is overly complex and unmanageable without tooling.

While this may be true, if your framework is hot or uber productive, people want tools. Especially new developers. Remember there's a plethora of new Java developers every year and a lot of them prefer tool-based solutions. Good or bad, IDEs are nice and people like to use them. I've had many clients dismiss frameworks simply because no tools were available.

> The framework with the largest number of jobs available is probably Struts 1. Enough said.

Yes, you're definitely right. However, Struts 1 is not in this comparison - I dropped it because I don't want to recommend it to anyone.

> People only post to user lists when they are stuck. If the framework is hard to use, there will be lots of e-mails. If it has a steep learning curve, and/or the documentation is poor, this will be particularly so. On the other hand, an active list might point to a large active user base. Who knows which is which from a raw figure?

What about community? Mailing lists and their activity is a sign of an active community. Even though SiteMesh is a mature and good solution, its community sucks. There's little support, no new features, no bug fixes. An open source project w/o a community is tough for a company to adopt. Also, the best communities do a lot more than answer questions on mailing lists. They develop their applications, get advice, offer advice and sometimes even hang out. The Struts list used to have threads 30-50 messages long about development philosophies. When you joined the mailing list, you felt like you were a part of something, not just a user of a product.

> If your framework is fairly stable, and someone has written a fabulous tome on it that is universally acknowledged as "the bible", few people would bother writing another book for it.

I don't agree - this just means there's no market for other books because not that many people are using it. Look at Grails, Groovy, GWT and Rails - there's been quite a few books on each and no slowdown in sight. Then again, there weren't many Ant books and that was/is hugely popular. I'm willing to change this question to "How many good does your framework have?", but that's up to everyone's own interpretation. Again, lots of books means there's an active community outside the immediate mailing list - it's a sign the general "market" is interested and the framework fills a need.

Of course, I am interested in asking the questions that developers want to see answered. Do you have suggestions for replacement (or new) questions? Remember, people like hard facts, not wishy washy statements about how productive and OO your framework is. Every framework can be uber productive if you have the right developer(s) and they're genuinely interested in getting stuff done.

Posted in Java at Apr 26 2007, 01:58:30 PM MDT 15 Comments

The JA-SIG Summer Conference

In June, I'll be doing a keynote at the The JA-SIG Summer Conference. This should be interesting because 1) I've never done a Keynote and 2) the other Keynote speakers are Phil Windley and Matt Asay. I've never met either one, but I've heard Matt's name a fair amount. As for Phil, I already like him from reading his blog:

Adobe Open-sources Flex

Yawn...

I'm not sure what the excitement is all about.

I'll be doing my Comparing Java Web Frameworks talk. They gave me the option to talk on whatever I wanted. I chose the CJWF talk because then I didn't need to do any extra work. ;-) I'm beginning to look like a one-trick pony, but that's OK - at least it's a fun talk to deliver. I'll be delivering it at OSCON as well. Yesterday, I submitted proposals for Acegi + SSO + Roller, AppFuse 2.0 and CJWF to CSS and JavaZone. I'll also be flying down to Dallas on June 13th to talk about AppFuse 2.0.

For those of you who don't know, the purpose of JA-SIG and the conference is to develop a global academic community providing education and research in the applied use of open technology architectures and systems in higher education. It sounds like a good conference - I'm looking forward to all the talks on CAS, uPortal and Ajax.

Posted in Java at Apr 26 2007, 01:33:30 PM MDT Add a Comment

AppFuse Light 1.8 Beta Released

AppFuse Light 1.8 Beta adds CSS Framework integration, as well as support for Stripes (1.4.2) and Wicket (1.2.6). This is a beta release so we can work out some kinks before the final release.

AppFuse Light now offers 60 possible combinations for download:

  • Web Frameworks: JSF (MyFaces), Spring MVC (with Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts 1.x, Struts 2.x, Tapestry, WebWork, Wicket
  • Persistence Frameworks: Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC

AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher

If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to [email protected].java.net. You can also post questions in a forum-like fashion using Nabble: http://appfuse.org/forums.

If you're a developer of one of the frameworks that AppFuse Light uses - I'd love a code review to make sure I'm "up to snuff" on how to use your framework. I'm also more than willing to give commit rights if you'd like to improve the implementation of your framework.

Live demos are available at:

Update: Based on Martin's blog post, I've added the version numbers for Stripes and Wicket (1.4.2 and 1.2.6, respectively). While the Wicket guys recommended I use Wicket 1.3.0, I was already knee deep in 1.2.6 when I read their recommendation. If 1.3.0 really is that much better than 1.2.6, it should be a pleasure to upgrade (and a good learning experience too boot!).

Posted in Java at Apr 26 2007, 02:23:22 AM MDT 10 Comments