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.
You searched this site for "matt". 1,142 entries found.

You can also try this same search on Google.

User-Mode Linux ~ should I switch my ISP?

This User-Mode Linux sounds like a great opportunity for hosting this site. I currently pay around $50/month to host this site, and there's two things that are frustrating:

  • I only get 5 GB of bandwidth, and I pay the same as my provider for any extra - I usually pay $30 extra per month for bandwidth.
  • I get a max of 20 connections per mysql instance. While this should be plenty, it does seem to cause this site to crash, and I'm not motivated enough to dig into Roller/Tomcat and figure out why.

I do have a cable internet connection, so I could host this site myself, but my upload speed is only 241 KB. For you folks that do use UML, does anyone have experience with running Java (i.e. Tomcat or Roller) and MySQL?

Posted in Java at Nov 23 2003, 09:22:02 PM MST 9 Comments

RE: Compressing and Caching in your webapps

Jayson Falkner writes about two Filters everyone should have in their webapps: one for compression (via gzip) and one for caching. I try to add a CompressionFilter to all the apps I write, but I don't have a CacheFilter. So my question is: should I add Jayson's CacheFilter to AppFuse or should I use OSCache? I haven't got to Dave's chapter yet on performance and caching (in JSP 2.0), so I haven't read his opinion - what's your opinion? I like Jayson's solution because I can add 3 new classses with no additional JARs - AppFuse already has 21 jars (Struts, Hibernate, JSTL + a few other taglibs).

Posted in Java at Nov 21 2003, 11:57:41 AM MST 4 Comments

My New Project: Tasks and Dev Server Setup

My new project is going well so far. It's nice to bill for the commute and work from home twice a week. I'll be finished with the prototype for our first project today, and we'll start pair-programming on Thursday to implement it. Since one of my main objectives is to teach my supervisor everything I know, I think the best way to do this is to pair-program. I tried giving a couple of presentations on Hibernate and XDoclet, but my supervisor is a Java Greenhorn, so even that was a little advanced.

Our first project is to automate job posting to the various job posting boards the client subscribes to. Currently, a person in HR enters the job onto their website, and then visits each job site (or sends an e-mail) and manually enters the information. The application we're developing will allow them to enter the job on their website, select which boards they want to post to, and submit the form. I initially received a list of 32 websites and newspapers. After contacting them all, I'm amazed the archaic systems that are in place for this "automation." Most sites will accept a simple e-mail in whatever format we want. In my mind, this means a person is going to manually read the job posting and manually enter it into their system. Great, it's easy enough for me to compose an e-mail. 2 out of 32 allow for FTPing text files in a certain format, and 1 site has an XML format (not DTD, just a format) that they expect to be attached to an e-mail. This is a *huge* opportunity for webservices and a common XML Schema (if you ask me).

The one thing that's been slightly frustrating is getting a development environment setup. I (as usual) need to setup CVS, a bug tracking system, automated tests, etc. It's a Windows shop, so no Linux allowed. Not a big deal, but I haven't been able to get VPN access yet. No VPN means that I can't checkin stuff from home - which is dangerous IMO. My supervisor suggested we setup everything on my Linux box at home, which is fine with me, but could be a lot of maintenance on my part (permissions, UPS, backups). For bug tracking, I'm leaning towards Bugzilla over Scarab because I'm familiar with it. I'd like to use JIRA, but don't want to shell out $800 to impress a client with some nifty bug tracking software. Free is always easier to sell to clients. I've actually thought about buying a JIRA license for Raible Designs and hosting my clients bugs (while I'm on the project), but it might be a pain to transition once I leave (I suppose I could rent the space to them or something). So what I'm asking for is - if you had to administer your own Linux box for your day job - how would you do it? Groups? Backups? UPS? If I don't do it on this project, I'll probably do it someday.

Posted in General at Nov 18 2003, 12:53:20 PM MST 3 Comments

What's the best way to setup networked printing?

I made the switch to my new XP box last night - swapping hard drives, CD Burners, etc. from the old to the new. In the process of putting 1.5 GB of RAM into my Linux box, I thought I'd upgrade Samba to 3.0 and setup a shared printer. Samba upgrade - piece of cake. Installing a printer on RedHat - no luck. I've tried it before, but I've never succeeded. I have a HP OfficeJet G85 that is a great printer. My main goal is to setup this printer as a shared printer on Linux or XP and I'll be able to print to it via OS X, Windows XP and RedHat 9. However, I can never get it installed on RedHat - even though I select the right printer (using printconf-gui). It does recognize it as a USB device, but it can't print to it. On Windows XP, the printer installs (and works) just fine, but I can't print to it from OS X or RedHat - it just doesn't work. Here's what happens on both:

  • OS X 10.3: I select Windows Printing and I can navigate to my XP Box, but I can't connect. When I try to view the printers, it hangs for a couple of minutes - then I'm prompted for a login and my XP login doesn't work. This same login/password works just fine for connecting to shared drives. I think it's a bug in Panther.
  • RedHat 9: I select Queue Type: Networked Windows (SMB) and my Windows box does not show up in the list (just the RedHat box and my PowerBook). If I try to manually enter my server, printer, etc. it just flashes and prompts me again.

I do have a wireless print server that I could probably use, but that's hooked up to our Canon 900 Photo Printer - which only seems to work well if it's plugged into the wireless print server. We've tried to plug it directly into a Windows box and print, and the quality just isn't as good - who knows why. I bought a USB hub for it in hopes of hooking up multiple printers, but that doesn't work either.

I wish I could just give my HP an IP address - then it would probably work for all of them, but alas, all it has is USB.

The fun part of all this switching hard drives? I thought I lost a 20 GB drive of important data this morning - I was up until 2 a.m. last night trying to fix it. Luckily, I got some assistance from Experts-Exchange this morning and didn't lose a thing.

Update: I got this all working using HPOJ and CUPS. I did have to uninstall LPRng and cups from Red Hat 9 - then re-install CUPS from source. I also had to install Ghostscript and all its fonts. Finally, to get it to share the printer via Samba, I had to tweak some Samba config files.

Posted in General at Nov 07 2003, 05:14:34 PM MST 4 Comments

New Tomcat Releases: 4.1.29 and 5.0.14 Beta

I know these have already been announced on javablogs.com, but no insight was given - so here's some lovin'. 4.1.29 seems to be merely an upgrade to DBCP 1.1 - which is great AFAIK because the "kill abandoned connections" hasn't been working for me. Hopefully DBCP 1.1 fixes this. Unfortunately, I'm running 5.0.12 on this site (where I'm still having connection issues) and the 5.0.14 release seems to only have DBCP 1.0. Oh well, maybe they'll upgrade to 1.1 in the next release. I'll still upgrade this site to 5.0.14 - maybe sometime this weekend.

Later: I upgraded this site to 5.0.14 and it does appear to have DBCP 1.1. Also, the abandoned connection timeout might actually work - or at least it's doing some logging - as indicated by the following message:

AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@1077fc9)
   LogAbandoned: true
   RemoveAbandoned: true
   RemoveAbandonedTimeout: 60

Posted in Java at Oct 31 2003, 11:37:06 AM MST 3 Comments

eBay hooks me up with a new computer

One good quality of a company - they keep your computer up to date. The company I work for bought me a new computer today. Dell Dimension 8300 P4 2.6 HT 80G. This will replace my 1.5 Dell Dimension 8100 - XP Pro, which (with cygwin) continues to me my favorite development environment. We're giving my Dell and Julie's Dell (that I bought for $200 from eDeploy) to charity. I also have an old 300 MHz Compaq Presario that's slow as slugs - I'm going to throw it away and not place that burden on someone else (it serves as a patio umbrella stand right now).

Posted in General at Oct 23 2003, 10:48:24 PM MDT 2 Comments

AppFuse and all it's libraries

I received a question about AppFuse that I've been pondering every since. The question basically boils down to two things:

  • How do you manage Eclipse's .classpath file in conjunction with lib.properties (the file that manages it for Ant)?
  • When using AppFuse for multiple projects, do you put a "lib" folder in each project or use a central repository?

Quick Answers: I replace files in the appfuse/lib directory and update lib.properties. Then I update my project properties in Eclipse to reference the new jars. A pain, yes - but only a 2 minute process. I run all my tests before I bother changing the Eclipse classpath. As for multiple projects - the easiest thing to do is to move $yourProject/lib to a folder called "libs" in the same directory as $yourProject and change the ${lib.dir} property in properties.xml to point to the new folder.

Begins Rambling... I'm currently using AppFuse on 3 different projects. 1 is AppFuse itself, the 2nd is Struts Resume, and the third is for a client I created a webapp for in August. Right now, when I synch up Struts Resume with AppFuse, I copy paste from appfuse/lib to struts-resume/lib and update the lib.properties appropriately. I can't just copy lib.properties to struts-resume/lib because struts-resume uses libraries that appfuse doesn't. Yes, this is admittedly a pain in the arse. It's almost as bad as changing all the method signatures when moving the Hibernate Session from all method signatures into the constructors (can your IDE do that?!). I don't want to make people download appfuse to build struts-resume though, so I doubt I'll change this process.

The whole "massive lib folder" has been bouncing around in my head for quite some time. I'd like to use Maven or Greebo to download the dependencies for AppFuse, but at the same time, it's nice being able to download the whole thing at once and be up and running. I don't want to go the Maven route because I don't really want/need a website for AppFuse and it sounds tough to get it working with XDoclet (though WebShop looks like it might be a good template). KISS

The project.xml in AppFuse is my feeble 20-minute attempt to get it Mavenized (it's currently not used). I tried Greebo this morning, and it really does nothing for me. Especially since I've setup separate compile/test classpaths (read from lib.properties). It'd be a real pain with Greebo to separate out the classpath's for testing and building - it seems to only support one long classpath. Also, who wants to make their whole best-practices open-source app dependent on a 0.1 open-source app?

As for having my IDE (wether it be Eclipse or IDEA) reading the classpath from Ant - that would be the sweetest feature of the year! Currently in Eclipse and IDEA, I have to give an absolute path to j2ee.jar since I don't want to distribute it (it's 11 MB). When I switch b/w OS X and WinXP, I always have to change this classpath. I'm sure there's an easier way with setting variables in the IDE, I just haven't figured it out yet.

The other thing that is annoying is that IDEA doesn't seem to read my $ANT_HOME environment variable. Does it have it's own $ANT_HOME? It's annoying for me b/c I check for JUnit classes in the classpath in my "init" task, and IDEA doesn't find them. Don't worry Eclipse bashers - it doesn't work in Eclipse either. This is fine with me b/c I prefer the command line, but those "I use my IDE for everything" folks might not like it because they can't run AppFuse's build.xml file from w/in their IDE.

Posted in Java at Oct 23 2003, 06:21:59 PM MDT 7 Comments

Blogging leads to Free Book

This blogging thing rocks. Today I got one of the books I've been meaning to buy - for FREE! Check out the following e-mail I received from Manning:

Hello Matt:

We are contacting you regarding Vincent Massol's new book, JUnit in Action, which Manning will be publishing in November. Vincent mentioned that you might be interested in certain parts of the book which relate to topics recently discussed on your blog http://www.raibledesigns.com/page/rd. There is a chapter on unit testing tag libraries.

He has asked us to offer you a complimentary copy of the PDF ebook which just became available today. We hope you will find it of interest.

Sweet! Thanks Vincent! I read the chapter on unit testing tag libraries - very clear and to the point. Unfortunately, for tags with bodies, you still have to verify HTML, so tagunit might be better for these. I like the coverage on the Maven Plugin for Cactus and also how to use JSTL's ExpressionEvaluatorManager for reading tag attributes. The link I found, the chapter has code samples.

I've never really liked eBooks, but I have to admit, this is pretty damn convenient. Especially since I tend to pack around 10-20 books to each new contract. What about sharing? Can I let co-workers borrow my PDF like I let them borrow my books?

Posted in Java at Oct 22 2003, 01:43:16 PM MDT 4 Comments

Panther has shipped?

Apple just sent me an e-mail stating that my $20 (gotta rub it in) Panther upgrade has shipped. Fedex Tracking seems to disagree - at least as of 9:00 this morning.

Posted in Mac OS X at Oct 22 2003, 08:59:34 AM MDT 3 Comments

New Jobs and School starts November 3rd

When we had Abbie last year, Julie took a year leave from her job at Qwest. She was never planning on going back to work, but her old boss called her up last week and they've been negotiating. To make a long story short, she's going back to her old gig part-time (3 days per week) and starts on the same day I start my new gig (Monday, November 3rd). Because of this, Julie went searching for day care providers today. After seeing a couple nasty ones (she actually left crying), she visited a Montessori school across the street from her office. They have a 6 month waiting list for infants - Abbie's not a toddler because she can't walk unassisted nor drink from a cup on her own. Luckily, Julie was able to sweet talk them into accepting Abbie as an infant and she starts school in a mere week and a half. The place is damn expensive, but hopefully she'll learn some cool stuff. We have some friends who's daughter is going to a different Montessori school in Broomfield and she is almost potty trained at 15 months! She also knows 4 or 5 signs (sign language) and helps clean around the house.

I'm sure this will prove to be an interesting chapter in our lives - Abbie cries every time we leave the room now - so that Monday will probably suck for her. Should be a good winter though - Julie is planning on working Tuesday through Thursday and I hope to work from home on Monday and Friday.

As for the move to San Diego? We still want to, but the weather has been so nice here (80s) that Julie hasn't been motivated lately. The biggest reason for moving is to be closer to family (her sister lives there), but the job market is hopping here right now, so neither of us is that motivated to leave. I think my best bet is to get a telecommuting gig and move during that contract, but those are pretty tough to come by. Who knows - there definitely seems to be more Java opportunities in San Diego than there is in South Florida. I love it here, especially with ski season just around the corner ... I wonder where we'll be next year at this time? I predict California or in a new house (our current one is only 675 square feet).

Posted in General at Oct 21 2003, 11:13:06 PM MDT 6 Comments