All atomic-powered posts from July 2008:
Redesigning the ATM User Experience
That design is money! A better ATM experience from Wells Fargo
Wells Fargo hired Pentagram in the fall of 2005 to begin work on a new user interface for their ATMs. Wells Fargo was in the process of replacing their ATMs with newer models with touchscreen monitors. This was a relatively slow process, since there are about 7,000 ATMs in the field, and replacements are expensive. The design efforts were to improve the user experience and satisfaction. Wells Fargo sought a more graceful presentation flow rather than a choppy screen-to-screen feel, and an overall more elegant appearance for the UI.
Previously, the UI had to run on touchscreens as well as machines with buttons afforded by the hardware. This meant that screen buttons always had to be placed on the left and right sides of the screen in order to line up with the tactile buttons. The decision to decouple the new screen layout from the old “buttons-on-the-side” hardware was one of the most important design decisions for the product…
The Mind's "Executive Function": Support for Sustainable Pace
A short article in Scientific American entitled “Tough Choices: How Making Decisions Tires Your Brain” looks at “executive function.” A growing body of psychological and neurological studies demonstrates that the human mind has a limited amount of decision making juice available each day.
When said juice is used up decision making declines markedly in measurable ways. Given that software development is an all-day exercise in decision making, trade-off resolution, and implementation (all topics discussed in the article), the evidence cited in the article supports the idea of Sustainable Pace (the idea, nay fact, that programmer productivity goes down past about 40-50 hours of work per week).
The human mind is a remarkable device. Nevertheless, it is not without limits. Recently, a growing body of research has focused on a particular mental limitation, which has to do with our ability to use a mental trait known as executive function. When you focus on a specific task for an extended period of time or choose to eat a salad instead of a piece of cake, you are flexing your executive function muscles. Both thought processes require conscious effort-you have to resist the temptation to let your mind wander or to indulge in the sweet dessert. It turns out, however, that use of executive function—a talent we all rely on throughout the day—draws upon a single resource of limited capacity in the brain. When this resource is exhausted by one activity, our mental capacity may be severely hindered in another, seemingly unrelated activity.
So, scientific study is bearing out what good programmers know implicitly and what great programmers incorporate into their lives. Working longer actually leads to poor decisions and negative productivity; working at a sustainable pace optimizes productivity.
Announcers: A layer between the controller and rendering
For my last Rails project, we went to a completely Ajax interface for everything. This meant that nearly every action on a controller would result in several lines of RJS calls, along with the logic of which partial to render depending on the state of updating or creating an object.
All that logic and RJS stuff was a pain to test in a controller spec, because so much setup is needed every time you call a controller action in a test (authentication, session, etc). Any branching you have in a controller action really becomes a nuisance to test, and when the customer wants to be able to change what happens on the page when a user saves some object, rewriting those tests and the controller are even less fun.
So we came up with the idea of moving all the presentation related logic out of the controller and into helper objects we call announcers. The purpose of an announcer is to make the actual rendering calls, based on state that is passed to it by the controller.
Read the rest of this entryRolling a JRuby desktop application
Atomic has been using JRuby, several Java libraries, and Jar Jar Links to distribute five different Ruby desktop applications (read: not Rails applications) as single, executable jar files.
UPDATE (Jan. 30, 2009): Our client has cleared us to spill our guts on the details of the desktop apps discussed here now that the first is complete… Ruby for Desktop Applications? Yes we can.
In this article, I will show how we:- Work on our application as developers
- Distribute our application as a single jar file to our users
- Compile the Ruby source files into Java class files
- Integrate third-party Ruby and Java libraries
This article includes an example project that demonstrates all of the above.
Read the rest of this entry

