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.

2005 - A Year in Review

2005 was quite a year for me. I found my dream job, after contemplating what's next in my career only a few months earlier. I attended TheServerSide Symposium in March and created some great memories with James Goodwill. There's nothing like losing all your money and then winning it all back at 6 in the mornin'.

Other March highlights include:

April was a fun month, and started off with a me heading to work for Microsoft. The joke worked so well it was picked up by news.com. DU repeated as NCAA Champions (again). The MySQL Conference and wine-tasting with Julie (for our 5th anniversary) rounded out the month.

May was a whirlwind month, where I headed to Norway after barely renewing my expired passport on time. My PowerBook died on the way over, but I still had a great time. I was featured on TheServerSide and started planning AppFuse 2.0.

The summer flew by: I got biled by Hani, toured with the "Bomb Squad" at JavaOne, drove through Yellowstone, bought a new bike, learned more about Ruby and Rails at OSCON (and learned how much fun a smackdown can be), and watched Jack turn 1.

Then things got busy: I had a great time at Java in Action, started The Bus Project, and enjoyed the beauty of Keystone with Bender and Snyder at the Colorado Software Summit.

To round out the year, I traveled and attended conferences like I was possessed (New Jersey, NFJS, San Francisco and Florida). Abbie turned 3, Roller 2.0 was released and the WebWork joined Struts after a multi-year rivalry.

Phew, it's been quite a year folks. Here's to 2006 being even better! My goals for the year? Happiness, health and more car bombs with family and friends. ;-)

Posted in Roller at Dec 30 2005, 12:13:25 PM MST 1 Comment

Roller 2.0 Hidden Feature: Different Editor Themes

Roller 2.0 has a pretty cool feature that doesn't seem to be documented. You can apply different looks to the editor UI by passing in a "look" parameter to one of the editor URLs. Below are three that ship with Roller 2.0:

Looking in the theme directory, there appears to be two other options: lavender and blueslate. However, they appear to render the same look and aren't nearly as pretty as the other three.

I discovered this parameter by looking in theme/banner.jsp. Looking at this file, it appears you can change the default by defining a "editor.theme" property in roller.properties.

Posted in Roller at Nov 26 2005, 10:15:51 PM MST Add a Comment

Roller gets some respect

From A Baggins Under the Hill (nice looking theme BTW):

There's a surprising (or perhaps not so surprising) number of PHP programs, intricate ones at that, that have developers who didn't bother to abstract away the database layer, and wrote DB-vendor-dependent queries. That's a pretty horrible thing to do, since it ties you quite firmly down to one DB (in many cases MySQL). The SQL code is often very tightly integrate with the display code; it's bad enough in the business layer, but the view layer as well? Good gods.
...
Roller, on the other hand, uses things like Hibernate to abstract away queries from the underlying DB implementations, and Velocity to separate out the display logic from the business logic. And blogging software does have business logic, or a model; blog entries and categories and tags and authentication and the manipulation thereof are not simple. As a result, I see features being added to Roller that I'm surprised to see happening so quickly.

As far as solving the issue with Tomcat 5.5, that's just a matter of updating your $CATALINA_HOME/conf/Catalina/localhost/roller.xml file. Here's what I use for Roller on PostgreSQL:

<Context path="/roller" docBase="roller" debug="99" reloadable="false"
    antiJARLocking="true" antiResourceLocking="false">

    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
          driverName="org.postgresql.Driver"
       connectionURL="jdbc:postgresql://localhost/roller"
      connectionName="postgres" connectionPassword="postgres"
           userTable="rolleruser" userNameCol="username" userCredCol="passphrase"
       userRoleTable="userrole" roleNameCol="rolename" />

    <Resource name="jdbc/rollerdb" auth="Container" type="javax.sql.DataSource"
              maxActive="20" maxIdle="10" maxWait="100"
              driverClassName="org.postgresql.Driver"
              username="postgres" password="postgres"
              url="jdbc:postgresql://localhost/roller"/>

    <Resource name="mail/Session" auth="Container" type="javax.mail.Session"
              mail.smtp.host="localhost" />
</Context>

Posted in Roller at Oct 16 2005, 01:03:54 PM MDT Add a Comment

Gmail's New Auto-Save Feature

I dig the new auto-save feature in Gmail. It seems to fire off about every 20 seconds and I can already tell it's going to be a life saver. This is something we need desparately in Roller. There's nothing more frustrating than having your browser crash when you're writing a long post. Of course, the easy solution to that problem to that problem is to use an offline editor to author the post. However, I much prefer using my web browser.

Posted in Roller at Oct 04 2005, 11:03:41 AM MDT 1 Comment

Trackback Spam

Roller seems to have done a pretty good job of suppressing comment spammers. The math question seems to trip up automated scripts and I only get about 1 or 2 spam comments per month. At least, I only see 1 or 2 per month - many get marked as spam and just sit in the database - never to be displayed. However, recently I've started to notice a lot of Trackback spam.

I dive into my "comment" table a few times a week to format comments so they look like their author intended them to look (I never alter wording). In the past couple of weeks, I've noticed a buttload of spam trackbacks (up to 10-20 per day). Here is an example. How do we go about stopping trackback spam? I'm guessing the easiest way is to disable trackbacks.

Posted in Roller at Oct 04 2005, 10:42:45 AM MDT 9 Comments

Drupal's Blogging Engine vs. Roller

Now that we're basing the next Virtuas' website on Drupal, we have to make a decision about which blogging engine to use. Is anyone out there using Drupal for blogging? Does it support multi-author blogs? I'd much rather use Roller for our blogging engine. However, if we have two different engines powering our website - there won't be a way to search both sites. We can make http://virtuas.com/blog look just like http://virtuas.com, but if searching one doesn't grab results from the other - it seems like it might not be worth it. Anyone know of a way to integrate Drupal's search index with Roller's?

Posted in Roller at Oct 01 2005, 12:52:11 PM MDT 5 Comments

Roller 2.0 looks good!

Dave has posted some screenshots of Roller 2.0. I have to say, the new UI is a big improvement, both with colors and fonts. I hope to try 2.0 out today and hopefully get it installed at Virtuas in the next week or two. I can't wait until this release is installed on JRoller - it'll be very cool when many people can participate in a SourceBeat blog. Nice work Dave!

FWIW, I plan on hanging out in #appfuse and #roller on irc.freenode.net this week. Stop by and say hi if you have questions about either project.

Posted in Roller at Aug 16 2005, 09:32:11 AM MDT Add a Comment

Site Status

Last weekend's crash made me change a few things on this site - all for the better. Instead of having a single server for hosting the AppFuse Wiki, there's now a read-only mirror at http://appfuse.org/wiki. Keith (of KGB Internet) has been kind enough to setup an rsynch cron that synchronizes from raibledesigns.com daily.

As part of the "fixing", I upgraded Roller and JSPWiki. Roller's search is still broken for the most part, but it seems to be due to some orphaned records, which I can hopefully fix soon. When upgrading JSPWiki, I broke the print as HTML feature, which I hope to fix today.

Last, but not least, I've enabled Roller's Planet feature. If you have a blog where you talk about AppFuse or it's related technologies, let me know and I'll add you. As far as contributing to Roller, I'm ashamed to admit that I haven't committed any code in months (maybe even a year). Integrating Acegi Security has been on my todo list for a couple of months now - and I hope to find some time soon. Unfortunately, life, AppFuse and Spring Live keep getting in the way. ;-)

5 minutes later: Print as HTML is fixed.

Posted in Roller at Jul 29 2005, 10:29:02 AM MDT 1 Comment

Down all weekend - what happened?

Some of you might have noticed that this site was down all weekend. I didn't notice it until Saturday morning, at which point I was so beat from traveling last week that I didn't care. I tried to fix it for 5 minutes, then gave up figuring Keith (at KGB Internet) would be able to fix it. I sent him an e-mail asking for help - hoping he could kill a stray process or something. I didn't do any more investigating until Sunday - when it was still down. This site has been extremely stable for the last few months, so the fact that it all just stopped working really had (and still has) me puzzled.

I spent about an hour trying to get things to startup again, to no avail. The problem seemed to be related to the fact that the first time I'd try to hit Roller - it would peg the CPU and the number of database connections would start to skyrocket. Within seconds, the connection pool would become exhausted and Hibernate stack traces would begin to litter my logs. I spent hours doing this dance. At one point, I suspected a DOS attack - why else would the connections skyrocket for no reason?

While I was doing the site-fix dance, I created a read-only copy of the AppFuse Wiki at http://appfuse.org/wiki. When I tried to restart Tomcat on appfuse.org, I got stack traces from the JSPs. Upgrading to the latest stable release of JSPWiki (2.2.28) fixed the problem. However, when I'd start the "wiki" app, it would hang when I tried to request pages. Guessing that this was related to the data volume of pages (11.5 MB gzipped), I cleared out the wiki pages directory and started the wiki context with no data. That worked. I was then able to copy the pages back in and get everything back to normal.

Back to this site. I tried several things last night, including upgrading Roller to 1.2, upgrading Tomcat to 5.5.9 and upgrading the JDK to 5.0. Nothing worked, so I gave up and went to bed. This morning, I decided to try JDK 5 with Roller 1.2 and the instance of Tomcat (5.0.28) that's been working so well for the past few months. Still no dice. But I did manage to get the wiki to spit out the errors it did on appfuse.org. Remembering that this was caused by JDK 5, I went ahead and upgraded JSPWiki to 2.2.28 and did the empty directory dance to get the wiki started. Voila! - everything was fixed!

So that's my story. I still don't know the root cause, but I think the JDK 5 + JSPWiki 2.2.28 combination fixed the problem. I also suspect that something is different today than yesterday b/c the number of database connections didn't immediately spike like it did yesterday. I turned the search feature off as part of my site-fixing dance, so that's still off. I've been afraid to touch anything since I got it all working again. I'll try to turn it back on tonight. In the meantime, I need to figure out how to fix the startup problem with JSPWiki.

Update: I think I figured out the problem - particularly with JSPWiki. I was using JSPWiki's PageViewCountPlugin to track page hits. This file had grown to be just over 59 MB! Deleting the file allowed JSPWiki to start problem-free.

Posted in Roller at Jul 25 2005, 10:05:03 AM MDT 1 Comment

Remember Me works on JRoller!

JRoller has upgraded to Roller 1.0.1 and Remember Me is finally working! Since I'm the one who added this feature - please let me know if you find any issues with it. The last time we deployed it to JRoller, it ended up being a huge security hole and you could log into other people's accounts. Doh! Sorry about that. Hopefully it won't happen this time. ;-)

If you want to know how this feature is implemented, see AppFuse's Remember Me documentation.

Posted in Roller at Feb 21 2005, 04:55:18 PM MST 3 Comments