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.

Very cool search with XMLHttpRequest

From fiftyfoureleven.com, I learned about forgetfoo.com - which is doing some very cool stuff with XMLHttpRequest. Be sure to check out the calendar, comments and naked picture of Britney Spears.

While we're on the topic of cool stuff, I also learned about this cross-browser Nifty Corners component. Should we call a set of CSS+JavaScript files a component I think so, what else would you call it?

Posted in Java at Apr 13 2005, 11:13:55 AM MDT 4 Comments

Closures with CollectionUtils

Here's a pretty nifty trick for using closure's with Jakarta Commons CollectionUtils:

List list = new ArrayList();
...
CollectionUtils.forAllDo(list, new Closure() {
    public void execute(Object obj) {
    // execute something for each item obj
    }
});

I wonder if there's any performance hit from doing things this way vs. a good ol' Iterator? Hat tip to Anand Subramanian.

Posted in Java at Apr 13 2005, 08:49:07 AM MDT 18 Comments

Use SiteMesh to decorate multiple webapps

Did you know it's possible to decorate multiple webapps with the same SiteMesh decorator? I learned how to do this from the SiteMesh mailing list:

  • Put sitemesh.jar in your container's classpath. You could put it into each webapp's WEB-INF/lib, but it looks like there's problems with that.
  • Create and deploy a webapp that contains the common decorator.
  • In each webapp's decorators.xml, add a "webapp" attribute to point to the webapp you deployed in Step 2.
    <decorators>
        <!-- load decorator from a different web-app deployed in the server -->
        <decorator name="main" webapp="some-other-webapp" 
            page="/decorators/main.jsp">
            <pattern>/*</pattern>
        </decorator>
    </decorators>
    

Try to do *that* with Tiles. ;-)

Posted in Java at Apr 12 2005, 10:05:19 AM MDT 12 Comments

More Tapestry+Ajax Components

Tacos is "library of useful Tapestry components", created by Viktor Szathmary. Today, he published a new release with support for Partial Page Rendering and Partial Forms. I especially like that Viktor incorporates the Fade Anything Technique as part of the components. Even better, these components work fine with JavaScript turned off. Well done Viktor! Too bad I can't use Tapestry at my day job. :(

Posted in Java at Apr 10 2005, 11:41:47 AM MDT 5 Comments

DU Wins and The Blizzard of 2005

Last night was a great game and DU has repeated as NCAA Champions! Woooo hooooo!! Nice jobs gents - we're definitely looking forward to next year's season and hope to get season tickets on the glass.

2005 NCAA Champions

This morning, I woke up to a bunch of snow, high winds and The Blizzard of 2005. It's nothing like the Blizzard of 2003 where we got 4-8 feet of snow, but it's still pretty exciting. I snapped a few picks of what it looks like around our house.

Posted in General at Apr 10 2005, 10:34:39 AM MDT 2 Comments

Maven 2 Alpha - looking good!

I saw that the Maven 2 Alpha was released today and decided to give it a spin. The two features in Maven 2.0 that look compelling to me are 1) speed and 2) transitive dependencies. I've been using Maven 1.x on my current project since January and I still don't like it. Why? It's dog slow on my PowerBook (but tolerable on my Windows box) and you have to specify a shitload of dependencies when developing an app with Struts+Spring+Hibernate.

Maven 2 looks good, and it does seem to startup as fast as Ant (at least on Windows). Just typing "m2" completes in about a second, and so does typing "ant". Typing "maven" takes about 3 seconds (even though it reports it only took 1 second). I look forward to seeing Maven 2 evolve. I wonder if we should rewrite our POMs for Maven 2 (we current have 11 sub-projects)? We'd probably be a pretty good test-bed, but I don't think Maven 2 supports all the 1.x plugins - does it?

I doubt I'll use Maven 2 with Equinox or AppFuse this year - mostly b/c I don't expect it to be released until 2006. I do like the looks of Ivy and I've considered re-writing AppFuse's monstrous build.xml file using JAM. If I were to use Ivy, I think I'd still release with all JARs in a local "lib" directory. The nice thing about Ivy is it would give users the option of checking JARs into source control (currently, it's required).

Even after using Maven for several months, I still like local JARs better than downloading. It does make a lot of sense in a multi-project environment though.

As for JAM, I don't like it for two reasons: 1) it uses the non-transitive dependency listing like Maven 1.x and 2) it requires you install JAM and set a $JAM_HOME. I'd prefer to keep AppFuse to one build tool - Ant or Maven (or both).

I suggested a large refactoring of the build process (and collapsing of the source trees) for AppFuse 1.9, but it was rejected by users for the most part. Their opinion: the build process works great, we like it - work on other stuff that's more important (code generation, tools support, etc.). Another thing that's suprised me about AppFuse users is the relatively small number of folks that have requested support for appservers other than Tomcat. To date, I don't think I've had a single Resin or Orion request, but I've had plenty of WebLogic, WebSphere and Sun App Server requests. The most compelling reason to use JAM for building/deploying/testing AppFuse is for its server support, but if I don't need it, why add the complexity?

I guess some things just work, and there's no reason to fix them if they aren't broken. Maven 1.x is not one of those things IMO. It's good to see the improvements coming in Maven 2.

Posted in Java at Apr 08 2005, 01:52:10 PM MDT 4 Comments

Cool Web Cam

A co-worker pointed out a pretty cool webcam today. It's called the Cupola Cam and it displays live shots from a camera in Littleton, Colorado. The coolest part is you wait in a queue for full-control of the camera, and then you can move it around to look at everything. Nice use of Java technology too (it's an applet).

Posted in Java at Apr 08 2005, 08:23:29 AM MDT 1 Comment

Useless Statistic

Speaking of statistics, here's some useless ones:

The first stat is pretty useless, but the 2nd is pretty cool considering there hasn't been a release since December.

Posted in Java at Apr 08 2005, 06:16:19 AM MDT 5 Comments

DU Kicks CC's Ass

Watching the game yesterday was a glorious event. I have a co-worker that's a CC Alumni, so a bunch of fellow DU Alumni (read: fraternity brothers) and I met at the same bar as he (and fellow CC Alumni) and heckled them the whole game. It was definitely a good time.

The bar (Braun's) sucked b/c they wouldn't turn on the sound during lunch (game was at noon), but they turned it on in the 3rd period and gave us drink specials so it wasn't too bad. It was a great day - leaving work at noon and kicking CC's ass! The national title game is tomorrow night - go DU!

It's funny to think that when DU won the title last year, I bought a bus. If they win again this year, that must be a sign to start restoring it! ;-)

Posted in General at Apr 08 2005, 04:38:00 AM MDT 1 Comment

It's time for some productivity

Just last night I was wondering how I was going to finish up AppFuse 1.8 and Spring Live's April update in the next 1 1/2 weeks. This morning, I got up early (5:00 a.m.) to get back to work on Spring Live, and found that Julie was already up. She was fed up with the fact that Jack was coughing up a storm and both kids are still sick. They've been sick off-and-on since January (but mostly on), and she's had enough.

Julie tooks Jack to the doctor a month ago and his recommendation was a warm and humid climate. She asked him, "like Florida?" - to which responded, "Yes! That's a great idea!" Since then, she's bought a humidifier, taken showers with Jack every morning and even hit him with the nebulizer a few times. No dice, he's still coughing and wheezing. At 5:00 a.m. this morning, she was fed up and said "I'm going to Florida." 20 minutes later, she'd bought her tickets and we left for the airport around 6:30.

While I'll certainly miss everyone, it's a golden opportunity for me to work on AppFuse and Spring Live and get caught up this weekend. Of course, I have to work an extra day in the mix to pay for the (spendy) flights, but it's nice being a contractor and having that as an option. Now the problem is I find an empty house often leaves me with little motivation. I tend to enjoy renting movies and going to bed early when the family is gone. Of course, with DU being in the Frozen Four tomorrow (and hopefully Saturday) - there's even more motivation for more fun and less work.

Regardless of the motivation I have to take part in my extra-curricular obligations (AppFuse and Spring Live), it's nice to know I have a great opportunity to work on them this weekend. Staying up late to work on this stuff just isn't any fun.

Posted in General at Apr 06 2005, 04:10:05 PM MDT 7 Comments