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.

Happy Birthday Abbie!

Today marks the 4th birthday of Julie and I's daughter, Abigail Grace Raible. It's been a great day of reflecting on what Abbie did to our lives and how it's been so much better with kids involved. Granted, it's no picnic, but it's certainly worth it and we wouldn't change a thing. Abbie's birthday party consisted of a number of friends, a plethora of presents, and enough hard cider and beer to make everyone happy. I love my kids. In a perfect world, every day would be like today.

Abbie and Jack

Posted in General at Nov 05 2006, 09:58:56 PM MST 4 Comments

Chelan Hard Cider

My sister, Kalin, flew in last night for Abbie's birthday. With her, she brought a case of her hard cider from Chelan Cider Company. It's was pretty impressive watching her pull all of it out of her luggage. It should be a good weekend for sure.

Chelan Hard Cider

Kalin's blog can be found at blog.chelancider.com.

Posted in General at Nov 04 2006, 10:38:30 AM MST Add a Comment

Continuum, Luntbuild, Pulse and NetBeans

Last night, I did a bit of playing with technologies new to me. First of all, I got AppFuse 2.0 running on Continuum. This was was easy enough, I just had to add <scm> information to each pom.xml. Thanks to those who recommended this approach. I thought it was a silly solution until I realized "mvn site" produced the wrong information when <scm> wasn't present for sub-modules.

Since I was playing with Continuous Integration tools, I decided to give Cerberus, LuntBuild, and Pulse a spin. My goal was to give each server the old "college try" and see if I could get them running with minimal effort. I don't know where I heard about Pulse, but it was somehow included in my tests.

Cerberus didn't work with my Cygwin/Ruby setup, so I was done with it quickly. LuntBuild worked pretty well, but the interface and configuration seemed kinda clunky. I also found it strange that it uses a 4.x version of Jetty - seems kinda old. I was surprised to see that it uses Tapestry for its web framework. Pulse was the nicest one with a kick-ass (ajaxified) user inferface, powered by Acegi, WebWork and Hibernate (according to its JARs). It was definitely the easiest to setup and use. While Pulse isn't free for commercial use, it is free for open source projects, as well as small teams.

Summary: Continuum, LuntBuild and Pulse seem to be the best tools for building Maven 2 projects. While CruiseControl works, and works well, it does require you to customize XML from the command line, whereas these tools allow you to do everything through a web interface.

Toward the end of the night, I downloaded NetBeans 5.5 and installed its Maven 2 Plugin. I was surprised at how full-featured this plugin is. I was able to build, test and run the AppFuse web modules in the embedded Tomcat without issues. It's definitely a cool plugin. As for NetBeans, it seemed pretty sluggish and I couldn't figure out how to get Ctrl+Shift+R functionality, which is a must for me these days. Also, I couldn't get the JSF support working for the AppFuse JSF Module, seemingly caused by the Maven plugin (project properties only has Maven options). Since NetBeans works so well with Maven 2, and it's much more full-featured than Eclipse, it seems natural to recommend it to AppFuse 2 users. Of course, I like IDEA a lot more, but there's no Maven 2 plugin that I know of.

Posted in Java at Nov 03 2006, 10:31:19 AM MST 17 Comments

IDEA 6 on OS X and Out of Memory Errors

Ever since I upgraded to IDEA 6.0.1 on OS X, I've been getting Out of Memory errors like no tomorrow. It seems like it's leaking memory when I'm not even using it. Today, I went to lunch shortly after opening IDEA to do some work. When I came back, I was created with the following dialog:

OOM Error Dialog

I've set my Info.plist to have -Xms256m -Xmx512m -XX:MaxPermSize=256m, but it doesn't seem to help. How has your IDEA 6 experience been on OS X? Are you running out of memory? I haven't had any issues on Windows - maybe it's a problem with the MacBook Pro?

I fully expect the IDE zealots to say "use NetBeans or use Eclipse". Eclipse doesn't support hierarchical projects, so that won't work. I'm willing to try NetBeans if I can run something like "mvn netbeans:netbeans" and if it supports hierarchical projects like IDEA does.

Posted in Java at Nov 02 2006, 08:06:39 PM MST 15 Comments

Upcoming Speaking Engagements

If you're interested in learning about Struts 2 or AppFuse, I'm doing a number of speaking engagements in the next month:

How's that for getting some mileage out of my CSS presentations? ;-)

I don't know who will be doing the Basic Concepts talk at DJUG, but I'm pretty sure Chris Maki will be presenting on JPA at the JBoss User Group meeting.

In addition to these local talks, I'll also be talking at The Spring Experience on What's new in AppFuse 2.0. Since my talk is at 9:30 p.m. on Saturday night, I'm looking into getting some free beer to bribe people into showing up.

Posted in Java at Nov 01 2006, 09:56:18 PM MST 4 Comments

JIRA Spam

The AppFuse JIRA instance has been getting hammered with spam today. Some jackasses are creating accounts and posting issues (as well as comments) chalk full of links. Any ideas how to stop this - outside of not allowing new users to sign up?

Posted in Java at Nov 01 2006, 09:32:56 PM MST 7 Comments

It's getting cold around here

New Commuter - Giant FCR3 This week, I started riding my bike to work again. It figures that it just happens to be one of the coldest weeks in quite some time. This morning, when I was riding home, the thermometer read 27°F on the 7News sign. It's really not too bad once you start riding, but it is tough to get going in the morning. It's one of those things - if you dress for it, you're more than comfortable.

I've ridden my bike to work so much in the last year that I had to buy a new chain and rear cassette yesterday. My chain was so stretched that it was skipping, no matter what gear I was in. Of course, after spending a bunch of money getting everything fixed yesterday - I got a flat tire on my way to work this morning. It was the first flat I've gotten since I started working downtown a year and a half ago. I wasn't too far away though - it only took me a 1/2 hour to finish the commute on foot. I fixed the tire with slime this afternoon, so hopefully it'll be another year and a half before my next flat.

Posted in General at Nov 01 2006, 09:18:58 PM MST 5 Comments

GenericRCP - A GUI for your Hibernate Domain Objects

Peter Schneider-Manzell is an active contributor to AppFuse's documentation and mailing list. Yesterday, he posted a message to the mailing list announcing the 0.3.0 release of GenericRCP.

We (a good friend of mine and myself) started a SpringRichclient based project, called "GenericRCP". With this tool, you can edit your DB directly via your classes and Hibernate. The GUI (Panels / Binding etc...) is generated dynamically out of a JAR, containing the classes and hbm.xml files.

For AppFusers: You only need to import your <.....>-dao.jar, and you can start to edit the values.

You can use this project as a starting point for a customized editor with CRUD functionality and add customized panels / attribute editors for different classes / attribute types, and combinations of them.

Yesterday, I tried GenericRCP with the appfuse-dao.jar from 1.9.4 (XDoclet-based), as well as the appfuse-data-common-2.0-SNAPSHOT.jar (annotations-based) and it worked with both. Nice work Peter!

GenericRCP Screenshot

Posted in Java at Oct 31 2006, 02:01:51 PM MST 2 Comments

Export your Facelets pages into PDF, PNG and SVG

Jacobus Steenkamp has an interesting article on java.net: Combine JSF Facelets and the Flying Saucer XHTML Renderer. In this article, Jacobus shows how you can use a filter and the Flying Saucer project to export a Facelets page to PDF, PNG or SVG. Pretty cool stuff if you ask me. I don't know if I'll ever have a need for it, but it's nice to know that this functionality exists.

Shameless plug: Equinox 1.7 and AppFuse 1.9.4 both include Facelets for their JSF options.

Posted in Java at Oct 31 2006, 09:42:18 AM MST Add a Comment

greendimes - powered by AppFuse

greendimes greendimes is a company that helps you to stop receiving junk mail. From their web site:

There are dozens of companies that sell your name to make a buck (actually, lots of bucks). We'll make sure you're taken off their mailing lists. How?

Well, we'll call, email and write these companies to make sure they leave you alone! This isn't easy. These companies change their policies and their contact info often. And even if you do go through the effort of validating every company's policies and contact info and write to each one, you could still get junk mail from them. Why?

Because when you move, donate money to charity, buy something from a catalog or do one of a hundred other seemingly innocent things, your name gets sold! That's why we're a recurring service -- we're going to contact these companies on your behalf a LOT, just to make sure you're kept off of these lists and people stop selling your name and address.

We keep you off.
Just because you're off doesn't mean you stay off. Just about anything you do -- refinance, move, get a new credit card, etc. -- puts you back on. So, we will regularly request your information be removed from existing lists and we add new junk mailers to our list regularly.

Sounds like a pretty cool service to me.

How do I know it's powered by AppFuse? Because they're still using the AppFuse favicon, and because I recently saw they're hiring a Senior Software Engineer with AppFuse experience listed as a bonus.

Posted in Java at Oct 29 2006, 11:52:01 AM MST 3 Comments