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.

Spotted: Nice Roller Theme

I stumbed upon the :: Introspection :: blog this morning, written by Jeff Haynie. I really dig Jeff's theme, and that's the reason for this post. Jeff - any chance you want to donate that sucker to Roller's out-of-the-box themes collection?

Posted in Roller at Feb 15 2003, 08:10:22 AM MST Add a Comment

Netscape's DevEdge Reborn and cool style switcher

Zeldman reports that Netscape's DevEdge has been reborn. I really dig the style switcher via the button at the top right - as well as the font buttons.

Netscape's DevEdge has been reborn as a standards showcase: “Now DevEdge is not only a great source of tools and information for developers, it demonstrates extensive use of web standards for accessibility, maintainability, and user interaction.” Features include tableless, CSS layout; switchable styles, one of which includes a header graphic that hearkens back to the original DevEdge of the mid-1990s; cross-browser dropdown menus (these don’t work in IE5/Mac, but IE5/Mac users have been provided for); and link URLs that print out for your convenience. Eric Meyer contributed to the redesign and more information is available on his site.

Posted in The Web at Feb 14 2003, 08:56:52 AM MST Add a Comment

Is there an Instant Messaging API for Java?

I got to thinking on my way into work this morning - is there an Instant Messaging API for Java. I suppose it would help if there was an IM standard, just like there's an e-mail standard (SMTP). I suppose that Jabber is kinda close. Here's why I'm interested. There's a few things I get e-mails on now that are simply "notifications." For instance, Log4j errors, Anthill build notifications and comment notifications from this site. I'd love to be able to program these to call a more configurable messaging system - so I could set it to send me IM's or possibly even SMS messages (the problem with SMS is it costs $$ now). I suppose I could setup a Jabber server and use their API to send messages, but I'm hoping this is already done for me. It'd be slick to parse an e-mail address and based on whether it's @hotmail, @msn, @yahoo or @aol, it'd send it through the appropriate gateway. Anyone know of an API that makes with as easy as sending e-mail with JavaMail?

Posted in Java at Feb 13 2003, 03:07:45 PM MST 2 Comments

RE: Where's the $$ in Java

Danno Ferrin asks "Where's the $$ at in Java?" I don't think I have the answer to this, but I can say that the money has certainly declined in the last year. I wanted to comment on this post, because I think I've found myself an interesting niche. There seem to be few Java Developers that know UI Development stuff like CSS, HTML and JavaScript. When I say know, I mean really know it in the sense that they could construct a good looking web page from scratch. On most of the projects I've been on, sure there have been UI Developers, but that's all they knew was CSS, HTML and JavaScript - they didn't know much Java (if any at all). I'm not saying it's impossible for developers to know both Java and UI Technologies, just that it's rare. So if you want to create a niche for yourself as a Java Developer - learn the UI stuff. If you're a UI Developer, learn the Java stuff. It can't hurt can it?

Posted in Java at Feb 13 2003, 01:22:28 PM MST 2 Comments

Help: Which servers support HTTP Digest Authentication?

In my security chapter, I am describing HTTP Digest Authentication (please correct me if I'm wrong on any of this).

This (HTTP Digest) authentication mechanism identifies a user based on a username and password, and the client transmits the password in an encrypted form such as SHA or MD5. HTTP 1.1-enabled browsers are required to support it, at least according to this page. According to the Servlet 2.4 spec, it is not currently in widespread use, and therefore Servlet containers are not required to support it.

Now for the part I need help on. Which of the following servers support HTTP Digest? Tomcat, JBoss, Resin, Orion, WebLogic, WebSphere and Sun ONE. To test this, in your web.xml you would configure your <auth-method> to be DIGEST:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>My Application</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>My Test Application</realm-name>
</login-config>

According to this implementing WebSphere Security article from December 2002, WebSphere 4 doesn't support it. I wonder if version 5 does? Thanks for any assistance you can offer!

Update: I was missing a required element (<web-resource-name>) in the XML above, and I added <realm-name> for display on the dialog box. Tomcat (v4.1.18) supports DIGEST just fine. The dialogs do change between the types though - the differences are below.

HTTP Basic Dialog Screenshot
HTTP Basic Dialog

HTTP Digest Dialog Screenshot
HTTP Digest Dialog

Posted in Java at Feb 13 2003, 06:42:56 AM MST 4 Comments

XDoclet for Hibernate

A nice community-enhancing developer (I don't know who) has posted an XDoclet for Hibernate tutorial on Hibernate's Wiki. Good stuff. Since the XDoclet doco is kinda cryptic, it'd be awesome if someone did this for Struts. Maybe in my spare time. Oh wait, I have none of that - at least not this week.

I think XDoclet and Hibernate work well together when creating a database schema from scratch. However, I've found that Hibernate's Reverse Engineering Tool works much better for me. It generates the .java and .hbm.xml files for me and I'm done. Hook up a DAO and a DAOTest and I'm done! I might look at Middlegen's recently added Hibernate support in my next class-generation cycle. To my knowledge, it creates an XDoclet-enabled .java file that can then generate the .hbm.xml. However, I'm using a lot of composite-id stuff and XDoclet doesn't seem to support that. From the above XDoclet for Hibernate article:

Note that XDoclet will not be able to support the new composite features.

Posted in Java at Feb 13 2003, 05:22:44 AM MST 1 Comment

RE: Client-side Sorting with the DOM

After working the DOM for the past few days, I'm somewhat motivated to make my table row sorting demo support paging. In reality, it doesn't matter which table-sorting code I use, Erik Arvidsson has a nice example too. My logic is that I usually query a database and return all the rows for a particular table anyway, sometimes based on a search. Since I'm retrieving all these rows from the database, why not send them all to the UI. It might take a bit longer for the initial request, but then again, maybe not. I'm sure it's a different story for 10,000 records, but what if I only ever expect to have < 100 rows. Here's how I think I can do it:

1. Retrieve all the rows and put them in a table.
2. Call a JavaScript function on load that sets all <tr>'s (i.e. var rows = table.getElementsByTagName("tr")) with a rowIndex > 20 to rows[i].style.display = "none".
3. When a user clicks on a page number, do the math and set rows[i].style.display="" or rows[i].style.display="none" to show/hide particular rows.

BTW, I've added support in my local copy of the sortTable.js script to do sorting of <input> elements, as well as <select> elements. I can update the demo if anyone needs this functionality. Also, the W3C has a cool utility to check out what level of DOM support your browser has (based on user agent).

NOTE: I tried to manage my time today to be more productive, and succeeded at most things. I woke up at 3:30 this morning and got an hour and a half worth of editing done. I worked 8 1/2 hours at the office, and was home by 3:30. I was planning on working another 1 1/2 on editing, but it was a nice day so Julie, Abbie and I went on a hike at Red Rocks instead. I met a friend at 5:30 for an hour and a half of hoops, and returned home at 7:30. I got on this damn computer at 8:00 to do my evening editing, but instead ended up blogging and reading blogs for the last hour and a half. A month ago, I'd stay up late and still get my editing done. Not now, Abbie is much more fun and editing just doesn't sound interesting at all.

Posted in The Web at Feb 12 2003, 09:16:46 PM MST 1 Comment

RE: Tiles 201 - Using Controllers

Patrick has published another excellent article on Tiles. This one is titled Tiles 201 and is about using Tiles Controllers. Good stuff to know - especially since I've never used a Tiles Controller (I might now!). I really like the clear and concise way that Patrick writes tutorials. I think we, as open source developers, should do more of this to better explain the technologies we use. So next time you're interested in learning something, I encourage you to write a tutorial on it - I'm willing to bet you'll learn and retain a lot more. If you don't understand something or make mistakes, I'm sure there are many Java Bloggers willing to help you get it right.

Patrick mentions that the Tiles Controller is not discusses in any of the existing Struts books. This sounds like an opportunity for me to include it in my chapter. With Patrick's simple and easily-understood example, this shouldn't take too much effort. Thanks Patrick - great stuff! One question I have - I know that these types of posts take a long time to create/edit and correct. Your blog says "sponsored by browsermedia" - does that mean you get paid to blog in a sense? Meaning - are you writing these articles at work?

Posted in Java at Feb 12 2003, 08:51:54 PM MST Add a Comment

TiVo Upgrade Offer

If you're a TiVo owner, you've probably seen this upgrade offer in your TiVo messages. It looks awfully tempting:

Between now and March 10th (or while supplies last), we're offering you the one-time opportunity to make the switch to Series2 and transfer your product lifetime service. Ramp up your recording space to 80 hrs and gear up for Home Media Option.

For an additional $100, you can get the "Home Media Option" package and access MP3s, Photos, and schedule programs to record from the web. This is a good time management tool if you're a TV watcher. I grew up without a TV, so I don't really like watching TV and I think it's a waste of time. However, Julie is a TV addict - so much that she has to have it on all night while she sleeps. When I do watch TV, TiVo is a must.

Posted in General at Feb 12 2003, 08:25:03 PM MST Add a Comment

Integrating JSP/JSF and XML/XSLT: The Best of Both Worlds

I saw this nugget a few minutes ago on the struts-user mailing list. Maybe I'll even read it... ;-)

For those of you wondering how JSP technologies, including JSP 2.0, JSTL, Struts and the upcoming JavaServer Faces (JSF) 1.0, can work together with XML and XSLT, there is a new article at TheServerSide.com about this subject.

http://www.theserverside.com/resources/article.jsp?l=BestBothWorlds

The article presents the natural evolution of server-side Java programming from basic servlet programming to JSP 2.0 with JSTL and JSF, shows the limitations of the current JSF rendering architecture and how XML technologies can solve them.

The article comes with sample code that shows how to hookup an XSLT transformer with a JSP filter, and includes an experimental XML renderer for JSF.

Posted in Java at Feb 12 2003, 12:40:53 PM MST 1 Comment