Paul M. Jones

Don't listen to the crowd, they say "jump."

The Coming of the 4th American Republic

A great article from last year that bears re-reading, especially in light of the election a few days ago.

http://www.american.com/archive/2009/april-2009/the-coming-of-the-fourth-american-republic/article_print

The Special Interest State that has shaped American life for 70 years is dying. What comes next is uncertain, but there are grounds for optimism.

The real-world answer imposed by the New Deal and its progeny turned out to be special interest capture on steroids. Control comes to rest with those with the greatest interest or the most money at stake, and the result was the creation of a polity called “the Special Interest State” or, in Cornell University Professor Theodore Lowi’s terms, “Interest Group Liberalism.” Its essence is that various interest groups seize control over particular power centers of government and use them for their own ends.

It is this combination of plenary government power combined with the seizure of its levers by special interests that constitutes the polity of the current Third American Republic. The influence of “faction” and its control had been a concern since the founding of the nation, but it took the New Deal and its acolytes to decide that control of governmental turf by special interests was a feature, not a bug, a supposedly healthy part of democratic pluralism.

Whole departments are dedicated to special interests--Labor, Education, Energy. Money is important, but regulation is every bit as useful, especially because regulations can shift property rights from third parties without going through the budget process. For example, environmentalists successfully combined a vaguely worded Endangered Species Act with control of the Fish and Wildlife Service to shift the costs of their no-development ethic onto random land-owners, regardless of costs, benefits, or fairness.

In Washington, the debate has atrophied, and few lawyers and lobbyists even know that it was once questioned whether the Special Interest State is an appropriate form of organization for a polity. The theory that government is and should be a contest among alliances of special interests has swept the day. Of course groups struggle to grab and exploit levers of power for selfish ends and then use these to the maximum, and of course agency and congressional staff ally with one or another of these mercenary armies while in government, and of course they then go to work for the interests they used to “govern” (wink, wink), and so what? Do you have a point here?

Public employees have become perhaps the largest and most powerful interest group--20 million strong, politically active, and dedicated to the ideals of no cuts in employment, absolute pension safety no matter what happens to everyone else’s retirement accounts, and little accountability.

Ever since the New Deal, however, the Court has managed to erect a jurisprudence that is blind to the fundamental nature of the polity of which it is an important part. For example, under “the Chevron doctrine,” each special-interest-captured federal agency gets to decide the scope of its own power if Congress leaves any ambiguity. So Congress leaves the limits ambiguous and allows the agency to press to the utmost.

In the United States, legitimacy is conferred by elections, but it is not total. Through the ages, the basic question mark about democracy as a form of government has been that 51 percent of the electorate can band together to oppress the minority--“the tyranny of the majority” is a valid concern. To address it, the United States has a formal written Constitution to guarantee basic rights, but it also has an unwritten constitution that sets limits on how far the winners can push their victories. Exceed the amorphous bounds, and not only does the minority no longer accept the legitimacy of the government, many members of the majority coalition will have a guilty conscience as well, knowing that their acquiescence to the demands of one of their allies was a bad deed. As Thomas Jefferson said, “Great innovations should not be forced on slender majorities.”

So all patriots would be well advised to pick up a copy of Crane Brinton’s classic The Anatomy of Revolution, and figure out how we can achieve the necessary segue to the Fourth Republic without becoming a chapter in the next edition.


Comparing Benchmark Tools

As I noted last week, I have moved my framework benchmarking project to GitHub. As part of the move, I updated the project to allow benchmarking using any of three tools: Acme http_load, Apache ab, or Joedog siege. (For reference, the old project will remain at GoogleCode.)

I thought it might be interesting to see what each of them reports for the baseline “index.html” and “index.php” cases on the new Amazon EC2 setup (using a 64-bit OS on an m1.large instance). The results follow (all are at 10 concurrent users, averaged over 5 one-minute runs):

ab                       |      rel |      avg |
------------------------ | -------- | -------- |
baseline-html            |   1.2660 |  3581.54 |
baseline-php             |   1.0000 |  2829.11 |

http_load                |      rel |      avg |
------------------------ | -------- | -------- |
baseline-html            |   1.2718 |  4036.24 |
baseline-php             |   1.0000 |  3173.56 |

siege                    |      rel |      avg |
------------------------ | -------- | -------- |
baseline-html            |   1.2139 |  5060.25 |
baseline-php             |   1.0000 |  4168.76 |

They all show very different “absolute” numbers of requests/second: ab thinks the server delivers about 3600 req/sec, http_load reports about 4000, and siege says about 5000.

Note that the ab and http_load relative scores are in line with each other, reporting about a 26-27% slowdown for invoking PHP. Siege thinks PHP is more responsive than that, with only a 21% slowdown.

Which of these is the most accurate? I don’t know. I ran the benchmarking tool on the same server as was being benchmarked, so the differences may result from how much processing power was being consumed by the benchmarking tools themselves.

One interesting point is that ab no longer appears to be over-reporting the baseline cases, as I noted in an earlier benchmark posting. There are two major changes between then and now: (1) the updated project uses Ubuntu 10.10 instead of 8.10, which means the packaged ab binary might have been flawed earlier, or that the new OS otherwise corrects some other issue; (2) the updated project uses an m1.large 64-bit instance instead of an m1.small 32-bit instance. Either of those differences might be sufficient to account for the disparity in ab reporting previously.


First They Came for the Cartoonists

Once upon a time, members of the media could be counted upon to champion free expression even when nobody else would. Where the First Amendment was implicated, newspapers were willing to go to bat for everyone from neo-Nazis to Hustler magazine, and to take on powerful institutions from the Vatican to the Pentagon, often while patting themselves on the back for "speaking truth to power." Yet when it comes to the Islamic question, many in the media will not even stick up for themselves. That is, to say the least, a very ominous development.

via HINKLE: First They Came for the Cartoonists . . . | Richmond Times-Dispatch.


PHP Framework Benchmarks on Github

As part of “trying new things,” I have moved my web frameworks benchmark project over to Git on Github and away from Subversion on Google Code.

This project is often imitated and occasionally adopted. For all you framework fans who want to compare their preferred systems to the ones officially included in the project, you can now fork the repo and add your favorite. Who knows, some may make their way back onto the officially-included list.

Additionally, I have modified the project so that you can use one of three different benchmarking tools: Apache Benchmark, JoeDog siege, or ACME http_load. After you follow the setup instructions, you can run benchmarks using each of the different tools against the same benchmark targets:

./bench/ab.php targets/baseline.ini
./bench/siege.php targets/baseline.ini
./bench/httpload.php targets/baseline.ini

Comments or questions? Leave a note below.


Regarding Underscores

Today, PHPDeveloper.org referred to a post by Leszek Stachowski about underscore prefixes on non-public class elements.

The question which comes instantly to my mind is: why? Is there any reason why this convention should be kept when PHP object oriented programming has gone a long way since PHP 4 (when there was no access modifiers and such underscore was the only fast way to distinguish public from, hmm, not public methods and properties) ? Are, for instance (as one of major OOP languages), Java coding standards pushing towards such naming convention? No!

I think that we, as developers, should not stick to this silly convention. For the sake of progress, stop looking back (because that what in fact this convention is) and stop supporting this one, particular naming convention.

I think the underscore-prefix for protected and private is a good convention to keep. As with many things about programming, this convention is not for the program, it is for for the programmer. For example, limiting your line length to about 80 characters is a good idea, not for reasons of “tradition”, but because of cognitive limitations of human beings who have to read code.

Likewise, using the underscore prefix is an immediate and continuous reminder that some portions of the code are not public. Its purpose is as an aid to the programmer. The underscores make it obvious which parts of the program are internal, and which parts are externally available. (Note that I do not extend this argument to support the use of Hungarian Notation in PHP; if something like the underscore prefix is overused, it loses its obvious-ness and thus becomes less powerful.)

As an example, look at the following code:

<?php
class NoUnderscores
{
    protected $data = array(
        'item' => 'magic-data',
    );

    protected $item = 'property-value';

    public function __get($key)
    {
        return $this->data[$key];
    }

    protected function doSomething()
    {
        // do we want the magic public item,
        // or the internal protected item?
        return $this->item;
    }
}

Here we have magic __get() method that reads from the protected $data property. Any time you try to access a property that doesn’t exist, PHP will go to the __get() method and read from protected $data. Now look in the doSomething() method. Because the code executes inside the class, it has access ot the protected $item, so it’s not obvious if the programmer wanted the value of protected $item, or the magic $data['item'].

By way of comparison, take a look at the following modification to use the underscore prefix on private and protected elements:

<?php
class Underscores
{
    protected $_data = array(
        'item' => 'magic-data',
    );

    protected $_item = 'property-value';

    public function __get($key)
    {
        return $this->_data[$key];
    }

    protected function _doSomething()
    {
        // it is clear we want the internal protected item
        return $this->_item;
    }
}

Now the _doSomething() method is perfectly clear: the programmer wants the value of the internal protected property.


How Stalin and Hitler enabled each other’s crimes

Comparing the Soviet Union to the Nazis only makes the Nazis look better if you don’t understand the truth about the Soviet Union. Communists are as bad as Nazis, and communist sympathizers and apologists are as bad as Nazi sympathizers and apologists.

via Instapundit » Blog Archive » HOW STALIN AND HITLER enabled each other’s crimes. A review of Timothy Snyder’s Bloodlands: Europe ….

And from the review itself:

The Soviet Union’s ethnic murders predated Nazi Germany’s. Stalin was not directly responsible for the Holocaust, but his pact with the Nazis paved the way for Hitler’s killing of Jews in the east.

via Mass murder: History and its woes | The Economist.


Starbucks Puts Quality Over Quantity

What Starbucks would really like is simply to be able to say "make a latte this way every single time", and have thousands of baristas hop to." But anyone who has ever managed employees knows that this isn't quite so easy as it sounds. Even with the cleverest and most motivated employees, little changes will creep in over time; when I was a canvass field manager for PIRG, I was always a little astonished to find the varied ways that people had modified the standard "rap" they were supposed to give at each door, often without even realizing that they'd gone off script. This is why Atul Gawande is so gung-ho on making doctors hew to checklists and hard-to-modify standardized procedures.

via Starbucks Puts Quality Over Quantity - Megan McArdle - Business - The Atlantic.


Mystery and Evidence

... Christianity rests upon certain historical claims, like the claim of the resurrection. But this is not enough to make scientific hypotheses central to Christianity, any more than it makes such hypotheses central to history. It is true, as I have just said, that Christianity does place certain historical events at the heart of their conception of the world, and to that extent, one cannot be a Christian unless one believes that these events happened. Speaking for myself, it is because I reject the factual basis of the central Christian doctrines that I consider myself an atheist. But I do not reject these claims because I think they are bad hypotheses in the scientific sense. Not all factual claims are scientific hypotheses. So I disagree with Richard Dawkins when he says “religions make existence claims, and this means scientific claims.”

...

Religion, on the other hand, attempts to make sense of the world by seeing a kind of meaning or significance in things. This kind of significance does not need laws or generalizations, but just the sense that the everyday world we experience is not all there is, and that behind it all is the mystery of God’s presence. The believer is already convinced that God is present in everything, even if they cannot explain this or support it with evidence. But it makes sense of their life by suffusing it with meaning. This is the attitude (seeing God in everything) expressed in George Herbert’s poem, “The Elixir.” Equipped with this attitude, even the most miserable tasks can come to have value: "Who sweeps a room as for Thy laws/ Makes that and th’ action fine."

...

Religions do make factual and historical claims, and if these claims are false, then the religions fail. But this dependence on fact does not make religious claims anything like hypotheses in the scientific sense. Hypotheses are not central. Rather, what is central is the commitment to the meaningfulness (and therefore the mystery) of the world.

All emphasis mine. Via Mystery and Evidence - NYTimes.com.

Update, 06 Oct: For what it's worth, I consider myself an agnostic.



The Problem Is *Spending*, Not Taxes

What’s the difference between a tax-cut stimulus and a spending stimulus? Some efficiency, sure, less rent-seeking and pork-barreling, no doubt. But if we cut taxes without cutting spending, we are not cutting taxes. We are deferring taxes. Taxes are not the problem; spending is the problem. Taxes are a symptom.

via Bobs-for-Jobs Schilling: Another Republican for Keynesian Stimulus - By Kevin D. Williamson - Exchequer - National Review Online.