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.

WebWork Books

What is it about WebWork that makes it so hard to write books about? I remember talking to Kris Thompson (a.k.a. the guy that quit blogging) last summer about WebWork in Action. At that time, it was "almost done". Over a year later and it's still "due out next month" (or is it done?). Almost as bad is Matthew Porter's WebWork Live, which was started late last year. I remember Matthew saying he expected to finish the initial version in March - and there's still not an ERP almost 10 months later.

Here's my guess: the Manning book has been done for months, but the publishing process takes months. As for Porter, my guess is he's too busy providing outstanding support at Contegix to work on the book. Any good conspiracy theories out there? Maybe WebWork has too many patterns that need to be documented? ;-)

Posted in Java at Sep 14 2005, 05:23:04 PM MDT 3 Comments

Building a website with an Open Source CMS

I think the open source community has done an excellent job of figuring out how to create frameworks for developing web applications. But what about websites. You know, the web presence that every company wants - for minimal cost. For most companies, it's nothing more than 5-10 pages that tells a bit about the company, show some management folks and tells you how to get to their offices.

I've developed many websites over the years, many that were static, but more that were dynamic. The unfortunate thing about all of them is they required someone technical to update them. Often, the client had to contact me if they wanted anything new on the site. I've often thought there was a better solution - and I think I'm at a point where I know what customers want, and I know how to provide it. The solution is a Content Management Solution (CMS). One of the biggest problems with static websites is they're not dynamic enough. A CMS can alleviate this problem by reducing the bottleneck that a traditional "webmaster" creates.

In my mind, there are a couple of things that make a good CMS: 1) it's open source (to minimize costs to the client) and 2) it's easy to customize. On the customization front, my demands are a bit more rigorous - mainly because I know what many folks want in a website. Here are my main criteria for a good open source CMS - when it's used to power a regular ol' client-updateable website:

  • Design customization: I should be able to customize all the (X)HTML that's generated using one or two files (like SiteMesh allows). It should be possible to change the look and feel of *everything* by modifying some CSS. It should also be possible to use Mike Stenhouse's CSS Framework to simplify layout choices for clients. Ideally, a web designer or regular ol' HTML person could do the customization.
  • Static-looking URLs: The site should look like a static site. The URLs should be all lowercase and end with .html. It should be possible to modify all the URLs to look as if all pages are static. Apache's mod_rewrite and the URL Rewrite Filter are great tools for making this happen, but it'd be nice if the administration of the application allowed for setting these rules.
  • It shouldn't look like a CMS: No login links, no registration links, etc.
  • Ability to easily add dynamic content: It should be easy to add dynamic content - such as RSS Feed headlines to pages.
  • Menu Customization: In the application, it should be possible to create menus (both main and local navigation) and configure a page to highlight a menu when a particular page is shown.
  • Versioning of pages: In case someone messes something up, it should be easy enough to revert back to a previous version.
  • Easy to use: It should be possible to train a marketing person (with little technical knowledge) how to use the system in 10-15 minutes.

For technical companies (such as Virtuas), there are a few additional requirements I'd like to see:

  • Articles with syntax highlighting: It should be easy to publish articles with code that's colorized. The Java2HtmlPlugin for JSPWiki is a good example of this. I currently don't know of any for XHTML, XML or scripting languages like Ruby or Python.
  • File Upload: For uploading white papers and other technical publications.

So I've started looking at open source CMS's that fill my requirements. Last weekend, I wrote a solution that fills all of these requirements using SiteMesh, JSPWiki, CSS Framework, Acegi Security and the URL Rewrite Filter. It only took me about 6 hours to complete, but after completing it - I started wondering if I really wanted to start another open source project and maintain it. The answer is no, I don't want to create something new - I want to use something that's already out there. However, since I do have something that satisfies all my requirements, I will use it if I can't tweak an existing OS CMS enough.

Here are a list of CMS's that I'll be looking at in the next week or so. If you're associated with any of these projects, please leave a comment and let me know how many of my requirements you satisfy.

I'm a bit hesitant on Daisy b/c it requires XSLT knowledge for design customization. Magnolia has long URLs and doesn't appear like a static site - and the PHP ones often have .php in their URLs. It should be an interesting investigation to see if these (seemingly) heavyweight solutions can solve a few simple requirements.

Posted in Open Source at Sep 12 2005, 11:48:14 AM MDT 49 Comments

Stripes

Greg Hinkle writes about a new JDK 5-only Java web framework called Stripes.

Stripes is a presentation framework for building web applications using the latest Java technologies. The main driver behind Stripes is that web application development in Java is just too much work! It seems like every existing framework requires gobs of configuration. Struts is pretty feature-light and has some serious architectural issues. Others, like WebWork 2 and Spring-MVC are much better, but still require a lot of configuration, and seem to require you to learn a whole new language just to get started.

I dig the fact that someone is trying to create a web framework that requires less configuration. It's also very cool that they've released it as 1.0 (rather than 0.1 as many OS projects do) and it also seems to be well documented. Unfortunately, it doesn't look like there's any support for Spring or dependency injection.

Personally, I don't mind the configuration required by WebWork or Spring MVC - but then again, I use AppFuse and tend to generate most of the configuration code using AppGen. Even so, it would be nice to get away from the configuration requirement. Hopefully more framework authors will find ways to reduce or even eliminate the XML hell we have in Java web frameworks. Kudos to the Tapestry developers for doing this in their 4.0 release.

I like the convention over configuration that Rails uses. It's this same mantra that I've been trying to develop AppFuse with for the past few years. The problem with Java web frameworks is developers want configuration choices - even if they never bother to use them.

Posted in Java at Sep 06 2005, 09:56:41 PM MDT 6 Comments

I Survived

I'm happy to say I survived the long weekend with Abbie and Jack. Not only that, but we had a lot of fun too. We managed to do some hiking, fishing and even pitched a tent in the backyard for a few hours. Unfortunately, the local Safeway was sold out of marshmallows, so we didn't start a campfire. Highlights of the weekend included dinner at Benihana and riding the Georgetown Loop Railroad. Abbie and I took a ride on it last year, and it was just as much fun this time.

Above all else, I got to know my kids a little bit better this weekend. They're truly special people and were a blast to hang out with. I feel like the luckiest Dad in the world right now. :-D

Posted in General at Sep 06 2005, 09:06:18 PM MDT 2 Comments

Weekend with Daddy

When I came home from Michigan a couple of weeks ago, Julie had a surprise for me. "Since you've been traveling so much lately, I think it's my turn." Her family is going to the Bahamas for Labor Day weekend, and she was going to join them - w/o me or the kids. We could have all gone, but going on vacation with two kids is not a vacation. Besides, it's in the Bahamas - and fishing for lobster and boozing on a boat all weekend is not a kid-friendly environment. So I'm flying solo with Abbie and Jack for the weekend.

Julie left this morning on a 6 a.m. flight - first class no less. She had some miles from years ago and decided to treat herself right. So far it's going well - Abbie is still sleeping and Jack is over making farting noises in the corner. Today's activities should be a lot of fun - riding bikes to breakfast (they ride in a trailer behind mine), followed by a hike, naps - and then the camping expedition begins. They love "tents", but the the only tent they've ever seen is in the bed with the covers. Tonight we're going to pitch a tent in the backyard, roast some marshmallows and hot dogs over the fire pit and pretend like we're camping. Hopefully we'll remember to come in before the sprinklers come on in the morning. ;-)

Posted in General at Sep 02 2005, 08:27:13 AM MDT 2 Comments

CSS Table Gallery

From CSS Beauty:

CSS Table Gallery. Showcase of how CSS and data tables can work together to create usable and pretty results.

I like Chrome de la chrome. Hopefully the available designs will grow so we can pick and choose the ones we want to use in our apps. I might have to use Chrome de la chrome with the Display Tag in the next AppFuse or Equinox release.

Posted in The Web at Sep 01 2005, 01:07:46 PM MDT 1 Comment

PowerBook Dent Redux

Continuing my PowerBook Dent story from last week...

I continued to work with my iPod as a hard drive on Wednesday and Thursday of last week, and took my laptop into the Apple Store on Thursday evening. The guys at the Genius Bar said that neither Apple Care nor a warranty covered accidental damage, and that it would be very expensive if I sent it in. Their suggestion was to take my dented, no-hard-drive-finding PowerBook to The Mac Outlet for a new case. They said if I got a new bottom case, I could bring it back and say "the hard drive can't be found" and Apple Care would likely fix it for free.

On Saturday, I took my machine into The Mac Outlet. They estimated $550 for a new bottom case, and suggested the cheaper new hard drive route for around $250. I agreed with the cheaper route, but told them I was very keen on trying to recover the existing hard drive. Yesterday, they called me at 5:30 and said "You're on of the lucky ones." The whole problem was due to a loose cable - plugging it back in fixed all the issues. Yeeee haawww, my laptop is as good as new!

Now it's time to buy some DVDs, do some backup, and buy one of those "spongy wetsuit material" type cases. ;-)

Posted in Mac OS X at Aug 31 2005, 10:36:13 AM MDT 1 Comment

Using Acegi Security for Remember Me and SSL Switching

I spent some time yesterday converting AppFuse's homegrown Remember Me and SSL Switching system to using Acegi Security. Thanks to Justin Spears, who provided the original motivation. It was much easier than I thought it would be, and resulted in the deleting of 7 classes in AppFuse. Not only that, but only one of them had a test for it, so the test coverage has naturally gone up as well. I'll trade 40 lines of XML for 1214 lines of Java any day - especially when I can get the support of an open-source framework. ;-)

If you're interested in using this code over 1.8.2, you can checkout the latest code from CVS (or download it from http://appfuse.org/nightly). The only other change currently in CVS is changing from "tomcat" to "user" as the default User role. Below is a list of classes that were removed as part of this move to Acegi:

  • src/dao/org/appfuse/model/UserCookie.java
  • src/service/org/appfuse/util/RandomGUID.java
  • src/web/org/appfuse/webapp/action/LoginServlet.java
  • src/web/org/appfuse/webapp/filter/LoginFilter.java
  • src/web/org/appfuse/webapp/taglib/SecureTag.java
  • src/web/org/appfuse/webapp/util/SslUtil.java
  • test/web/org/appfuse/webapp/action/LoginServletTest.java

I should also mention that I owe a big thanks to Virtuas - who pays me to work on AppFuse these days. :-D

Posted in Java at Aug 29 2005, 09:25:37 AM MDT 11 Comments

Happy Birthday Jack!

Happy Birthday Jack!! It's hard to believe it's been a whole year since Jack was born. He's quite a guy to hang out with now - he's walking, laughing and smiling like you wouldn't believe. He always wakes up with a smile on his face too - quite the opposite of his big sister. ;-)

I'd post a recent picture, but I killed my PowerBook last week, where all our pictures are stored. In the meantime, here's a video of him walking from last week.

Posted in General at Aug 28 2005, 02:53:45 PM MDT 3 Comments

[ANN] AppFuse 1.8.2 Released

This release is mostly a bug fix release with no new features. It also includes upgrades to Acegi Security and the Spring Framework. Thanks to all the sponsors who have contributed products and free hosting to the AppFuse project.

To see how AppFuse works, please see the following demos:

Comments and issues can be sent to the mailing list or posted to the AppFuse Issue Tracker.

P.S. I have the Acegi integration done for Remember Me and SSL Switching in another project, so that support should be in CVS sometime next week. Thanks to Justin Spears for his help on this issue.

Posted in Java at Aug 27 2005, 06:42:06 PM MDT 12 Comments