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.

A little EL Lovin' for the DisplayTag

Tim McCune submitted a patch for the Display Tag Library to add Expression Language support. I committed it today, along with a few other enhancements. You can read more on the displaytag-devel mailing list. Tim's patch was a nice clean approach to adding EL support. He just subclassed the existing tags and then evaluated the expressions. All I did to integrate was to create an "el" package under "tags" and added an additional .tld file. So there's really nothing that's taken away from the original tag library, and if you want EL support, you simply need to use the "*-el.tld" in your web.xml or change your URI to "http://jakarta.apache.org/taglibs/display-el". Of course, you'll need to include JSTL's JARs (standard.jar and jstl.jar) in your WEB-INF/lib to make this work. This patch included the ability to specify a titleKey attribute - a much asked-for feature.

I like Tim's approach so much, I might have to use it for Struts Menu. It's a slick way of supporting JSP 1.1 containers, and adding optional EL support for JSP 1.2 containers. I haven't had any feedback from the dev team, but hopefully this will make it into the next release.

Posted in Java at Jan 02 2004, 10:52:46 PM MST 10 Comments

Gallery installation and iPhoto integration

Gallery Homepage I installed Gallery (web-based photo album) on my Linux box tonight. The installation was awesomely documented and fairly easy. I did have to download/compile/install a couple of dependent libraries, but the instructions made it simple. Even better, I found the iPhotoToGallery plugin which allows you to publish files to Gallery from iPhoto. Apple's Homepage application kinda sucks for photo management, so I'm definitely digging the Gallery option. Now if I could just find an easy way to export/import from .Mac to Gallery.

Posted in Mac OS X at Jan 01 2004, 11:25:53 PM MST 4 Comments

Happy New Year = Update your copyright notices

Happy New Year y'all!! Don't forget to change those copyright notices... ;-)

Posted in Roller at Jan 01 2004, 12:00:01 AM MST 1 Comment

Roller Tips: Titles as Permalinks and Category Display

A few more tips for your Roller blog. You can edit your "_day" template to make your titles permalinks. I just added this feature to this site - try it now by clicking on this title for any post. To enable this feature, simply wrap your $entry.title element with a permalink URL. For example, change <b>$entry.title</b> to the following:

<a href="$baseURL/page/$userName?anchor=$entry.anchor" 
   style="font-style: bold; color: black">$entry.title</a>

Adjust the style as appropriate for your theme. The second tip is to add the ability for users to see the category you've posted to. Simply add the following under the $entry.title entry to display the category name in the top right corner of the post:

<span class="dateStamp" style="float: right">
    Category: $entry.category.name</span>

Again, the CSS for the span may depend on your theme. Lastly, if you click on a permalink for your blog and you're not routed to the specific entry you expect, for the love of God add the following before your $entry.title.

<a name="$entry.anchor" id="$entry.anchor"></a>

Posted in Roller at Dec 31 2003, 02:57:34 PM MST 7 Comments

Send a Fax from Java?

I'm looking for a (hopefully free) way to send a Fax from a Java program. I think the easiest way would be to send an e-mail to some sort of service that processes it and faxes it the recipient. Any suggestions?

Posted in Java at Dec 31 2003, 11:37:12 AM MST 7 Comments

Jalopy source code formatter no longer free

I love the Jalopy Source Code Formatter. I hope it continues to be developed on SF (though it hasn't had a release in over a year). My issue? It doesn't work on Eclipse 3.0 Mx on OS X. Why am I worried development will stop? Because the original author has a non-free version (at www.triemax.com).

I can't blame the guy - developing Open Source projects is fun, supporting them is a pain. You get rewards for developing: personal milestones, discovery, knowledge enhancement. For supporting, you get to use your precious non-paid hours to try to disseminate your knowledge. This can also be rewarding, it's just not as immediate, leading to the frustration and pain of support. Good documentation reduces support, but that's a pain too.

We have test-first methodologies, will we ever get to document-first? Write the help files, then write the tests, and then the actual code. I'm willing to bet you'd get even higher quality software going this route.

Posted in Java at Dec 31 2003, 08:49:54 AM MST 4 Comments

Useless Tag Library?

Inspired by this post, I wrote a tag library to expose the fields of my Contants.java class to my JSPs. It allows a user to specify a single variable using:

<appfuse:constants var="USER_KEY"/>

Or all variables:

<appfuse:constants/>

By default, it exposes the values from the Contants class imported into the tag library, but also allows a className variable to specify a different class. The main reason I wrote this was to prove it was possible. The second reason was to get around importing my Contants class (and using <%=Contants.VARNAME%>).

Interested? Read More ...

Posted in Java at Dec 31 2003, 08:25:57 AM MST 1 Comment

My Best Christmas Present

My best Christmas present was finding out that Baby Raible #2 is on the way! Sweet! The only bad part about Julie's 2nd pregnancy is we didn't have to try very hard. Last time it took 6 months, and a great 6 months that was... Lots o' Lovin

Posted in General at Dec 30 2003, 07:39:35 PM MST 8 Comments

Roller Tip: Managing your Comments

I tend to get a few comments a week that I need to delete because a reader has double-posted or said something I don't care to have on my website. Up until today, it's been a pain to navigate the Roller UI and delete these comments. It's almost easier to do it through SQL. No longer - I added a "Delete Comments" link to my _day template that shows up right after the "Edit" link. I'm not using the showEntryPermaLink macro for permalinks because I prefer to show permalinks on their own page (keyed by the anchor parameter). So replace your logic to render your permalink with the following and you'll be able to delete comments easier too:

    <a href="$baseURL/page/$userName?anchor=$entry.anchor"
        title="Permanent link to this weblog entry"
        class="entrypermalink">Permalink</a>
    #if ($pageHelper.isUserAuthorizedToEdit())
        [<a href="$pageHelper.getEntryEditUrl($entry)">Edit</a>] 
        [<a href="$ctxPath/comment.do?method=delete&entryid=$entry.Id">Delete Comments</a>]
    #end

To be thorough, here is the contents of the showEntryPermaLink macro:

    <a href="$baseURL/page/$userName/#formatDate($plainFormat $entry.PubTime )#$entry.Anchor"
        title="Permanent link to this weblog entry"
        class="entrypermalink">Permalink</a>
    #if ($pageHelper.isUserAuthorizedToEdit())
        [<a href="$pageHelper.getEntryEditUrl($entry)">Edit</a>]
    #end

Posted in Roller at Dec 30 2003, 03:46:22 PM MST 2 Comments

Missed that one - XDoclet 1.2 Released

I must've been asleep at the wheel the week before Christmas - XDoclet 1.2 Final got released (already blogged here) and I didn't notice.

I integrated OSCache's Filter into my project today and needed to order the <filter-mapping>s in my project so cacheFilter comes first. I stumbed upon the order attribute, but it appears to be XDoclet2-only feature. XDoclet 1.2 just seems to ignore it. Oh well, I guess I'll just resort to putting all my filter-mappings in an XDoclet fragment (metadata/web/filter-mappings.xml) like Roller does.

On another note, it was easy to integrate oscache since Hibernate 2.1.x ships with oscache.jar (I wonder which version it is?). If you're using AppFuse 1.2, it's in there and I encourage you to look into using it. I got inspired after reading Dave's Improving Web Application Performance and Scalability chapter in Pro JSP. I finished reading it earlier this week, and have found that it's a great reference for JSTL (and probably JSP 2.0 when I start using it).

Posted in Java at Dec 30 2003, 12:43:46 PM MST Add a Comment