Showing posts with label John Towell. Show all posts
Showing posts with label John Towell. Show all posts

Saturday, November 12, 2011

Secondary Education and United States Citizens

Is it not ironical that in a planned society of controlled workers given compulsory assignments, where religious expression is suppressed, the press controlled, and all media communication censored, where a puppet government is encouraged but denied any real authority, where great attention is given to efficiency and character reports, and attendance at cultural assemblies is compulsory, where it is avowed that all will be administered to each according to his abilities, and where those who flee are tracked down, returned, and punished for trying to escape - in short in the milieu of the typical large American secondary school - we attempt to teach "the democratic system?"

Van Norman, Royce (February,1968) "School Administration: Thought on Organization and Purpose" Phi Delta Kappan 47, 315-316.

Thursday, March 31, 2011

WE THE PEOPLE doesn't include corporations

I stand ineffably baffled by the recent Supreme Court decision Citizens United v. Federal Election Commission. I already knew of the bogus interpretation of the fourteenth amendment which is a mistake that has established legal precedence - but this recent Supreme Court decision is contrary to what America is all about for me. I just raced through Thom Hartmann's book Unequal Protection: How Corporations Became "People" and How You Can Fight Back (Hartmann, 2010) and will be blogging on it here soon.

BACKGROUND: The legal terminology used in the U.S. system was adopted from our old English roots. In this tradition a distinction exists between a natural and artificial person. A natural person is a human being. An artificial person is a legal entity created by a human being. When defining the rights / actions of a person in legal contexts, it is important to distinguish between a natural person and an artificial person.

FOURTEENTH AMENDMENT: The fourteenth amendment was inserted to protect the rights of the African Americans following emancipation. Strangely, the wording in the fourteenth amendment uses the word person without qualifying whether it meant a natural or artificial person. This was enough leeway to allow the smell to permeate the halls of justice. What a farce.

Santa Clara v. Southern Pacific Railroad: An informal statement associated with this Supreme Court case set the precedent for the legal recognition of the corporation as a natural person. The court never formally deliberated nor issued any opinions on this issue but because of a note made by a court reviewer, the legal landscape of our country was grossly distorted in favor of the corporation. This shameful mechanism that established legal precedent is difficult to believe. Arguments have been made suggesting Supreme Court Justice Waite's involvement in the shenanigans were related to the free passes he was given by the railroad companies. It's moments like these that find me bursting with pride to be an American.

Ted Nace's discussion yields further insight into the misinformation provided by then former senator Roscoe Conkling who argued a case similar to Santa Clara three years previous. It is suggested that Conkling's arguments are what prompted Chief Justice Waite's informal comment that all the justices agreed that corporations have Fourteenth Amendment rights. Conkling claimed to have a journal documenting the intent of the committee that wrote the Fourteenth Amendment. Many years later a Stanford University law librarian, Howard Graham, carefully examined the Journal of the Joint Committee on Reconstruction and in a paper, published in the Yale Law Journal, debunked Conkling's testimony. A collection of further papers written by Graham was published in 1968 (Graham, 1968).

REFERENCES:

Graham, Howard Jay; Everyman's Constitution - Historical Essays on The Fourteenth Amendment, The "Conspiracy Theory", and American Constitutionalism, 1968, State Historical Society of Wisconsin.

Hartmann, Thom; Unequal Protection: How Corporations Became "People" and How You Can Fight Back, 2010, Berrett-Koehler Publishers, San Francisco.

Nace, Ted; Gangs of America: The Rise of Corporate Power and the Disabling of Democracy, 2003, Berrett-Koehler Publishers, Inc., San Francisco.

Friday, October 22, 2010

John Towell: What Are You Doing?

For those asking / wondering what I’ve been up to, I took a response I was writing to a friend and decided to blog it.

Actually I'm more active than when I was working. I’m trying to do many different things in a normal day. Our house in Elburn needed work to be finished before winter, so it hasn’t been a constraint-free time. Beth is happy with her new job and that makes me happy. Our new pup Donatello (Donnie) is a joy and he loves his big yard. The Frost family has moved to nearby St. Charles which has been a wonderful surprise. Except for the fact that we don’t see the Thompson’s as often, we’re very happy here. So, here’s what I’ve been doing.

At the beginning of the year I started playing slide guitar and have since bought two resonators, one a National (NRP 'B' 14). I've been trying to learn how to sing and have been unsuccessful at finding a local voice coach. I've been singing some songs and have joined the choir at church. I've been working with the exercises in "Singing For Dummies" and already have much better control. I love my HearFones and recommend them to anyone wanting to improve their singing. But it's intimidating trying to play the most complex of all musical instruments, the human voice.

I'm doing a gig at church in November with a guitar (Tracey McFadden) and mandolin player (Brian Joose). We're doing "Two Soldiers" which is a traditional song from the civil war era and recorded by Garcia and Grisman, and also Emmy Lou Harris and Julie Miller. In January I’m playing backup with Tracey McFadden for his daughter Kristin who is a terrific singer. She’s singing Iris Dement’s “Let The Mystery Be” in church.

I've been working on a blues (Muddy Waters) song called "I Feel Like Going Home" and a Leo Kottke piece called "Vaseline Machine Gun." I loved this song for many years and found a 4-part tutorial on YouTube by a young adult - the Internet is fabulous! I've also been working on an old Blind Willie Johnson (Texas) tune called "Keep Your Lamp Trimmed and Burning" (ala Catfish Keith), and a Blind Blake tune called "Chump Man Blues." I've loved that song since I heard David Bromberg sing it. It's a difficult song for me because I actually have to use my fingers on my left hand to play it ... heh.

The three big adjustments I've had to make was adapting to finger picks, open-G tuning and damping strings with my right hand. After playing classical style it was difficult for me to play off of the side of my thumb instead of the end. I still battle my right hand wanting to assume a more classical position. I've been practicing damping with the palm of my right hand and this has helped me achieve a greater comfort level with finger picks. I've also experimented with all kinds of different types of finger picks and slides too. I've settled on the Acousta-Glide slide. It's a metal slide and the heavyness of the slide has driven me to using larger gauge strings.

Open-G tuning or primitive tuning is interesting. There are some tutorials on YouTube about open-G tuning. I found myself teaching musicians about open-G tuning and showing them that this is how Keith Richards creates so many of the classic
Rolling Stones' sounds. It's surprising to me how many accomplished musicians have no knowledge of playing in different tunings. I loved the story about Keith Richards playing through most of the 70's with only five strings on his guitar. The sixth, or lowest string was missing. This is because in open-G the fifth string is a 'G' and the base note for the chords. Since Keith was never playing the sixth string, he just didn't have one.

Note that I'm playing a round neck resonator and not a flat neck (dobro) and haven't seriously ventured into bluegrass yet. But the electrician whose been working at my house is a fiddle player and has been encouraging me to go to the jam sessions of the Northern Illinois Bluegrass Association, so I might start working on a few of the classics. I don't have any dobro-like licks and never really liked dobro in combination with bluegrass anyway. I'd just be playing finger-picking style with a few twists like open-G tuning and a few slides here and there (I sometimes wear the slide on my pinky thus freeing my other three fingers). But then maybe not the open-G tuning ... I don't know - we'll see ...

I've been experimenting with open-D-like tuning as well, and can do one of my old Steve Stills' favorites,"4 +20" reasonably well. I also learned how to play that from a YouTube tutorial and it's easy in DADDAD tuning. Blind Willie Johnson's "Keep Your Lamp Trimmed and Burning" is in an open-D tuning which is 'DAF#DAD' (1st=>6th). The base rhythm is played alternating the 4th and 6th D's and keeping them damped. The melody is played on the 1st and 2nd strings with the slide. It took me weeks to be able to play the melody-slides independently from the damped base rhythm. It was somewhat refreshing to realize that my nervous system can still learn something requiring a radically different and new hand coordination.

Other songs I find myself working on now and then are: Leonard Cohen's "Suzanne" and "Famous Blue Raincoat;" Dierks Bentley's "What Was I Thinking;" Jimmy Buffet's "Why Don't We Get Drunk;" Jim Morrison's "Crystal Ship;" Pink Floyd's "Comfortably Numb" (still working on the guitar solos on the resonator); "Big Boss Man" recorded by Jimmy Reed; Kris Kristofferson's "Here Comes That Rainbow Again" (recorded by Leo Kottke); Don McClean's "Vincent;" "Mad World" recorded by Tears For Fears; and "Tell Me Why" which Beth and I sing in harmony now and then.

I have left the software programming out of my head to open other doors of my existence. I had noticed over the last ten years that the only time I was playing my guitar was when I was at the cabin in Colorado. But then I'd come home and start teaching again and wouldn't feel like playing until the escape to the mountains the following year. So, I just wondered what would happen if I just stayed with the "guitar playing" mode for awhile and that's what I'm doing. It's been interesting to not have the background processing working in my head which is always there when I'm working programming problems. I'm lucky that at 63 I can still work my hands pretty hard and not suffer from arthritis. I'm keeping myself in decent shape and am working on the house at least several hours a day. I started writing about the adventures of Xavier Thornton this past summer and need to find the time to keep that project going since I think about it quite often. I consider writing some songs now and then but it doesn't stick with me that much. I did write “The Plastic Water Bottle Blues” for Kady McFadden in celebration of Earth Day 2010 but that was for fun. (I should go back and redo this with better technique, better singing, and better resonator.) I have a hunch that after further developing my slide guitar skills, other avenues / forms of creativity will be available - we'll see - stay tuned.

Friday, August 20, 2010

Uncivil Dialogue, Racism and the Tea Party Movement

I recently stepped over the line and used the 'N' word to lampoon a recent post on the Net. I was reminded that there was no acceptable context in which the 'N' word was allowed. But that wasn't the part that bothered me; it was the nature of the post I should have taken issue with in the first place. The post was making fun of the Tea Party in what I consider an uncivil manner and I think it was my anger that caused me to take it too far rather than recognize what my objections were and discuss them rationally. In that spirit I decided to reproduce a conversation I had several months ago about this very subject.

I had responded to a post about an article in the Huffington Post written by Greg Grandin. This article can be read at:
http://www.huffingtonpost.com/greg-grandin/glenn-beck-americas-histo_b_574860.html

Here are some of my comments as I posted them at that time. To preface these comments, let me say simply that the piece by Grandin was referencing a study published on the Net claiming that many members of the Tea Party were racist. I have edited my comments only to avoid revealing any identities or comments that were not relevant.

***paste***
I found this piece overwhelming but please indulge me a few comments. I found the rhetoric inflammatory. I continue to beg for civility in discussions about the complex issues of our times. To me, this was not civil discourse regardless who wrote it.

Calling a movement racist is too easy and accomplishes nothing other than anger. What intelligent person among us would think that racism is absent from *any* party in the US? Whether anyone is racist is the same as asking whether one is an alcoholic or, even better, when does a cucumber become a pickle. It's a matter of degree, a value between 0.0 and 1; not binary, a value either 0 or 1. We're all racists to some degree, so let's get over it and leave it out of our discussions.

Glenn Beck is a self-proclaimed entertainer. He openly admits that he does what makes his company money. Those paying attention to anything Glenn Beck espouses are simply ignorant and should be made aware of what game Beck is playing - not spat upon. I am curious however to find that the person Beck admires most is Tyler Perry (perhaps this was a joke?).

I believe much of the vitriol is fomented by the frustration of having a dysfunctional government. I too hate the need to have the government step in but the current state of our affairs leaves us no choice. I worked for the VA and know firsthand how badly our government runs things. In regards to taking more effective steps to change our government (short of revolution), writing inflammatory exposition doesn't help - but maybe that's the only stuff people will read. Yellow press isn't new is it?
***end paste***

In response to my comments the original poster pointed me to the following link which supposedly gave legitimacy to the previously mentioned survey. Here is the link:

http://depts.washington.edu/uwiser/racepolitics.html

and upon referring me to the link, stated, "You are right, using the racist label without the data to back it up is too easy. However, when the data is there, then let's call a spade a spade."

Here is my response:

***paste***
OK, I'll take the bait. I have no problems with discussing and writing about any issues. My main objection to the Grandin piece was the inflammatory language but let's go ahead and look at how he handled the survey from the University of Washington.

Whenever any academic has gone public with data, the first question that crosses my mind is, has the data been published in an academic journal? If it hasn't then I immediately suspect loss of integrity and wonder how much my colleague got paid for his/her soul.

When I looked at the page you referred us to, I found no indication that the survey has appeared in an academic journal. If you read the interview with the survey's author, Dr. Parker, which is at the link entitled "survey methodology posted here" a few relevant and interesting tid bits come up.

When asked about his credentials Dr. Parker notes his academic achievements with the following statement. "On the principal investigator front, I conducted the California Patriotism Pilot Study (2002), from which I published a paper in Political Research Quarterly." Bingo! This is when the register rings for me - this means something. But where is there any indication that the current survey has been submitted / or is even being considered for submission for publication? Since that answer isn't found, let's look for the closest answer found later in the interview.

The following question was asked of Dr. Parker regarding his survey results.

"Putting it all together, what can we safely and confidently conclude about those who identify with the tea party movement and those who do not? Are their attitudes fundamentally different from other whites, from the American population as a whole, and, if so, how so?"

Dr Parker responded:

"One way in which to view these preliminary results is that we should remain cautious, and not jump to firm conclusions. I say this, first, because the sampling frame I use differs from, say, recent polls conducted by Pew, Qunnipiac, the Washington Post, and USA Today/Gallup. Indeed, my results are relevant only to the states in which the survey was conducted, four of which (NV, MO, GA, and NC) voted for the Republican presidential candidate in at least seven of the last ten election cycles. Perhaps this is why my results appear at variance with national polls."

I’m left wondering about the degree of confidence Dr. Parker has in his own preliminary results. How about you? Nevertheless, in the face of the author’s own caution about what the survey means, this is how Grandin's piece introduced the survey.

"A debate over a recent University of Washington poll helps us understand why the movement is racist no matter which slogans and symbols it chooses to use. The poll found that support for the Tea Party remains a valid predictor of racial resentment."

I understand your concerns. But I submit that Grandin's piece has not done justice to the claim that the Tea Party Movement is racist. Would you feel comfortable referring to this piece when having a rational discussion with a Tea Party'er?
***end paste***

A few more exchanges were made and I finally stated the following:

***paste***
I keep recalling a scene from Halberstam's "The Children" which is an excellent book about the civil rights movement. Jim Lawson was confronted by a hate-filled white man spewing vitriol. He let the hate roll off his back and began talking to the man. They discovered a common interest in motorcycles. The moment transcended from an inhuman hate-filled schism to a plane where two people were communicating. Lawson's training had prevailed. Inflammatory rhetoric does nothing to bridge the gap to our racist (ignorant) brothers and sisters. I encourage the adoption of strategies that can lead to constructive relationships with people filled with hate. Name calling and labeling are not part of that strategy.
***end paste***

In conclusion, I have learned from my mindless response in which I used the 'N' word. I apologize. I was taking a joke to the extreme and it was uncalled for. I should have complained at the joke in the first place. We cannot make progress with uncivil dialogue.


Friday, February 19, 2010

Global Warming - Climate Change

The following was posted as a response to a recent article in the Chicago Tribune. I wasn't able to post it all so I reproduced it here. The Trib article is here.

The Trib article said, "But these days that thunderous 2007 verdict is sounding, well, a lot like tomorrow's weather forecast: It's very likely to be right. But there's some doubt."

Response: The IPCC report said the certainty was at the 90% level, so, yes, there's some doubt. But would you take 1 in 10 odds?

The article points out some minor problems resulting from the fact that the IPCC is composed of humans.

Response: Critical examination of the main body of evidence still holds. These minor problems do not change the overall weight of the evidence. Isn't it wiser to challenge the foundation of the main conclusion than worry about these insignificant problems?

My opinion: The lay person needs to rely on the scientists and disregard information coming from sources such as the Wall Street Journal or the Tribune. Those who are technical enough to understand the IPCC reports, should adopt the language of the reports to conduct sensible debate. The report discusses the various "climate drivers" that are in play. Those criticising the validity of the conclusions, should at least use the language the experts have used. The argument then becomes whether carbon dioxide is a significant "climate driver." There is no argument that carbon dioxide is increasing.

The information for the Intergovernmental Panel on Climate Change (IPCC) is found here:
http://www.ipcc.ch
Under the Publications and Data section there is a report section that contains the 2007 report. Each section of the report can be downloaded as a pdf file.

For those wishing summaries, I recommend the Union of Concerned Scientists' site which contains an FAQ:
http://www.ucsusa.org/global_warming/science_and_impacts/science/global-warming-faq.html

I encourage informed debate. This is an important and complex issue. We need to have this debate without destructive name-calling and personal attacks. Our discussion should be focused on the following quote from the Union of Concerned Scientists' FAQ:
"The Intergovernmental Panel on Climate Change (IPCC) issued a global climate assessment in 2007 that compared the relative influence exerted by key heat-trapping gases, tiny particles known as aerosols, and land use change of human origin on our climate between 1750 and 2005.[3] By measuring the abundance of heat-trapping gases in ice cores, the atmosphere, and other climate drivers along with models, the IPCC calculated the 'radiative forcing' (RF) of each 'climate driver' - in other words, the net increase (or decrease) in the amount of energy reaching Earth’s surface attributable to that climate driver. Positive RF values represent average surface warming and negative values represent average surface cooling. CO2 has the highest positive RF (see Figure 1) of all the human-influenced climate drivers compared by the IPCC. Other gases have more potent heat-trapping ability molecule per molecule than CO2 (e.g. methane), but are simply far less abundant in the atmosphere and being added more slowly."

Thursday, February 11, 2010

Data Rundancy is BAD!

I have just moved from Wisconsin to Illinois. Just in the past six weeks I've dealt with organizations whose information systems were FUBAR. If I was a CIO, the first goal would be to insure that nowhere in the organization was any information stored in more than one place - that's what the database is for idiots! Since we're mired in the ineptness of the relational model, we might as well at least use it competently. DATA REDUNDANCE can only lead to one thing - DISASTER. Please sack your incompetent IT people and hire those who understand.

Friday, December 4, 2009

Afghanistan's Similarities to Vietnam

In the President's recent address to cadets at West Point and the world, he dismissed the comparisons of Afghanistan to Vietnam with simplistic rationale (see here for more reasonable comparison). Consider the following quote from page 209 of David Halberstam's The Best and the Brightest.

"What the president was learning, and learning to his displeasure (once again, the Bay of Pigs had been lesson one), was something that his successor Lyndon Johnson would also find out the hard way: that the capacity to control a policy involving the military is greatest before the policy is initiated, but once started, no matter how small the initial step, a policy has a life and a thrust of its own, it is an organic thing. More, its thrust and its drive may not be in any way akin to the desires of the President who initiated it. There is always the drive for more, more force, more tactics, wider latitudes for force."

In this quote the President was John Kennedy who started the Vietnam conflict and allowed it to get out of control. This quote describes exactly how the Afghanistan situation is like Vietnam. How can you expect those who believed you to be a rational man, to continue to follow along with this utter nonsense? Either you have been completely buffalo'd by the Military Industrial Complex or, as I have described previously, you have taken the twisted route to accomplish your social agenda. Either way, it confirms my belief our great ideals are impaired by our dysfunctional implementation of government. It is a sorry situation indeed.

Thursday, December 3, 2009

Obama's War

I'm disappointed with Obama's decision. The goal is political expediency - just like Kennedy's mistake with Vietnam. I feel sorry for him and for the soldiers that are going to die or be maimed needlessly.

There's only one journalist who has been telling it like it really is and that's Michael Ware of CNN. He's not the polished kiss ass journalist that the rest of them are. He's very primitive looking - but he doesn't mince his words and in his opinion this is all about the conflict between Pakistan and India. And if you can't stop them from meddling in the Afghan affairs, there's never going to be any stability - and how long has the conflict between Pakistan and India been going on? Whoa! That's a very interesting history that goes back to the control of the region by Great Britain! When the British were considering withdrawal of their colonial control, they imposed a solution by dividing the country into parts for Muslims (Pakistan) and parts for the rest of the religions which were mostly Hindu (India). This is when the conflict began over Kashmir which didn't want to be in either country. This goes back to the end of WW II ... There are so many problems that currently exist that are the results of wars – WAR! what is it good for? ... absolutely nothing!

It is clear that Al Queda is inactive in Afghanistan. The Taliban and Al Queda are two completely separate entities. Our presence in Afghanistan does nothing to stabilize the region. The Taliban is going to come back again and again. The Afghans do not trust us or their own government. Have you seen the Frontline documentary called Obama's War? It's excellent. As an Afghan peasant points out in the documentary, how can we (Afghan peasants) beat the Taliban when you (US soldiers) can't beat them with all your weapons and I haven't even a sword? Afghan peasants are ignorant but they aren't stupid. They are not going to jeopardize their lives for us or their corrupt government. That's why I recommend seeing the Frontline documentary, the truth is right there coming from an Afghan peasant telling it like it is.

It's sad to see the mistakes of a previous administration (Kennedy) repeated in the Obama era. The Bush administration isn't even worthy of consideration - they were on par with Neanderthal-level mentality .. ala, let's go kick us some Al Queda butt! But Obama is smart and so are his people. Nevertheless, they have other goals and they aren't going to let this terrorist-Afghan thing get in the way of achieving these other goals - thus the political expediency. This lame move of putting in thirty thousand troops and at the same time announcing a withdrawal time table is only something to keep those who might vote against the health care bill placated. Shamefully it's the only way to accomplish goals in our impaired system; another example of our foreign policy being held hostage to the agenda of one of our political leaders. The world doesn't need another short term solution that leads to even bigger / worse long term problems.
We need to get our act together on the home front. We need to rebuild the infrastructure of our own country, not Afghanistan!

Sunday, November 22, 2009

Afghanistan and Political Expediency

Dear Mr. President:

In a previous post I asked why it wasn't obvious that we need to leave Afghanistan ASAP. I know that the lens for your reality is completely different from mine. The problem here is that I suspect you are letting concerns for political expediency affect your decision. Kennedy did the same thing in Vietnam as clearly delineated by David Halberstam in "The Best and the Brightest." Please avoid being caught in the same trap. Cow towing to the military industrial complex or placating the hawks isn't worth the sacrifice you make to achieve your goals. It makes everything worse. You have the power to speak the truth to the Americans - let us have it. There is nothing to achieve in Afghanistan that is worth one single drop of American blood. Please do not sacrifice our country's integrity to achieve your goals.

Respectfully,

John Towell III

Thursday, November 12, 2009

Leave Afghanistan ASAP

Mr. President:

Having never heard a Middle East scholar say anything encouraging about our chances of establishing order (much less democracy) in Afghanistan, I must wonder why our government doesn't listen to the scholars? An even better question, why don't we ever listen to the Afghan people? Doesn't President Obama watch those documentaries where Afghan peasants are interviewed? Mr. President listen to them - stop wasting lives and get out ASAP.

Respectfully,

Doktat

Friday, November 6, 2009

FUBARism: The Fed Should Stop Subsidizing Risk

In today's Wall Street Journal, Gasparino shows that the history of the Fed subsidizing risk-taking by Wall Street Financiers goes all the way back to the 80s. The "moral hazard" was created by the government. This behavior is not partisan - both parties are responsible. While most folks are angry at the greed and stupidity of Wall Street Financiers, the real responsibility lies in the fact that these same financiers knew the government would bail them out if / when they got into trouble with mortgage-backed securities. It's not socialism, it's not communism - I need a new 'ism'. How about FUBARism?

How is FUBARism defined? It's simple - FUBARism exists when you privatize the profit and socialize the risk. As my son says, "Heads we win, tails the government bails us out." What other name for this type of economic disaster is there? Please offer an alternative to FUBARism.

Monday, October 26, 2009

Struts 1.3.10 on Tomcat 6 Tutorial

I started working through Hightower's tutorial available as a free pdf from theserverside.com and am having a few problems. I will record fixes as I encounter problems. Note that Struts version 1.3.10 has changes whereas the Hightower tutorial, Jakarta-Struts Live, is for version 1.1. I am also working with Tomcat 6 (apache-tomcat-6.0.18) , ant (apache-ant-1.7.1) and Java 6 (jdk1.6.0_04) . The fixes I am describing are what I am getting to work on the above-described configuration. I am not saying that the tutorial is wrong for Struts version 1.1.

--------------
CHAPTER 1
--------------

On page 4 where he is discussing setting up on a Tomcat 5 server, note that Tomcat 6 has changed the previous directory structure $TOMCAT_HOME/common/lib/ to just $TOMCAT_HOME/lib/ ... there is no longer a common directory present.

On page 17 where we are writing our first action form, note that the class ActionError is no longer available in Struts 1.3.10 and one must use ActionMessage instead. So, in the code for the UserRegistrationForm class, comment out 'import org.apache.struts.action.ActionError;' and add 'import org.apache.struts.action.ActionMessage;' ... Also later on, swap out ActionError in the validate method with ActionMessage.
On page 20 where we are writing our first input view (jsp page), we ignore any of the changes to the web.xml file with regard to the additions. Also, still in #2 on that page, we do the directives in the jsp differently. Instead of
'<%@ taglib uri="/tags/struts-html" prefix="html"%>'
use the following namespaces for the uri, like this:
'<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>'
'<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>'
I spent a lot of time diddling around with this and from what I read in the google searches, a lot of other people have wasted time too. This is because the tld's are packaged in the struts-taglib-1.3.10.jar file which is in the lib directory in WEB-INF in the struts-blank app. The servlet api has now made it easy to find the tlds in the jar file provided they were packaged properly (see the Struts site for instructions for a proper configuration or look at the jar file in the distribution). Note that including taglib information in web.xml will result in the application not being able to find the tlds.

_________________________________________________________________
ON PAGE 27 UPDATE THE ACTION TO HANDLE FORM AND CANCEL BUTTONS
Since version 1.2.8 the 'cancellable="true"' statement must be placed in the action tag path="/userRegistration" in struts-config.xml. Otherwise, hitting the cancel button results in exception.

________________________________________________________________
MOVING ON TO USING DATABASE
As an FYI Hightower notes that, although he is using an HSQL database, "You
should be able to use any database that has a suitable JDBC driver." ... which should be true but in this example, the name of the table, USER, isn't going to work on an Oracle database because USER is a reserved word. Hence I changed the name of the table to STRUTSUSER since I was using an Oracle database.

On page 30 of the tutorial the code uses the method getDataSource which is not present on the Action class in version 1.3.10. I found a discussion at JavaRanch and will use a DAO which in turn will use JDBC to get a connection to the database. This is good for separation of concerns and is immediately valuable for unit testing the DAO independent of the rest of the application (always a good thing!). Nevetheless, this makes the datasource-relevant information, which was added to struts-config.xml, irrelevant and for me the entire Struts 1.X version somewhat dysfunctional and even more reason to use Struts 2.x version or, its evolved form (Spring... :). Having just coded the DAO and using raw JDBC for database manipulation, I am reminded of how easy Spring makes database manipulations because it saves you from TCFTC (Try-Catch-Finally-Try-Catch).

Oh, and yes, at this point forget about letting Struts handle any database connection pooling ...
________________________________________________________________
PAGE 32: EXCEPTION HANDLING
Now that we're not even using Struts to manage database connections, it's not going to see any sql exceptions either(we're catching sql exceptions in our DAO) so we need to find another way to worry about exception handling by Struts.

________________________________________________________________
PAGE 35: DISPLAY AN OBJECT WITH STRUTS TAGS

This works as described in the tutorial but remember to use the uri discussed above for the bean tag.

________________________________________________________________
PAGE 37: USING LOGIC TAGS TO ITERATE OVER USERS

As discussed above, the logic tags directive would look like this:
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

--------------------------------------
CHAPTER 2: TESTING STRUTS
--------------------------------------

Having suffered through the early versions of EJB I am reminded of one of the reasons why developers created their own lightweight frameworks, like Struts and Spring - to enable unit testing the POJOs (the domain-object model) without the container obstructing the tests. For those not familiar with the history of that era, I recommend Bruce Tate's "Don't Make Me Eat The Elephant Again."
________________________________________________________________
PAGE 59: Using StrutsTestCase (Mock Mode) Step-by-Step

I will be using strutstest-2.1.4.jar



Sunday, October 4, 2009

KISS & Object-Oriented Programming

This piece examines the response to decentralizing reponsibility from the KISS (Keep It Simple Stupid) perspective. Decentralizing responsibility generally creates more objects and upon first examination most programmers fail to understand the advantage. This is because their education generally involved the solution of problems that rewarded their ability to create small cute programs and not the solution of problems rewarding their ability to create coherent and loosely-coupled classes containing methods responsible for doing only one thing. Upon refactoring their solutions to systems containing more objects, the typical response is to question how this leads to a simpler system. Their education did not prepare them for creating complex software systems composed of harmoniously working objects. Their education layed the groundwork for creating hopelessly complex, difficult to maintain and impossible to change nightmares commonly referred to as "Big Balls of Mud" [1]. Being an object-oriented programmer is more than incorporating byzantine thinking into a program running with an object-oriented language. A true object-oriented programmer knows how to think on a higher level. A level that is amenable to building much larger systems that are easy to maintain and change.

REFERENCES

1. The Big Ball of Mud paper is in my opinion a must read for anyone interested in enterprise-level software creation. This paper reveals the sticky problems of integrating the ideals of software creation with the reality of the contemporary corporate IT workplace.

Sunday, March 29, 2009

Time for a Paradigm Shift in Programming Pedagogy

### CODE ALA BUGS ###

A long-standing problem in software development is the detection and elimination of bugs. Numerous procedures such as Design by Contract , Cleanroom Software Engineering and Test-driven Development (TDD) are known to minimize bugs. Thus, one wonders why such practices are not used extensively in contemporary practices. Michael Feathers has recently noted that the common attribute among these practices was that they all required contemplation of the code’s purpose.

As an educator this lack of certainty regarding a programmer’s ability to write effective code triggers the question whether we are teaching programming courses appropriately.

### PEDAGOGICAL PRACTICES ###

Examination of current programming texts reveals the general approach to how programming courses are taught. This involves the reading, lecturing and discussion of the programming concept, studying code examples implementing the concept, and problem solving. The later generally requires the student to write a simple application involving the use of the above-mentioned concept or principle. The code correctness is easily determined because the application is simple. The application can be executed with a varying set of input data and the results determine the correctness of the code. This approach works adequately in such simplistic circumstances but fails when programming larger and complex software systems. Nevertheless the beginning programmer learns to depend on this quick method of verification during this important developmental stage.

### DENIAL AND INTERVENTION ###

The troubling aspect of this approach to teaching programming is the denial ensconced in the approach to the solution. The approach assumes the programmer will write code that will do what the programmer thinks it will do. The denial lies in the failure to recognize that the code often doesn’t do what it was written to do. In the words of Kent Beck
“I am good at fooling myself into believing that what I wrote is what I meant.”1
Even worse is the inability to alter behavior to compensate for this failure. Could contemporary computer science faculty be responsible for permitting this state of denial? Is it time for intervention?

### UNCERTAINTY IN PROGRAMMING ###

Programming students should learn about the uncertainty inherent in writing code; that all programmers, even excellent ones like Kent Beck, are susceptible to this uncertainty. Programming students should be taught that along with the recognition of the uncertainty implicit in the process of writing code, comes the realization that their solutions must be considered hypothetical. Hence, the validity of their hypothetical code solutions relies on how extensively the hypothesis has been tested. But wait! – isn’t this the scientific method every school kid learned in their K-12 years?

### PROGRAMMING AS SCIENTIFIC PROCESS ###

Considerable evidence exists that software creation is riddled with uncertainty and thus untested code represents at best a guess at a possible solution. Shouldn’t this be the fundamental principle taught to programming students? Why isn’t testing the validity of the hypothetical taught as the foundation of programming? In the face of the problems currently found in software development, why do we continue with a failed approach to programming pedagogy? Isn’t it time to confront the denial ensconced in the assumption that we can write code that will do what we intend? Hasn’t the time come to teach programming as a scientific process?

### SCIENCE & TDD ###

Test-driven development (TDD) defines a process whereby the programmer first writes a test which determines whether the intended function accomplishes its purpose. After the test is written, the function is then written to pass the test. Inherent in this procedure is the recognition that to truly understand the function one must understand how to test whether the function works as intended. This act is what Michael Feathers calls the contemplation of the code which is required to practice TDD along with other processes such as Design by Contract and Cleanroom Software Engineering. However, also implicitly assumed is the recognition that writing code is fraught with uncertainty and although the language of TDD is not that of the scientific method, the intent and the results are equivalent.

### REFERENCES ###
1. Beck, Kent (2000) Extreme Programming Explained: Embrace Change, Pearson Education, [ISBN 8178086670]

Thursday, March 19, 2009

SOA IS A HACK

Anyone reading my expositions must recognize that most of these writings were created when I was teaching software design courses in the masters of software engineering program at Carroll University. Thus, a good part of the tone I have strived for is that of provocation, and stimulation to think about the problem. The following piece was written in 2008 after reading a piece on SOA - which used to be called web services. Today I came across a blog by UncleBob Martin on SOA and I decided to recreate my original exposition here.

Here is the email I sent my class introducing them to my discussion of SOA.

##BEGIN PASTE##
First, thanks to StudentX for continuing the discussion with the link to the article by Craggs on reasons for failures in SOA projects.

Second, anecdotal pieces by consultants that contain no factual data should always be considered with skepticism. This statement comes from my background as a scientist who wandered into the “software engineering” arena. My primary criticism of “computer science” has long been (I recall arguments with my wife in the 80’s over this point) that it has little to do with the scientific method.

I recognize that I’m thinking at an idealistic level but many of the problems described in Craggs’ article can be considered from my perspective. Consider the following quote from the Craggs’ article:

“SOA is not just something that can be “installed and switched on.” It’s a lengthy process, involving the business as a whole rather than just IT. As already discussed, for example, failure to involve the business units with SOA design decisions will result in an implementation almost guaranteed to fail to match expectations.”

This is the problem my son brought up – that the various groups within the organization could never get together to create an integrated domain-object model (DOM). In addition to the cultural mismatch, there was probably also a physical separation between groups. But I say, as indicated by the above quote, that there has to be significant integration of the cultures in the various functional organizations to do the SOA integration too. Just because it’s SOA, doesn’t make this problem go away. I’d rather work on integrating the disparate systems by putting them into the same DOM than speculate with SOA.

I got a chuckle out of the following quote from Craggs’ piece because it could have been taken out of a classic systems and analysis book (Kendall & Kendall, Whitten & Bentley, etc.) published in the 80s. This is nothing new – this problem has been around for a long long time. No silver bullet here.

“But the last reason for failure to meet expectations is by far the most common and can be truly devastating. Companies repeatedly build great strategies and plans for SOA, only to find that when execution is attempted, there are countless roadblocks and inhibitors to success. The cross-departmental interchanges never happen, resource availability becomes a problem, and attempts to gain agreement on service specifications descend into endless bickering. These issues typically stem from a lack of buy-in for SOA at the senior management level.”

And finally, the last quote really comes back to my original challenge of *how* the SOA was going to solve problems. This is a reformulation of the ‘South Park Underpants Gnomes’ problem.

“Another common frustration is being unable to get budget approval to support an SOA implementation. A major contributor to this problem is having a poorly prepared business case.”

Thanks for your indulgences – feedback is welcomed – this is an important topic.
##END PASTE##

Doktat Pontificates on
Systems Integration
or
DON'T BURY YOUR SKELETONS

Since 2001-2002 I have been pondering the move to systems integration via web services (we first studied web services in CSC560 in spring 2002). Conceptually, the idea seems plausible, but I heard the first warning shots several years ago during a web seminar. The participants were discussing attempts to create web services architectures and were finding unacceptable performance and were experiencing difficulties locating the source of the problems. The message was that when an organization moves in this direction, it should have a clearly defined strategy for how the system will be tested and criteria for what will be acceptable performance. Recently (spring 2008) an article appeared citing survey results indicating that most of those surveyed thought their IT departments incapable of implementing a system with the degree of sophistication required by a web services architecture. Subsequent discussions in the CSC560 course prompted the following.

For purposes of discussion, consider the schematic below. Here we see the integration of three different systems running on three different platforms using three different languages

encapsulating the business logic of three different databases. Basically each system is converted to a service by wrapping with an xml-based layer that assumes responsibility for marshalling/un-marshalling requests for that system's resources. The business logic remains encased in the language of the system; the methods of which are invoked via the xml wrapper. Integration of these disparate systems is implemented by an architecture shown here as the services oriented architecture (SOA). If we consider each of these systems "legacy" systems (and I'm using the term legacy to imply any system not accompanied by an automated suite of unit tests), one must wonder where in the system the tests will reside. So, from my perspective, we have just overlooked a nasty problem that the magic of web services isn't going to solve. I don't think this type of approach is the way to solve integrating systems with different platforms and different languages supporting business logic. The following schematic suggests an alternative approach to this problem. The platform problem is handled by JDBC drivers that handle the communication with the database.

The critical difference is the movement of the business logic from the platform and language-dependent system into a domain object model which is where the integration should occur. Organizations refusing to deal with this problem are not facing the real problem. The translation and integration of the business logic into the domain object model would provide enormous advantages and set a better foundation for moving towards a progressively complex future. It is clear that the best path to managing complexity is via POJOs that can be tested independently and this requires an integrated domain object model. Thus, in my opinion, the use of web services for integration of an organization's disparate systems is a hack. Who would want the responsibility of managing such a monster when at its very foundation lurk the nightmares that prevent a clear and fear-free testing strategy with no clear way to test its network performance?
Am I saying no web services at all? Consider the schematic below. Note that the marshalling/un-marshalling of xml-based requests can be handled by the front-end controller displayed there.

I Can't Believe It's Not Software

In yesterday's congressional testimony with AIG CEO Edward Liddy, the following was stated by New York's Gary Ackerman:

There's a great product called "I Can't Believe It's Not Butter," but at least they have the decency to tell you it's not butter... They're calling it "credit default swaps" because if they called it "I Can't Believe It's Not Insurance," he says, maybe no one would buy it.

In last evening's lecture, I found myself comparing this to software systems. A software system is code which includes an automated suite of unit tests. The unit tests are part of the system. A program is code without an automated suite of unit tests but often "sold" as a software system. Feathers calls any code not accompanied by a suite of unit tests, "legacy software." Perhaps a better name for it could be, "I Can't Believe It's Not A Software System." I offer this in the spirit of hope that software developers assume pride in their craft (ala UncleBob Martin) and at least have the decency to tell you when they are giving you a program versus a software system.

Friday, March 6, 2009

Conditional Logic and Code Smells

>>>

At Ward Cunningham's wiki one finds a discussion entitled Switch Statements Smell. This discussion begins with considerations of Beck and Fowler's statement in chapter 3 of Refactoring (Fowler, 1999) that switch statements were smelly because they tended to create duplicated code. I unsuccessfully tried to add to that discussion the treatment found in the Gang-Of-Four book (Gamma, 1999). So, please find below a few more thoughts.

MONOLITHIC and LESS EXPLICIT
The following quote predates and complements Fowler and Beck's discussion in chapter 3 of Refactoring. In the Gang-Of-Four book one finds the following quote on page 307.

“Like long procedures, large conditional statements are undesirable. They’re monolithic and tend to make the code less explicit, which in turn makes them difficult to modify and extend. The State pattern offers a better way to structure state-specific code. The logic that determines the state transitions doesn’t reside in monolithic if or switch statements but instead is partitioned between the State subclasses.”

DECOUPLED STATE-BEHAVIOR PRINCIPLE and TEMPORAL IGNORANCE
Using conditional logic to implement behavior which is dependent on the state of a class is programming in temporal ignorance. If a change of state has occurred that affects behavior, then the readyness of that class to implement the appropriate behavior should occur synchronously with the change of state. Why should an object live in ignorance when a change of state has occurred that will also change how the object behaves? I refer to this state of ignorance as decoupled state-behavior (DSB). Allowing the state of an object to be decoupled from its behavior should be considered a loose end, a piece of untidyness which requires conditional logic to be resolved. Why leave such loose ends around? They can only lead to problems. Note that this does not apply to using conditional logic to determine other actions not related to the state of the object. DSB refers stricly to the relationship between the state and behavior of the same object. Since DSB requires conditional logic for resolution, this situation also demands consideration from the race condition perspective.

IF STATEMENTS AND RACE CONDITIONS
Temporal ignorance creates race conditions. In addition to violating a principle of OO programming, that a method should do no more than one thing, conditional logic statements are not thread safe. Consider the following 'if' statement:

if (propertyValue == 1)
execute statement1;
else
execute statement2;;

We generally assume that nothing will change the value of propertyValue before we execute statement1. That is a false assumption. It is easy to create race conditions where the propertyValue is set to 2 by a competing thread in between executing the 'if' statement and executing statement1 in the example above. Wouldn't it be smarter to securely change the behavior at the same time the property value is changed?

public void setPropertyValue(int intValue)
{
synchronized (this)
{
propertyValue = intValue;
currentStrategy = appropriateStrategy;
}
}

REFERENCES

Gamma, Erich et al (1994) Design Patterns: Elements of Reusable Object-Oriented Software [0201633612]

Fowler, Martin (1999) Refactoring [ISBN 0201485672]

Over-Engineering and Design Patterns

I began studying design patterns in roughly the same period that I read Beck’s treatise on eXtreme Programming (Beck,1999). There is a conflict between the two schools and it’s important to consider it. The design pattern mantra is that we have identified a pattern that occurs often in programming and we have a way to solve it. No sense reinventing the wheel, there’s a pattern that solves the problem in a way that creates desirable software architecture. By learning these patterns we are creating a system of best practices which includes a richer vocabulary. By applying these patterns, we create more loosely coupled systems that are easier to maintain and change. From a pedagogical perspective, this is important to learn and a key stage to development. The process of understanding your system’s responsibilities and identifying these patterns is important in the development of OO thinking - which is entirely different from procedural thinking. But then the student encounters the “Stop Over-Engineering” people and becomes confused.

After passing through his phase of studying, understanding and applying design patterns, Kerievsky (2002) wrote a short paper entitled, “Stop Over-Engineering.” He thoughtfully describes his evolution to the following recognition: “But over time, the power of patterns led me to lose sight of simpler ways of writing code.” After relating a story where he realized, while pair-programming, that his approach to solving a problem was "… like applying a sledgehammer when a few light taps with a small hammer would do," he proceeds to describe what I believe is the next pedagogical stage in a programmer’s education, refactoring.
Nevertheless, a student of OO programming can’t stop over-engineering unless they know how to over-engineer in the first place. Kerievsky’s insight and subsequent treatise (Kerievsky, 2005) is the product of an active consultant in the software construction business. Students must learn the difference between the teachings of a professor and the teachings of a professional. The latter isn’t necessarily concerned with the entire pedagogical structure - their audience includes those who have mastered the stages leading up to their current level of understanding. The Kerievsky teachings are not for those who haven’t already studied design patterns. So, in my opinion, learn to over-engineer first (Gamma et al, 1994; Metsker, 2002; Shalloway & Trott, 2004;Martin, 2002 ) and then begin your studies of Kerievsky (2005) , Fowler (1999) and Beck (2002).

REFERENCES:
Beck, Kent (1999) eXtreme Programming eXplained: Embrace Change [ISBN 0201616416]
Fowler, Martin (1999) Refactoring [ISBN 0201485672]
Kerievsky, Joshua (2002) Stop Over-Engineering [http://www.industriallogic.com/papers/StopOverEngineering.pdf]
Kerievsky, Joshua (2005) Refactoring to Patterns [ISBN 0321213351]
Martin, Robert (2002) Agile Software Development: Principles, Patterns and Practices [ISBN 0135974445]
Metsker, Steven (2002) Design Patterns Java Workbook [ISBN 0201743973]
Shalloway, Alan and Trott, James R. (2004) Design Patterns Explained: A New Perspective on Object-Oriented Design, 2nd Ed. [ISBN 0321247140]