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.

Good Stuff ~ Simpsons

 Just a friendly reminder...

Posted in General at Sep 20 2003, 12:59:30 AM MDT 4 Comments

In August of Last Year

I began to learn a whole lot about Ant from Erik Hatcher. Good guy, great words - fun stuff.

Posted in Java at Sep 20 2003, 12:34:25 AM MDT Add a Comment

Out for sushi

Murphy's Birthday

Murphy's Birthday

Posted in General at Sep 20 2003, 12:23:03 AM MDT Add a Comment

Vanity URLs in Struts

I figured out a way to make your Struts' app have URLs like the following:

http://raibledesigns.com/weblog?method=edit
http://raibledesigns.com/weblog.jsp?method=edit
http://raibledesigns.com/weblog.html?method=edit
http://raibledesigns.com/weblog.php?method=edit
http://raibledesigns.com/weblog.asp?method=edit

Might be a nifty little trick to try. Pump out a version of Roller with this feature enabled and you could say you made a .NET version! ;-)

Here's how:

1.  I created a RequestFilter that maps to /*
2.  This filter checks to see if request.getServletPath() matches any of the
action paths in struts-config.xml.  If so, it forwards to the action.
3.  As an added feature, I added a set of allowed extensions to this
filter's init parameters.  So far I have .jsp,.html,.asp,.cfm (using .jsp
ensures no one links to them directly, MVC enforced!) - so marketing can
choose what technology they want to convey ;-)

This seems to work great.  For example, I have an "advancedSearch" action
defined as follows:

    <action path="/advancedSearch"
      type="org.apache.struts.actions.ForwardAction" 
      parameter=".advancedSearch"/>

(ForwardAction will eventually be replaced, if necessary, with a real
action).  This allows all of the following URLs to work:

http://site.com/do/advancedSearch (works with Struts by default)
http://site.com/advancedSearch
http://site.com/advancedSearch.html + all other extensions listed.

More information (including source code) can be found on the struts-user mailing list.

Posted in Java at Sep 19 2003, 06:23:24 PM MDT 2 Comments

AppFuse Refactorings

I did some refactorings of AppFuse yesterday - inspired by an e-mail I received from Jon. I basically de-coupled my Actions from Hibernate - tossing around a connection object in the constructors of my Managers and DAOs (rather than the method signatures). A little more casting, but no noticeable performance difference. I'll upload the source shortly.

Update: - Source has been released.

Posted in Java at Sep 19 2003, 06:06:53 PM MDT

PowerBook Memory from Crucial.com

Crucial.com always seems to have the best prices on RAM - and today I found its no different for the PowerBook - for 512MB, it's $150 vs. $300 from Apple. That's Apple for you - trying to make a buck where ever they can - not a bad business practice when you have so many cult-like followers.

Posted in Mac OS X at Sep 19 2003, 10:57:40 AM MDT 1 Comment

Great American Beer Festival

Next week: The Great American Beer Festival. I just got an e-mail saying they've accepted me as a volunteer on the Brew Crew. Should be a good time.

Posted in General at Sep 18 2003, 10:31:05 PM MDT Add a Comment

New Desktop?

While I'm seriously thinking about a new PowerBook, the more important item on the agenda is refreshing my desktop. It's a P4 1.5 GHz (1 MB RAM) Dell Dimension 8100. I like Windows XP and I love writing Java in it - moreso than any other OS (really!). So I owe it to myself to speed things up a bit on my primary development box. So I went searching on eBay and found I can get a much better machine (almost twice as fast) for only $800. Do you think that's a good deal? I sure do...

Posted in General at Sep 18 2003, 08:40:51 PM MDT 1 Comment

Test driving the new PowerBooks

I called my local Apple Store today to see if they had any new PowerBooks in. They did (though they've sold out of their 15" with combo/super drives for the day), and now I'm here test-driving the 17" with 1.33 Mhz and 512 MB RAM. It wouldn't be right if I didn't compare this machine against these performance numbers. So here goes:

  • Opening Eclipse (3.0 M2): 10 seconds
  • Opening Photoshop (7.0.1): 8 seconds
  • Running "ant rebuild" on Roller (0.9.7.3): 32 seconds (ooh, this actually beats the 2 GHz machine I had at Comcast, by 4 seconds).
  • Running "ant clean package-web" on AppFuse (0.9.1): 21 seconds (3 seconds slower than the 2 GHz Pentium)

I'm not as disappointed as I thought I'd be. Good thing I left my wallet in the car!

Posted in Mac OS X at Sep 18 2003, 06:17:43 PM MDT 2 Comments

JSF: Allows WebWork style Actions

Am I working too late or does JSF allow a WebWork style Action? According to this post, you can have your properties and your logic in the same class (like WebWork). Also, no more worrying about BeanUtils.copyProperties()?

Struts encourages you to use Strings for field values that might need conversion, in order to redisplay correctly in case of conversion errors. You don't need to worry about that with JavaServer Faces, because the redisplay is handled by the components themselves. You will generally use the native data types for your field properties.

Regardless of what the WW Developers say, I think I'm gonna dig Java Server Faces.

Posted in Java at Sep 17 2003, 07:03:34 PM MDT 5 Comments