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.

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

Yet Another Web Application Framework: Shocks

From watching the struts-dev mailing list, I discovered a new Servlet Framework called Shocks. The thing that interests me about this framework is that the author looked extensively at Struts and WebWork both before creating it. It's feature-set sounds nice too:

It has an aspect-oriented workflow engine that can add crosscutting
system logic (like form processing, L10N, security, logging, etc) dynamically at
runtime (without having to mess around with the bytecode).  It can trade actions
across classloader boundaries, enabling web applications to span across multiple
.WAR files.  This allows users to drop in a new .WAR with new metadata and new
actions, which updates the application workflow at runtime across all modules in
the application namespace.  It handles workflow versioning and version rollback
(in case you make changes you come to regret).  It does instance pooling of all
components and sequences.  Every aspect of the system can be managed with JMX at
runtime.

Sounds like Spring, eh? Yes, says the author.

I think there are appreciable differences that have yet to be realized between 
the two (I haven't read their code at all), but definitely a lot of conceptual 
crossover.

I would think that introducing a new framework into the mix (and convincing folks to use it) must be pretty tough at this point, unless you create an IDE to go with it or introduce it in a book. BTW, did you know you can use Tiles with Spring.

Posted in Java at Nov 18 2003, 05:28:45 AM MST 2 Comments

Back from Missouri

We arrived back in Denver last night at midnight - after a blissful 4-day vacation in Clever, Missouri (near Springfield). Now I'm wading through the filth in my Inbox. 2100+ e-mails and I guarantee there's less than 10 that I'm interested in. It's fricken disgusting. Inbox Buddy caught about 1/3rd of them.

Posted in General at Nov 17 2003, 08:32:13 AM MST 1 Comment

If you like my old theme...

For those of you who prefer my old theme, or are looking for my blogroll/bookmarks, I should point out that it's still available. I actually prefer the old "X2" theme (stands for XHTML, 2 Columns), so I view it more often than this new "sunsets" one. You can also get to it by clicking on the Version 2 Icon icon in the top left corner.

Posted in Roller at Nov 12 2003, 11:50:09 AM MST Add a Comment

My Last Project ~ now in production

The initial site we created at my last project has been deployed to production. Actually, I believe it was deployed the day after I left, but it's cool to see something I helped create actually running on the web. Most projects I work on are either internal, or require authentication. We ended up implementing all the static content using Velocity (thanks to Erik for his help) and the menus (both top and side, once you drill down) are powered by Struts Menu. We actually figured out a pretty slick way to create each individual site (there will eventually be 55 of them), all using the assembling powers of Ant and the magic of Velocity (which I've grown to love).

Posted in Java at Nov 12 2003, 11:39:23 AM MST 1 Comment

The good ol' Struts vs. WebWork Debate

Jason Carreira has been nice enough to post a technical comparison of Struts vs. WebWork. Don Brown (creator of many Struts add-on packages) and Jason have been going at it ever since. It's funny, there's a small part of me that doesn't believe there's a future for Struts (because of JSF). I believe that JSF and WebWork are quite similar, and if I'm going to take the time to learn a new framework, I should learn JSF. Why? Because, I'm willing to bet the literature for Struts -> JSF is out there, and there's probably no literature for Struts -> WebWork. Also, I believe there will be JSF jobs in the near future, but not many opportunities for WebWork. In a perfect world, I'd do something like Kris is doing and learn them all - extend AppFuse to support my favorite framework (if I find one better than Struts) after the learning process, and use that for new projects.

Where does Kris find the time to learn all these frameworks? I barely have enough time to workout and complete my 8-hours-per-day of productivity-for-pay. Then again, I've been getting up around 7:30-8:00 a lot lately vs. the usual 4 a.m.

In my current gig, I'm teaching a fellow programmer how to write webapps in Java. He's never written Java, HTML, CSS or JavaScript. He wants a tool to do it all - so he can drag-n-drop, point-n-click and voila - he's created a webapp. This is a fundamental problem with J2EE - it's not possible? Or maybe it's the beauty - you have to get down and dirty with the code to create a webapp. Another issue is that we're using Struts Resume as our baseline and architecture - and there's really nothing in this app that's drag-n-drop or tools-friendly. Everything is Ant, JUnit, Struts and Hibernate. You have to be somewhat familiar with all of these to build/deploy this app. Personally, I like getting down-n-dirty with the code, but that's because I'm familiar with it and have been working with it for years. Teaching someone else how to get down-n-dirty (and to like it) is proving to be a whole other battle.

Posted in Java at Nov 12 2003, 06:17:46 AM MST 12 Comments

Upgrading to Fedora

I'm in the midst of upgrading my Red Hat 9 machine to Fedora Core 1 (a.k.a. Red Hat 10). So far, I'm very impressed and I haven't even installed it yet. The download was super simple using bittorrent for Fedora Core 1. I took a couple of hours and voila - I had all three ISOs. This is the easiest RedHat download I've ever done. Burning the ISOs was a breeze since I have two CD burners in my Windows box. The first time I tried to install (a few hours ago), it failed with "Not Enough Disk Space." I suspect it's all my kernels in my /boot partition, so I removed them with some advice. The nice thing was that even though the install failed, I was right back where I started - with a working Operating System. I've yet to have a failed install on Windows or OS X that actually reverted back to the previous OS. Attempt #2 coming up shortly.

1/2 Hour Later: Hmmm, it still says I don't have enough disk space. I cleared out all the ISOs from /home, but I doubt that's gonna help. Here's my current usage - looks to be plenty of space (to me):

[root@drevil /]# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda5               381139    110294    251167  31% /
/dev/hda1                46636      9359     34869  22% /boot
/dev/hda3              4830728     65860   4519476   2% /home
none                    773772         0    773772   0% /dev/shm
/dev/hda2             13203660   3659772   8873176  30% /usr
/dev/hda7               256667    125652    117763  52% /var
/dev/hdb1             19686804  16801136   1885624  90% /data

Posted in General at Nov 11 2003, 06:57:41 PM MST 2 Comments

Need to recover deleted files on OS X

OK, I'm an idiot. I had a symlink in /Users/mraible/Sites that pointed to my application's prototype directory. This was called Sites/appname -> /Users/mraible/dev/appname/prototype. I wanted to change the symlink, and instead of doing "rm appname" - I did "rm -r appname/" - I tabbed-completed it and hit return. So I deleted all the files for the prototype I've been developing. The worst part? My new gig has not set me up with VPN Access (for CVS), so I haven't checked in any of these files. I work from home on Friday and Mondays - and I was just beginning the prototype on Thursday. I thought I'd be able to get the HTML files from the prototype directory, but no luck yet. I have DiskWarrior and when I boot from my iPod and "repair" my hard drive - I get errors at the end and I can't "Preview" the changes. I don't even know if DiskWarrior will work, so I downloaded Virtual Lab and tried it. It doesn't seem to have a setting for HTML files (except for "Microsoft Internet Explorer HTML", which is probably *.htm files).

Even more frustrating is I "should've" had a backup. I just got on a kick last night to make backups of all my machines. I was able to backup Linux (using tar) just fine, but the "Backup" program on OS X kept giving me errors and I gave up after a while. I continue to search for a solution to recover the deleted files - any advice appreciated.

Update: I found the file I spent the most time developing and was able to restore it. How? Certainly not any fancy tools. Just a little searching in Safari's Cache. Apparently it was the only one I opened via an http:// URL - the others I opened with file:// and I don't think it caches those.

Posted in Mac OS X at Nov 10 2003, 07:03:01 PM MST 4 Comments

Why I don't use My Eclipse IDE

I don't use My Eclipse IDE because I can't. It won't install on Windows XP with the latest JDK (error: "Can't launch executable. Could not load jvm.dll."). Apparently, it's not their fault, it's ZeroG's fault. If I was motivated enough, I could install an older version of the JDK (i.e. 1.4.1), but then I'd have to hack my registry to get the JRE back to 1.4.2. I'll pass - if I can't even install it, it's probably not worth my time.

All the other Eclipse plugins are distributed as zip files that you expand into the plugins directory - why can't this one work the same way?

Posted in Java at Nov 10 2003, 10:13:27 AM MST 6 Comments

Problems integrating CVS Spam and CVS NT

I've been trying to post the following question to the CVS Spam mailing list for the past couple of days with no luck (I keep getting undeliverable receipts). I figure posting it here might get me some answers or alternatives to CVS Spam on NT.

At my new gig I'm trying to setup CVS Spam on a Windows 2000 Server machine with CVS NT. I know, it'd be much easier to do on Linux, but it's an NT shop, so I'm trying to workaround the environment as best I can. I tried using the Ruby Installer from SF, but had no luck.

After reading the Archives, I saw that the best way was to install Cygwin and use cygwin/bin/ruby.exe. I tried this and now I'm getting the following error:

Checking in README.txt;
c:/source/apptracker/README.txt,v  <--  README.txt
new revision: 1.9; previous revision: 1.8
done
C:/Source/CVSROOT/COLLEC~1.RB:100:in `process_log': missing data dir
(/tmp/#cvsspam.2632.18-XXXXXX) (RuntimeError)
	from C:/Source/CVSROOT/COLLEC~1.RB:215:in `choose_operation'
	from C:/Source/CVSROOT/COLLEC~1.RB:314

In CVSROOT/commitinfo, I have:

^apptracker c:/Source/CVSROOT/record_lastdir.rb

In CVSROOT/loginfo, I have:

^apptracker c:/Source/CVSROOT/collect_diffs.rb --to [email protected] %{sVv}

I also checked in cvsspam.conf to CVSROOT and uncommented smtp.host to be localhost (required for NT).

If anyone has setup CVS Spam with CVS NT successfully (on a Windows 2000 server), please let me know. I'd like to use CVS NT over Cygwin's CVS because I think it'll be easier to maintain after I leave. I'm also interested to know if anyone has successfully used other "cvs e-mail" packages with CVS NT.

Update: I finally got through on the mailing list and received a solution from Angus Mezick. To make it easier for everyone, I've made this patched version of CVS Spam for CVS NT available for download. Just a note, these have only been tested with Cygwin's Ruby install. I hope to test these out next week when I get back from Missouri.

Posted in Java at Nov 07 2003, 11:32:04 PM MST 4 Comments