Starting with Struts 2 Book Available

May 27, 2007

My friend and fellow Struts Committer Ian Roughly has brought out the first Struts 2 book, which is available both as a PDF and as a conventional printed book. Kudos, Ian, kudos!

Starting with Struts2” is aimed at those who are new to Strut2, and those familiar with MVC frameworks but unfamiliar with Struts2. It provides everything you need to know to get up and running using Struts2, and can be used as a starting point to explore the more intricate features of the Struts2 framework. Topics include architecture and configuration, how to implementing actions, and supporting infrastructure such as validation and internationalization. Also included are productivity tips, providing a practical introduction on how best to use the framework.

Right now, I’m working against a hard June 30 deadline, but I made time to at least skim the PDF. The book looks great. At 122 pages, it’s a small book that doesn’t try to replicate the online Struts 2 documentation. Instead, the book is a perfect complement to the Struts 2 website. It fills in the gaps and should make it much easier for web developers to “hit the ground running” with Struts 2.

You can bet that I’ll be ordering a printed copy to add to my collection of Struts books. It’s an incomplete collection: I only have twelve. But I’m very glad to make Ian’s book lucky #13.

In other Struts 2 news, my compadre Don Brown is busily preparing a release of Struts 2.0.8. The beat goes on …

How many techs does a web dev use?

April 22, 2007

Sofware engineer might be the best job in America, but when you tally them up, most web application developers still need to use, on a regular basis, a stunning array of technologies.

  1. Desktop operating system
  2. Telnet or Remote Desktop
  3. Server operating system
  4. Email
  5. Web Browser
  6. Internet Relay Chat or Instant Messenger
  7. An IDE (Eclipse, Visual Studio, Aptana) or programmers editor
  8. Image editor
  9. HTML
  10. CSS
  11. JavaScript
  12. DOM
  13. HTTP
  14. HTTPS
  15. XHR (XMLHttpRequest)
  16. Cookies
  17. POP / SMTP
  18. High-level language (Java, C#, Ruby, …)
  19. XML
  20. Unit testing framework (xUnit, TestNG)
  21. SQL
  22. DBMS (MySQL, SQL Server)
  23. Data access framework (Hibernate, iBATIS)
  24. Web server
  25. Web container
  26. Web services (SOAP, JSON RPC)
  27. Server pages (JSP, ASP, PHP)
  28. Page testing framework (Selenium, Mercury, WebCanoo)
  29. Ajax Library (Dojo, YUI)
  30. Web framework (Struts, ASP.NET, Rails)
  31. Repository (SVN, CVS)
  32. Wiki
  33. Issue Tracker
  34. Office sofware (Word, Excel, PowerPoint)

And that’s not even counting readng, ‘riting, and ‘rithmetic!

Is Open Source a Freeforall?

April 21, 2007

Agile programming in India writes:

“I hear alot about open source, everything is open source, how people write code on mailing list and Apache and all that… but I ask dear reader, how do they manage to fix BUGS? When many people write code it is hard and you need a methodology, but open source tell us that we don’t need methodology, any person can change code? How does this work? I know, they are good, but no methdology? Open source needs a plan. A new plan. It is not agile enough. you want to insert problems in my code, boy?! Go, join open source mailing list! NO good.”

Most people who work on open source projects are professional programmers who use the products at work. The individuals in the Apache HTTPD group contribute to the web server because they each use the server at work. The same goes for most any open source project.

Very few open source projects let any one change the code, in the way that Wikipedia lets any one change an entry. (And even Wikipedia is locking some entries down now.) Anyone can submit a patch, but an established “committer” has to decide whether to apply the patch.

How do you get to be a committer? Easy: Act lke a committer. File tickets, submit patches, and post to the mailing list. (But most of all, submit patches!) Once the group sees that a developer knows what he or she is doing, usually, someone in the group will offer write access. But you have to prove yourself first.

As to methodology, most projects use tools like mailing lists, commit logs, issue trackers, and wikis to discuss the code and apprise everyone of every change we make. For more about open source infrastructure, see The Open Source Secret Sauce

S2 Tip – Define base class constants for common Result names

April 20, 2007

The framework defines several constants that are used to identify common result use cases, such as, ERROR, INPUT, FAILURE, LOGIN. NONE, and SUCCESS.

When an application has common result cases of its own, such HELP, MENU, or CANCEL, the application should define additional constants to represent various result types.

The use of constants reduces programming errors, increases cohesion, and also documents an application’s common result types.

YUI Version 2.2.2: Bug-Fix Release

April 19, 2007

Version 2.2.2 of the Yahoo! User Interface (YUI) Library is now available.

Usually this kind of update means downloading the new scripts, dropping them into your development folder, and ultimately updating the server. But since YUI is also serving the minified scripts from Yahoo! servers, downloading the release is optional, all you may have to do is replace references to “” with a reference to “”.

Of course, any decent IDE will do the search and replace for you, so it’s not any more work. We simply trade updating our local copies of the scripts with touching all the files that use the script. Since my team wasn’t checking in the YUI scripts, it’s actually less work, since only one of us has to do it once, and we don’t have to touch the server at all.

One handy result of the trade-off is the potential for mixing and matching versions. The 2.2.2 release is suppose to be a bug-fix, though the beta (repeat beta) DataTable saw some significant internal changes. In fact, my DataForm widget can’t use the new version (yet). But, no worries, I changed that reference back to 2.2.0 and its running, giving me breathing-space to sort out the problem. (Which I’m sure will be yet-another case of me pushing the envelope, and the envelope pushing back!)

Meanwhile … the YUI release notes are helpful but high-level. That’s not a bad thing, but if you are working closely with the library, and perhaps building your own widgets on top of YUI’s, then it can also be helpful to have a line-by-line change log. Towards that end, I’ve checked in the last two YUI releases to the Yazaar project. Having the releases under SVN means that we can obtain DIFFs between versions, and review the line by line changes. To keep the YUI archive out of the way, I tucked it under the branches folder. (Gotta love Subversion!)

Of course, I’ll be resolving my DataTable glitch today, and looking to see if Jenny Han Donnelly and company slipped in any new goodies.

ApacheCon US 2007 CFP Submissions

April 18, 2007

I submitted my ApacheCon 2007 US proposals in this morning. I often submit multiple proposals, but I’ve never had more than one accepted at a time.

Migrating to Ajax – Leverage your hard-earned web development experience and learn how to migrate old-school web applications to Ajax and RPC. This full-day training session covers “Model 2” applications based on frameworks like Struts, as well as “Model 1” applications based on PHP or JSP. Prior Ajax experience is not required.

Ajax Petstore Smackdown – Let’s compare conventional implementations of Petstore using Struts or Tapestry with Web 2.0 implementions using Ajax and RPC. Which is better, faster, cheaper … or just more fun to write!

.NET @ – Like it or not, many open source developers are moving to the Microsoft .NET platform, and we’re bringing our favorite tools with us! In this session, we look inside ASF projects that are creating software for .NET and Mono … iBATIS, Logging, and Lucene … and show how to create leading-edge ASP.NET applications with open source libraries.

Whether one of these are accepted or not, I expect I’ll wander down to Atlanta this November. It’s one of the few places where I can get a direct flight!

Call for Papers Opens for ApacheCon US 2007

April 17, 2007

The CFP announcement was inadvertently delayed, so the deadline is unusually close this year. If you’d like to submit a proposal, act today!

The Call for Papers is now open for ApacheCon US, to be held November 12-16 at the Peachtree Westin, Atlanta. The conference will consist of two day of tutorials (November 12-13) and three days of regular conference sessions (November 14-16).

Please log in to the website at to submit your proposal. Further details about fees and are avaialable on the CFP form. Topics appropriate for submission to this conference are manifold, and may include but are not restricted to:

  • ASF projects
  • ASF-Incubated projects
  • Scripting languages and dynamic content such as Java, Perl, Python,
    Ruby, XSL, and PHP
  • New technologies and broader initiatives such as Web Services and
    Web 2.0
  • Security and e-commerce, performance tuning, load balancing, and
    high availability
  • Business and community issues surrounding the ASF and Open Source

The paper submission deadline is Monday, 28 April 2007, Midnight GMT.

Thanks, and we hope to hear from you, and to see you in Atlanta.