Home

Web 1.0++

Posted on December 13th, 2006 in The Art of Computer Programming, Spring by Jorge Luis

Behind every great Web 2.0 application is a great Web 1.0 application. Just another way to explain progressive enhancement…

What I Learned at The Spring Experience: Lesson 2

Time-lapse Progressive Enhacement

Posted on December 11th, 2006 in The Art of Computer Programming, Spring by Jorge Luis

image provenance

A few weeks back a friend broadcast over email the image above, which, as another friend put it, depicts “the way to do it.” The “it” is modern web design, which was just the topic of an excellent “The Spring Experience” talk by Mike Stenhouse I attended today. The “way” is called “progressive enhancement”, which involves designing a web ui in progressive layers, beginning with semantics (xhtml), progressing to styling (CSS), and capping it with behavior (JavaScript).
Mike detailed the many advantages to this approach, but one stood out that I hadn’t considered before, using xhtml as the contract that establishes the division of labor between CSS designer and JSP/Java developer. Once the xhtml content is developed, the CSS designer constructs styles that render the content in a desired way, while, possibly concurrently, the Java developer programs a server-side module that generates the agreed-to xhtml.
(A fellow attendee mentioned a similar alternative: using xml as the contract, which the developer generates and designer transforms into xhtml using xsl.)

What I Learned at The Spring Experience: Lesson 1 

Thread Safety of Default Spring Wiring

Posted on November 8th, 2006 in The Art of Computer Programming, Spring by Jorge Luis

Pop Quiz: Are beans wired with Spring’s default wiring thread safe?

Answer: No. By default, all Spring beans are singletons; the container provides the same instance of a requested bean. If your thread safety depends on obtaining a new instance of a bean each time, a usual assumption in domain-layer code, you must define your bean as a prototype, i.e., specify singleton=”false”.