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.

Camino now supports Twisty Comments!

I've been using Safari as my primary web browser since I bought my new PowerBook. This evening I decided to try a nightly build of Camino and see how things are coming along. I was delighted to find out that my twisty comments now work in Camino (not so in Safari).

Camino's nightly build does have some issues though - both are things that used to work just fine on this site. One is that the search input field has a purple background (matching it's containing <div>). The second quirk is that the textarea box in Roller's Weblog -> Edit page is shifted to the right - seems something is amiss with floats (it's to the right of my "Validate as XML" checkbox). Even with these little quirks, it's still a great browser.

Posted in The Web at Oct 14 2003, 08:03:37 PM MDT Add a Comment

Skinning your applications and Apache+Tomcat on RH9

Here are a couple of links I found on mailing lists that might be of use:

  • Xkins: Xkins framework uses Velocity to process snippets of HTML, but you can use any other template processor (Xkins comes with it's own default processor). Xkins also comes with Forms Tag Libs, that allows you to create forms using Xkins and comes with four Skins. Xkins Forms integrates with Struts framework. Xkins also fits perfect in JSF world, playing a role as a RenderKit, and can work with other presentation frameworks, (i.e. struts-layout).I'll stick with simple XHTML and CSS. If I need different layouts (HTML), I'll use a different base tile.
  • John Turner has published a Tomcat 4.1.27 + Apache 2.0.47 HowTo. This is similar to mine, but looks much cleaner and to the point.

Later: I discovered the beauty of John's HowTo this evening. It allows you to specify one measly line in Apache's httpd.conf file and only a few lines in Tomcat's server.xml file and viola Tomcat configures itself! It sets up aliases and such for each webapp that you have deployed. As an example, here's dynamically created section for AppFuse:

#################### localhost:/appfuse ####################                                       
                                                                                                       
# Static files                                                                                     
Alias /appfuse "/opt/dev/tools/jakarta-tomcat-4.1.27/webapps/appfuse"                              
                                                                                                       
<Directory "/opt/dev/tools/jakarta-tomcat-4.1.27/webapps/appfuse">                         
    Options Indexes FollowSymLinks                                                                 
    DirectoryIndex index.jsp                                                                       
</Directory>                                                                                  

# Deny direct access to WEB-INF and META-INF                                                       
#                                                                                                  
<Location "/appfuse/WEB-INF/*">                                                                 
    AllowOverride None                                                                             
    deny from all                                                                                  
</Location>                                                                                 
                                                                                                       
<Location "/appfuse/META-INF/*">                                                              
    AllowOverride None                                                                             
    deny from all                                                                                  
</Location>                                                                                   
                                                                                                       
JkMount /appfuse/j_security_check  ajp13                                                           
JkMount /appfuse/auth/*  ajp13                                                                     
JkMount /appfuse/register/*  ajp13                                                                 
JkMount /appfuse/passwordHint/*  ajp13                                                             
JkMount /appfuse/*.do  ajp13                                                                       
JkMount /appfuse/*.jsp  ajp13                                  

I had all of this working great - I even had Apache upgraded to 2.0.47 on OS X (serving localhost/~user files and everything)! And then I rebooted... Now in catalina.out, I'm getting the following - ugh...

BAD packet 256                                                                                      
In: : [B@c283b5 4/843                                                                               
01 00 03 47 00 00 00 00 00 00 00 00 00 00 00 00  | ...G............                                 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................ 

WTF?!

Solved: I got this solved fairly easily. I had modified /usr/sbin/apachectl so that the HTTPD variable pointed to /usr/local/apache2/bin/httpd rather than /usr/sbin/httpd. I fixed it by removing /usr/bin/apachectl and executing "ln -s /usr/local/apache2/bin/apachectl /usr/sbin/apachectl". Now if I could only get the Rendezvous mod working on 2.0.x.

Posted in Java at Oct 14 2003, 08:09:07 AM MDT 2 Comments

OS X Rocks, but it sucks too

OS X is awesome ~ it's beautiful to look at and it's based on Unix. What more could you ask for? Windows XP looks good, RedHat 9 doesn't. Windows XP with Cygwin is almost tollerable, but you still have to type "cd c:" when you want to change drives. What bugs me about OS X is simple *nix things don't work on it. Integrating Apache + Tomcat is a 5 minute job on WinXP and RH 9, but I've spent the at least 10 hours trying to do it on OS X with no luck. I could post the errors here, but what good would it do? This kind of stuff just works on RH 9 and WinXP. Therefore, OS X sucks!

What am I ranting for? No reason really - it just sucks that I've spent so much time trying to do something that still doesn't work. This HowTo didn't help either (building from source had errors, no binary of Apache available). I guess this is all due to the fact that OS X has a 1% (maybe 2%) market share among developers?

Posted in Mac OS X at Oct 12 2003, 06:54:12 PM MDT 13 Comments

Comments are broken

Comments are broken on this site, I don't know why, but I'll turn them off until I fix them to curb your desires...

Update: Comments are fixed now - I was missing mail.jar and activation.jar from $CATALINA_HOME/common/lib. In other news, I think I discovered why this site is crashing. I'm only allowed to have a max of 20 MySQL connections from my ISP, and it appears that when you leave a comment, it opens a new database connection and doesn't close it (at least with twisty comments). Suffice to say, if you want to crash this site, leave a bunch of comments. ;-)

Posted in Roller at Oct 12 2003, 09:34:30 AM MDT Add a Comment

A day of upgrades

I upgraded this site to the latest code from Roller's CVS, and I'm now running Tomcat 5.0.12 Beta. It seems to be working like a charm for FreeRoller so why not? I also upgraded to Eclipse M4 on OS X and WinXP. For those of you looking for a JSP Editor for Eclipse, try Lomboz. I'm using it and it seems to work fairly well. As far as I can tell, all it gives you is syntax highlighting. I tend to use Homesite or BBEdit for JSP pages - they're better HTML editors and always will be IMO. There never will be a "I can do everything" IDE, so why keep searching? Though it would be nice if someone would figure out code-completion for custom tag libraries.

All upgrades seem to have gone smoothly and backups were made in case they crap out.

Update: The Lomboz plugin sucks, at least with the latest Eclipse. Ctrl+C and Ctrl+V don't work ~ maybe that's a good thing...

Posted in Java at Oct 11 2003, 01:31:43 PM MDT 4 Comments

Missed my flight

Damn. I figured leaving here an hour and 45 minutes early would be good enough. The airport is usually a half hour away. I left at 3:45, flight was at 5:35. I didn't reach the airport until 4:45 and found the long-term parking was full. Taking the shuttle bus (the only option) put me in the terminal at 5:05. I figured 30 minutes would still be enough time - definitely close - but enough time. Nope, Northwest has a policy that you must check in 45 minutes before the flight, no ifs ands or buts. What the fuck?!

I admit that it was mostly my fault for being late, but I'm willing to bet I could've made it. They said because I had a Hotwire ticket, they couldn't to anything for me. They did offer another flight tomorrow for a small fee (they never specified). I didn't want to go for only 24 hours, so I'm stuck at home. $200 bucks out the window, and I'm one of the 3 people that is missing Paw's 80th birthday (out of ~20). I feel like a moron.

Posted in General at Oct 10 2003, 08:06:05 PM MDT Add a Comment

I'm outta here

I'm off to Indiana for a weekend of family, fun and booze. If this site goes down while I'm gone, don't fret - there probably won't be any new content over the weekend. I'll be back late Sunday night and up early Monday morning to teach the JSP class that got cancelled last week. Mini-vacations rock!

I just discovered a sweet Safari feature while writing this post: highlight a word, right-click and voila - there's a spell checker!

Posted in General at Oct 10 2003, 02:44:26 PM MDT 1 Comment

Washed and Dried

I accidentally washed and dried my CommuniCam this morning. Judging from the picture below, it doesn't appear to be affected that much - blurry as ever.


Raible Designs' HQ

Posted in General at Oct 10 2003, 12:04:50 PM MDT 3 Comments

WebWork and JDD

I attended the Boulder Frameworks meeting tonight on WebWork, followed by the Boulder JUG meeting. The WebWork (a.k.a. WW) presentation had a mere 5 attendees, but Kris gave a very good overview of WW and showed how simple it was. Here are some of the strengths of WW according to Kris:

  • It's not dependent on J2EE. Many method signatures are empty and it uses interfaces everywhere, rather than parent classes. Sounds cool. Kris likes it because "it gives you a warm fuzzy feeling you're not tied to WW."
  • It's not Jakarta. "Jakarta is like a Ketchup bottle - you have to beat it to get anything out of it." I don't know that the WW team produces software much faster than Jakarta though...
  • Instead of using the HttpServletRequest, WW uses a Stack, which is essentially the same thing (sans J2EE).
  • WebWork has Interceptors. They're like Filters, but WW comes with built-in Interceptors that can be applied declaratively. Kris mentioned there's little documentation on the built-in Interceptors - a wiki page would be nice.
  • Action packaging - you can turn a portion of your WW application into a jar and it can be added to another WW application. It sounds good, but I can't think of a use for it right now. Sounds like modules in Struts.

Kris's biggest reasons for liking WW was Interceptors and Inversion of Control. However, Struts has those too. Good presentation. I plan to learn WW and give up this whole my framework is better than yours stance. In fact, I hope to do this with many of the technologies I use everyday. I'm going to start using Orion and Resin so I know if Tomcat really is better, or better yet - when should I use one appserver or the other. I'm learning IDEA so I know when to use Eclipse and when to use IDEA. Today I discovered how IDEA warns me about invalid Javadocs (very nice feature). Eclipse continues to rule the CVS integration world, and I see no reason to quit using it and bitch about IDEA's lack of CVS integration.

After WW, I walked across the hall to listen to James Duncan Davidson talk about "James Driven Development" (my phrase) - also known as Objective Object Orientation. Rather than bore you with the details, here are the highlights:

  • Don't abstract too much - just enough to fit your needs. Examples of too much abstraction can be found in Apache's Repositories (James's words - he didn't specify any projects).
  • Don't extend, instead create objects do something, then you don't need to know the interworkings of the object.
  • Dynamically typed languages rock (i.e. Smalltalk, Ruby, Python). They're much easier to develop with, especially when backed my TDD. You can accomplish similar things in Java using lots of casting.
  • He can't wait until something comes along and kills Ant and Tomcat - he never thought they'd make it this far - especially considering he wrote them when he was a Junior Programmer for Sun. He gave Tomcat its name because he thought it'd be good animal on the book cover of an O'Reilly book. He never thought it would happen, and now that it does have a book, he said he's disappointed it's not an actual Tomcat (apparently it's a snow leopard?).

His point about Ant and Tomcat is that 1) something better than Ant will rock, so we should all be happy when something better comes along and 2) Tomcat was never designed (or tested) to be used in the environments its being used in (i.e. Nuclear Facilities). Good stuff - brain is full.

Posted in Java at Oct 09 2003, 11:29:22 PM MDT 7 Comments

Precompile your JSPs for Tomcat 4.x

Filip Hanik has provided a nice Ant script for pre-compiling JSPs. Its designed to be run after you've deployed your application to Tomcat. On my current project, it took 1 minute 30 seconds to compile all our JSPs - making it a candidate for new QA and Production deployments only. I'll be adding this to AppFuse's next release and verifying it actually works before I release. I know the compile works, but I want to make sure that my .java and .class files aren't rebuilt the first time I hit a JSP (I've seen this before). Also, you might want to checkout my issues if you run into problems.

Update: I've verified that this really does work - Sweet!

Posted in Java at Oct 09 2003, 03:41:47 PM MDT 3 Comments