small medium large xlarge

Generic image illustrating the article

“Sometimes when you ask questions but don’t get answers, it means nobody knows the answers. At other times, though, it means nobody wants to be seen answering the questions. On this project, it was some of both.”

That’s Michael Nygard, back this issue with another tale of terror from the ops side. This time he shares his experience on a very big website project that went south very badly. He details the rapid response actions he took and does a post mortem on why it all went so badly and how it could have been avoided.

Also in this issue, we’re responding to a reader request for an article on “functional programming for the imperative mind.” We have two articles, in fact, because not everyone will be starting from the same place. One is about getting your feet wet in the functional programming pool, by Michael Bevilacqua-Linn. The other is a deep dive into functional programming emphasizing Haskell, by Paul Callaghan. Paul’s article kicks off a series on Haskell that will open your eyes about Haskell’s pristinely functional paradigm and functional programming in general.

Your editor has another computer history essay in the issue, this time reflecting on the legacy (so far!) of Ted Nelson, who more or less invented the Web before the Web. Only better.

Venkat Subramaniam is here, too, wrapping up his 12-issue series on the Scala language. This installment is all about concurrency.

And as usual we have a quirky column by our own John Shade, and events calendar, and a few other Choice Bits.