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.

It's Dumping in Colorado

The mountains and ski resorts are getting dumped on right now. Here in Denver, we have about 3-4 inches and it's still snowing. It started yesterday and it's cold (14°F) right now. Check out this ski report for Vail Resorts this morning.

Vail (www.vail.com)
Temp. at 5am MST: -1F/-18C
Surface Conditions: Powder
Snowfall in last 24 hours: 10in.
Snowfall in last 7 days: 34in.
Mid-Mountain Base: 28in.
Percent of Terrain Open: 15%

Beaver Creek (www.beavercreek.com)
Temp. at 5am MST: -1F/-18C
Surface Conditions: Powder
Snowfall in last 24 hours: 11in.
Snowfall in last 7 days: 38in.
Mid-Mountain Base: 39in.
Percent of Terrain Open: 22%

Keystone (www.keystoneresort.com)
Temp. at 5am MST: -1F/-18C
Surface Conditions: Powder/Packed Powder
Snowfall in last 24 hours: 4in.
Snowfall in last 7 days: 13in.
Mid-Mountain Base: 28in.
Percent of Terrain Open: 13%

Breckenridge (www.breckenridge.com)
Temp. at 5am MST: -1F/-18C
Surface Conditions: Powder/Packed Powder
Snowfall in last 24 hours: 3in.
Snowfall in last 7 days: 17in.
Mid-Mountain Base: 22in.
Percent of Terrain Open: 14%

You can see that 1) there's not much terrain open and 2) it's fricken cold up there. Raible Designs has a "9-inch rule", which means if it snows 9 inches or more, all employees get the day off to go skiing. ;-) I think I'll wait until January to make this a mandatory rule.

Looks like the commute should be fun this morning. Days like today make it nice to have a 20-step commute (40 with a stop at the coffee pot).

Posted in General at Nov 29 2004, 06:49:29 AM MST 5 Comments

Edit Screens with JSF

I'm working with JSF this morning and I'm finding one thing particularly annoying. I'm working on a simple master/detail screen and I'm tweaking the detail screen to fit my needs. It's just a <form> with some form elements. I change something, run "ant deploy-web" and hit "refresh" to see my updated page. Since everything in JSF is a post, I get prompted to re-submit the form. Fine, I agree - then I'm returned to the list screen. Argggh - why can't I just view the form again?! This might just be a MyFaces nuance, I'm not sure. Anyone know of a workaround?

Wanna see the bug/feature in action? Go to http://demo.raibledesigns.com/equinox-jsf/userList.html, click on a row - and after the edit screen displays, hit refresh on your browser. In an ideal world, you'd see the form again, but nope - you get the list instead.

Posted in Java at Nov 28 2004, 10:02:25 AM MST 9 Comments

The Garage Bench

After this week, the Bus has a new home and a bench to hold the tools for its restoration. The project begins early next year.

empty canvas
Empty Canvas
completed bench
Finished Bench
The Bus's New Home
The Bus's New Home

Posted in General at Nov 27 2004, 04:28:58 PM MST Add a Comment

Christmas Pictures

Just like last year, we went and had Christmas pictures taken this week. Here's a snapshot of the whole family. Kiddie Kandids is the place to go - you can actually pick out and leave with your photos 15 minutes after they're taken.

Raible Family at Christmas 2004

Posted in General at Nov 26 2004, 11:31:26 AM MST 2 Comments

GMail - Spam Filter Quit Working

It started yesterday and continues today. GMail is no longer filtering out spam - I'm getting it all. This means if I leave my computer and check my e-mail a couple hours later - I'm up to 200 new messages, with 1 or 2 that are actually sent to me - the rest are spam. Anyone else experience this GMail meltdown?

Posted in The Web at Nov 25 2004, 10:44:12 AM MST 7 Comments

AppFuse Tapestry/JSF Status

There's 3 phases of adding a new web framework to AppFuse. The first phase is integration and configuration. This is the fun part and involves adding JARs and configuring everything so the framework actually works. At the end of this phase, I'm usually pretty enthusiastic about my progress and think I can finish the whole project in a few more days. Then comes the "features" phase, when I start coding AppFuse features with the framework. This part always takes wwaaaaaaayyyy longer than I anticipate. This is the part where I realise previously done things (from other framework implementations) won't work and I have a long road ahead of me. For instance, with Tapestry and JSF, I have to figure out how to do the following: Country drop-down based on locale (currently a JSP tag, so should work with JSF), multi-select checkbox, and placing an asterisk next to required fields.

The asterisk isn't too hard if you do it the "WebWork way" - where you simply specify required="true" on JSP Tag. However, I'd prefer to have it read from the validation engine, so this will probably take some digging on how to do it with JSF/Tapestry. For the country drop-down, I'll probably have to create a Tapestry Component. I believe both frameworks have a multi-select checkbox component. After working with Tapestry's contrib:Table component for a few hours, I miss the Display Tag. The contrib:Table works, but it's a LOT more difficult to configure than the Display Tag. It also blows up if you click the column headings too many times. Also, it doesn't have any exporting features like the Display Tag. Sure, it might not need them, but a lot of folks have come to rely on these and it's a handy feature. Furthermore, another unfortunate thing I found in Tapestry this morning is it doesn't seem to read the locale from the request. So if you change your browser's language, it won't switch the language. You actually have to logout and kill the session to switch the locale. Bummer.

My main problem with the 2nd phase of the project is choosing whether to "do it right" or "get it done". I often start out just trying to get shit done, but end up being a perfectionist and trying to do it right. This phase took a couple of weeks to get through with WebWork. Ugh - I'd rather just get this stuff done, but I don't think it's gonna happen. I think I'll be working on the "features" phase for quite some time. Oh well, at least I'll learn the ins and outs of each framework.

The final "finishing up" phase is one of the best. It's when everything works and I write the installation scripts and tutorials. This is slightly painful b/c there's nothing new to discover, but it's also nice because there's nothing new to learn or get tripped up on.

AppFuse 1.7 estimated release date? I was hoping for the next couple of weeks, but I'd better stick with the end of the year. I'm sure there's going to be a fair amount of banging my head against the wall in the next few weeks.

Posted in Java at Nov 25 2004, 08:52:13 AM MST 1 Comment

Happy Thanksgiving!

Happy Thanksgiving to all those celebrating today. It's been a great week at the Raible Household. I've managed to squeeze in a few hours for AppFuse/Tapestry/JSF, but mostly I've been building a garage workbench with my Dad. We also setup a "beer fridge" so the garage is now a nice place to hang out. Should be even better when I start disassembling the bus.

I have a lot to be thankful for this year - the new bus, new baby, new house and new book. Abbie is a ton of fun these days, so I owe her a big thanks for all the smiles and laughs. I owe Julie a huge thanks for being so supportive of my "burning the midnight oil" and allowing me to write another book. To my Mom, Dad, and Kalin - you guys rock for always reminding me who I am and where I came from.

I owe my readers a note of thanks for visiting this site and listening to me ramble on about Java and the kick-ass open source tools that make our lives easier. You guys are responsible for the popularity of this site. Finally, I thank Dave Johnson for Roller (which started this site) - which lead to meeting Lance, which led to my first authoring opportunity. A lot of good fortune these days come from this site - I'm still astounded that a simple blog can open so many doors.

Happy Thankgiving!

Posted in General at Nov 25 2004, 08:30:32 AM MST 1 Comment

AppFuse Gig in San Fran

Todd Huss is looking for an AppFuse developer in San Francisco. More details at http://www.craigslist.org/sfc/eng/49835022.html. For those of you who don't know, AppFuse isn't much of a framework itself - it's more of a directory structure and build file that helps glue Hibernate, Spring and various web frameworks together. You can learn more about it by reading this article on java.net.

Posted in Java at Nov 23 2004, 09:59:22 AM MST

The AppFuse Generator

I found the AppFuse Generator project in my comments last night. Richard So seems to have created a nice code-generation tool for AppFuse. It looks like it can create/modify all the files you need to CRUD a database table. I took a brief look at the code and it's all based on Velocity templates, so you should be able to easily tweak things.

This tool does seem to generate the DAOs/Managers - which can lead to more code to maintain. It would be nice if it could be modified to be similar to AppGen where there's a "detailed" version (that generates everything) and a "default" version (which only generates the web tier classes). The default version could use the generic "dao" and "manager" beans. I wonder if this tool supports running/installing the same table more than once? This currently doesn't work too well with AppGen, but shouldn't be too hard to fix.

In reality, I'm pumped that Richard has created this, as well as a project to back it up. I especially like that he's going to try and create an Eclipse Plug-in as part of this project. Nice work Richard!

Posted in Java at Nov 22 2004, 04:39:35 AM MST 8 Comments

Studying vs. Doing

My parents are in town for this next week and I expect to relax most of the week, but also squeeze a few hours in each day for Java. I'll probably do a bit of work for clients, but I expect to spend most of my time with Tapestry and JSF. I have to write a chapter that includes these frameworks in 3 weeks and I hope to integrate them into AppFuse by the end of the year.

Last night, I started thinking - I can use this week for 2 things: reading or doing. I could finish reading Tapestry In Action and get a good start on Core JSF. Or I could make the leap and begin implementing them in AppFuse. The latter sounds like more fun. Of course, the books should serve as good reference guides when I need help.

Posted in Java at Nov 20 2004, 02:14:21 PM MST 1 Comment