Flash, UI, and football fans check out “Inside the Playbook” at NYTimes

The NYTimes uses Flash to produce analysis of each match-up in the NFL playoffs and a fun game to predict winners.

Here is one example of upcoming game analysis: Inside the Playbook: Philadelphia at Minnesota

Here is the predict the winner game: Inside the Playbook Challenge

And go Eagles!

CNN gets rid of the crawl

I expected this to be bigger news in my circles, but it hasn’t registered. CNN has rejected the news crawl for a far less busy headline flip in its news broadcasts. The new UI makes it far easier to absorb the news broadcast without constant distraction and sometimes even helps to clarify whatever it is that is being reported. Great job CNN.

NYTimes: The Flipper Challenges the Crawl

Software Architecture Links: Documenting Architecture

IBM developerWorks: Documenting software architecture, Part 1: What software architecture is, and why it’s important to document it

IBM developerWorks: The architecture of Web applications

W3C: Architecture of the World Wide Web, Volume One

w3.org: Web Architecture from 50,000 feet

Open Source Rich Internet Application Framework at CIM: OpenPyro

Check it out: OpenPyro: OpenPyro is a pure AS3 framework for creating RIA’s. Open Pyro draws a lot of inspiration from Flex but aims to be more expressive as well as have a smaller filesize and memory footprint.

Arpit Mathur, one of the most brilliant developers I know and a straight up Flash guru is leading the Open Pyro project. He recently posted about OpenPyro on his personal blog and includes a screencast of him using the framework to develop an app.

Kevin Fitzpatrick another CIM Flash master, and lead developer of another open source project at CIM, LogBook, comments about OpenPyro.

Web Development Links for Thursday, September 25th, 2008

InfoQ: JSR 311 Final: Java API for RESTful Web Services

IBM developerWorks: Mastering Grails: RESTful Grails: Build a resource-oriented architecture

InfoQ: Joshua Bloch: Bumper-Sticker API Design

Aaron Swartz: The Semantic Web In Breadth

Mock Objects: “Growing Object-Oriented Software, Guided by Tests”: Chapter 1. What’s the point of Test Driven Development?

Code To Joy: A fascinating quote attributed to James Gosling: “James Gosling once said that every configuration file becomes a programming language, so you might as well think that way.”

Wiki.Directi.Com: Building a Scalable Architecture for Web Apps – Part I

Previously: InfoQ: How to Design a Good API & Why it Matters

On the Big Ball of Mud

Brian Foote and Joseph Yoder, Department of Computer Science, University of Illinois at Urbana-Champaign: Big Ball of Mud:

In the end, software architecture is about how we distill experience into wisdom, and disseminate it. We think the patterns herein stand alongside other work regarding software architecture and evolution that we cited as we went along. Still, we do not consider these patterns to be anti-patterns. There are good reasons that good programmers build BIG BALLS OF MUD. It may well be that the economics of the software world are such that the market moves so fast that long term architectural ambitions are foolhardy, and that expedient, slash-and-burn, disposable programming is, in fact, a state-of-the-art strategy. The success of these approaches, in any case, is undeniable, and seals their pattern-hood.

People build BIG BALLS OF MUD because they work. In many domains, they are the only things that have been shown to work. Indeed, they work where loftier approaches have yet to demonstrate that they can compete.

It is not our purpose to condemn BIG BALLS OF MUD. Casual architecture is natural during the early stages of a system’s evolution. The reader must surely suspect, however, that our hope is that we can aspire to do better. By recognizing the forces and pressures that lead to architectural malaise, and how and when they might be confronted, we hope to set the stage for the emergence of truly durable artifacts that can put architects in dominant positions for years to come. The key is to ensure that the system, its programmers, and, indeed the entire organization, learn about the domain, and the architectural opportunities looming within it, as the system grows and matures.

Periods of moderate disorder are a part of the ebb and flow of software evolution. As a master chef tolerates a messy kitchen, developers must not be afraid to get a little mud on their shoes as they explore new territory for the first time. Architectural insight is not the product of master plans, but of hard won experience. The software architects of yesteryear had little choice other than to apply the lessons they learned in successive drafts of their systems, since RECONSTRUCTION was often the only practical means they had of supplanting a mediocre system with a better one. Objects, frameworks, components, and refactoring tools provide us with another alternative. Objects present a medium for expressing our architectural ideas at a level between coarse-grained applications and components and low level code. Refactoring tools and techniques finally give us the means to cultivate these artifacts as they evolve, and capture these insights.

Read the whole thing.

Dare Obasanjo: “Don’t fight the Web, embrace it”

A must read: Dare Obasanjo: Explaining REST to Damien Katz:

There are other practical things to be mindful of as well to ensure that your service is being a good participant in the Web ecosystem. These include using GET instead of POST when retrieving a resource and properly utilizing the caching related headers as needed (If-Modified-Since/Last-Modified, If-None-Match/ETag, Cache-Control), learning to utilize HTTP status codes correctly (i.e. errors shouldn’t return HTTP 200 OK), keeping your design stateless to enable it to scale more cheaply and so on. The increased costs, scalability concerns and complexity that developers face when they ignore these principles is captured in blog posts and articles all over the Web such as Session State is Evil and Cache SOAP services on the client side. You don’t have to look hard to find them. What most developers don’t realize is that the problems they are facing are because they aren’t keeping RESTful principles in mind.