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 "free sex movies for men non blog". 1,226 entries found.

You can also try this same search on Google.

Webinar on Wednesday: Introduction to Apache Roller

If you're not doing anything this Wednesday, you might want to checkout my Introduction to Apache Roller Webinar. It's sponsored by Covalent and has the following agenda:

11:00: Introductions
11:05: What is Apache Roller 
11:10: Installing Roller
11:20: Roller Architecture
   - 11:25: Blog Customization
   - 11:35: Server Customization
11:40: Other Features: Using Weblog Clients and Planet
11:50: Q & A

Heck, even if you are doing something, you should still check it out - especially if you're planning on installing Roller for yourself or for your company. Here's the details and how to signup:

Cost:Free!
When:Wednesday, June 20, 2007
Time:11:00am PDT (2:00pm EDT)
Where:From the comfort of your home or office
Technical Level:Intermediate Technical Track

To register, click here and follow the provided steps.

About Covalent and Roller
Covalent recently announced it is offering full commercial support for Apache Roller, the open source blog server from the Apache Software Foundation (ASF). Apache Roller drives the Covalent blog, Sun Microsystem's blogs.sun.com blogging site, IBM DeveloperWorks blogs, the Javalobby's 10,000 user strong JRoller Java community site, and hundreds of other blogs world-wide. Roller is a Java Web application that is run on any Java EE server and any relational database.

<Sidenote/>
I think it's important to point out that JRoller and Roller are not the same thing. JRoller is a service provided by JavaLobby that provides free blogs, whereas Roller is the software that powers it. There's been a lot of negative press about JRoller in recent months and from talking to folks, it sounds like most of it is well-deserved. The service is down a fair amount and when it's up, it's extremely slow.

The good news is these problems should go away in the near future. From Matthew Schmidt in a recent JavaLobby Newsletter:

DZone Network Server Upgrades Coming
Over the weekend, Rick and I started the long and painful process of finally upgrading our three-year-old servers to some hardware that should let us scale and meet the needs of the network for the foreseeable future. With these new servers, comes some upgrades that many of you have been trying to beat into my head for months now, including an upgrade to a recent a version of Roller (powers JRoller) as I can find, and an upgrade to the latest and greatest Codebeamer (powers JavaForge). In addition, there's also going to be a much-needed make over to Javalobby and EclipseZone. Of course, these changes won't happen immediately and we'll be migrating to the new hardware first, but keep your eyes open for some nice updates to nearly all our communities. These upgrades have already started and we'd appreciate any feedback you have on whether things like Javalobby and EclipseZone are working properly. Drop me a line if you notice anything not working properly or feeling slow.

IMO, JavaLobby has been mostly mute about its stance on JRoller, and I've heard from folks there's virtually no support. My guess is this is because they've been concentrating on DZone so much. Maybe they need some volunteers to make JRoller more robust? Or maybe it should be moved to other servers that can make money off the service and re-invest it (like wordpress.com)? Hopefully nothing has to change and JRoller can become a higher priority for JavaLobby in the near future.

Update: The webinar went quite well - thanks to everyone who attended! You can download the PowerPoint (or PDF) and audio from Covalent's Webinars. Also, I mentioned a couple of Dave's presentations in my talk. You can download those by clicking on the links below:

Posted in Roller at Jun 18 2007, 04:13:28 PM MDT 4 Comments

The good ol' Job Hunt

My Boston gig ended last week and I'm currently enjoying a week off with the kids at my parents' place in Oregon. While I have a few opportunities, I can't help but think there's got to be a better system for connecting developers to contracts. While I'm open to full-time work, I've found that contracts suite me better because of all the conferences I attend and time I take off.

In Denver, there's quite a few gigs available, but they all seem to have the same two problems: 1) no rate is published and 2) you have to go through a recruiter to get them. Recruiters aren't bad people, and I don't mind dealing with them. However, they do tend to take 20% off the top. Most of the recruiters I've worked with in the past are responsible for one thing - the initial introduction. After that, they tend to disappear and you never see them again. However, you're constantly reminded they're there when you realize they're taking 20% of your wages. With a recruiter involved, the rates in Denver are OK, but lower than expected. Without a recruiter, the rates are pretty good.

The best solution I've found to the getting rid of the recruiter-middle-man problem is this blog and networking. When someone contacts me directly for a contract, it's usually easier to negotiate a rate that makes both parties happy. However, most of these contacts come from out of state, so then there's the travel and working-from-home problems. I think I can solve the work-from-home problem by joining something like the Hive Cooperative. As for traveling, I'd rather work in Denver but I'm willing to travel to select cities: namely Boston, NYC and Portland (Oregon). Why those cities? Because I have friends and/or family that live there.

As I'm out here in Oregon this week, I've realized that working in Portland would likely be the most enjoyable for me to travel to. My parents live close by, it's a kick-ass city and it's especially enjoyable during the summer. However, I'm faced with the same problem: how do I connect with folks looking for good help without going through recruiters? According to Dice.com, Portland has a lot of interesting gigs, but they're (once again), all listed by recruiting companies. Does anyone know of a service that connects employers directly with consultants? Or, even better, is anyone out there in Denver or Portland that's looking to hire someone with my skills? ;-)

Posted in Java at Jun 11 2007, 10:26:05 AM MDT 12 Comments

Why hasn't JBoss "bought" Facelets?

Remember when JBoss use to "buy" open source projects by hiring their lead developers and paying them to work on open source? Remember when Marc Fleury said something about owning open source projects?

Have things changed at Red Hat? When are they going to buy Facelets? From the Facelets mailing list:

JBoss Seam progress is heavily dependent on facelets so might be JBoss could to something to remedy the situation with lack of evolution in current facelets.

Facelets is a very good project which now suffers due to lack of evolution which it needs.

Please, keep it going...

Jacob - are you willing to be bought? According to the Facelets user community, this project could really use some help.

Posted in Java at Jun 02 2007, 01:34:18 AM MDT 4 Comments

Canoo WebTest vs. Selenium

From a message I sent earlier to the AppFuse user mailing list:

After getting Dojo's DropdownDatePicker working with both Struts and Spring MVC, I've run into a snag:

You can no longer use Canoo WebTest to enter dates in a form.

It doesn't find the form element because HtmlUnit (the underlying browser implementation for Canoo) doesn't understand/render Dojo's components.

For users, workarounds include:

1. Don't write tests for entering data on forms that have required dates.
2. Don't make dates required.

Either way, it seems logical to move to Selenium for UI testing.

What do you think? Are Dojo-based components the future of Ajax support in Java web frameworks? If so, I wish Dojo allowed more "progressive enhancement" features instead of the invalid HTML feature it seems to rely on now. I'm more than willing to support Dojo if that's what AppFuse users want. However, in my experience with Struts 2's datetimepicker, it seems pretty slow. Of course, if I could render my own input element and then add a datepicker next to it, I'd be much happier. AFAICT, the Struts' datetimepicker doesn't allow you to do this, but I could be wrong.

Of course, if Dojo 0.9 lives up to the hype and is much faster - maybe I should quit caring about Hijax and just start writing those Selenium tests?

For users of those "next-gen" Java frameworks (like Seam, Grails and Wicket), what do you use for UI testing? Does Canoo WebTest work for you when you have a lot of Ajax functionality? If not, do you use Selenium or leave UI testing up to the QA folks?

Update: I ended up using jscalendar for both Spring MVC and Struts 2's datepickers. It's simply the best tool for the job. Dojo is too bloated IMO (240K for a datepicker!) for such a small feature. This allows us to worry about getting AppFuse 2.0 out the door without migrating to Selenium first. We will eventually migrate to Selenium (it's a better tool for the job IMO), but probably not until 2.1. The only question is what's the best way to distribute Selenium tests?

Posted in Java at May 31 2007, 12:25:03 AM MDT 19 Comments

Live Coding for 4 Days Straight

Last week I had an interesting 4-day consulting gig for a client in Boulder. I was supposed to fly out to Connecticut to deliver a training course, but it got rescheduled due to the 45-day Vendor Approval Process I need to go through. The client in Boulder wanted me to come out and do an architectural assessment and provide recommendations. Topics they were interested in: web tier (specifically Spring MVC), Security, Ajax integration, build process, web services and localization. I've done this kind of before with Virtuas, but this time was different. With Virtuas, I'd do 5-days worth of presentations on just about anything the customer wanted. For example, checkout this agenda for a client in NY last year.

With the company in Boulder, I delivered zero presentations. Instead, everything we talked about and coded was hands-on. On Tuesday, we started out by discussing their application and some issues they were having. They'd done a lot of customization to Spring MVC and had managed to eliminate all the XML needed when adding new controllers and views. I spent 3-4 hours that day with 2 of their engineers finalizing and implementing their convention-over-configuration rules. On Wednesday, I helped them implement Acegi Security into their application. This was interesting because they didn't have any security mechanism and we had to implement Acegi from scratch and then tie it into their backend (using a custom AuthenticationProvider). We also integrated i18n so all messages were retrieved from their database.

On Thursday, we configured Ant to run their tests and wrote some tests for their controllers. As part of this process, I showed them how to use jMock and EasyMock and tried to explain the benefits of using Spring IoC (which they still aren't sold on). On Friday, we integrated Selenium into their build process and wrote a few tests using Selenium's Java support. In the afternoon, I showed them how they might use Scriptaculous and Prototype to Ajax-enable some features in their application.

Doing all the "live coding" on someone else's machine (with 5 developer's watching) was a bit nerve wracking. However, thanks to Cenqua's FishEye tool, I was able to search AppFuse and AppFuse Light's SVN repositories for code snippets and examples. While I knew how to do much of the stuff we covered, FishEye and Google bailed me out when I didn't. About halfway through, I realized that I don't keep a lot of my knowledge in my head. Instead, it's on this blog, or spread out on the web. I don't remember URLs anymore, all I remember are keywords. If I've read a blog post or article on the web, chances are I can find it again pretty easily with Google. Even though I store a lot of bookmarks in del.icio.us, I didn't use it all week. Remembering keywords is the new bookmark for me.

The whole week was an interesting exercise in "live coding." The whole team (6 or so) sat in a conference room all week and VNC'ed into the architect's box to do the work. We worked in Eclipse and used WTP to deploy/test things on Tomcat. The keyboard was passed around between developers at random and everyone got a chance to implement new features. I think the reason that everything worked so well was because the team was full of Senior Java Developers. Everyone learned from each other as they saw new shortcuts, keystrokes and ways or writing code. I don't know if this kind of thing will work in all development teams, but I'd encourage you to try it. It's a great way to share knowledge and educate the entire team on how a new module works.

Over the weekend, I received the following e-mail from one of the developers on the team:

Very nice to meet you this past week and get a chance to see firsthand the breadth and depth of your experience in web app frameworks and such. I believe due to your visit, we will be cranking happily along here very shortly. Everyone was quite happy with the results at the end of the day yesterday.

On a related note, if you're looking to hire an enthusiastic Web + Java Developer, please take a look at my resume or send me an e-mail. My current contract ends this month and I'm hoping to find something new to get me through the summer.

Posted in Java at May 24 2007, 01:50:30 PM MDT 1 Comment

A couple of good blog posts

Here's a couple of good blog entries I've enjoyed reading over the past few days - in case you missed them:

Warner is spot on when it comes to Tapestry's biggest problem. Let's hope Tapestry 5 is the end-all-be-all that Howard thinks it will be. As for Gavin's post, I like it because it's mostly true and the f-bomb makes it enjoyable to read. ;-)

Posted in Java at May 24 2007, 09:50:37 AM MDT 5 Comments

Thanks Erik!

From Erik's Weblog:

After 7 years, It's time to put my linkblog to rest.

I've been struggling in the last few months to find good content... what used to take 30 minutes, now takes hours. Moreover, places like DZone are doing a better job than I ever could.

I took a few weeks off last summer hoping it would help with my frustrations, but it didn't. In a way it made things worse. It is no longer fun and I can't shake the feeling that I could do something more productive with my time.

Thanks to all my regular (and not so regular) readers. It has been fun.

Thanks for the memories.

I'm definitely bummed to see Erik's Linkblog go, but I understand time commitments and priorities. Erik's Linkblog was one of the first Java blogs I started reading and I've enjoyed it thoroughly all these years. Thanks for all the hard work you've put in over the years Erik. Your linkblog will be missed.

Posted in Java at May 14 2007, 09:40:33 PM MDT 1 Comment

Java Web Framework Tools: How many are there?

How many tools are there for the various open source web frameworks in Java? Here's my count:

So where did I get these numbers?

Struts 2's number (4) is based on tmjee's comment on a recent post. Spring MVC consists of Spring IDE, Gaijun Studio and IDEA (which supports Spring XML code-completion). There's no Stripes tools that I know of. JSF's number (12) is from research I did in October 2005 (if you have a definitive list, let me know). Tapestry has Spindle (which only supports 3.0) and 4.0 has an IDEA Plugin. Wicket has NetBeans support (which also exists for JSF (+Facelets), Tapestry and WebWork).

Please let me know if you have any corrections to these numbers. You can also download my presentation if you'd like to refute anything before tomorrow morning. It's noon in Amsterdam right now, so you have 18 hours or so.

Update: I've updated the graphs based on comments. Thanks for your input!

Posted in Java at May 03 2007, 02:17:28 AM MDT 19 Comments

The JA-SIG Summer Conference

In June, I'll be doing a keynote at the The JA-SIG Summer Conference. This should be interesting because 1) I've never done a Keynote and 2) the other Keynote speakers are Phil Windley and Matt Asay. I've never met either one, but I've heard Matt's name a fair amount. As for Phil, I already like him from reading his blog:

Adobe Open-sources Flex

Yawn...

I'm not sure what the excitement is all about.

I'll be doing my Comparing Java Web Frameworks talk. They gave me the option to talk on whatever I wanted. I chose the CJWF talk because then I didn't need to do any extra work. ;-) I'm beginning to look like a one-trick pony, but that's OK - at least it's a fun talk to deliver. I'll be delivering it at OSCON as well. Yesterday, I submitted proposals for Acegi + SSO + Roller, AppFuse 2.0 and CJWF to CSS and JavaZone. I'll also be flying down to Dallas on June 13th to talk about AppFuse 2.0.

For those of you who don't know, the purpose of JA-SIG and the conference is to develop a global academic community providing education and research in the applied use of open technology architectures and systems in higher education. It sounds like a good conference - I'm looking forward to all the talks on CAS, uPortal and Ajax.

Posted in Java at Apr 26 2007, 01:33:30 PM MDT Add a Comment

AppFuse Light 1.8 Beta Released

AppFuse Light 1.8 Beta adds CSS Framework integration, as well as support for Stripes (1.4.2) and Wicket (1.2.6). This is a beta release so we can work out some kinks before the final release.

AppFuse Light now offers 60 possible combinations for download:

  • Web Frameworks: JSF (MyFaces), Spring MVC (with Ajax, Acegi Security, JSP, FreeMarker or Velocity), Stripes, Struts 1.x, Struts 2.x, Tapestry, WebWork, Wicket
  • Persistence Frameworks: Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC

AppFuse Light Screenshot - click on the box at the bottom right of AL to activate StyleSheet Switcher

If you have any questions about this release, please subscribe to the AppFuse user mailing list by sending a blank e-mail to [email protected].java.net. You can also post questions in a forum-like fashion using Nabble: http://appfuse.org/forums.

If you're a developer of one of the frameworks that AppFuse Light uses - I'd love a code review to make sure I'm "up to snuff" on how to use your framework. I'm also more than willing to give commit rights if you'd like to improve the implementation of your framework.

Live demos are available at:

Update: Based on Martin's blog post, I've added the version numbers for Stripes and Wicket (1.4.2 and 1.2.6, respectively). While the Wicket guys recommended I use Wicket 1.3.0, I was already knee deep in 1.2.6 when I read their recommendation. If 1.3.0 really is that much better than 1.2.6, it should be a pleasure to upgrade (and a good learning experience too boot!).

Posted in Java at Apr 26 2007, 02:23:22 AM MDT 10 Comments