Paul Johnson writes about Haskell, functional programming, software patents, and how programmers work.
HN links it for the post on Haskell versus C speed, which one commenter could not reproduce, and for the argument that software patents are patents on math.
I wrote a rebuttal of the "blueprints for software" analogy a couple of years ago.
http://paulspontifications.blogspot.co.uk/2013/01/software-has-civeng-envy.html
TL;DR: Source code is the blueprint for software.
However that doesn't mean I completely disagree with Lamport's arguments. Specifications are necessary in large-scale software because otherwise you can't know if you have actually implemented everything the program is supposed to do. When you release it the end-users get angry and insist that they told you in that email / meeting / watercooler conversation last year how important it was that the program frobnicate the warbles.
Lamport makes much of formal specifications. I agree that in some cases they do add value; trying to prove the correctness of a distributed protocol in any other way is dumb. But in my experience once you get up into application-level requirements a formal specification is basically source code you don't know how to compile; there is no formal correctness criteria against which you can verify it, and the stakeholders can't understand it in order to verify it.
http://www.google.com/patents?q=online+payment&btnG=Search+Patents Pretty much all of these are idiotic.
See also: http://paulspontifications.blogspot.com/2011/04/patent-5893120-reduced-to-mathematical.html
Software patents are stupid because you're trying to patent A WAY OF DOING SOMETHING and not A PRODUCT, even if said product is built from ways of doing something.
Example: I patent "A method for storing data on physical storage using blocks" and sue everyone. There are people who try to patent RAM and storage: http://www.google.com/patents?q=a+method+for+storing+data&btnG=Search+Patents
I'd wager that most of those are invalid patents / should be abolished.
Yes. It makes composing larger programs out of smaller programs easier. Especially if functions have to be real mathematical functions, and can't have any side-effects.
"Composability means that you can put two bits of code together and important correctness properties will be preserved automatically. This does not mean, of course, that the composition is automatically correct in a wider sense, but it does mean that you don’t introduce new bugs merely by sticking two things together." (http://paulspontifications.blogspot.com/2007/09/composability-and-productivity.html)
This article starts by totally misrepresenting the original article (http://paulspontifications.blogspot.co.uk/2013/01/when-haskell-is-faster-than-c.html) by saying that it said "Haskell beats out C when it comes to speed".
If you bother to read even the TLDR of the original article you 'll find it says something completely different, which makes this article pretty poor as a response.
Before you go and rewrite everything in Haskell for speed, it might be worth trying to reproduce the results from here. I tried to and C was much faster than Haskell:
http://paulspontifications.blogspot.com.au/2013/01/when-haskell-is-faster-than-c.html?showComment=1358558313945#c3252681956440975671
As far as I can tell all software patents are patents on math. Here is one example of a software patent reduced to mathematics and logic the extends it to all software patents:
http://paulspontifications.blogspot.com/2011/04/patent-5893120-reduced-to-mathematical.html