Skip to main content

Notes on a napkin

Posted by daniel on April 5, 2004 at 8:52 AM PDT

You dummy up a UI with menu items, text fields, buttons, and other widgets. It looks pretty good - it just doesn't do anything yet.

Now you make a huge mistake - you show it to a manager or a customer or have it in a monitor at trade show or you have a print piece made up that features these screen shots. You warn them that nothing works yet and this is just to give them an idea of what the final app will look like. They don't hear you. After looking at the UI your manager, customer, or prospects assume the project is almost ready to ship.

Ken Arnold's Napkin Look and Feel was designed to reconcile this situation where expectations don't meet reality. he explains:

The idea is to try to develop a look and feel that can be used in Java applications that looks informal and provisional, yet be fully functional for development. Often when people see a GUI mock-up, or a complete GUI without full functionality, they assume that the code behind it is working. While this can be used to sleazy advantage, it can also convince people who ought to know better (like your managers) that you are already done when you have just barely begun, or when only parts are complete. No matter how much you speak to their rational side, the emotional response still says "Done!". Which after a while leads to a later question: "That was done months ago! What are they doing? Playing Quake?"

Also in today's Projects and Communities , Ant's creator, James Duncan Davidson, revisits the choices that led to Ant and XML Build Files saying he "never intended for the file format to become a scripting language." He says that he sees in retrospect that "when I fused XML and task reflection in Ant, I put together something that is 70-80% of a scripting environment. I just didn't recognize it at the time. To deny that people will use it as a scripting language is equivalent to asking them to pretend that sugar isn't sweet."

Also in Java Today
, Brian Goetz continues his look JSR 133 in the developerWorks article Fixing the Java Memory Model. JSR 133 "strengthens the semantics of volatile, so that volatile flags can be used reliably as indicators that the program state has been changed by another thread [and it ] also significantly strengthens the semantics of final. If an object's reference is not allowed to escape during construction, then once a constructor has completed and a thread publishes a reference to an object, that object's final fields are guaranteed to be visible, correct, and constant to all other threads without synchronization. These changes greatly strengthen the utility of immutable objects in concurrent programs; immutable objects finally become inherently thread-safe (as they were intended to be all along), even if a data race is used to pass references to the immutable object between threads."

In recent articles you've read about the benefits of using Aspects to address cross cutting code and to localize code that would otherwise be repeated. In Bug Prevention with Code Generation: A J2EE Case Study , Francesco Aliverti-Piuri suggests the use of code generation to reduce potential errors introduced this way. This article presents an example that goes through the steps of implementing code generation from introduction, through testing, and on to modification.

In today's Weblogs , John Bobowicz has posted the Monthly Report - March 2004. Also Chris DiBona asks If the settlement came on the 1st, would you have believed it?

In today's News Headlines

Registered users can submit news items for the href=""> News Page using
our news submission
. All submissions go through an editorial review by news director
Steve Mallet before being posted to the site. You can also subscribe to
News RSS feed

Current and upcoming
Java Events

Registered users can submit event listings for the href=""> Events Page using our href=""> events submission
form. All submissions go through an editorial review before being
posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the
Today RSS feed
. All members can subscribe to the email
updates for the site at the href="">
java-net Mailing Lists page. You must be logged in to subscribe
the javanet_Daily and javanet_Weekly lists. Also, once this page
is no longer featured as the front page of
it will be archived along with other past issues in the href=""> Archive.