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.
You searched this site for "matt". 1,142 entries found.

You can also try this same search on Google.

Workflow Redux

Thanks to all who commented on my request for Java-based workflow engines. I especially liked Anthony's comment, and his list of possible frameworks.

There are several open source options: Only Open Business Engine and Open For Business' workflow component currently follow any sort of standards for workflow. All of the other engines currently have their own workflow definition language.

This leads me to believe that if we are going to use a framwork, we should probably use Open Business Engine or Open for Business' workflow component - simply because I like standards. The question is - how easy are these to implement in a webapp? Any examples? I haven't researched either tool at all, just hoping someone else has.

Posted in Java at Feb 05 2003, 09:49:42 AM MST 6 Comments

Know of a Java-based Workflow Engine?

Is there a Java API out there for workflow, or some package that will allow me to configure workflow for my app. At my day job, we're starting to get into some significant document workflow. For our next release, we'll probably just be keying off a status field - but I'm interest if there's an easy-to-implement workflow package that we can implement now (before we hard-code too much business logic). Thanks for any suggestions!

Posted in Java at Feb 04 2003, 07:14:14 PM MST 4 Comments

Using XDoclet to generate your validation.xml?

Are you using XDoclet to generate the validation.xml file for Struts' Validator Framework? If you're using Struts and you're not using the Validator - you should be IMO. It makes both client-side and server-side validation soooo simple. Using XDoclet to generate the key file (validation.xml) makes implementation a piece of cake. We have Erik to thank for this wonderful addition to XDoclet. Much appreciated sir!

I'm guessing that not many people are using this feature b/c it works kinda funky right now. It disregards the order of your properties in your ValidatorForm and generates entries in alphabetical order. This is great except the client-side (JavaScript) piece of the Validator uses the order to determine which fields to validate first. This has caused a slight headache for me on my project, so I fixed it. Checkout XDoclet's JIRA for the bug and the patch. Hopefully it'll get committed soon, but in the meantime, I'll continue using my patched Apache module that allows me to generate ActionForms from POJOs and orders my validation.xml correctly.

Posted in Java at Jan 21 2003, 10:12:23 PM MST 6 Comments

Phoenix Themes Galore!

I found a whole gobbly-gook of new Phoenix themes thanks to Matt Croydon. I'm going with Phoenity Aqua for now. This brings up another point - if you're using Windows and you're NOT using Phoenix, you're wasting your time - it makes browsing so much better.

Posted in The Web at Jan 20 2003, 06:47:02 AM MST Add a 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

Simple Intentions turn into Remember Me Login

I woke up this morning, and had the simple intention of blogging about one of my favorite tools, The Color Schemer. If you're a wanna-be designer like me, it's awesome. It helps you match "like" colors and also allows you to select any color on your screen. It's one of my most invaluable web design tools. Putting a tip about this was my only hope at 4:30 when I sat down at this computer. Now it's 5:39.

Why am I still here? I got caught up in reading the Colorado Bloggers mailing list - which actually got some traffic yesterday. This is one of the first times I've received a message from the list. One of the members pointed me to a another Photo Album for the web. It's called Gallery and she has an example setup. Looks like it runs on PHP. Well that shouldn't have taken me an hour, right?

The activity that's filled my last hour has been wrestling with Erik Hatcher's request for "remember me" functionality in a J2EE app, using container-managed security. The good news is that I did get it working - here's how:

  1. First, I added a checkbox called "rememberMe" to my login.jsp. When the user clicks "submit", I do some JavaScript logic. This logic entails saving the username and password as cookies - but only if the rememberMe checkbox is checked. If rememberMe is checked, a cookie is set called "rememberMe" with a value of "true."
  2. Using Roller's BreadCrumbFiler (maps to /*), I added some logic to check for the existence of the "rememberMe" cookie, and if it exists, to route the user to "j_security_check?j_username="+usernameCookie+"&j_password="+passwordCookie.

This all worked fine and dandy right off the bat - took me about 10 minutes to implement. The problem was that a user couldn't "logout." So I've spent the last hour (now it's been an hour and 1/2) with my own ignorance trying to delete cookies (and doing null checks and such) so users could logout. And I just got it working - fricken sweet! What a way to start the day! The only problem I could see now is if a user tries a username/password and selects "remember me", but then closes their browser. The BreadCrumbFilter will keep trying to authenticate them - yep, I just verified that that's a problem. It's also a problem when they enter an invalid password and select rememberMe.

One way to solve this is to not set the "rememberMe" and "password" cookies until someone has successfully authenticated. Maybe I could use the breadcrumbs in the BreadCrumbFilter to check the last URL accessed, and if it's already j_security_check, don't do the routing. Anyway, here's the code that does the heavy lifting in BreadCrumbFilter:

Cookie rememberMe = RequestUtil.getCookie(request, "rememberMe");
// check to see if the user is logging out, if so, remove the
// rememberMe cookie and password Cookie
if (request.getRequestURL().indexOf("logout") != -1 && 
	(rememberMe != null)) {
    if (log.isDebugEnabled()) {
        log.debug("deleting rememberMe-related cookies");
    }

    response =
        RequestUtil.deleteCookie(response,
                                 RequestUtil.getCookie(request,
                                                       "rememberMe"));
    response =
        RequestUtil.deleteCookie(response,
                                 RequestUtil.getCookie(request,
                                                       "password"));
}

if (request.getRequestURL().indexOf("login") != -1) {
    // container is routing user to login page, check for remember me cookie
    Cookie username = RequestUtil.getCookie(request, "username");
    Cookie password = RequestUtil.getCookie(request, "password");

    if ((rememberMe != null) && (password != null)) {
        // authenticate user without displaying login page
        String route =
            "j_security_check?j_username=" +
            RequestUtils.encodeURL(username.getValue()) +
            "&j_password=" +
            RequestUtils.encodeURL(password.getValue());

        if (log.isDebugEnabled()) {
            log.debug("I remember you '" + username.getValue() +
                      "', authenticating...");
        }

        response.sendRedirect(response.encodeRedirectURL(route));

        return;
    }
}

I can post the code for RequestUtil if you need it. The class RequestUtils (for encoding URLs) is a Struts class.

Posted in Java at Jan 14 2003, 06:07:21 AM MST 4 Comments

Tabbed Forms - Making the web look like Excel

One of the things I'm working on for my day job right now is the ability to display an Excel-like UI for editing a form. So I did a search on Google tonight and found DHTML Kitchen. On this site, they had exactly what I was looking for - a howto for creating a tabbed panel system. So I've used this example to create a prototype of what I can do. This is pretty slick b/c now I can give the users a UI that looks like the Excel they're used to, and I can use the same ValidatorForm for the entire page. It even supports remembering which tab you last selected, and also allows navigation to a tab. The DHTML Kitchen also appears to have all kinds of other goodies to checkout. I'll definitely be adding it to my list of cool bookmarks.

If someone could verify that this prototype works in IE 5.5 - that'd be awesome! This is the browser we have to support at work and all my browsers are 6.0+. In return, I offer you the source in a single zip file :-) After playing with this a bit after posting - it seems like it's got a couple of issues in IE 6. The first is that a double line shows up at the bottom of the top tabs after refreshing. Clicking on any tab at the top snaps the tab bar back into place. The second is performance - it's taking 3-8 seconds to load the page - yikes! I'm still going to use it though, and hopefully optimize and fix these issues later.

Posted in The Web at Jan 11 2003, 11:45:23 PM MST 4 Comments

My Favorite Restaurant: Chipotle

Chipotle Mexican Grill I was watching The Osbournes this evening and found it hilarious that Ozzy is addicted to Chipotle Burritos. He's eating 2-3 per day! I can understand his addiction, as this by far my favorite meal. The first Chipotle was actually started right by DU, and my senior year I lived on the same block as it. It was awesome to have it on the way home from class. They've come a long way since then, and now Chipotle restaurants can be found all over the US.

I hope there's one in Florida by the time we move there this summer. Those are the two things I'll miss the most - Chipotle and good Microbrews. Of course I'll miss all the awesome mountain biking and skiing - but we'll be back here someday, and I'm sure I can enjoy the beach for awhile. The last couple of days here in Denver have been awesome - 70 yesterday and 75 today!! How fricken sweet is that - global warming is working!

Posted in General at Jan 08 2003, 08:50:08 PM MST 2 Comments

CVS, SSH and Passwords

Anyone know of a utility that can be used to "remember" my CVS password? I can only access the server using SSH (similar to SourceForge) and it's getting to be a real pain to type my password every time.

Posted in Java at Jan 06 2003, 07:58:33 AM MST 4 Comments

Abbie's First Christmas

Julie and Abbie Matt and Abbie

I finally found the time to post some pictures from December and Abbie's first Christmas. I hope you enjoy these - check out Part I and Part II. Apple's .Mac has a 48 picture limit per page, so I had to split these 60 pictures into two different pages.

Posted in General at Jan 05 2003, 02:42:24 AM MST