Matt RaibleMatt Raible is a Web Developer and Java Champion. 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.

Snip Snap

I'd like to use SnipSnap to host/edit my downloads section. Write now I'm editing a plain old HTML file. I suppose I could use Roller, hmmm. I doesn't look like I can use SnipSnap on this site since it appears to only run as a standalone server, running on Jetty. I could try to run it on some crazy port or have two servers running on this site, but I prefer one.

Why do I want to use SnipSnap over Roller? For it's Wiki feature. Why don't I use a different wiki app (esp. since I did the research on them)? SnipSnap looks good - and I'm a sucker for eye candy. The rest of the wikis I reviewed are very plain. Sure I can customize them and do my own stylesheets and all that, I just don't feel like it. Who knows, maybe I will another day.

Posted in Java at Jan 15 2003, 10:12:50 PM MST 1 Comment

Java-based Forums and Free Software

I've always thought that Jive was a great product, especially when I first found it. It was free then, now it costs $450. It it worth it - yes! But it's tough to recommend this to clients when there are free alternatives. Here's one courtesy of Mathias Bogaert:

Discovered mvnForum, a JSP 1.1/Servlet 2.2 based forum application (GPL), which looks kinda neat...check out their demo.

I have this same problem at work. I told my project manager that I knew of three Bug Tracking systems: Bugzilla, JIRA and Scarab. I currently use Bugzilla for a client and I'm familiar and happy with it. I also use JIRA for Roller and XDoclet, and think it's a great piece of software. Even though I've never used Scarab, I installed it thinking that it was better than Bugzilla, and also b/c the guys from Apache are moving to it. After wrestling with the setup a bit, I got it working. Scarab's main goal seems to be ease of setup - they should take some lessons from Atlassian. Actually, we all should - I had JIRA downloaded/installed/running in under 5 minutes. Anyway, back to the point - I showed Scarab to my project manager and he went off to investigate. An hour later he came back and said he just didn't get it. I didn't have the bandwidth to investigate, and since I've never used it - we're going to use Bugzilla. I prodded and poked and tried to get JIRA; I even downloaded and installed the 30 day trial. No joy, free is what they want.

Speaking of free software, I'm inspired to do some work on Roller - especially with all the stuff that Dave and Lance have done lately. Also, my RSS feed seems to refresh old stories in Radio's aggregator, so I'm due for an upgrade. I hope to add some of the following features over the next week or so (when do we release 0.9.7?):

  • Encypted password support - both programmatically and using Tomcat's Realm. The way I've done this in the past is to create a LoginServlet that my form-based authentication maps to. This servlet does the encryption and redirects to j_security_check. I'll also include an option for an SSL-based login. Both password encryption and SSL will be off by default - and changes will be allowed in web.xml.
  • Remember Me. You're gonna love this - I sure do.
  • Remember Me in Comments. It's definitely needed if you do a lot of commenting. The question is - do you automatically do it - or allow users to say "forget me." Auto is easiest.
  • Add support for e-mailing comments and subscribing to comments when posting a comment.
  • Dig into XDoclet and make the upgrade to 1.2 Beta 2 - fixing the bug we have with Castor. I hope I'm familiar enough with how XDoclet works to make this happen. I looked through the code today and it should be working from what I can tell.
  • Upgrade to Struts 1.1 Beta 3.

Sheez! I just created a whole bunch of work for myself didn't I? Hmmm, now how do I schedule all this and get it done in a week? A late night, an early morning, a weekend? I can't decide... Oooh, here's an idea - Julie and Abbie are leaving for Florida next Thursday (I'm joining them Friday) - I could do it next Thursday night. Hopefully I can get it done sooner, but hopefully a lot of this can wait until then.

Posted in Java at Jan 15 2003, 09:47:48 PM MST 1 Comment

Conditional Task Execution with Ant

I'm trying to conditionally include my test jar files based on an Ant property. My problem is that the "if" attribute of the <task> element only accounts for the property being present or not. I'd love to be able to specify:

ant -Denable.cactus=false

But Ant seemingly executes my task if a property is present - so even though the value is false, it still executes. Any ideas? Here's my task:

<target name="copy-test-jars" depends="init" if="enable.cactus"
    description="Copy test-related JAR files to WEB-INF/lib">
    <echo>Copying Cactus, StrutsTestCase and JUnit JARs</echo>

    <mkdir dir="${webapp.target}/WEB-INF/lib"/>
    <!-- Copy jars -->
    <copy todir="${webapp.target}/WEB-INF/lib">
        <fileset dir="${strutstestcase.dir}" includes="*.jar"/>
        <fileset dir="${cactus.dir}">
            <include name="*.jar"/>
            <exclude name="commons-logging.jar"/>
            <exclude name="log4j-*.jar"/>
            <exclude name="servlet.jar"/>
        </fileset>
        <fileset dir="${env.ANT_HOME}/lib" includes="junit.jar"/>
        <fileset dir="${env.ANT_HOME}" includes="junit-noframes.xsl"/>
    </copy>
</target>

BTW, this XML was made web-savvy by the E2 Source Code Formatter - a must-have bookmark. I got this tip from The FuzzyBlog!.

Posted in Java at Jan 15 2003, 11:19:10 AM MST 6 Comments