Matt RaibleMatt Raible is a Java Champion and Developer Advocate at Okta.

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.


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.

Speed up your site

Zeldman hooks us up with another cool web tool,

Andrew B. King, author of Speed Up Your Site: Web Site Optimization (New Riders: 2003) and founder of, announces a free new service for web designers. Submit your URL to the Web Page Analyzer and it will tally the weight of your markup, images, CSS and JavaScript, then offer advice on how to improve your download and display time.

Here are my results - looks like I have too much HTML. I think I'll cut my displayed number of posts from 20 to 10.

Posted in The Web at Mar 25 2003, 04:04:21 PM MST Add a Comment

Gentoo Linux

A friend hooked me up today with some knowledge I didn't have. He told me about Gentoo Linux, which, according to him, is 3-4 times faster than any current Linux distribution! Wow - that's a LOT faster. This might mean that my 300 MHz, 256 MB (RAM) machine is usable again. Here's some snippets from our IM conversation.

You build from the command line through lynx, then update your kernel through a tool called 'emerge'. Want cvs? type 'emerge cvs'. Want jboss, type 'emerge jboss'. Basically, you emerge what you want and ignore all the rest of the stuff you typically get in a pre-canned, pre-built linux os.
works great on intel, sun, powerpc and the mac.
no more rpms and tar balls. just emerge. Each week, if I want to update all the apps I have emerged on my machine, I type, as root, two commands "emerge sync" (updates my portage tree), then, "emerge -u world". This says, look at all the apps I've emerged, and update them. Emerge then finds the tar balls, pulls them down, unpacks, compiles into the kernel and goes onto the next one. Want OpenOffice? 'emerge openoffice' (this takes about 8 hours to compile).

Sounds very cool - has anyone tried it?

Posted in Java at Mar 25 2003, 02:16:32 PM MST 7 Comments


A few days ago I was trying to hook DBUnit into my test process so that my database would contain the same data before my JUnit tests are run. I had some issues getting it to work and later found that there was a bug in DBUnit's ant task. Basically, it was not allowing me to disable batch statements. Anyway, it's been fixed in CVS and now my JUnit tests (all run through a common test-module task) depend on a "db-load" task. Pretty cool and awful easy to configure. I'll be updating struts-resume/appfuse in the next few days to contain this slick trick. In the meantime, here's my db-load target. The file sample-data.xml is also built using Ant via DBUnit's "export" task.

<target name="db-load" description="Loads database from exported DBUnit file">
    <property name="operation" value="CLEAN_INSERT"/>
    <property name="file" value="metadata/sql/sample-data.xml"/>
    <dbunit driver="${hibernate.connection.driver_class}"
        <operation type="${operation}" src="${file}" format="xml"/>

Posted in Java at Mar 25 2003, 11:13:58 AM MST Add a Comment

Mozilla issue with JavaScript, screen.availHeight and <iframe>

I ran into an interesting issue this morning - maybe one of you will have a solution. I can get the height of a browser window using screen.availHeight in Mozilla/IE, just fine, but when there's an <iframe> on the page, Mozilla pukes. For more information, please see this complete explanation and demo.

Update: Boy am I an idiot - my <iframe> was named "screen" causing conflicts when referring to screen.availHeight. Oh well, I love easy solutions!

Posted in The Web at Mar 25 2003, 07:47:44 AM MST Add a Comment