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.

Writing a Technical Book

Graham Glass offers some great suggestions on how he writes a book (tip of the hat to Matt Croydon). This is extremely valuable information for me, as I will be writing a couple chapters over the next few weeks. If I can follow in his footsteps, I'll be set!

A typical chapter takes me 3 or 4 days to write, including the source code for the examples, which I think is pretty fast. In addition, the high level book structure takes about a day.

The thing I'm struggling with right now is what persistence layer to use on my example Struts application. I'd like to use either Hibernate or Castor, but since I've never implemented either from scratch, I don't want to spend more time learning than implementing. And I'd like to generate the entire persistence layer - which seems possible with both. I'd like to use Middlegen, but then I'll have to use JDO or EJB's for my persistence layer. While JDO might be appropriate, EJBs are probably over-kill for an example app. The nice thing about Middlegen is that it will generate the JSP and Struts classes for me too.

Posted in General at Nov 24 2002, 05:04:23 AM MST 2 Comments

Tomcat 5

It sure would be nice to have a binary version of Tomcat 5. I tried building it this morning, and the process is still going - you have to download about 5 different libraries (so far) just to get it to build! I find this is typical with Jakarta project. Hopefully there will be one soon. I'll try to document the process so others don't have to experience my pain.

Later: Lance provides a link to the nightly build - exactly what I was looking for!

1 Hour Later: Tomcat 5 throws all kinds of errors when starting and doesn't load jsp-examples or servlet-examples correctly. For error details, check out my posting to the tomcat-dev mailing list.

Posted in General at Nov 23 2002, 11:34:35 AM MST 3 Comments

JSP's Evolution

There's another interesting discussion taking place over on the struts-dev list again. Man, I'm glad I subscribed (again) to this list last week! It started out as a discussion of JSP vs. Velocity and Craig (McClanahan) provided an interesting evolution of JSP (and comparison to Velocity).

Velocity:
========

(Note -- it's assumed that the Customer collection has been stored in the
VelocityContext by some preceding business logic.)

  \#foreach $result in $results {
    <tr>
      <td>$result.ID</td>
      <td>$result.Name</td>
    </tr>
  }

JSP 1.1 (with Scriptlets):
=========================

  <%
    Customer custs = ...;
    for (int i=0; i < custs.length; i++) {
  %>
    <tr>
      <td><%= custs[i].getId() %></td>
      <td><%= custs[i].getName() %></td>
    </tr>
  <%
    }
  %>

JSP 1.1 (with custom tags):
==========================
(Note -- it is assumed here and in the following examples that the Customer collection has been stored by some preceding business logic.)

  <logic:iterate id="cust" name="custs">
    <tr>
      <td><jsp:getProperty name="cust" property="id"/></td>
      <td><jsp:getProperty name="cust" property="name"/></td>
    </tr>
  </logic:iterate>

JSP 1.2 + JSTL 1.0:
==================

  <c:forEach var="cust" items="${custs}">
    <tr>
      <td><c:out value="${cust.id}"/></td>
      <td><c:out value="${cust.name}"/></td>
    </tr>
  </c:forEach>

JSP 2.0 + JSTL 1.0:
==================

  <c:forEach var="cust" items="${custs}">
    <tr>
      <td>${cust.id}</td>
      <td>${cust.name}</td>
    </tr>
  </c:forEach>
</pre>

I can't wait for JSP 2.0 - it's going to make everything so much easier. Once again, we have exciting times for the Java world. With the power of JSP 2.0 and XDoclet, deadlines should be a non-issue. Now we just have to figure out the best way to use them, and the fastest way to pump out a Struts project. Wouldn't it be awesome if you you could add a new column to a table, build your project using Ant and XDoclet and whalla, all your classes are updated! That would be cool - and I think it's possible. Now I just have to figure out how - and fast!

Posted in Java at Nov 22 2002, 06:05:23 PM MST 6 Comments

Struts Logo Needed

Any of your designer-types want to contribute a logo candidate for Struts? They're looking for one!

Posted in Java at Nov 22 2002, 05:05:53 PM MST Add a Comment

Session Timeout in Roller

Jeff Duska expresses his frustration with Roller - he wrote a nice long post and when he clicked on "Post to Weblog", he lost it all. This happens to me all the time, but since Roller used container-managed authentication my post still submits after I re-login. I hope Jeff didn't just give up after he saw the login screen. Even if this fails, the back button should get you back to your post. Unless you're using the Ekit Editor - which I strongly advise you don't use because of this. Once you leave the page, and click back - Ekit doesn't remember your post - and in that case, I agree - ughhhh!

Posted in Roller at Nov 22 2002, 11:12:03 AM MST Add a Comment

JSP 2.0, Struts and Security

I've been asked to write some chapters in an upcoming JSP book that covers JSP 2.0 (JSR 152) and Servlets 2.4 (JSR 154). I'm thinking of doing a chapter on Struts and a chapter on Security. In the Struts chapter, I'd like to cover developing a Struts application using Ant, XDoclet and Middlegen - but I don't know if Middlegen supports Struts 1.1, nor if the generated JSPs can be modified to use JSP 2.0 syntax. I'd hate to spend a lot of time contributing to these projects to make my struts-based app work. So I'm asking you (the developers) what kind of app you'd like to see me develop?

For the Security chapter, I was thinking of developing an app that has form-based authentication, a Filter to look up the user's information, password encryption and an SSL login.

For the Struts chapter, I want to develop an app that developers can use to 1) learn about Struts and JSP 2.0 and 2) also has code they can use in their own projects. I'm torn because I really want to redo this photo album software (the site doesn't appear to be rendering images right now), but I want it to be useful. Hopefully by using XDoclet extensively, it doesn't matter what I write - the build and generation process will be useful.

My biggest hurdle to overcome in all this - it's due in 3 weeks! That should be a nice ball of stress that will keep me from sleeping night after night. Any advice or suggestions are welcome.

To see what JSP 2.0 is all about, check out the JSP 2.0 Early Access Release and here is a short and sweet article of changes.

Posted in Java at Nov 22 2002, 07:44:22 AM MST 3 Comments

Flock RSS Aggregator

Dominic has setup an instance of flock. I gave up on it when it wouldn't install on my XP machine, but after looking at the demo - this is a very cool webapp. Hmmm, I wonder if we can integrate it into Roller somehow? Of course it's possible, but where/how do we begin is the question?

Posted in Roller at Nov 21 2002, 07:05:01 PM MST 1 Comment

IE 5.x and Roller's Calendar

I've gotten a few complaints in the last week from users that they weren't able to read my site because of a "calendar overlay" issue. Basically, they said that they couldn't read the content on this site because the calendar was too big and was hiding my blog entries. The two browsers it happened on were IE 5.5/Win95 Tonight, someone sent me a screenshot (150K) and now I know what they're talking about. I don't know if your roller site has the same issue, but the following might help if you do. Basically, I just had to define a font-size for the table that surrounds the calendar. If this doesn't work, I'll define the table and the <td>'s inside the table. Here's the fix so far:

.hCalendarTable {
    font-size: 1em;
}

I also found that I had to do this for Opera 7 to render the calendar properly. And, Opera 7 doesn't seem to understand font-size: x-small, so I used 10px instead.

Of course, the easiest way to avoid any issues such as these is to use a standards-compliant browser. I recommend IE6, Mozilla, Phoenix (Windows only) or Chimera (Mac only). Nevertheless, I'd like to make this site available to everyone, so if you do experience issues, please do let me know and include a screenshot for clarity. Thanks!

Later: It's getting better and I've managed to fix the font-size problem, but the font color inside my calendar is still the wrong color, as illustrated in this screenshot (138K). Oh well, at least everything is readable now.

Posted in The Web at Nov 21 2002, 06:48:54 PM MST Add a Comment

Roller's Search Feature

I'd love to use Lucene to develop Roller's search feature, but there have been discussions of a much simpler search (i.e. simple SQL LIKE `%searchTerm%' statements). Since I'd like to dig in and learn Lucene, I think it would be valuable to integrate into Roller, but so as to not discourage any other ideas - maybe we could code for a pluggable search module. That way, roller administrators could choose which one they liked, and developers could plug in others.

I don't know how much time I'll have to contribute to this, but just wanted to throw it out there. BTW, does anyone know if Lucene can index existing database records (weblog entries)? I would imagine so. Would we want to index bookmarks and newsfeeds as well? The nice think about the Google search on this site is that it indexes everything. Anyone know of a java-based google-like search package?

Posted in Roller at Nov 21 2002, 09:55:01 AM MST 1 Comment

Generating a table's HTML with the DOM

WebGraphics provides us with a nice url to some performance tests for writing tables with the DOM. There are 5 different methods listed, and you can execute each one in your browser and see how long each takes to execute. Nice!

Posted in The Web at Nov 20 2002, 09:54:12 AM MST Add a Comment