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.

Pictures from "Bus Rescue" Road Trip

As I mentioned earlier today, we made it back to Denver in one piece. Click on the pictures below to see a bunch of pictures from the trip. We flew in Thursday night and got a room at the beautiful Catamaran Resort on Mission Bay in San Diego.

Bus Trip

On Friday morning, we picked up the bus in Encinitas, which is about 30 miles north of San Diego. The bus started right up and I was able to drive it right onto the freeway. The first couple of things I noticed were (1) the brakes didn't work too well and (2) the top speed was close to the speed limit. We parked at the hotel and walked to breakfast. When we came back, the bus didn't start when I turned the key. The dash lights came on, but nothing happened. Push starting it in reverse fixed the problem. From there, we headed to a parts store, got an oil change, and headed out on the road around 3:00 p.m. The "starter didn't work" problem seemed to be quite random as it worked sometimes and not others. I fixed it this morning by securing some wires that were flopping around.

The first leg of the trip - between San Diego and Las Vegas - was a little brutal. The traffic was ridiculous, it was hotter than hell (approaching 100) and when the speed did pick up - we were the slowpokes in the right lane. We did make it to Vegas after about 8 hours, and stayed at the Stratosphere. We ended up hitting the sack around midnight and woke up promptly at 4:30 to get back on the road. Our biggest concern was the heat - since the bus has an air-cooled engine. In Vegas at 5:30 a.m., it was 80 degrees! Leaving Vegas, on the freeway, we had a very close call. There was a guy behind us that was swerving all over the road. My dad could see (in the rearview) that the guy was falling asleep and appeared to be wasted. We kinda forgot about it, and then all of a sudden, my Dad hammers the gas and shouts out some obscenities. I looked back and the guy was only a few inches from rear-ending us at 60 MPH! After that close call, we quickly pulled over and let him pass. I tried to call the cops, but had bad cell reception and gave up. 2 miles later, we saw a car overturned in the middle of the freeway. It's likely there were deaths because the roof was flattened. It wasn't the guy who almost hit us, but I hate to think that he might've caused the accident. Scary stuff.

Zion As we entered Utah, I suggested we take a back road and head through Zion National Park. From there, the trip got much better. We spent a day and a half tooling through Utah - enjoying its beautiful canyonlands and light traffic. Lastly, we drove through Western Colorado via Montrose and Gunnison and thoroughly enjoyed ourselves. The lack of traffic and awesome scenery was great. The bus also seemed to really enjoy being off the freeway. Good times, great memories.

1500 Miles, 4 days, 4 quarts of oil used. Pretty damn good for a Volkswagen.

Posted in The Bus at Jun 09 2004, 12:16:59 AM MDT 6 Comments

We made it!

We made it back around 2:00 yesterday afternoon. There were hardly any issues on the drive and the bus held up great. Today my dad is wiring in a cigarrette lighter so I can plugin in my iPod and then we're going to replace the master cylinder b/c the brakes really suck. I'll try and update this site with pictures and lies from our trip. It's nice to be home.

Posted in General at Jun 08 2004, 11:12:39 AM MDT 1 Comment

Raible Road Trip #8

I'm heading to the airport w/in the next hour to embark upon Raible Road Trip #8. My dad is meeting me in San Diego tonight and we're picking up my new bus tomorrow morning. From there, we're going to pick up a few supplies, get the oil changed and head out on the road. I'm taking our digital camera so I'll try to take lots of pictures. We have ideas for the route (maybe through Flagstaff?), but nothing is for sure. Our main goal is to avoid the heat since the bus has an aircooled engine. Our secondary goal is to make it back to Denver by Tuesday so my Dad can catch his flight back to Oregon. A side effect of all of this will be some good memories and hopefully a good story or two.

Posted in General at Jun 03 2004, 02:05:25 PM MDT 2 Comments

Using JAAS with Tomcat

Want to use JAAS with Tomcat? If so, you might want to checkout this Using Tomcat with JAAS tutorial.

Although it is possible to use JAAS within Tomcat as an authentication mechanism (JAASRealm), the flexibility of the JAAS framework is lost once the user is authenticated. This is because the principals are used to denote the concepts of "user" and "role", and are no longer available in the security context in which the webapp is executed. The result of the authentication is available only through request.getRemoteUser() and request.isUserInRole().

This reduces the JAAS framework for authorization purposes to a simple user/role system that loses its connection with the Java Security Policy. This tutorial's purpose is to put a full-blown JAAS authorisation implementation in place, using a few tricks to deal with some of Tomcat's idiosyncrasies.

Personally, request.isUserInRole() usually does everything I need. If I need something more than that, it's usually pretty easy to add some custom logic. Of course, if I ever need anything super robust, I'll probably use the Acegi Security System for Spring.

Posted in Java at Jun 03 2004, 10:30:27 AM MDT 3 Comments

Testing Moblogger

Testing Moblogger to see if this thing still works. Wanna learn more about how Moblogger came to be, checkout the comment I left on Bruce's weblog.

This post is being sent via e-mail...

Posted in Roller at Jun 02 2004, 10:24:35 PM MDT 1 Comment

Know AppFuse? Wanna job?

It's too bad I've already signed a contract for the next couple of months. Today, on the appfuse user mailing list, a 2 month contract came across the wire.

Hello everyone,

My name is Mark Janveaux, I'm Chief Technology Officer at Mobile Design Technologies (http://www.mobiledesigntech.com) a software firm specializing in mobile applications for the healthcare industry.

We are developing our next generation project right now which is based off of AppFuse 1.5, and have an open position for a developer experienced in the relevant technologies (Java,JSP,Struts,Hibernate).

It's an simple but interesting project. Project length will be about 2 months with definate possibility of extension.

Position may be part time or full time depending upon your availability, skills, experience and salary expectations.

If any of you are interested, please contact me at:

Email: mjanveaux-AT-mobiledesigntech.com
Ph: 250.483.3430

This position can be 100% telecommute if necessary.

Kind regards

Mark

Of course, you probably don't need to know AppFuse. If you've worked with Hibernate, Spring, Struts, JUnit and Ant - you've probably got a good chance.

Posted in Java at Jun 02 2004, 01:18:52 PM MDT

How do you make your source tree Eclipse/JUnit friendly?

I've never had a problem getting builds and unit tests to work with Ant. However, unit tests run faster in an IDE, so I'm trying to refactor some code to allow for testing in the IDE. My current directory structure looks like this:

-- project
   - web
     - WEB-INF
       - classes

I need both "WEB-INF" and "WEB-INF/classes" in my classpath. There's XML files under WEB-INF for Spring and Commons Validator, and there's a log4j.xml under WEB-INF/classes for log4j. These files are all in their natural locations as far as all the projects I've seen. However, Eclipse won't allow me to nest classpaths - so it's virtually impossible (as far as I know) to add both directories to my classpath. Any ideas how to workaround this Eclipse "feature" are appreciated.

For those "IDEA is better" folks - I agree. IDEA allows me to add web, web/WEB-INF and web/WEB-INF/classes to my classpath with no issues.

Posted in Java at Jun 02 2004, 12:46:10 AM MDT 6 Comments

Technical Confidence vs. Fitness Confidence

It figures, just as I'm about to do a major push to get some writing done on Spring Live, I wake up with a cold. It was bound to happen since Abbie and Julie are already in the midst of it. For some reason, I thought I could avoid it.

Three years ago, as I was entering into independent consulting, I could've avoided it. Back then, I was in shape and riding my bike all the time. When I first started as an independent, I had no time to exercise, but I was in such good shape that it took me well over a month to start gaining any weight. That summer was awful - I had no time to exercise and the commute was around an hour. But the pay was awesome and the technology was even cooler. It was summer 2001 and because of my new contract, I was learning all about JUnit, Ant, TDD and Struts.

Reflecting back on that summer, and the past couple of years, I seem to go through various levels of "confidence." There are two extremes for me, and I tend to reside in one or the other. The first is "technical confidence" and the second is "fitness confidence." When I'm coding like a madman, learning new stuff, and deploying release - I'm very technically confident. I don't feel like I need to learn anything new. I feel like I'm on the right track, and I'm generally pretty happy. This is, until I leave the computer. When I start interacting with my family and friends, I start to realize how out of shape I am. In order to get things done, I tend to give up exercising. Part of it is because its easy to give up, and sometimes I just feel guilty leaving Julie to run off and exercise - especially when she's pregnant with a sick kid in her arms.

In order for me to get in shape, it takes quite a bit. In the past when I've been in shape, I usually ride my bike 6 days a week. This is a time consuming effort, averaging about 2 hours per day. However, after I've done this for about a month, my "fitness confidence" starts to rise and I really enjoy being outside or working out. The downside is that when I find time to sit down at the computer, I see a flurry of e-mail and blogs about cool new technologies. My technical confidence plummets.

It's weird. I wish I could find a balance. I wish I had more drive to improve my fitness confidence right now. Unfortunately, many deadlines are looming and I need to sit here in front of the computer to get them done. I definitely need to turn this around. Health is one of the most important things in the world, and I'm so out of shape its pathetic.

Posted in General at Jun 01 2004, 03:01:08 PM MDT 8 Comments

The Java Community - its strength is in its disunity

Charles responds (in a comment) to Ted's accusation that .NET's community is better than Java's.

Actually, the strength of the Java community lies in its disunity. Unity is a false strength: it's safety in numbers, but it's also a herd mentality. I suspect the drive for "strength in unity" is a reflection of Microsoft's philosophy of dominance: that the best thing for the world is if everyone just Does Things Our Way: A computer on every desk running Microsoft software. The Java community has competing infrastructure vendors. We have a raft of competing web frameworks, competing AOP frameworks, competing persistence frameworks, competing IDEs, competing heavyweight and lightweight containers. And it's this competition that makes Java such a vibrant community. Nobody's quite satisfied with what the other guy's doing: everyone wants to do better. It's also what makes us, at times, a bunch of bickering children. That does us quite a bit of harm, but I think in the long run things work out for the best.

Well said.

Posted in Java at May 31 2004, 12:04:14 PM MDT 2 Comments

Testing Wiki Syntax and RSS Feed

If I use wiki syntax in this entry, will it show up property in the RSS Feed? I'd better put some wiki syntax in, like a link to AppFuse, Downloads and an external link. What about the Java2HtmlPlugin, does that work?

    public ModelAndView handleRequest(HttpServletRequest request,
                                      HttpServletResponse response)
    throws Exception {
        if (log.isDebugEnabled()) {
            log.debug("entering 'handleRequest' method...");
        }

        return new ModelAndView("userList", Constants.USER_LIST,
                                mgr.getUsers(new User()));
    }

BTW, I really like the new editor layout - nice job Dave.

Update: It looks like the Wiki Plugin isn't working. I tried updating my "_entry" page with no avail. Below are the contents of this file. I used to have $wikiPlugin.render($wikiText), maybe that's the problem?

Update 2: Duh, the JSPWiki Plugin wasn't enabled in web.xml. As soon as I enabled that, and dropped the Java2HtmlPlugin JAR into WEB-INF/lib, everything worked as expected. Strangely enough, it seems I shouldn't start my entries with !, but rather just check the JSPWiki Syntax plugin. I'm guessing the exclamation point check in my _entry page is still needed for backwards compatibility.

Posted in Roller at May 30 2004, 01:31:10 PM MDT 7 Comments