Simple doesn’t scale, nothing is simple.

Most of the time what we often call simple is really “optimized” for some particular thing. To use the same example as Paul Homer mentions in the piece quoted below, if you purchase a food processor to speed chopping, and you use it for one small chopping task, you’ll most likely spend more time cleaning the parts than you saved with the speedy chopping, and now you have to store it, care for it, and add complexity to another aspect of your life. Not so simple eh? It may be optimized for the fact that you broke your wrist a week ago, and chopping is out but everything else is OK, or any other set of factors that might make what seems “less than the simplest thing” optimized as a solution. (BTW, cleaning it, storing it, and good knives explains why we don’t own one, for us/now that’s an optimization.)

Something that is simple when a problem is small is often not simple at all when the same problem is big. If I need to print one piece of paper and deliver it in a timely fashion there are so many solutions to the problem that “what is simplest” can be defined by other factors such as where I am, how much time I have to devote to this today, importance of the document itself… but if I have to print 50,000 items and deliver them in a timely fashion, or I’m the New York Times, the same solutions are not available. Other constraints narrow the number of solutions and complexity rises.

These are two aspects of the same concept… that we’re generally not simplifying, as nothing is simple, but we are optimizing for our current set of issues. And the important difference is that optimizations must be tweaked and maintained to remain optimal because our lives are not static, and the problem space grows or shrinks and certainly changes. “Simple for me is not simple for you” is a problem every business deals with in many ways. As a developer I run across this in interface design, and keeping code “simple”, and many other ways.

One of the things I hope to continue to get better at is “feeling the pain” sooner, being more aware of the shifts away from “maximally optimized” in order to ensure that more things remain as balanced as possible. It is an important skill to be able to retrospect with clarity.

My wife and I have been working hard on “simplifying” our lives, a multidimensional problem that encompasses who we were before we met and joined our lives, who we want to be together, our child, and so much more. By constantly looking at how we’re doing, and paying attention to the feedback presented by how we feel about things, we progress toward what we describe as simpler lives, but is really, a more optimized life at a given moment. Good enough.

The Programmer’s Paradox: The Nature of Simple: Without a measure, you cannot be objective so you really don’t know if you’ve simplified it or made it worse. In any multi-variable system of equations, you might use something like linear programming to find some ‘optimal’ points in the solution space, but you cannot apply a fixed simplification, at least not one that is mathematically rigorous. Finding some number of local minima is not the same as finding a single exact minimum value.

js-spec

js-spec: Want to do BDD in Javascript? This aims to clone rspec (http://rspec.rubyforge.org) in javascript.

For now it's very basic, but stuff like the following works.

describe("A newly created Tic-Tac-Toe", function() {
  with (this) {
    before("each", function() {
      this.game = new TicTacToe();
    });
	
    it("should have 9 empty cells", function() {
      game.cells.should( have(9, "items") );
      game.cells.each(function(cell) {
        cell.should( be(undefined) );
      });
    });
	
    it("should have 0 players", function() {
      game.should( have(0, "players") );
    });
  }
});

Stay tuned for more :)
Ask questions, make suggestions and post bugs at http://code.google.com/p/js-spec/issues/ [Nice to see BDD spreading…]
Source: Scripteka

Bloomberg Says Let Them Eat Fruit

Bloomberg Says Let Them Eat Fruit: Speaking at a press conference announcing the plan, Health Commissioner Dr. Thomas R. Frieden pointed out that “we are in the midst of an obesity epidemic. In some neighborhoods, rates of obesity and diabetes are 50 percent higher than the citywide average.” But the Neighborhood Retail Alliance opposes the plan, fearing a loss of business to the carts. Richard Lipsky, a lobbyist for the bodegas, told the Daily News the “real problem is the lack of demand. If the demand was high, the stores would be well-stocked.”[This comment, while rational on its face, fails utterly in the specifics. Salad and fruit are an important part of a healthy diet. But they’re not particularly calorie dense. When your hungry and you don’t have a lot of money, calorie density calls out to you… you look for carbs and sugars. Since we make chips and snack foods mostly from corn and corn divisions, they are inexpensive from a quantity standpoint, and high in sugars and carbs… exactly the sort of food that overweight and diabetic prone folks ought not to be eating. Additionally, vegetables and fruit need to be eaten fresh, and therefore purchased more often, so a busy person will buy some but less, since you can’t store it as long as a packaged food. All in all, it is a vicious circle that is hard to break. I’m not sure that this is an answer, but it certainly can’t hurt.]
Source: Gothamist

City Pedestrian Crossings Are Discriminatory by Design

City Pedestrian Crossings Are Discriminatory by Design: The team found that senior citizens begin to show signs of distress and engage in dangerous crossing behavior — such as speeding up their walking pace, walking unsteadily, standing in the street before beginning to cross and crossing before the signal has changed — at wider crossings to compensate for the fact that they walk at slower speeds. Coupled with the fact that 95 percent of vehicles observed during the study period did not yield to pedestrians, the study concludes that wider streets present unacceptable risks to elderly pedestrians. These risks have an overwhelming impact on the well-being and quality of life of senior citizens. [What a mess…]
Source: StreetsBlog

Announcing SunSpider 0.9 (A New JavaScript Benchmark From the WebKit Team)

Announcing SunSpider 0.9: Incidentally, we’ve been doing a lot of work on JavaScript performance lately. If you’re interested in helping out, stop by the webkit-dev@webkit.org mailing list, or the #webkit IRC channel on chat.freenode.net and say hi. Our engine is highly hackable so it’s easier than you think to get started.[I so love it when others do performance work…]
Source: Surfin’ Safari

The power of checklists

The power of checklists: “Pronovost and his colleagues monitored what happened for a year afterward. The results were so dramatic that they weren’t sure whether to believe them: the ten-day line-infection rate went from eleven per cent to zero. So they followed patients for fifteen more months. Only two line infections occurred during the entire period. They calculated that, in this one hospital, the checklist had prevented forty-three infections and eight deaths, and saved two million dollars in costs.”
[All they did was to create a checklist and empower the nurses to ensure that all doctors followed the checklist. Pronovost was smart about how he engaged them, see Mark’s post for more about that.]
Source:

Janette Sadik-Khan: A Reason to Love NYC in 2007

Janette Sadik-Khan: A Reason to Love NYC in 2007: But recently, the DOT has been championing some very un-DOT ideas. It has replaced parking lots and traffic lanes with chairs and umbrellas in Dumbo and the meatpacking district and installed a new, physically separated bike lane on Ninth Avenue; it is pushing the mayor’s controversial congestion- pricing plan; and, in a symbolic act, it has given over three parking spots by the Bedford Avenue L stop to bike racks. Taken together, it’s as if the department has awakened to the idea that streets belong to people, not their vehicles.

The difference can be summed up in one name: Janette Sadik-Khan… [Go! Go! Go!]
Source: StreetsBlog