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.

Roller Comments

I agree with Dave that Roller should allow users to specify a template for comments. Hopefully this template could allow all kinds of crazy stuff - like the current pop-up, the one on Sam Ruby's site and (my favorite) the one on Joe Hewitt's site.

Posted in Roller at Jan 16 2003, 07:08:49 PM MST 1 Comment

Roller gets even better with automatic linkbacks

Dave has done it again. This time, he's added automatic linkbacks to Roller - must be time to upgrade. It'll be interesting to see if a link to this post shows up on his site.

In other news, I've been struck by another annoying problem in OS X. Ever since I installed QuickTime 6.1, most of my apps crash when I try to open them. Safari and Finder are the ones giving me big problems the most. So, to recount, I'll probably be re-installing OS X for the 4th time this year. I haven't re-installed Windows this year, and I've only upgraded Linux. Keep in mind I only spend about 10% of my time in OS X. Maybe we just don't get along.

Posted in Roller at Jan 12 2003, 09:37:16 PM MST 1 Comment

Server Move Successful

Well, it appears that moving this site to a new server was successful. If you're reading this through a browser on my site, it definitely worked. Cool - gotta love smooth transitions. I updated java.blogs tonight so they would start picking up my RSS again - delete, re-add seemed to be the only solution that worked. I only added my Java category, so if you want any other good stuff, you'll have to use other means.

Posted in Roller at Jan 02 2003, 11:08:24 PM MST Add a Comment

The cost of bandwidth

My ISP, KGB Internet Solutions sent me a bill today - it's usually pretty cheap at $12 US per month. However, this month, they charged me an additional $28 for 3 gigs of extra bandwidth - Yikes! I'd better quit posting things for downloads eh? Should I make attempts to reduce my traffic. Nahh, I'll pass - I'll just buy more bandwidth! Keep the hits coming - I feel the love! I think I'll upgrade to their Silver package ($20 US) which has 5 GB of monthly transfer. It looks like it comes with a 100MB connection, which I thought I already had - but maybe not. I hope not, it'd be sweet to upgrade to a better package and get faster speeds too.

I also found this Servlet ISP list at servlets.com. Looks like KGB Internet got a 4.9 out of 5, and Dave's ISP (Kattare) got a 4.8 - obviously both great choices.

Getting this bill was quite humorous since Dave send me an e-mail this morning. In his e-mail, he suggested that I add a donate (via PayPal) button to my site. Good idea, but I don't think anyone would use it, and I hate to put off my readers. I'm thinking of donating to Dave for his great product, and also to FreeRoller for its great content.

Posted in Roller at Jan 01 2003, 04:20:34 PM MST Add a Comment

RE: A not so brief history of Roller

Dave explains the history of Roller and how he started it all. Man - Dave had a a busy year eh? He brought new things into the world at an alarming rate - weblogging, Roller and Leo! ;-)

So, working in a vacuum without knowledge of weblogging, I invented weblogging. You know what I mean: I invented weblogging like Columbus discovered America. If you ignore the fact that indians, native americans, aztecs, etc. had been living in the Americans for thousands of years and had in fact built entire civilizations there, the statement 'Columbus discovered America' is a true one. So, I invented weblogging and now I'm in the process of pushing the aboriginal webloggers west and eventually into little reservations where they will no longer bother me with talk of <cite> tags, RSS 2.0, trackback, and other stuff that I will soon invent. This is totally fair of course, because I discovered weblogging.

Posted in Roller at Dec 31 2002, 03:55:24 PM MST Add a Comment

New Blog to Watch - Jon Lipsky

I don't really know Jon, only that he sent me an e-mail about Hibernate's Reverse Engineering Tool. Anyway, he's now blogging and better yet - he's using Roller! Don't forget - I'm biased b/c I think Roller is the best thing to come along since sliced bread. Speaking of the RET, from the documentation, it doesn't even look like it exists - there's no instructions on how to run it??

Man, I wish someone would alter Middlegen to generate Hibernate-tagged classes. Erik Hatcher's been bugging me to do it - any volunteers?

Posted in Roller at Dec 23 2002, 04:39:56 PM MST 1 Comment

w.blogger 3.0 has titles!

I just downloaded the 3.0 version of w.bloggar - and it's got title support now! Very cool, maybe I can start posting to this site again without every looking at it. Let's hope this works!

After posting and adding title - I guess that doesn't work as nicely as I'd hoped. There is a title box and even a category drop-down, but I guess they don't work with Roller. Not yet anyway ;-)

Posted in Roller at Dec 23 2002, 02:46:31 PM MST Add a Comment

Why do you blog?

I received the e-mail below from Andy Katz (no need to broadcast his e-mail) this afternoon. Messages like this make blogging worthwhile and the world a better place in general.

Date: Tue Dec 17, 2002  12:10:11 PM America/Denver
Subject: thanks for the great site ...

hello matt,

i just wanted to drop you a quick note to let you know how much 
valuable and interesting information i find on your website 
every day!

thanks so much for taking the time to put it all together.  as 
you know, it's often difficult trying to stay on top of all the 
latest software and tools.  you make it that much easier as well 
as providing unbaised feedback and commentary on all of the above.

i look forward to visiting your site every morning.

AWESOME! I'm glad I could help and I'm even more pumped that you took the time to send me this e-mail. Thanks Andy, much appreciated. I feel the same way about reading Dave and Russell's sites - good stuff.

Posted in Roller at Dec 17 2002, 06:52:58 AM MST 1 Comment

Application Configuration - Roller Style

Lance jumps into the application configuration debate:

To comment on Jeff's continuing configuration quest, I would add my vote to trying out Betwixt/Digester as the engine. I used this to build the RollerConfig object (for Roller, duh) and it was stupid-simple. I spent a couple hours futzing around trying to get it "perfect" (Betwixt has some inclusion/exclusion rules that I was unable to get to do what I want) but it was unnecessary work. So Jeff, if you want an example, check out the Roller cvs for RollerConfig. The roller-config.xml is here if you want an example of that as well.

I thought Roller used the Castor-way I suggested, but nope, it uses Betwixt. Betwixt is a commons project, so it's got to be good, eh? I especially like the ease of reading, writing the XML files. From RollerConfig.java:

/**
 * Read the RollerConfig from a file,
 * as specified by an InputStream.
 */
public static RollerConfig readConfig(InputStream in)
{
    try
    {
        BeanReader reader = new BeanReader();
        reader.registerBeanClass( RollerConfig.class );

        Object obj = reader.parse( in );
        if (obj instanceof RollerConfig)
        {
            RollerConfig alpha = (RollerConfig) obj;
            //System.out.println("RollerConfig readConfig:"alpha);
            return alpha;
        }
    }
    catch (Exception e)
    {
        System.out.println("Exception reading RollerConfig:" + e.getMessage());
    }
    return new RollerConfig();
}

/**
 * Write RollerConfig to file,
 * as specified by a String path.
 */
public void writeConfig(String path) throws Exception
{
    FileOutputStream out = null;
    try
    {
        out = new FileOutputStream(path);
        this.writeConfig( out );
    }
    finally
    {
        try {
            if (out != null) out.close();
        } catch (java.io.IOException ioe) {
            System.err.println("RollerConfig.writeConfig() unable to close OutputStream");
        }
    }
}
/**
 * Write RollerConfig to file,
 * as specified by an OutputStream.
 */
public void writeConfig(OutputStream out) throws Exception
{
    BeanWriter writer = new BeanWriter(out);
    writer.enablePrettyPrint();
    writer.setIndent("    ");
    writer.setWriteIDs(false);
    writer.write(this);
}

One thing I noticed in this class is the long and painful-looking toString() method. How about a little reflection to improve that sucker:

public String toString() {

    StringBuffer results = new StringBuffer();
    Class clazz = getClass();

    results.append(getClass().getName() + "\n");

    Field[] fields = clazz.getDeclaredFields();

    try {
        AccessibleObject.setAccessible(fields, true);
        for (int i = 0; i < fields.length; i++) {
            results.append(
                "\t"
                    + fields[i].getName()
                    + "="
                    + fields[i].get(this)
                    + "\n");
        }
    } catch (Exception e) {
        // ignored!
    }

    return results.toString();
}

Posted in Roller at Dec 09 2002, 08:25:40 AM MST 2 Comments

Roller Improvement I'd like

It'd be cool to have a feature where you could find/replace a string in all your weblog entries. This would be especially nice if you changed domains or found invalid links from months ago. Is this possible with SQL?

Posted in Roller at Dec 08 2002, 12:13:35 PM MST Add a Comment