Matt RaibleMatt Raible is a Web Developer and Java Champion. 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.

Denver JUG: AspectJ and Grady Booch

Well, I made it to the DJUG Meeting and there's wi-fi - sweet! I just got here (20 minutes late), so don't have much to say. I might be a little late to follow the AspectJ stuff, but I'll try. The meeting room is packed - it's a huge auditorium, so that means there's probably a couple hundred folks here - wow! This Booch guy must be good (or at least famous).

Joseph Gradecki is presenting on AspectJ. I don't really know a thing about AspectJ, except that it's an implementation of AOP. One of these days, I might quit writing log.debug statements and start using AOP - but I don't know if its mature enough yet*. I know Rickard is using it like a madman, but he's always on the bleeding edge.

It looks like Mr. Gradecki has written a lot of books - all very recent titles.

* I've had a heckuva time introducing the concepts I've learned over the past couple years to new development teams. It seems that most teams I've worked on haven't worked much with webapps or their frameworks. Because of this I seem to get a fair amount of blank stares when I start mentioning things like Hibernate, XDoclet, Validator and Tiles. I couldn't imagine trying to introduce using AOP on a project - IMO, most clients would never go for it. Maybe I need to put together some presentations on the different tools I use, and then present that to new teams. For now, I guess I'll just have to recommend they buy Professional JSP, 3rd Edition (which rolled off the presses today BTW). I doubt they're going to want to read 704 pages, so there's probably still some motivation to create short and sweet presentations.

Back to the topic at hand, IDEs that support AspectJ: JBuilder, Eclipse, Sun ONE (Forte). Problem with using AspectJ - it's actually been patented (6,467,086), as well as AOP. They started the application in 1999 and it was approved this year. One gent in the room mentioned that you're safe as long as you use it as part of Eclipse - if you try to fork it, that's when there's issues (I hope I'm quoting him correctly).

The major question from this preso: How do you use AOP in a production system, outside of logging? If you're using AOP in production (and its not just for logging), how are you using it and how has it helped your application(s). An audience member mentions JBoss 4.0, but is anyone using it in production?

During the break, I discovered that James is coming to the Boulder JUG in October. Boulder is actually closer to my new gig.

Grady Booch Next up: The Architecture of Unusual Things by Grady Booch, IBM Fellow. Don't let his picture fool you - he looks like someone you'd like to hang out with (balding, long greying hair, nice voice). Here's his first slide:

The Limits of Sofware
  - the laws of physics
  - the laws of software
  - the challenge of algorithms
  - the difficulty of distribution
  - the problem of design
  - the importance of organization (human issues dominate from here down)
  - the impact of economics
  - the influence of politics
  - the limits of human imagination

Grady mentions SourceForge and that he loves it (as a community collaboration space). I agree, the idea is great. Features I like: CVS, Mailing Lists, Downloads. Features I don't: it seems to be down whenever I cut a release (not very often), the forums need some work.

He's been talking about DNA Architecture for the last 20 minutes - sorry, I lost interest and did some blog-reading... now I'm back - and he's comparing DNA Sequencing to SETI@home (the first attempt to use large-scale distributed computing to perform a sensitive search for radio signals from extraterrestrial civilizations).

His point? Common architectures may be found in uncommon places.

If you're still reading this, I'm amazed - I usually blank out and don't read long posts. I tend to read blogs for quick tips and tricks, not for long interviews/arcticles. Here's the first automated stalker: Asimo (Brady had a cool video - I can't seem to find it). He recommends getting a Lego Mindstorms Robot.

The most noticeable thing about Grady's session is the PowerPoint presentation. It's got pictures on almost every page, URLs in the bottom-left corner and he's had several videos. I doubt that he created it, but whoever did deserves to be recognized.

"All legacy systems exhibit sedimentation." Hmmm, the Computer History Museum might be cool to visit. Good luck in getting your wife to join you for that visit! At the end of October, Grady is meeting with some gents to work on putting some more source code (i.e. Bill's early stuff) on the web.

4th Generation of Web Sites (we're in the third generation now): Aspects (simplifies architecture) and the Semantic Web (bits of the web have self-knowledge and self-behavior, agent-based architecture).

Lesson: An architecture must grow and adapt or die (i.e. eBay, Amazon). These companies have done a major re-architecture several times over the years (eBay = Websphere plug). 1/2 life of a software architecture? Grady's opinion: 3-5 years. Web Services - allow for refactoring bits of a legacy architecture bits at a time. However, sometimes you have to break the foundation.

Brady recommends honing your skills in Patterns, as well as in Java. Warning: IBM may patent some of its business process patterns. Another lesson: Fundamentals never go out of style.

Final Note: The driving force behind software engineering is the rising levels of abstraction.

Good stuff - glad I came. Didn't really learn much that I can use tomorrow at work, but I did learn more about architecture and the history of computing.

Update: You can now download Grady Brooch's The Architecture of Unusual Things (5.1 MB zipped) presentation.

Posted in Java at Sep 10 2003, 06:24:25 PM MDT 4 Comments

Setting up CVS Spam

I think Mike turned me on to CVS Spam. CVS Spam is basically some scripts that send you HTML-formatted e-mails of diffs from CVS commits (example). I got motivated today and installed it on Raible Designs' CVS server and the one at my new gig. Works awesome! Here's the steps I had to take (outside of the documentation):

  • Download and install (./configure, make, make install) ruby. By default, this goes into /usr/local/bin/ruby.
  • Create a symlink in /usr/bin (ln -s /usr/local/bin/ruby) So the .rb files you added in CVSROOT will work. They're pointing to /usr/bin/ruby by default.
  • Edit cvsspam.rb, line 850, to be an absolute path to your CVS repository. It's currently getting "CVSROOT" as an environment variable, and I have my $CVSROOT set to my default CVS server (so I can type cvs co project, etc.).

Now the question is, does SourceForge have ruby installed on their servers? Or maybe I should just install it in my home directory and configure some projects (i.e. Roller) to use CVS Spam.

Update: I discovered that with new versions of Ruby, you need to apply a patch to CVS Spam (v0.2.7):

Index: cvsspam.rb
===================================================================
RCS file: /var/lib/cvs/cvsspam/cvsspam.rb,v
retrieving revision 1.37
diff -u -r1.37 cvsspam.rb
--- cvsspam.rb	7 Sep 2003 18:10:50 -0000	1.37
+++ cvsspam.rb	11 Sep 2003 20:41:50 -0000
@@ -878,6 +878,9 @@
 $bugzillaURL = nil
 $jiraURL = nil
 $ticketURL = nil
+$viewcvsURL = nil
+$choraURL = nil
+$cvswebURL = nil
 $from_address = nil
 $subjectPrefix = nil
 $files_in_subject = false;

Posted in Java at Sep 10 2003, 05:04:25 PM MDT 2 Comments

Tonight @ Denver JUG: AOP and UML

Good stuff at Denver's JUG meeting tonight. I hope I can blog it in real-time (I heard a rumor: there's going to be a wireless network available). If not, I'll check to see if I have any data usage left on my phone. I plan on learning a ton.

Posted in Java at Sep 10 2003, 03:05:56 PM MDT Add a Comment