Paul M. Jones

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

Why Americans hate foreign policy

An excerpt from the Telegraph: Why Americans hate foreign policy by P. J. O'Rourke.

Being foreigners ourselves, we Americans know what foreigners are up to with their foreign policy - their venomous convents, lying alliances, greedy agreements and trick-or-treaties. America is not a wily, sneaky nation. We don't think that way.

We don't think much at all, thank God. Start thinking and pretty soon you get ideas, and then you get idealism, and the next thing you know you've got ideology, with millions dead in concentration camps and gulags. A fundamental American question is: "What's the big idea?"

Americans would like to ignore foreign policy. Our previous attempts at isolationism were successful. Unfortunately, they were successful for Hitler's Germany and Tojo's Japan. Evil is an outreach programme. A solitary bad person sitting alone, harbouring genocidal thoughts, and wishing he ruled the world is not a problem unless he lives next to us in the trailer park.

In the big geopolitical trailer park that is the world today, he does. America has to act. But, when America acts, other nations accuse us of being "hegemonistic," of engaging in "unilateralism," of behaving as if we're the only nation on earth that counts.

We are.

Link via NRO.


F. A. Hayek and Bloggers

This fits in very nicely with complex adaptive systems, emergent phenomena, dynamism, and so on.

TCS: Tech Central Station - Hayek Smiled: Why Blogging Works

If Nobel Prize winning economist F.A. Hayek had been watching last week as bloggers spontaneously responded to fraudulent documents aired by the program "60 Minutes", he would've grinned in humble satisfaction. Hayek's work centered on the effectiveness of spontaneous, decentralized organization, which is precisely what occurred on PowerlineBlog on September 9th.  Regardless of the political consequences of the Killian Memo controversy, Hayek's work has been vindicated and his critics undermined.

...

Hayek's work focused on how it is that complicated and reliable systems of cooperation come about without any centralized direction. When they do, they outperform systems of "command", systems that rely on central direction.

...

Hayek theorized that markets worked better primarily because of their ability to facilitate the use of 'on the spot' knowledge, knowledge that is very unique to a particular person or place. ... Everyone has something he knows more about than just about anyone else, even if that something is as basic as his own car. A command system requires the person with the knowledge to wait on the guy without it. A market system gives the person with knowledge the freedom and power to act on it.

Oh, just read the whole thing. It's good stuff.


Dropped Marketing Research

I just dropped the Marketing Research Methodology class. With it, I was taking 9 hours of night classes, which frankly was killing me. How ironic that the one class I wanted most to take, because of the professor, is the one that I should drop -- but it was an elective after all, and the other two are required (and required together) for the program.



Form Processing Questions

Norbert Mocsnik has raised some important points about automated form generation and processing in this post. He outlines what he thinks of as the form processing steps:

1. build a form (e.g. call functions to add inputs, set form ACTION)

2. fill in the defaults (with one call or walking through the form inputs by inputs)

3. assign the form template (either a static template which is created for a specific form thus giving the greatest flexibility or a dynamic template which describes how to display different field types thus can be applied to any form)

4. parse (and display) the form template

The user fills in the form and posts it to the server. Any time the user posts the form, the server should start with step 5 (so it goes like 5-6; 5-6-7; 5-6-7-8 not 5; 6; 7; 8). This way it is guaranteed that the user gets back the form any time he/she posts invalid values, gets to the confirmation after then (only with valid values that are ready to be processed) and the form is processed only if both the form was valid and it was confirmed (if needed).

5. form validation

6. if the form was not valid, pass it back to the user for correction (go back to step 1 but instead of filling the defaults in step 2, fill it with the values the user just entered)

7. if this form should be confirmed before processing and it wasn't confirmed after the user edited it the last time, pass it back to the user "freezed" (=read-only) for confirmation

8. process the form (this means storing it in a database in most cases)

I am not 100% certain that I agree with these points as presented; allow me to revisit and restate them. The following is a thought experiment; it's an outline of the client and server processes for a form submission.


0. (Optional, not the normal case.) The client decides to attack your script by submitting form data directly. This would cause us to skip steps 1, 2, and 3, going directly to step 4. This is why we cannot rely on client-side validation of data for any serious purposes.

1. Model logic is triggered for the first time by client browsing to the page. We need to send the client a blank form with some sane default values. The model logic talks to the database through an interface class to see what a default data set should look like, modifies it as needed, and presents the default data set to the View (template) logic.

2. View logic takes the default data set and parses it through to a form; the form in the template script may be dynamically generated, say with the Savant2 "form" plugin or the Smarty form element plugins; alternatively, it may be mostly static XHTML with placeholders for the data elements. When done, off we go back to the client.

3. Client gets the generated form, fills in some elements, submits the form.

4. Model logic gets the submitted form data. Now we have sanitize and validate the data; either the model logic or the data interface class sanitizes the data, then the data interface class validates it. Obviously there are two possible outcomes: some or all of the sanitized data is not valid (see 4a), or all of the sanitized data is valid (see 4b).

4a. If some part of the data is not valid, we should re-present the submitted data (perhaps modified to make it more sane) to the client. We cycle back to the equivalent of steps 1 and 2 again, with the submitted or modified data set (not the default data set).

4b. If all of the data is valid, then we can continue to perform the model logic; this may mean changing database values, handing control off to another script, "freezing" the form for confirmation (in which case we may cycle back to step 3 again), or any other type of processing.


As you can see, the above outline isn't strictly based on Model/View separation. Instead, it is more like Data/Model/View separation, where the Data logic is encapsulated in a class like DB_Table or DB_DataObject.

It seems to me that the Model logic should not be validating the data; becuase it is data, that Data logic should handle that behavior. The Model should only ask the Data logic if the information is valid, and the reasons for invalidation; that way, any Model that talks to the Data logic will always get the same responses for the same data sets.

This is where I find HTML_QuickForm and FormBuilder and the like to be not-the-best long term solution. They pierce the veil between Data, Model, and View, trying to roll them all into one piece. This is fine for prototyping, but for extended use I'm beginning to think we need less of a monolithic approach. We need more "small pieces" to be "loosely joined".

What would this entail?

The Data logic would entail a data-interface class that knows what it's columns and their valid limitations are, effectively an increased-functionality version DB_Table or DB_DataObject. The class would need to be able to validate data at the PHP level for reasons of data portability (can't depend on the database backend for that, becuase all DB backends are different in different ways). The class would also need to be able to report validity failures in an extensible and programmatic way (validation codes in addition to messages). Finally, the class would need to be able to provide hints to the View logic as to what kinds of values are valid, so that the View logic can present a reasonable form to the client.

The Model logic is up in the air; its functions are the heart of the custom application, and as such cannot be strictly outlined here. At worst, the Model would serve as a mediator between the Data logic and the View logic.

The View logic would be able to take the data presented to it from the Model and construct a useful form, along with validation messages.

Man, that's a lot; let me think on this a bit more and get back to it later. In the mean time, please comment freely and tell me why this outline is the worst thing you've ever seen. ;-)


Wikis in Education

See this Educause article about wikis; hat tip to Many2Many for the link.

Indeed, an instructor could structure and regulate interaction to such an extent that the wiki is effectively transformed into a stripped-down course management system. But doing so risks diluting the special qualities that make wikis worth using in the first place, with the result being, in the words of Heather James, "pumped-up PowerPoint." James has described the experience of using wikis in her teaching as her "brilliant failure." She regrets that she "changed the tool, but did not change the practice," and failed to account for the "great potential in this tool to be completely disruptive (in a good way) to the classroom setting." With the benefit of hindsight, she concludes that for wikis to fulfill their promise, "the participants need to be in control of the content"”you have to give it over fully."26 This process involves not just adjusting the technical configuration and delivery; it involves challenging the social norms and practices of the course as well.




Gelernter on "Bush's Greatness"

With the caveat that I think Bush is doing only one thing right (i.e., his prosecution of the war against Islamo-Fascism), I found this piece from David Gelernter quite refreshing.

THE WAR IN IRAQ is dual-purpose, like most American wars. Take the Civil War. At the beginning, the North fought mainly for pragmatic reasons. No nation can tolerate treason, or allow itself to be ripped to bits or auctioned off piece-wise by malcontents. Midwesterners couldn't allow the Mississippi to fall into foreign hands; they needed their outlet to the sea. And so on. Slavery was overshadowed. But as the war continued, slavery emerged as the issue, and the war's character changed.

The Iraq war started as a fight to knock out a regime that invaded its neighbors, murdered its domestic enemies with poison gas, subsidized terrorism, and flouted the international community. Obviously such a regime was dangerous to American interests. But as the war continued and we confronted Saddam's gruesome tyranny face to face, the moral issue grew more important, as emancipation did in the Civil War. For years the Iraqi people had been screaming, in effect: "Oh, my God. Please help me! Please help me! I'm dying!" How could America have answered, "We don't want to get involved"? We are the biggest kid on the playground. If we won't help, who will?

There's quite a lot; read the whole thing.

Gelernter knows personally about terrorism; a package from the Unabomber blew off his hand.

UPDATE: Forgot the hat-tip to Photon Courier.


Guerre de Luxe

Belmont Club has a good post about the options Russia had available to it during the recent terrorist attack on a school in Beslan. They have this to say about America's prosecution of World War IV:

America's unmatched power allowed President Bush to select the most humane course of war available. No European power, nor all of them put together, could have embarked on such a precise campaign for lack of means. It was a rich man's strategy, a guerre de luxe.

Read the whole thing; it's short and to-the-point.