We’ve started contributing back to the Grails open source project. First up: furthering the cause towards an initial release of a jQuery plugin (http://www.grails.org/jQuery+Plugin). Also, the next release of the Jasper Reports plugin (http://www.grails.org/Jasper+Plugin) should make life easier.
I am currently leading the charge for our clients with Java-based web applications to adopt Grails (i.e. Groovy on Rails). Grails (www.grails.org) has recently achieved its official 1.0 release, just behind the 1.5 release of Groovy. We’re seeing a 10-fold increase in productivity by using GSP (Groovy Server Pages) over JSP (Java Server Pages), and that factor is only going to improve with practice, and as Grails moves beyond 1.0.
Continue Reading
The other day, I was asked for the “elevator pitch” on XP, so I dug out this description from an old posting on another of my sites.
It’s taking best practices to the extreme…
- Long iterations become short iterations with early experience
- Long, irregular meetings become frequent stand up meetings
- Back-end testing becomes unit testing
- Specification artifacts become stories and a full-time customer (proxy)
- Enforced deadlines become developer-derived estimates
- Code reviews become pair programming
Continue Reading
August 8, 2007 Comments Off
By popular request, Maxim Software Corp. now offers website hosting service to the public. The same servers that we use to host the properties of our ThotSpots Web Media division are now available to you at competitive prices. This service is being offered as a convenience to our consulting clients who seek one-stop-shopping, but is not required. As always, our software developers and website administrators will be happy to work with any website project, regardless of where it is hosted. For more information, write to info@maximsc.com.
If the three most important attributes in real estate are location, location, location, then the five most important attributes of good project management are communication, communication, communication, communication, communication.
1. Maintain a written glossary of domain terminology. It’s amazing how often the developers and the customers think they’re talking the same language, but they’re not. Misunderstandings like this are a common source of “assumption errors,” which are a leading cause of wasted effort.
Continue Reading
August 6, 2007 Comments Off
This is just a quick post to indicate that this blog is now registered on Technorati.
The Maxim Software staff runs codejacked.com, a blog with productivity tips for Windows and Linux users. The tips are mostly in “power user” territory, but sometimes we can’t help but cover topics of more interest to programmers. So, for those of you who are programmers, be sure to keep an eye on the CodeJacked programming category (www.codejacked.com/category/programming/), or even easier, just sign up for the whole CodeJacked RSS feed.
Here are just a few of the recent articles in the programming category, to give you and idea of what you’ll find there:
Version Control – A Developer’s Best Friend,
RegEx Pattern Matching on Dates,
Automatic Daily MySQL Backups,
Review: SQuirreL, an Agnostic SQL Client, and
Quick Tip: Searching for Program Source Code.
I’m a huge fan of code generators. I’ve seen them used successfully in many different ways. In the Java world, for example, the Xdoclet parser is commonly used to generate object code and ORM mappings based on database schema — a huge timesaver. I’ve also seen creative uses of XSTL transforms and Velocity templates for handily generating all kinds of program code. There are generally two ways to take advantage of code generators. One is for software developers to invoke the code generators on demand, as they program. The other is to incorporate code generators as part of a “daily build” (i.e. some automated build process using Ant, Maven, another build tool, or handcrafted scripts/batch files). Lately, I’ve gotten soured on the latter.
Continue Reading
Something to watch out for with initialization code is that “final” has three different meanings depending on where it’s used, and it’s easy to get confused. For example, a common mistake is that setting a Collection to final doesn’t make the contents immutable, only the reference to the collection is immutable.
On Role-Based Security and Segregation of Duties
Jim Fleischmann is a security consultant who audits companies for Sarbanes-Oxley compliance [defined]. He and I recently compared notes. As a software developer who has often worked on role-based security systems, it was wonderful for me to get his perspective on where the rubber meets the road. As you might imagine, his feedback was quite different from the usual feedback I’d get through channels (QA bug reports, customer service support tickets, etc.) The following is my recollection of what we covered. I’ll start with Jim’s observations, and then follow up with my own.
Continue Reading