BASH SCRIPTING: My Crude Function 'resleep'
How many times have you used the 'sleep' command interactively only to realize that the amount of time you initially specified wasn't enough and you wanted to reset it? Or how many times have you had something sleeping for quite a while but you wanted to know where it was in the sleep countdown? Never? Good you can ignore this. I've found myself in these situations quite a few times when recording a TV show or ripping a live stream from the web. So I wrote the 'resleep' functions (which wrap around 'sleep') below which can then either be included in scripts where you'd normally use sleep by itself, or dotted into your environment and run as commands. It's not polished and I'm sure the logic isn't clean, but it's working for me so far. One thing I still need to add is the ability to pass a time reference to the wrapped 'sleep' command itself so that the "time units" can be something other than "1 second". For example it would be nice to be able to set it to 30 minutes and then three time units would be 90 minutes. But that will come later... For now, enjoy, pick it apart, call me an idiot or tell me how this could be accomplished with 'sleep' if I'd RTFM ( I did).
# 'resleep' is a resettable sleep countdown timer. You specify the initial
# count of time units (in this case seconds). Then if you need more time
# you echo the new time unit count to /tmp/.dtime which resets the count
# to whatever you specify.
echo $1 > /tmp/.dtime
while ((dur > 0))
# cat /tmp/.dtime
echo $countdown > /tmp/.dtime
# The 'setsleep' function is used to reset your time unit count. Example:
# 'setsleep 30' will reset the count to 30 seconds.
# If the countdown is over an error message is presented.
if ! [ -e /tmp/.dtime ]
echo "No countdown file present"
echo "Current countdown: `cat /tmp/.dtime`"
echo $1 > /tmp/.dtime
echo "Reset countdown: `cat /tmp/.dtime`"
# The 'getsleep' function is used to see where you are in the countdown.
# If the countdown is over an error message is presented.
if ! [ -e /tmp/.dtime ]
echo "No countdown file present"
echo "Current countdown: `cat /tmp/.dtime`"
Web Apps Without the Browser Interfering
ASK [/.]: Launching Firefox (2.0) with No Toolbars + URL?
I am going to be making a change here at work so that I no longer use a mail client, but use our web mail system. It may not be ideal compared to running Thunderbird, but I need to learn the web app enough to train users on more advanced features. The only way to do that is to live with the web app every day. My main annoyance with running most web apps (AJAX, Flash, what have you...) is that the browser always has the navigation toolbar, and the bookmarks toolbar at the top which makes any of these things feel less like an app and more like a web page. This is especially fruitless when you're not supposed to use the navigation bar to move around the app.
So what I'd like to do is launch Firefox pointed specifically at the web mail app's URL where it will open in a window with only the bottom status bar showing and nothing else. Ideally, even the menu should be gone. I've seen people do this with pop-up ads, and I imagine that's done on the web server side. But is there any other way to do it? I looked through the firefox command line options and nothing seems to touch on this. I suppose even a local HTML file that is opened by the browser would be good enough, but where do I even start with that? I imagine that would be fairly simple. Any suggestions?
BOOK REVIEW: The Origin of Consciousness (pt. 3)...
I finally got the time to finish reading this large tome. It was worth it. While Jaynes ends the book with no real startling conclusions, he really opens a lot of doors across a lot of subject areas that really do need more exploration. As someone told me in the review of the first book, Daniel Dennet was certainly warranted in calling this book and the theory of the Bicameral mind, "fertile ground".
This last "book" is called Vestiges of the Bicameral Mind in the Modern World. He starts the book off by saying that the shift in the bible from the Old Testament to the New Testament is the reinvention of the beliefs to work with the now more dominant conscious mind. In fact he says, "A full discussion here would specify how the attempted reformation of Judaism by Jesus can be construed as a necessarily new religion for conscious men rather than bicameral men. Behavior now must be changed from within the new consciousness rather than from Mosaic laws carving behavior from without". However, for most of the book Jaynes most obviously avoids touching much on Christianity likely to avoid the controversy. One can extrapolate their own understanding from the bible after having read about the bicameral mind. As I said in my previous review, I don't think any of this is counter to the Christian (or other) faith.
Next he ponders the origins of nearly all developments of post-bicameral human civilizations and how it is possible that they are all the outcome of this new way of the mind: consciousness. He acknowledges that this is out of the scope of his book, but an interesting thought nonetheless. What I found particularly interesting was his one example of how computer science is an extension of greek Logos, or logic. I will pursue this a little further in my next writeup regarding my thoughts on the book overall. He begins to extrapolate from past bicameral echoes in civilization to the last remnants of the bicameral mind today. Prophets, oracles, possession cults, glossolalia (speaking in tongues) and generally any form of entering the unconscious (in a Jaynsian sense) mind.
Another interesting point that he brings up is that when it comes to the separation of the left and the right halves of the brain, women are less lateralized than men. This means that either side of the female brain can perform the processing functions of what would traditionally be done by the opposite side. He notes: "Mental abilities in women are more spread over both hemispheres. Even by age six, for example, a boy can recognize objects in his left hand by feel alone better than his right hand. In girls, both hands are equal. ... And it is common knowledge that elderly men with a stroke or hemorrhage in the left hemisphere are more speechless than elderly women with a similar diagnosis". He suggests that this is why in many cultures figures like the Greek oracles, for example, tend to be female. They are more likely to be able to go into unconscious mental states and communicate with the "god" side of their minds and give voice to that.
For these states of mind to be achieved, unusual surroundings and circumstances are required. The Greek oracles were usually placed in awe inspiring settings and there was an expectation from the people who would approach them asking for wisdom of the gods. The environment and expectations play an important part in attaining the unconscious state. Similarly, with people speaking in tongues, there is the mass belief in the group that is present, that someone amongst them will be given the words from god combined with the spiritual feeling of being in a holy place. You take away the expectations and the environment and these phenomena are much harder to obtain. Another excerpt:
"Since this (unconscious states of mind) is the learning of a now difficult neurological state, so different from ordinary life, it is not surprising that the cues of the induction had to be wildly distinctive and have an extreme difference from ordinary life.
And they certainly were different: anything odd, anything strange: bathing in smoke or sacred water, dressing in enchanted chitons with magical girdles, wearing weird garlands or mysterious symbols, standing in a charmed magic circle as medieval magicians did, or upon charakteres as Faust did to hallucinate Mephistopheles, or smearing eyes with strychnine to procure visions as was done in Egypt, or washing in brimstone (sulphur) and seawater, a very old method which began in Greece, as Porphyry said in the second century A.D., to prepare the anima spiritalis for the reception of a higher being. All of these of course did nothing excpet as they were believed to do something -- just as we in this latter age have no 'free will' unless we believe we have".
By chapter three we are now looking at music and poetry as remnants of the bicameral mind. His opening questions are quite interesting in the context of the rest of his book:
"... And why, particularly in times of stress, have a huge proportion of the readers of this page written poems? What unseen light leads us to such dark practice? And why does poetry flash with recognitions of thoughts we did not know we had, finding its unsure way to something in us that knows and has known all the time, something, I think, older than the present organization of our nature? ... I shall state my thesis plain. The first poets were gods. Poetry began with the (gods of) the bicameral mind. The god-side of our ancient mentality, at least in a certain period of history, usually or perhaps always spoke in verse".
We are then informed of the connection between poetry, music and the ancient sacred reading of poems. Ancient poetry was read in a more musical way. Not sung, but certainly with a maintained rather than random inflection. To try and make a more scientific connection of poetry and song to the bicameral mind, he goes back to the established point that speech (for most right handed people) is a function of the left hemisphere of the brain. Song, however is a function of the right hemisphere. He cites some interesting examples such as:
"It is common medical knowledge that many elderly patients who have suffered cerebral hemorrhages on the left hemisphere such that they cannot speak, can still sing.
The so-called Wada Test is sometimes performed in hospitals to find out a person's cerebral dominance. Sodium amytal is injected into the carotid artery on one side, putting the corresponding hemisphere under heavy sedation but leaving the other awake and alert. When the injection is made on the left side so that only the left side is sedated and only the right hemisphere is active, the person is unable to speak but can still sing. When the injection is on the right so that only the left hemisphere is active the person can speak but not sing".
He cites quite a few examples beyond this, but I am only quoting the two above for brevity. He uses these examples, the fact that ancient poetry was closer to singing than speaking to support his notion that the inner voices of the "gods" of the bicameral mind were largely a right brain activity.
Another notable statement of his in the third chapter is that humans are mentally predisposed to focus intently on things that stimulate Wernicke's area on the right hemisphere of the brain:
"...children who were fidgeting or crying stop doing so at the sound of music, but also they smiled and looked straight ahead, turning away from the mother's gaze, even acting as we do when we are trying to avoid distraction. This finding has immense significance for the possibility that the brain is organized at birth to 'obey' stimulation that corressponds to Wernicke's area on the right hemisphere, namely the music, and not be distracted from it, even as earlier I have said that bicameral men had to obey hallucinations from the same area". One of my personal beliefs after reading this book is that the "ear wig" (ie. the song you can't get out of your head no matter how much you want to) is another aspect of this. Or, at the very least, it's a potential way to explain the phenomena. It also makes me wonder whether or not people who don't experience "ear wigs" are "more conscious that those who do? I've certainly noted a correlation between people who are more intellectually conservative and the specific statement saying, "That never happens to me. I have no idea what you're talking about". But that's more topic of discussion for my follow-up...
Near the end of chapter three he makes another interesting statement regarding consciousness which I think explains the tendency towards intellectual arrogance in people:
"Consciousness imitates the gods and is a jealous consciousness and will have no other executives before it".
Pointing to the many facets of civilization that he mentioned in the earlier parts of the book, he provides a few examples of consciousness as expressed within literature, laws, conventions, etc... all strive to eliminate any other form of authorization of action. That is to say, that as humans attempt to find authorization for their actions (since there is no longer a voice in their head telling them what to do) any deviation to something that is the opposite of modern consciousness is disparaged and abandoned.
In chapter four he discusses hypnosis as another vestigial expression of the bicameral mind. His thought is that in order for hypnosis to work, it is necessary to enter an unconscious (again in Jaynes' terms) state of mind. This, he believes, is one of the major components of the bicameral mind, accepting authorization of action without question. Combine this with the internal directives being issued by hallucinated voices and you have the ideal situation for bicameral humans. He notes the hypnosis is the "black sheep" of psychology since it is quite difficult to quantify exactly what is happening. However, in the context of the bicameral mind theory, hypnosis is much more easily explained when it's seen as a vestige of that ancient mentality. In the relationship between the hypnotist and the subject, the hypnotist is taking the place of the bicameral gods. And while under hypnosis, the subject appears to give over complete control to the hypnotist. Of course, there are many anecdotal discrepancies which indicate that the state of mind in hypnosis is not purely unconscious. It is certainly a willing submission to the state.
In this chapter is also becomes a lot clearer that much of what Jaynes has been attempting to explain is the quest for "authorization". The answer to "why" it is that we do what we do in every facet of life. A big question really, and Jaynes' explanation seems to be that when humans were bicameral, the "why" was given to them by the voices of their gods. Once that was lost (and in nearly every kind of religious literature there are lamentations of the loss of hearing god) and consciousness took the place of the internal directives, humans started on their quest for an authority who would tell them how and why they must do things.
In chapter five he finally returns to schizophrenia as another possible vestige of the bicameral mind. In short he believes that the brain is still hardwired in many of us for the bicameral mentality, but that culturally, such behavior is discouraged. For one example, imaginary friends that children experience, are largely put aside by our culture as childish and unproductive. So, when someone falls victim to schizophrenia, it's obvious why this is such a huge problem. To be clear, he really isn't saying that there's anything about schizophrenia that can be taken lightly. Early in the chapter, he tries to explain what he believes is happening when someone has schizophrenia in terms of a framework. He talks about the loss of the analog "I" that we all have (that is, how you imagine yourself within your mind) when a schizophrenic has an episode. Accompanying this is the loss of the mind-space in which your analog "I" exists. And there is also the loss of the spatialization of time. The entire world, for a schizophrenic, ceases to be distinguishable from internal hallucination. So why would these traits still occur in an individual from time to time? Here is a bit of what he has to say on the matter (in the section called "The Advantages of Schizophrenia"):
"A curious heading, certainly for how can we say there are advantages of so terrifying an illness? But, I mean advantages in the light of human history. Very clearly, there is a genetic basis to the biochemistry underlying this radically different reaction to stress. ... What biological advantage did it once have? ... The answer, of course, is one of the themes I have stated so often before in this essay. The selective advantage of such genes was the bicameral mind evolved by nature and human selection over the millennia of our early civilizations. The genes involved... are the genes that were in the background of the prophets and the 'sons of the nabiim' (mentioned in the second part of the book as recorded in the bible) and bicameral man before them".
Two other "advantages" are tirelessness and much more acute sensory perception: "...they show less fatigue then normal persons and are capable of tremendous feats of endurance". And. "Indeed, schizophrenics are almost drowning in sensory data. They seem to have a more immediate and absolute involvement in their physical environment, a greater in-the-world-ness. Schizophrenics fitted with prism glasses that deform visual perception learn to adjust more easily than the rest of us, since they do not overcompensate much".
As a final note in the chapter he warns that there are many many competing theories about schizophrenia and all of them are self-defeating once you step into the realm of a competing theory. He then admits that he is merely adding another theory to the large pile of theories that have come before. And he makes it clear that bicameral humans were not schizophrenics, they merely had some traits in common.
In the final chapter of the third book, called "The Augeries of Science" he starts off by summing up and recounting the most important points of his theory and then ends by applying somewhat of a light hearted attack on the methods of science itself, based on it's shared origins with what many today see as it's rival, religion. My favorite section in this chapter is the following (long quote follows) on politics, science and superstition and the origins of beliefs. He calls this solidification of concept, "scientisms":
"That nutrition can improve health both of mind and body is true. The class struggle as Marx studied it in the France of Louis Napoleon was a fact. The relief of hysterical symptoms in a few patients by analysis of sexual memories probably happened. And hungry animals or anxious men certainly will learn instrumental responses for food or approbation. These are true facts. But so is the shape of a liver of a sacrificed animal a true fact (to divine a secret knowledge within it's context). And so the Ascendants and Midheavens of astroologers, or the shape of oil on water. Applied to the world as representative of all the world, tacts become superstitions. A superstition is after all only a metaphier grown wild to serve a need to know. ...
Science then, for all it's pomp of factness, is not unlike some of the more easily disparages outbreaks of pseudoreligions. In this period of transition from it's religious basis, science often shares with the celestial maps of astrology, or a hundred other irrationalisms, the same nostalgia for the Final Answer, the One Truth, the Single Cause. In the frustrations and sweat of laboratories, it feels the same temptations to swarm into sects, even as did the Khabiru refugees, and set out here and there through the dry Sinais of parched fact for some rich and brave significance flowing with trust and exaltation. And all of this, my metaphor and all, is a part of this transitional period after the breakdown of the bicameral mind.
And this essay is no exception.
* * *
His final closing statement of the last book in the set is that ever since the definitive switch from bicameral to conscious minds (which didn't happen overnight) humans have had a longing for a lost "golden age". Looking back to a time when things were better. He, again, suggests that this longing is an echo of the transition from bicameral to conscious humans. A time when authorization of action was not a constant pursuit. A time when all was clear simply because man had no internal motivation. His final analysis applies this idea to much of what has motivated humankind for many millennia. Our quest for betterment, knowledge and mastery of our environment is simply the desire to return to a mythical time when things were perfect. (The Garden of Eden is one of the strongest representation of this sort of perfection)
My overall impression of the book is that it's well worth the effort to read if you are interested in this sort of thing. It's also given me some more ways of looking at things which makes life a bit more interesting. Especially in the way that the bicameral theory is quite easy to fit as an explanation for many human behaviors. Again, if you're the sort of person who people watches and likes to introspect as the reason people behave as they do, this book is your ideal companion. As I mentioned in the review of book two, I liked this book so much that I wound up buying my own copy. I wholeheartedly encourage anyone interested by the review to try and locate a copy to read. Fun book! :)
BOOK REVIEW: The Origin of Consciousness (pt. 2)...
(NOTE: I started writing this review about two weeks ago and it was written in short spurts while on my bus ride to work. So if it's a bit disjointed that's why. Hopefully, I'll get a bit more time when I write the review on book three.)
Where to start? This second part of the book was a lot harder for me to get through. It was densely packed with history, which I must admit to always having found a bit dull. That's just a personal quirk of mine. Still, I love the book thus far. I can't wait to finish book three so that I will have taken the whole thing in. Part of the reason I haven't been able to go though book two (The Witness of History) as quickly is that I had to prep for part of last month for a public speaking engagement. That took more time than I expected. Nevertheless, I just finished book 2 on the way home tonight. For the purposes of review, let's simply accept what Jaynes is proposing about bicamerality as a known fact. I'm not saying I believe his ideas 100%, I'm just saying it's easier for me to write the review from that perspective simply to get the information across. On with the review...
In the first chapter of book two, we start with a focus on the origins (graves and the dead) and importance of idols in bicameral civilizations. Jaynes suggests that idols were triggers for the bicameral human hallucinations, which is why they were so prevalent. In many early human civilizations, the idols are everywhere. In homes, architecture and even hidden in the construction of the homes. Most of book two's focus is on Mesopotamia and Egypt as the primary examples of bicameral civilizations and their shift to conscious civilizations. But he does touch on other civilizations as well.
To explain a little bit about where Jaynes believes that idols came from, I'll need to mention that he believed that bicameral humans heard and saw hallucinations that they believed were gods. Many times the appearance or voice of these gods looked or sounded like friends, relatives, or even dead people that the person knew well. He also states that if there were similarities between schizophrenia and bicamerality, that the hallucinations would have occurred mostly during stressful times. What could be more stressful than the death of someone close to you? So he believes that people who had a recent experience of losing loved one would likely be more prone to hallucinate the voices and images of those loved ones.
Throughout the later portion of book one, he explains that many early writings have the gods taking on the appearance of dead relatives and friends. So in this occurrence, many ancient cultures believed that the dead become like gods. As an example he talks about the burial houses of Eynan. One of the earlier examples of this shift to burial within a building. It is at this point that the dead are transformed from mere corpses into the proto-idols that lead to the development of intricate idolatry. The pervasive presence of these idols in the bicameral civilizations leads us to the notion that they served a much more important purpose than religious statuary. Jaynes believes the idols were instrumental in the encouragement of bicameral hallucinations. They were reminders of the authority of the god hallucinations and gave bicameral humans a motivation that they otherwise lacked.
Jaynes discusses early formal human graves (Eynan was discussed in the last few pages of book one in detail) and how they were usually a building in which the dead were propped up and taken care of. The dead would be given all the comforts of the living. Jaynes surmises that this was done by bicameral humans because they still experienced visions and voices of the dead. Indeed the dead had become godlike. Initially this type of burial was performed as a standard for anyone. However when they experienced the hallucinations of their dead which led them to believe that their dead had become gods, the nature of the buildings changed over a few generations. These burial houses became the "house of god". Today those words are still used to describe places of worship. Thus the rise of early religions were closely tied in with proto-idols and bicameral hallucinations. (NOTE: I realize this is quite controversial for people who are religious. It does not have to be mutually exclusive to faith.)
One of the more interesting excerpts from book two in the early portion was the potential explanation of how a strong and dominant culture like the Incas, who had conquered and ruled their land to great effect could be easily overtaken by a small group of men from a different culture. He suggests that this was a meeting between bicameral and conscious civilizations:
"It is possible that it was one of the few confrontations between subjective and bicameral minds, that for things as unfamiliar as Inca Atahualpa was confronted with -- these rough, milk-skinned men with their hair drooling from their chins instead of from their scalps so that their heads looked upside down, clothed in metal, with avertive eyes, riding strange Llamalike creatures with silver hoofs, having arrived like gods in gigantic huampus tiered like mohican temples over the sea which to the Inca was unsailable -- that for all this there were no bicameral voices coming from the sun, or from the golden statues of Cuzco in their dazzling towers. Not subjectively conscious, unable to deceive or narratize out the deception of others, the Inca and his lords were captured like helpless automatons. And as it's people mechanically watched, this shipload of subjective men stripped the gold sheathing from the holy city, melted down its golden images and all the treasures of the Golden Enclosure, it's fields of golden corn with stems and leaves all cunningly wrought in gold, murdered it's living god and his princes, raped its unprotesting women, and, narratizing Spanish futures, sailed away with the yellow metal into the subjective conscious value system from which they had come. It was a long way from Eynan".
Another interesting comment on the Incas and Spaniards later in book two is a quote from something written by one of the Spaniards in a book about the conquest. He wrote of their idols and how they listened to their voices. He claimed it was the work of the devil as that was the only way he could interpret these indigenous people who paid great attention to their idols. Here is the quote that he included from "The Conquest of Peru":
"... it was a thing very common and approved at the Indies, that the Devill spake and answered in these false sanctuaries ... It was commonly in the night they entered backward to their idoll and so went bending their bodies and head, after an uglie manner, and so they consulted with him. The answer he made, was commonly like unto a fearefull hissing, or to a gnashing which did terrifie them; and all that he did advertise or comment them, was but the way to their perdition and ruine".
Introduced in the second chapter of book two and probably the most interesting portion of book two for me is the origins of written language. As we progress through different bicameral civilizations, he returns to his original statement that written language was the catalyst that resulted in the breakdown of the bicameral mind. No longer was it necessary to have these voices in their heads to tell them what to do and how to do it. They now had pictograms in uruk, hieroglyphics in Egypt, cuneiform in Mesopotamia. The progression from the initial representation of visual events to symbols that represent phonetic events is a very very important development. He points to the fact that picture based languages can only tell someone of something they already know (think about the standard icons for play, pause and stop on VCRs, media players and the like. If you don't know what they mean, they mean nothing). When we get to real written languages however, it is now possible to communicate information to the reader that he doesn't know. This shift to written language now gives humans a place to put down the processes, rules and laws that they need to guide them. Many of the earliest writing turn out to be very detailed manifests of who is responsible for what in a city, or inventories of resources. And of course the earliest human laws, the Code of Hammurabi. Jaynes suggests at one point that the reason that the word for "speak" is used in the Code is that these laws came from bicameral voices that were originally perceived as spoken. As such, it is likely in Jaynes' opinion that the written language still triggered auditory hallucinations in the bicameral humans of the time.
Slowly through book two we are taken from the state of bicamerality to a short period of people who were somewhere in between, and eventually to subjective consciousness. Along the way, there is much lamenting in all of these civilizations of their gods abandoning them. They no longer see or hear from their gods. There is also intimation of the the possible "generation gap" between those who are still bicameral and those who are becoming conscious. To illustrate this point he refers to Hesiod. He complains about his foolish brother Perses who refuses to do the will of the gods. Why would he if he does not hear the voices but instead has an internal motivation that doesn't need to follow any imagined gods?
As consciousness in humans develops along with written language, the tone of the writing changes from mere directions, lists and procedures, to that of more complex thought. Those changes are evidences by expressions that start to value the character and trustworthiness of an individual being written about. Something that would not be possible to even contemplate in a bicameral mind. And with these changes, the passage of time also begins to be recognized. Time becomes "spatialized" as humans begin to see the importance in documenting past events. This is the dawn of written history. As one can see, written language is the epicenter for many of humanity's developments. While that's pretty obvious on the surface, the effects on how humans think is far more subtle.
He spends the majority of chapter five focusing on words used in the Illiad which were interpreted by scholars to mean things similar to various emotions or feelings. However, Jaynes outspokenly indulges in re-interpretations of the meaning of these words in the context of bicamerality. In redefining these words, he redefines the culture that the Illiad arose from to be in line with his theory. This might be why his theory was not so well accepted by academia (among other reasons). However, if you keep your mind open to the possibility of his theory being correct it gives you a whole new starting point to look at Illiad, Odyssey, Hesiod and others.
I won't go into much more detail about book two other than to say it was essential to understanding the breakdown of the bicameral mind. We learn of the invention of written language (which I must admit is more fascinating than I would have suspected), the discovery of introspection, the creation of the concept of love, the invention of the soul and many other more esoteric and lofty ideas about what makes us ourselves. I apologize for this rather quirky review, but time was short and I promised myself I wouldn't read book three until I finished this review. Since I'm itching to finish the book, I'm itching to finish this review too! :) I hope that I will be able to do book three a bit more justice. As an aside, I should note that I loved the book enough so far to purchase my own copy from Amazon. I think it's a book I will probably return to for some ideas in the future.
Once I'm done reviewing the third book, I plan on possibly writing up something about the thoughts it inspired in me regarding further possible changes in the way humans think and what that means for humanity in future generations.
BOOK REVIEW: The Origin of Consciousness...
Title: The Origin of Consciousness in the Breakdown of the Bicameral Mind
Author: Julian Jaynes
This book is a big one for me... literally (446 pages excluding the after word). It's actually comprised of three books in one. Jaynes had intended on writing four separate books, but wound up putting three of them together into one. He was to write the fourth book later, but never got around to it before passing away, which is a shame since I think he's onto something. Seeing that the book is pretty big, I'll be reviewing the three sections he called "books" in three individual reviews. This review will be about Book 1: "The Mind of Man".
I found a reference to this book while reading an interesting article on languages. It was written in 1976 and originally quite controversial. Jaynes posited that human consciousness is a relatively recent trait of humans. As recent as 3000 to 3500 years ago. This book was not well received by academia mainly because he touches on subjects that are far outside of his native discipline (psychology). Origin (as I will refer to it henceforth) touches on history, philosophy, psychology, linguistics, and anthropology. A few other "ologies" are thrown in for good measure too.
He starts off with the introduction which is called "The Problem of Consciousness". In this part of the book he takes on all the theories which mankind has worked through to ascribe consciousness as an innate part of man and to try and say what consciousness actually is: consciousness as a property of matter, consciousness as a property of protoplasm, consciousness as the natural outcome of learning, and consciousness as a metaphysical imposition just to name a few. With each of these, he meticulously explains why these views may not be or possibly are not true. Just for an example (a weak one to start off with), he states, regarding consciousness as learning: "And hence a third solution, which states that consciousness began not with matter, nor at the beginning of animal life, but at some specific time after life had evolved. It seemed obvious to all the active investigators of the subject that the criterion of when and where in evolution consciousness began was the appearance of associative memory or learning. If an animal could modify its behavior on the basis of its experience, it must be having an experience; it must be conscious". He then recounts his experiments as a student (and the works of others) with signal learning when he worked with plants and then later protozoa to try and train them with stimuli. He believed at the time that if he could induce learning in these simple organisms, that would prove they were capable of consciousness.
Regarding this he says, "Ridiculous! It was, I fear, several years before I realized that this assumption makes no sense at all. When we introspect, it is not upon any bundle of learning processes, and particularly not the types of learning denoted by conditioning and T-mazes..." Why is this an incorrect assumption? The error "...was, and still is, that consciousness is an actual space inhabited by elements called sensations and ideas, and the association of these elements because they are like each other, or because they have been made by the external world to occur together, is indeed what learning is and the the mind is all about. So learning and consciousness are confused and muddled up with that vaguest of terms, experience".
In spite of a few parts that may seem weak, he persists in the remainder of the introduction and if you keep your mind open to it, you can see where he's coming from. A lot of it makes sense. His end goal with me was accomplished and is summed up by the closing words of the introduction, "We must therefore try to make new beginning by stating what consciousness is. We have already seen that this is no easy matter, and that the history of the subject is an enormous confusion of metaphor with designation. In any such situation, where something is so resistant to even the beginnings of clarity, it is wisdom to begin by determining what something is not. And that is the task of the next chapter.
At this point I was hooked and went onto the first chapter of Book 1 called "The Consciousness of Consciousness". This chapter is quite like the introduction, but instead of trying to work through all the things that people have used to describe consciousness as an unquestionable requirement in humans, he takes the reader on a quest to discover just how many of the things we do day-to-day are not conscious activities no matter how mentally involved they may be. Just as the introduction did he has sections such as: "Consciousness Not Necessary for Concepts", "Consciousness Not Necessary for Learning", "Consciousness Not Necessary for Thinking" and my personal favorite "Consciousness Not Necessary for Reasoning".
A few small excerpts from, Consciousness Not Necessary for Reasoning: "Reasoning and logic are to each other as health is to medicine, or --- better --- as conduct is to morality..." "...Logic is how we ought to think if objective truth is our goal --- and the everyday world is very little concerned with objective truth..." "...My point here is that for such natural reasoning to occur, consciousness is not necessary. The very reason we need logic at all is because most reasoning is not conscious at all".
Then he presents an example: "A boy having observed on one or more past occasions that a particular piece of wood floats on a particular pond, will conclude directly in a new instance that another piece of wood will float on another pond. There is no collecting together of past instances in consciousness, and no necessary conscious process whatever when the new piece of wood is seen directly as floating on a new pond. This is sometimes called reasoning from particulars, and is simply expectation based on generalization..." "...Such reasoning is the structure of the nervous system, not the structure of consciousness".
As a juxtaposition against the introduction where we were told what consciousness is not a property of, this section gets you prepared to accept that many of the things that we view as indicators of consciousness are in fact completely non-conscious activities. My favorite quote from this chapter is regarding reason and logic: "Surely, we exclaim, this cannot be true of the highest processes of intellectual thought! Surely there at last we will come to the very empire of consciousness, where all is spread out in a golden clarity and all the orderly processes of reason go on in a full publicity of awareness. But the truth has no such grandeur. The picture of the scientist sitting down with his problems and using conscious induction and deduction is as mythical as a unicorn".
Chapter 2 is called "Consciousness" and he begins to focus on language, specifically written language, as being a requirement for the the start of consciousness in humans. The very first section of this chapter is about metaphor and how most of the words in any language, if you dig far back enough started out as metaphors. Essentially, when new concepts are introduced, the best way to convey the new concepts is via metaphor. He provides a series of examples and then works up to the idea that metaphor is really the "language of the mind". As he progresses he becomes more specific about language and how the concepts of "I" and "me" fit into our existing experience with consciousness. There is a lot of bouncing back and forth between the history of languages and human consciousness today with the linking entity being metaphors. This chapter is certainly even more information dense than the introduction or the first chapter.
It is in the third chapter that we start getting to why he supposes that consciousness arose in humans 3000 to 3500 years ago when written language first began to appear. He starts by using Homer's The Illiad as some of his supporting evidence: "There is in general no consciousness in the Illiad. I am saying 'in general' because I shall mention some exceptions later. And in general therefore, no words for consciousness or mental acts". He uses the lack of internal motivation in all characters as another piece of evidence. The characters are only made to do things at the whim of the gods: "When, toward the end of the war, Achilles reminds Agamemnon of how he robbed him of his mistress, the king of men declares, 'Not I was the cause of this act, but Zeus, and my portion, and the Erinyes who walk in darkness: they it was in the assembly put wild ate upon me on that day when I arbitrarily took Achilles' prize from him, so what could I do? Gods always have their way.' (19:86-90). And that this was no particular fiction of Agamemnon's to evade responsibility is clear in that this explanation is fully accepted by Achilles, for Achilles is also obedient to the gods".
Just after this point, Jaynes finally gets to the meat of the theory behind Origin. He suggests that the point of view that all men in the Illiad are driven by "the gods" and no sense of individual motive at all was not a mere poetic device. Instead he suggests that at this point in human development most humans were in fact experiencing visual and auditory hallucinations which they perceived as gods. These hallucinations were essential to humans at this time to allow them to function day to day. To give them guidance and structure. This is what he calls the Bicameral mind: "In distinction to our own subjective conscious minds, we can call the mentality of the Myceneans a bicameral mind. Volition, planning, initiative is organized with no consciousness whatever and then 'told' to the individual in his familiar language, sometimes with the visual aura of a familiar friend of authority figure or 'god', or sometimes as a voice alone. The individual obeyed these voices because he could not 'see' what to do by himself".
The purpose of the auditory and visual hallucinations, according to Jaynes, has a physiological basis. He describes the physical structures of the brain and how the left and right hemispheres are joined together by the central commisures. His point is that the vastly larger number of neurons firing on either side of the brain need some efficient way to communicate information to the other hemisphere. After explaining the power of auditory stimuli and how it cannot be shut out, especially if emanating from within and then moving onto auditory and visual hallucinations, he suggests that these experiences are the communications protocol between both halves of the brain.
In a sense, if you look at it from today's computer science and telecommunication fields, hallucinations (if Jaynes is correct) are a form of data compression for both halves of the brain to exchange information. Or at least they were, for the bicameral man. The need for these hallucinations to provide structure and organization in humans went away when consciousness began and humans could begin to function as individuals. Of course, he doesn't believe this happened right away and suddenly everyone was conscious. He believes that this happened over a long period of time and that there are still lingering elements of bicameralism in humans today. He looks at the limited studies of the day on schizophrenics and the voices and visions they experience.
After making this bold statement, he then walks through a few assumed counter-responses and provides his answer why he believes these arguments against him are incorrect. At one point in the chapter he also points to the greek gods in the Illiad and their limitations. They are not supernatural. They are limited by the laws of the natural world. They cannot create anything out of nothingness. They are not at all like the Hebrew god.
The remaining three chapters in Book 1 flesh out the rest of his reasoning as to why he came to his conclusion about humans living without consciousness. He writes more on the origins of language, the experience of modern day schizophrenics (and even a controversial statement that their voices may not be a negative in some cases), his views on how and when language arose, the development from crude burial rituals to religions and then eventually when and why consciousness happened in humans. This all leads up to Book 2 which I will be reviewing when I finish it.
So far, I've enjoyed this book quite a bit. Partially because it pokes holes in well established and very sound beliefs, but also because it's a fascinating prospect and fairly well thought out. Sadly, even with it's current length just for Book 1, my review really can't convey the huge amount of information that is in the book. This is why I decided to break the review up into three parts as I complete each Book. I felt that this would be the only way to even partially express what he does in the book and give it fair shot.
The book was apparently a pretty big hit when it was released originally. I was too young to have known or cared so I'm coming to the party a bit late. When I looked it up on Wikipedia, apparently the book is quite popular with a few people I respect. The most notable being the cyberpunk author, Neal Stephenson. Supposedly a few ideas from Jaynes pop up in Stephenson's "Snow Crash". It's been over a decade since I read that so I can't say I remember any of that, but it wouldn't surprise me. Jaynes' book is really very information dense. It's not a light read either, but it's compelling one.
Up Next: "The Origin of Consciousness in the Breakdown of the Bicameral Mind (Book 2)"
BOOK REVIEW: In Defense of Food, An Eater's Manifesto
Author: Michael Pollan
As promised, I will be reviewing the book, as I will call it, "In Defense". Before getting to the review though, I want to point something out. It's probably relatively unlikely that I'll post many reviews of "bad" books since my reading time is limited, I'm a slow reader, and so I choose books that are very likely to be of high interest to me. If they "suck" within the first few chapters, I'll probably not continue to read them unless I have a really vested interest in the subject matter or storyline. Onto the book...
My overall feeling while reading the book is that the author *may* be a libertarian. I should say that there are many points on which I agree with libertarians. It's just that there are some fundamental principles on which I vigorously disagree with them on and as we all know... "that's OK" on both sides if we're being sane and civil. The only reason I bring this up in the review is because Pollan definitely seems to have a distrust of nearly any authority, but still grudgingly uses their data when it applies. Again, this is not necessarily bad since his entire goal is to completely flip the reader's perspective away from a lifelong acceptance of the western diet as completely fine.
He starts out the book, right on the cover in fact, with his personal eating policy: "Eat food, not too much, mostly plants". While that might sound fairly obvious and basic, it's a policy he formed on his own based on a lot of reading and research. So who is Michael Pollan and what gives him the authority to write this book? He's not a doctor, scientist or nutritionist. He's a journalist with a personal interest in diet. He even briefly touches on this fact in the book just to point out that while there are many authorities on diet in different fields, the fact that the western diet has been linked to the "western diseases" since the 19th century has failed us. The western diseases are; heart diseases, cancer, obesity and diabetes.
He points out that the very people who have been largely responsible for creating and shaping the western diet, even today, do not have enough knowledge about dietary needs and how food really works. There is even a statement that nutritional science today is where surgery was in ancient Greece. He said that he probably would not have wanted to get an operation performed by ancient Greek surgeons, so why would he want to eat a diet created by an industry that is at a similar level of understanding? I didn't forget to say that he doesn't really trust authority much , did I? Silly comments aside, he actually may have a point and his book goes a long way to communicating it.
The book is broken up into three sections: The Age of Nutritionism, The Western Diet and the Diseases of Civilization, and Getting Over Nutritionism. In the first section of the book he talks about "nutritionism" which is a term that was coined in 2002 by Australian sociologist, Gyorgy Scrinis. The somewhat nebulous definition is, that nutritionism is the view of food as the sum of it's nutrient parts rather than as a whole. A more general way of putting it, is that you don't look at all the possible interactions of every component in a food item, but only focus on the known components. The reason this is argued to be negative is illustrated with the story of margarine and the transfat debacle: "...in a 2002 essay entitled 'Sorry Marge' published in an Australian quarterly magazine called Meanjin. 'Sorry Marge' looked at margarine as the ultimate nutritionist product, able to shift it's identity (no cholesterol! one year, no transfat! the next) depending on the prevailing winds of dietary opinion. But Scrinis had bigger game in his sights than spreadable vegetable oil. He suggested that we look past the various nutritional claims swirling around margarine and butter and consider the underlying message of the debate itself: 'namely, that we should understand and engage with food and our bodies in terms of their nutritional and chemical constituents and requirements--the assumption being that this is all we need to understand".
Pollan spends a good deal of the book in part one pointing to many many studies from the 19th, 20th and 21 centuries, some less well known scientists (who even Pollan asserts have some crackpot beliefs) and plenty of cultures who don't follow the western diet and where the western diseases are nearly unknown. A few of the intriguing bits of information he passes along really captured my interest. For example, at one point he mentioned a few things as an illustration of just why it is that he says nutritional science is primitive. One of those things was a list of all the known chemicals (nutrient or not) in Parsley. He states that nutritional science and the food industry would only single out the carotenes as being the beneficial components of Parsley. Based on that, were they to market a product that contained Parsley and assuming that Parsley became a new nutritional fad (my example not his) the focus would be solely on Carotenes since that is one of the only nutrients that they know well. True or not, they would make astounding healthy claims just to move product, based on arguably faulty science. The startling thing is that all the chemicals in Parsley is actually a pretty long list. It is foolish to assume that only the Carotenes have any value since we don't know what it is about the Carotenes or something else entirely in Parsley as a whole that is beneficial.
Another example he mentions is that most people are not aware of the fact that the GI tract has a large bundle of sensory nerves within it that no one is really sure of the purpose of. (I'd have to check that one deeper to feel confident in stating it as fact) He suggests that if we don't know how food possibly interacts with those nerves, then how can we really have enough science to create safe synthetic food stuffs? Indeed, that is where we are today. The majority of the food stuff that we accept as "food" isn't really food at all. It's mostly made of materials that are highly available (corn, wheat, rice, soy beans) and then "fortified" with unnatural nutrients that the faulty science of nutritionism claims are essential to survival.
There is the example of the quiet 1973 repeal of a fairly important law that the food industry worked hard at eliminating. There used to be a law that any foods that were not natural and were made of chemicals and synthetics had to have the word "Imitation" on the package. The food industry never liked this distinction because it turned consumers off at the thought of buying something that's an imitation. The industry felt that this made their products look inferior next to the "real thing". But, once this law was removed, it opened the door for the food industry to be able to create anything out of chemistry and call it by a natural food name. From there the state of things quickly progressed downhill and our food supply is laden with artificial food stuff masquerading as food. (I know... some of it is damn delicious too.) One example he cites is a particular Sara Lee bread that is 'whole wheat' but 'white'. It is filled with a ton of chemical that really have no business being in a real loaf of bread at all. One of them struck me personally as particularly heinous: a yeast growth enhancer. After what I went through due to a systemic yeast infection back in the 90s and all the hard work I did to get away from yeast and the problems I had, the fact that some of the food I was eating in my 20s may have had this growth enhancer makes me quite suspicious.
He starts section two off with a story about a study done on some Aborigines. The subjects were living on the western diet and had been for some time since leaving their tribal lands. All of them were suffering from type two diabetes. The researchers simply had them return to their tribal homelands and go back to their tribal diet for about seven weeks: "O'Dea drew blood from the Aborigines and found striking improvements in virtually every measure of health. All had lost weight (an average of 17.9 pounds) and seen their blood pressure drop. Their triglyceride levels had fallen into the normal range. The proportion of omega-3 fatty acids in their tissues had increased dramatically. 'In summary', O'Dea concluded, 'all of the metabolic abnormalities of type II diabetes were wither greatly improved (glucose tolerance, insulin response to glucose) or completely normalized (plasma lipids) in a group of diabetic Aborigines by a relatively short (seven week) reversion to traditional hunter-gatherer lifestyle".
He then goes on to the subject of a dentist named Weston Price who had noticed during WW I that the incidence of tooth decay in many non-western cultures was very small compared to westerners. He took that observation and over years of study came up with some very interesting ideas about food production. One thing that he believed was that the science being used for fast and voluminous food production was actually lowering the quality of our food. Price asserted that by feeding our plants just the basic three nutrients, and encouraging fast growth, we were stunting the nutritious value of the food. Roots that don't grow deeply enough into the soil won't absorb as many of the nutrients that come from plants that grow more slowly. Plants that grow from the three basic chemicals (which I can't recall at the moment... only Potassium and Nitrogen come to mind) are missing many other nutrients. Price's eventual conclusion was that we should not be looking at plants as individual items, but that we should be looking at food production and nutrition as an entire ecological system including us as part of it.
He even suggested that by feeding the animals we eat with these stunted foods and inappropriate foods, that we were growing lesser livestock. Livestock that are not as nutritious for us. Pollan takes it further by pointing out that today, we feed our animals grain, where as truly free range animals (not on a farm) eat leaves as well. In a later section of the book he makes the argument that going from leaves to seeds is one of the major shifts in the western diet that may be one of the worst aspects of it. Especially in light of the negative properties of grains like corn when over-ingested. Corn is very high in omega-6's. Omega-6s apparently do nearly the opposite for us that omega-3s do...
Finally in section three he gets on to the question of what to do to get away from the western diet without being a "hunter-gatherer". He agrees that it's impractical and unrealistic to be able to eat and live in a primitive way. So in the last and shortest part of the book he builds up to explaining his personal eating policies. He starts with the one that's on the cover of his book. By "Eat food", he means eat foods that can't be synthesized in a lab. Even more to the point, foods that grow on trees or in the ground. By "Not too much" he means to control our portions, and the speed with which we eat. Earlier in the book he also encourages bringing back the social aspects of eating which are not present in today's typical dinner at home for the westerner, but are still a big part of other non-western diets. By keeping our home meals a social activity for family and friends, we will also slwo down the pace with which we eat, which will signal satiation a little sooner than just gobbling a plate down. That will result in eating "not too much". And by "Mostly plants", he expands on this and emphasizes the "mostly" part. He says that important because it allows for you to eat some things that aren't plants every so often. Again, in reading the book I see "mostly plants" as being even more specific and equating to plants that are leaves.
This is only a very very minuscule sampling of what is in the book. There are a lot of very interesting and intriguing facts and statements about food stuffs and how they affect us in so many ways. The book is densely packed with information about the food industry that many of us are just unaware of. It also has examples of other cultures and how their diets might be "high fat" or "high carb" but they don't exhibit the problems that people on the western diet do. It's not really a diet book at all. It almost feels like a very extended version of a 20/20 "expose" from the 80s but of a higher caliber. Definitely a very fascinating read and one that I mostly take to heart.
The one criticism I would level at the book is that his apparent distrust of authority forces him to throw out the baby with the bathwater, so to speak. I don't think a lot of the knowledge of the facts in his book would have been possible without some of these authorities. He does acknowledge that, but he also goes a little overboard in discounting certain aspects of the food production, nutrition, and medical professions. Sure, I am pretty convinced that since profit motive is the main driving force behind the food industry, it stands to reason that some less than perfect food stuffs may be on the market because they're cheap to make in high quantities and very popular. But I also think that some, not all, of the advances are positive. I do agree, however, that the western diet is not really the best one for human beings. Personally, I've been tightening up my diet as I've been hit with various illnesses here or there since my early 30s. With my recent bout of illness and other health issues, I'm looking back at my diet again to see what else can change. Even with some flaws in his book, it's still a decent guideline to developing your own personal eating policies. If there's no other reason to read the book, at least consider looking at it for the bits of 'insider information' on the food production industry. It's your right to know where the food you ingest is coming from.
BOOK REVIEW: A Framework for Understanding Poverty
Author: Ruby K. Payne, Ph.D.
Now that I'm on the bus about 98% of the time instead of driving, I've been gifted with some extra time to read real books. Taking advantage of that, I've blown through about five books (I'm a slow reader, but I have very good retention because I try to really sink the stuff into my brain) since January. I'm going to be posting a few reviews of the books because I've really enjoyed them. Let's get onto the review that is pertinent to this entry.
I got Ms. Payne's book based on some interesting excerpts that someone posted in a forum. The excerpts had to do with the different types of speech and how they influence learning and even ways of thinking. The poster quoted some sections from the book which assert that the differences in speech between the general classes of poverty, middle class and wealth have much more impact on the brain than most people realize. This intrigued me. So I put the book on reserve at my library and was quite excited to read it. The book is targeted at school administrators and employers, but I think a lot of people could benefit from reading it.
Framework (as I will refer to the book from here on out), starts out by re-defining poverty as more than just an economic issue. Payne, outlines the various resources that aren't typically taken into account when talking about poverty: emotional, mental, spiritual, physical, support systems, relationships and role models, knowledge of hidden class rules. The lack of financial resources is quite obvious in any discussion of poverty. The emotional is less so: "Being able to choose and control emotional responses, particularly to negative situations, without engaging in self-destructive behavior". Mental resources are also typically left out: "Having the mental abilities and acquired skills (reading, writing, computing) to deal with daily life". Support systems are never thought of: "Having friends, family, and backup resources available to access in times of need. These are external resources". Relationships and role models: "Having frequent access to adult(s) who are appropriate, who are nurturing to a child, and do not engage in self-destructive behavior". Knowledge of the hidden class rules: "Knowing the unspoken cues and habits of a group". In fact, I would say that a lot of people in any class make assumptions (many times they are incorrect) which prevent them from understanding people in the other classes and lead to false judgments levied against those in the other classes. But more on that later.
She also spend a little time making a distinction between situational poverty, where one falls on hard times and drops from wealth to middle class or middle class to poverty and generational poverty. Generational poverty being the situation where a family is in poverty for two or more generations. If you come out of poverty into middle class, you are still, for the purposes of the book, someone who came from poverty. And your children will still have some of the echoes of the effects of poverty. It is not until their children that the effects of poverty will disappear. This fact is largely unknown even to those who carry the traits of generational poverty with them. Interestingly for me, I am the first generation in my family to have lived a fairly middle class life. My daughter will be the first generation to likely not carry the traits of generational poverty.
After Payne defines poverty by way of resources, she moves onto language and story structure and how those things influence thought and actions. The first topic in chapter two is the "Registers of Language". There are five registers in every language: Frozen, Formal, Consultative, Casual and Intimate. Each is defined as follows:
Frozen - Language that is always the same. Examples are, the Lord's Prayer, wedding vows, etc...
Formal - The standard sentence syntax and word choice of work and school. has complete sentences and specific word choice.
Consultative - Formal register when used in conversation. Discourse pattern not quite as direct as formal register.
Casual - Language between friends and is characterized by a 400 to 800 word vocabulary. Word choice is general and not specific. Conversation is dependent upon non-verbal assists (moving hands, facial expressions, gestures). Sentence syntax is often incomplete. "Know what I mean"?
Intimate - Language between lovers. Also the language used in sexual harassment. (ie. "Blow me")
These registers were the result of work done in 1967 by linguist Martin Joos. One thing that he discovered while conceptualizing these registers of language was that you can drop one register in a conversation and still be socially exceptable. But to drop two or more would be seen as socially offensive. (In the middle of a prayer, someone in the room says, "How 'bout them Bulls". That would be a social gaffe.) This, as we shall see, illustrates one of the barriers that most people are unaware of when dealing with people from different classes.
Much of this linguistic work found that people coming from generational poverty exclusively use casual register in their language. The middle class and the wealthy tend to use formal register for the most part. At the most basic and obvious level, this creates a barrier to entry into the professional world. But, it has deeper effects than most realize. Growing up around casual register has impacts on the developing skills of a child. Long-term effects that are quite damaging. In formal register, the pattern of discourse is a narrative with a beginning and end. You start at point A and work your way to point B. The general goal of formal register's pattern of discourse is to get straight to the point. Payne says, "In casual register, the pattern is to go around and around and finally get to the point. For students who have no access to formal register, educators become frustrated with the tendency of these students to meander almost endlessly through a topic".
These differences in language registers between the classes are affected by language acquisition in early development as pointed out by linguist and educator James Paul Gee: "Primary discourse is the language an individual first acquired. Secondary discourse is the language of the larger society". For example, an American who grows up in a home where Spanish is the primary language will need to learn English as a secondary discourse. What Gee discovered is that acquisition of language is the more natural and best method of learning a language, and acquisition is only possible when there is a significant relationship between the role model and the developing child. Getting back to formal and casual register, this means that someone growing up in generational poverty will very likely only learn casual register for primary discourse. This is quite detrimental to any further learning developments.
As mentioned before there is a distinct difference in the pattern of discourse between formal and casual register. Payne provides some diagrams and explanations to try and illustrate the differences. In general, formal register story structure in formal discourse starts at the beginning, works through a plot and then reaches an end. The most important part of this order is the plot. In casual register story structure, "the story is told in vignettes with audience participation in between". The most emotional or climactic part of the story is usually the very first part of the discourse, and characters involved in the story are judged. Two examples:
"James called Bill a jackass. So Bill came over to Jack and punched him in the nose. From there a full blown brawl broke out on the factory floor until security came to break things up".
"Man, Bill popped Jim on the nose and there was blood everywhere! But he wasn't going to take what Jim called him. Jim's such a goddamn troublemaker! (someone interjects, "Bill's a loudmouth! Jim was right to give him some get back") Yeah, whatever. So before I knew what was going on, everyone started taking a swing at Bill or Jim. This wouldn't have happened if Jim would've kept to his self instead of sticking his nose in where it don't belong. It's kind of a shame that factory security came in and stopped the fight. I wanted to see Jim get flattened. That no good sonuvabitch deserves to be knocked down a few pegs".
These differences in register, discourse and story order are largely responsible for establishing some rather important skills in a developing child's mind. Regarding casual register as the primary acquired model of language, the following can be said based on the work of psychologist Reuven Feurstein: "If an individual depends upon a random, episodic story structure for memory patterns, lives in an unpredictable environment (as is typical of generational poverty)... then...
If an individual cannot plan, he/she cannot predict.
If an individual cannot predict, he/she cannot identify cause and effect.
if an individual cannot identify cause and effect, he/she cannot identify consequence.
If an individual cannot identify consequence, he/she cannot control impulsivity.
If an individual cannot control impulsivity, he/she has an inclination toward criminal behavior".
This is just a little sample of what Payne discusses in the book and there are a many more interesting examples and ideas that bear out in my personal experience. In fact, reading the book clarified for me a lot of the reasons why I have such difficulty dealing with people from a solidly middle class background (at least two generations in middle class) and perceive many of them to be arrogant and insensitive. The book also provides some pretty good arguments to counter libertarian assumptions that anyone can do anything as long as they are given liberty. There are definitely things you can't do when you don't have the full set of tools in your toolbox. A lot of middle class people make the assumption that there is a full tool kit for everyone. Make no mistake, I'm not insulting the poverty class and there are always exceptions to the rule. Some people can bring themselves out of generational poverty into middle class. It's rare, but it's possible. Considering that my mom started out as a mountain girl in the Andes with no running water, electricity or cars and was basically living a primitive lifestyle, and my dad was what most middle class people would define as "poor white trash", I'm not doing too badly.
My only criticism of the book is that I think it might be about ten to fifteen years too late. I'm noticing quite a bit of bleed over of the hidden class rules (which I didn't touch in this review yet, maybe later) from poverty into middle class. One example is that in poverty class a man needs to be a "lover and a fighter". In middle class a man needs to be a provider and self-sufficient. But these days, the "fighter" part of the poverty class male is becoming more of a societal requirement in middle class. So, I think that while the book is quite accurate in allowing one to "psyche people out", it's also slowly becoming irrelevant as these rules change.
Up next: "In Defense of Food, an Eater's Manifesto", by Michael Pollan
GENTOO: Keeping Boxes Up to Date in a Sane Way
TECH TALK: NoMachine NX Client/Server
After saying I was going to try this for the past five or so years... I finally got FreeNX installed on my new Gentoo appliction server virtual machine. I'm still trying to figure out the underlying components and how it works so I can customize it a bit. So far so good though. It is a good deal faster than VNC which is good news for my thin clients at home (I mean... old laptops) and it also supports Esound (I wish it supported Pulseaudio, but... Pulse supports ESD, so... :). So what does this all mean if you're not familiar with the land of remote desktops on Linux? Read on:
1. FreeNX is a GPLed server that uses the NX protocol created and opened by NoMachine. It is NOT VNC or RDP (MS remote desktop)
2. Sadly, it's not completely clear what it is, other than it is based on X (I think) and uses ZLIB and JPEG compression to great effect
3. It also has support for the Enlightened Sound Daemon which is sort of a virtual automated mixer for multiple sound streams that sends the mix to your sound card. This means that your remote desktop sessions have sound. (I've been doing this for years with raw ESD itself, but NoMachine implements it better than I can)
4. The bottom line is that even over a slow link, like a modem connection, you can get decent response from a remote desktop session. (Sound only works well in the local LAN or if you have an ungodly fast internet connection on both ends)
I tried running a video remotely and it played well with some tearing over my DSL 768k line. And... I'm posting this entry via the NX client right now. :) When I scroll in Firefox, the smooth scroll actually works with no redraw issues at all. The only thing that is noticeable is the JPG artifacts when I'm set to lower than ISDN speed. But it's not THAT noticeable.
For anyone on Gentoo interested in trying it out, there is a writeup at the Gentoo Wiki that tells you all about it. It's not totally clear, but it's enough to get you started. I think that's the main problem with the FreeNX project, not a lot of clear documentation for people who don't have some previous knowledge. One thing that isn't obvious is that when you install, you're installing the FreeNX server, but you're pulling down the proprietary !M NX client in order to connect. I'm not 100% sure on this, but it appears that there really isn't an NX client that in current development in the FOSS world. So you wind up having to use the proprietary but free of charge !M NX. That's OK with me since it seems to work well enough. I'm using the Linux client that is in Gentoo Portage, but there is also a Windows client as well as a Mac OS X client.
It's pretty simple to use once everything is configured. (You need to create an SSH key that is dedicated to the NX client and then import the public key onto the machine you'll be connecting from) You just enter your server connection info, set your screen size, choose the kind of system (OS) you'll be connecting to and the kind of session you'll have on that system (*nix only) and connection speed, then log in. Here's an excerpt of what you can do from the project Wiki for FreeNX:
Consider logging in from remote (eno2001: say... your machine at work):
* You start a new session (unix-kde or unix-gnome)
* You work with it and it runs fast (and even faster than VNC or shadow ;-))
* You decide that you want to go home now, so you press ctrl+alt+t (if in fullscreen mode) or close the window
The session is now suspended and awaits you resume.
Okay, you go home now:
* You login into your desktop and you have another fresh new session
* You startup nxclient
* You connect to the nxserver running on 127.0.0.1
* You have your running session with all open programs again and see like a wonder the desktop stretches until all programs are fitting on screen again.
So now you have a 1600x1200 sessíon. (eno2001: They failed to explain whether this is a resizing of the desktop image or a real change in the size of the desktop itself. I haven't yet tested this) Once you finish working with it, you suspend it again:
* click on the magic pixel, the window is minimized, right click on the taskbar and choose close
* press ctrl+alt+t
* close the window
* press ctrl+alt+t
A dialog comes up that asks you if you want to terminate or suspend the session, you choose to suspend it.
I'm impressed so far, but I really need to figure out the components and break it up into something more usable for my needs. Hopefully this might replace VNC for a few things that I do where I need snappy response from the remote desktop...
LATE CROSSPOST: Application Tip Swap Meet
This was originally posted to my Multiply blog last week and got more responses than I expected. Hopefully some of you here will find it of interest:
OK. I'm going to be 38 at my next birthday (March 2008). I've come to the realization that because I've been buried in crap at work, my time and abilities to explore the features in software and on the web have become limited. Back in my teens and 20s, I would take an application and learn nearly every menu function, play with every setting or option and generally tried to get the most out of the software that I could. These days I just use the basics + a few keyboard shortcuts here and there. I also spend about 50% of my time at the CLI. Now, not being one to think I'm "old" necessarily, I want to get back to learning more about applications, but not necessarily reading manuals, multiple web sites and forums and so on. I'm looking for tips. Especially really obscure but useful ones if possible. Not just for me either, but also for others who are reading this and might find quick tips very useful. I would like this to be multiplatform so no fighting about that. Windows, Linux, Mac and dead OSes :) are all invited. My desktop platform is Gnome running on Gentoo Linux, so I'll likely be focusing on Gnome stuff. Also, no disparaging comments about what other people consider helpful (unless they're really fucking stupid. Just kidding). If possible, format your subject like this for "quick reference": Platform:Application:Tip Description. Example: Gnome:Nautilus File Manager:File Association I'll post my tips below as I can think of some.
Why GNU 'screen' RULES!
I'm about 50% of the way through this big mail migration project I've been going on abot for a while. I started in earnest in the middle of November after budget cuts, bureaucratic delays, hardware being out of stock, etc... (I suggested we do this move over two years ago and was told, "we'll think about it") So it's finally, "bye bye iPlanet and hello Zimbra" time. And I have to say that Zimbra got it right in every possible way so far. I posted some of my early Zimbra experiences on one of my recent Slashdot journals, so I won't go into that here. Same thing for the incredibly "too useful to be ignored" VirtualIron virtualization product that now uses the Xen microkernel. If you want to hear those comments look at my Slashdot journal that touches on it. What we're here for today is the GNU 'screen' utility which I'm sure some of you must be familiar with.
Way back in 1997 I was running my own Quake server for LAN parties with my friends. One of my frustrations was that I had to leave a Putty session open and connected to the server at all times because there didn't appear to be a way to background the server and then reconnect to it later. I posted about this somewhere and someone said "use GNU screen". I took one look at it, didn't get it and didn't bother to look at it again for some time. I think sometime around 2001 I had a need to run a process in the background that I could come back and interact with. This time it was for work and I couldn't just walk away from the problem. Someone in another forum recommended GNU screen again. So I read the man page with little more interest and then tried it out. In short, the most basic use for it is to be able to run a virtual terminal session that you can disconnect from and re-attach to. Another way of putting it is that it is like VNC for the command line. But in reality it's so much more than that.
If you're new to 'screen' you'll wonder why the hell I'd want to use something like this when there are things like xterms, gnome-terminal, konsole and the like. The only way to really understand is to try it out for yourself. An excercise (make sure you have 'screen' installed on your box first):
1. Pop open a terminal window and type 'screen'. This will launch the application and you'll see a prompt just like you usually do. It will probably look like nothing happened. That's OK. Just have faith.
2. Now start a process that will continue to run in screen. ping an IP on your network or the internet, or run 'top'. Those should illustrate the basics nicely.
3. Now that you see something running and constantly updating on the screen, press this key combination: Ctrl-a d (That is Ctrl-a first then an individual 'd'). The process you started will appear to have quit. But it hasn't...
4. Now press Ctrl-Alt-F1 to get to the first virtual console on your box. Log in as the same user that spawned the 'screen' process and type 'screen -ls'. Look for the screen PID number in the output.
5. Once you have the PID, type 'screen -R pid'. This will re-attach you to the process you left running from the terminal emulator in X earlier. If it was 'top' you should still see it updating.
6. Stay attached to this virtual console, then press Alt-F7 (assuming that your X server is on VT7) to switch back to X.
7. In X, bring up a GUI terminal like xterm, gnome-terminal or konsole and enter the following: 'screen -x pid'. Make sure to use the same exact PID you used before. You should see your process running, and you're also still connected from virtual terminal 1 as well. The -x option allows you to connect to a screen instance that already has someone else connected. It's a great way to train someone or classroom full of someones, or to handhold someone who is trying to troubleshoot a problem.
These are just the bare basics of 'screen'. It can do a lot more if you delve into it deeper, especially if your a CLI rider like me. (Funny about that, I used to say that Unix was dying back in 1994 when I got my first Windows box) Read on for more fun with 'screen':
The Scrollback Buffer (Copy mode):
How many times have you been at virtual console #1 through #6 and had no access to X (it's borked or something) and when you have a bunch of text fly past you during a compile or other heavy text stream you think, "I wish I had a scroll bar right now". Well, wish no longer. 'screen' might not give you a scroll bar, but it does give you a very nice scroll back buffer. Assume that you're already in 'screen' and that you had that text fly by and really want to see what went past you. Assume that you're not in a GUI.
1. Press Ctrl-a ESC to enter copy mode
2. Now use the up/down, left/right, page up/page down keys to move around in the buffer. Go up as high as you can (I believe the default limit is 1000 lines, but you can change that by starting screen with the -h argument: 'screen -h 4000') and marvel at this ability. ;)
3. But it gets better... You can do forward or reverse searches within this buffer by using / or ? respectively. Example:
This search will find any occurences of the word error from your current position to the bottom of the buffer: /rror
This search will find any occurences of the word error from your current position to the top of the buffer: ?rror
4. And even better... While you're in copy mode, you can also select and copy text to screen's paste buffer. Move your cursor to where you want you selection to start and press the space bar. Then move to the bottom of what you want to select and press the space bar again. This will place a copy of the selected text in screen's paste buffer and exit copy mode. To paste what you selected: Ctrl-a ]
Logging Your Sessions to a File:
1. Press Ctrl-a : to enter into screen's command mode. This will provide you with a prompt in the bottom left that is simply a colon.
2. Specify the path you want screen to log to using the 'logfile' command. If the file doesn't exist, it will create a new one.
3. Turn logging on: Ctrl-a Shift-h
4. Do your stuff...
5. Turn logging off: Ctrl-a Shift-h
This feature has come in very handy for my work recently...
Within one instance of screen it is possible to have more than one terminal and switch between them (kind of like Alt-Tab to switch between various windows in a GUI). Here's how:
1. Start a screen instance with a useful name and a good scroll back buffer:
screen -S MailMigration -h 5000
2. Name the first "window" by pressing Ctrl-a Shift-a then deleting the default "bash" in the bottom left and replacing it with something useful. In my case I've named window 0 "iPlanet".
3. Now spawn a new "window" by pressing Ctrl-a c and then give it a useful name. This is "window" 1 and in my case I've named it "Zimbra logged in as zimbra user"
4. Spawn one more window again using Ctrl-a c and give it a useful name again... My "window" 2 is called "Zimbra logged in as root" (Yeah I know... not the place or time)
5. Now that you have three "windows" with useful names, let's look at them. Press Ctrl-a " and then use the up/down arrow keys to move through the list and select the "window" you want, then press enter. You can verify that these are all different windows by doing something different in each and then switching between them.
6. One more neat trick... you can quickly switch between the current window and the previously selected one by pressing Ctrl-a Ctrl-a This is immensely useful if you're having to compare things between two systems and don't have any option to do it from the GUI or just want to be able to pick up where you left off later by reattaching to the screen instance.
A Small Sample of Really Batshit Insane Stuff You Can Do With GNU screen:
If you have a detached screen running something that you would like to interact with but don't really need to connect to screen to do it with, you can use the -X argument followed by the internal screen command you want to execute. In my case, I have mplayer running within a screen session happily playing a playlist for my alarm clock in the morning. I want to send it a "space" bar without having to attach to screen to actually do it. So I have my script do this:
screen -p0 -X eval 'stuff \040'
In my real script I've named my screen instance by starting it with:
screen -S Alarmclock
So to send the space bar to the detached screen, I actually do this:
screen -p0 -S Alarmclock -X eval 'stuff \040'
The -p0 is needed to say, send it to screen's
The -X eval 'stuff \040' causes screen to intercept that command, process the 'stuff' command which then sends ASCII char 040 (the space bar) to mplayer. I'm using this to create a "snooze" feature in my alarmclock script (don't ask just assume that I'm insane).
There's a hell of a lot more, but this is a small sampling of how GNU screen just rocks. :) Feedback?
Side comment: I have to wonder how long it will be before Microsoft "innovates" something like this but missing about 90% of the features. They've been making moves to try and lure people away from *nix (like PowerShell) so I imagine that if people see the light about 'screen' and it becomes more popular, MS will try and duplicate it. And get it wrong. Again.
MASS TRANPORTATION: Help!!!!
OK. I'm joining the world of people who use mass transit. Mainly because my car cracked in half. But also because of the green (environmental) and money saving aspects of it. So... anyone here have any tips to make the transition smoother?
I should probably explain a little more about what happened... I was out the other day with my wife and daughter doing some errands. While we were out I noticed that my car (1998 Nissan Sentra) was making this odd squeaking noise when I'd turn right in it. I'd heard this kind of thing before and guessed it was a CV boot, maybe a tie rod or ball joint. So I took it into the shop we go to for all of our ill cars. These guys have always been on the level with us and have given us quite a few freebies for small work. I told them what was going on and they said they'd take a look at in on Friday.
So Friday afernoon my cell rings. I was actually expecting work since it's encroached onto my personal time so much for the past half a year. I was a bit relieved to hear that it was the service station. The guy said he had some bad news. I figured... this car is nearly nine years old, I don't think anything will be bad news as long as it's under $1500 to fix. He explained that the car is a unibody and that it appears to have suffered a major fracture due to rusting from the inside of the frame on the right hand side of the car. Seeing that the body is all one piece, there is no "part" to replace and it's not really safe to drive.
I drank that in for a minute. Then I thought of how lucky I was that I didn't wind up in a horrible wreck. I was even doubly lucky since I've carted my family around many times in that car on the freeway. So he tells me a bit more and I ask him what my next step would be. He said, he wouldn't suggest selling it. Nor would he suggest donating it to anyone. Trade-in is a possibility. And scrapping it is probably the best option. So that's the route I chose. Scrap it and be done with it. And since he whole gas powered automobile thing is in flux right now, I'm going to wait it out on buying a new car. Hell, I live within 15 minutes of the downtown area I work in and rarely need to go far in general. We still have my wife's car if I need to be at one of the rare meetings in another city. So why not take advantage of that closeness to work, and the mass transportation system?
I'm sure someone will tell me I could have just gotten the same car with a dead engine and replaced it with my working one, etc... I'm not a car guy, and to be honeest, I've been researching alternative transportation for a while. I keep hoping that someone will release a fully electric plug-in automobile that is safe and street legal and can go at least 150 miles on a charge at a maximum of 60 MPH. So far, no takers. The closest is to get a hybrid and then get the plug-in modification done. That's basically a replacement of all batteries and installation of a charger.
But, the more important point at hand is that I can now drop my insurance and save about $400 a year on that. I can also drop my parking pass for the garage downtown which is $110 a month (of course bus passes are $45 a month, but that's still a savings). And of course with gas hovering at about $3.00 a gallon and likely to climb to $4.00, I suspect I'll save a good chunk there too. So here's the current plan: go with one car for at least six months and see if it can be done with a minimum of fuss. Meanwhile save the extra money that I'm not spending on parking, gas, insurance and plates, for a down payment on a new car. I already have enough for a decent down payment now. But, we should hopefully get an OK tax refund, which would boost any savings up and put us in a really good position to get a new car. I can then spend some time researching the best options for a real alternative to gas powered automobiles. Ideally, the next car won't run on gas at all...
So there you have it. That's why I'm going to start using either the bus that pulls up to the neighboring street, or the rapid transit (sort of a subway type affair) starting on Monday.
EXPERIENCE: Zimbra Collaboration Suite
I rarely spend much time waxing poetic about software (OK. I did for VirtualIron but it's just too damn good) but I think I need to do this for Zimbra Collaboration Suite (ZCS). I first suggested we migrate away from Sun's horrid iPlanet system to Zimbra about two years ago. Due to various budget issues, we couldn't do it until this year. And for the past few months I've spent a lot of time learning various systems to get this up and running the way I want. There is, of course, the VirtualIron system hosting the VM that Zimbra is running on. I took a few wrong turns before settling on VirtualIron. All the VMs are sitting on a SAN (Hewlett-Packard EVA). And finally Zimbra (version 4.5.9) was installed on both TEST and PRODUCTION VMs.
My first domain migration happened at the beginning of November and it went amazingly smoothly. Of course there were only 64 users, so that was to be expected. The next domain was this past weekend. That took a bit longer to complete with 774 users and a good number of distribution lists. All of the account and mail distribution list data was extracted from the iPlanet server using a custom script wrapped around 'ldapsearch'. That data was converted live to the ZMP format to be used on the Zimbra server for provisioning accounts.
Once I got the accounts and groups in place, I needed to copy their mail. I used the ever ubiquitous 'imapsync' (I owe that guy something.... heading over to the donation page as soon as I finish this post) to copy all the mail from the iPlanet server to the new Zimbra server. it worked like a charm, but I had to wrap an 'expect' script around it because iPlanet would prompt me for the auth admin user password for every user. I'm not sitting around waiting to enter that 774 times!
I did the initial mail sync about three days before migration, and then ran the incremental sync once every day leading up to the final day of migration. Finally, on the night of migration, I made all the requisite DNS and spam filter changes for the domain, performed a final sync (took about an hour) and removed the domain from the iPlanet server. We were now live! That takes care of the general process, but why is it that I love ZCS so much? Let me explain...
First off, after having dealt with raw LDAP for the past seven years and actually getting a pretty decent understanding of it (not enough to create my own schema yet), I'm happy to see that Zimbra found a better interface to LDAP. They are using their SOAP application 'zmprov' to handle everything about LDAP. However, they STILL allow you to deal directly with LDAP by giving you a parameter you can pass to 'zmprov' to turn off SOAP mode! So you can have your cake and eat it to, as it were.
The next big deal for me is that 'zmprov' really is THE tool for doing bulk administration. As nice as their admin web interface is, we all know that GUI and web interfaces are not the medium to use when you want to make a lot of changes to a lot of objects very quickly. One of the nicest things about ZCS as a whole is actually the Wiki that Zimbra provides which explains almost anything you'd need to know about Zimbra. They have a nice reference for all LDAP attributes that you can affect with 'zmprov'. That's how I was able to bulk provision my users with a default password, then force them to change it on first login and restrict them from re-using it as their new password.
Another aspect is that their web admin interface really isn't that bad at all. It gives you a lot of info that is actually... useful! Big surprise there. I'm used to web interfaces that are designed by anyone but the admins themselves. Unlike iPlanet, you can actually see what groups a user is a member of! Not only that, but you can actually add/delete their membership in a group from the user account info instead of having to switch over to the group portion of the admin interface.
My users (...at least initially. More on their issues later) are really happy with the new interface. iPlanet was long in the tooth. In 2001. Zimbra, thanks to the magick of AJAX feels like an application. They are loving the Exchange killer features of Zimbra. (Admittedly I really wanted to do this two years ago but, oh well)
VIRTUALIZATION: VirtualIron is WAYYYY Cool
Alert: If you're not into computers, don't manage servers at work or at home, or don't know what TFTP, DHCP, Xen hypervisor mean, then skip this entry.
Disclaimer: I'm not affiliated with VirtualIron other than being a very happy customer so far.
I've been into virtualization on x86 hardware since 1997/98 when I got my first copy of VMWare Workstation. I'd tried PC emulators before, but I could tell this was different as the performance was infinitely better than any emulators I'd ever used. Since that time, I've also looked at other virtualization programs like Virtual PC on the Mac and later Windows, QEMU on Linux and Windows hosts, and within the past three years, I've pretty much focused on Xen virtualization because it is truly "the way of the future".
The thing that led me to Xen was that renewing the VMWare Workstation license (for home user) I had a few years back was becoming prohibitive, but I still wanted something to virtualize Windows XP with since I no longer see the point in running it on bare metal (I'm not a gamer, and audio and video production tools for Linux are much better than they were three years ago). So while looking around on the net for other free virtualization systems (I was using QEMU with it's accelerator at that point but wanted something better) I found the Xen project. I decided to install it on my Fedora Core 2 box and see what it would do. It didn't start off that well because I got the Xen hypervisor (microkernel) to boot, but the console would then stop giving me any output or way to interact. I assumed it wasn't working until I pinged the IP of my Fedora Core 2 box. It responded! I could ssh in! Weird. It was running, but no output on the screen.
It took me a little extra work, but I eventually figured my way around Xen and dedicated this box to using it. I then created paravirtualized Linux images and saw that the performance of my virtual machines was nearly 98% of running on the bare metal! It was really a sight to behold, especially on such old hardware. The only limitation was RAM. If I had more RAM I could run many VMs on this old box. I got around to that later and currently I have an old P II era celeron 400 with 384 Megs of RAM running three VMs:
Domain0 (the management domain): Doing DHCP and NTP for my network. You typically shouldn't have this domain doing much other than managing your VMs.
Domain1 (the "External" home server): Offering up three of my lame web sites, an SMTP smarhost, VPN services, external DNS for my domains
Domain2 (the "Internal" home server): Offering up MySQL for my dbmail installation, dbmail itself, postfix SMTP for internal use, internal DNS
The box is great for being so old and the virtualization really adds an extra layer of security that is unsurpassed.
However, I wanted to virtualize Windows and this was not possible until the first CPUs from Intel and AMD were released with hardware virtualization support. So, I bought a cheap Athlon 64 HP box at Best Buy and packed it with 4 gigs of RAM. I upgraded to Xen 3.0 and set up my VMs on this box. There really isn't much of a limit other than RAM as far as I can tell. Right now, this box is running a Gentoo build VM, an Asterisk PBX VM, a CentOS/Zimbra mail VM, and until recently a Windows XP VM (which I've actually moved back to QEMU for different reasons).
So basically, I know the "love" that Xen offers above things like QEMU and VMWare or Virtual PC/Virtual Server. In fact, the Xen project's technology was so impressive that MS itself is using the technology for their upcoming hypervisor in Longhorn. That is assuming it doesn't get dropped last minute...
At work, I've been planning a huge mail migration away from a system I wasn't happy with to the Zimbra system (which looks and works great). However, I really wanted nearly unstoppable uptime even in the event of hardware failure. I knew that Xen's live migration capability would offer me that (you can move a VM, while it's running, from one physical host to another without your end users ever noticing). I ran into several issues over the past month, and the VirtualIron product is what finally came in to solve the problems.
When I first set out to virtualize Zimbra, I tried installing it on a RedHat Enterprise Linux (RHEL) paravirtualized machine running on top of Gentoo Linux with a Xen kernel. As soon as I tried to install it, Zimbra complained that I needed to have NPLT support in the kernel. This was not possible with Xen in paravirtualized mode. The only options I had were to run RHEL on bare metal, which would not afford me the unstoppable uptime, or to run it in a Xen HVM (full virtualization) environment. I chose the second route.
So I got a system that I could test with and set up a TEST Zimbra box on CentOS 5 with RHEL 5 as the fully virtualized guest. But then I discovered another set of problems. The first big one, was that fully virtualized Xen guests CANNOT be live migrated or paused. The second issue was that because of the way that disk and network I/O is virtualized, you have a bottleneck in the RAM utilization on the management "host". If your disk and network I/O is very high, you'll likely wipe out all the RAM in the management domain and performance will suffer as your disk and network I/O attempt to work via swapping! Ugh. The third point, which isn't really an issue, is that I discovered the Xen's fully virtualized environment was really a specialized QEMU process! My worries about QEMU's performance grew quickly.
So I did more research and more digging around for other possible approaches. I briefly considered the OpenVZ project (which doesn't really virtualize, it's more akin to chroot). Then I found someone's blog entry on a bunch of virtualization techniques and noted a reference to Virtual Iron. We also, almost went with the commercial version of Xen: Xensource, but they got bought by Citrix who we had some issues with in the past. I'm hoping that the Xensource folks won't get screwed by Citrix in this deal. So we bought VirtualIron, as priced at the time for $600 per CPU socket (cores don't matter, only physical sockets).
I was expecting your grandfather's virtualization techniques, but I was completely mistaken as I would find out later. One of their big seeling points is that they don't use paravirtualization at all. This isn't really a good or bad thing, it's just their way of approaching virtualization. They have also been contributing back to the Xen project, so good on them! Instead, they chose to focus on the special version of QEMU included with Xen to bring it up to speed for their product. So they made sure it could do live migration! (It still can't pause/suspend/restore as far as I can tell) They also worked around the disk and net I/O issues by creating custom drivers and management software (VS Tools) to be installed in the guest after you have the OS running. This limits your choice of guests to OSes that they have their VS Tools software built for. They currently support Windows guests up to Windows 2003 Server, and many of the most common "big name" Linux distros.
So we got two big nasty servers for hosting our VMs. HP servers with 16 gigs of RAM each, and two dual-core Xeon 64-bit CPUs each. They also have fiber channel interfaces that connect to an HP SAN back-end. My original assumption was that I would install VirtualIron on each of these boxes just as I did with Xen kernel installations or any other typical virtualization technology. I did just that and was lost for a bit. All it seemed to do was install a DHCP server, a TFTP server, and a Web server (Jetty if you're curious). My confusion is partially due to the fact that their web site doesn't give you much info on the architecture. I've written to them about that since I think this product is "the bees knees" where virtualization is concerned. The Java based management interface for VirtualIron contains a "walk through" set up document in a pane on the right hand side of the interface. THAT is where I finally understood the actual architecture and layout.
To use VirtualIron Enterprise (we didn't go with Single Server which DOES work like VMWare and others) you need at least one "management server" and one "managed node". The management server can be one of a few supported Linux distros, or Windows. The fact that it could be Windows really confused me at first, because I couldn't understand how they would get a Xen kernel installed under an already existing Windows installation. Again, I was completely wrong in that line of thinking. Once I understood the architecture, I was both in awe and very eager to see this thing work. So I proceeded...
In my case, I have two managed nodes (those monster servers with 16 gigs each) and one manager (a Xeon dual CPU 32-bit system with 2 gigs of RAM and dual NICs). The manager is running CentOS 4.5, which is supported by VirtualIron as a host for the Enterprise manager. Once I had that installed and had the management network up (you basically need a different LAN dedicated to the manager and each node that you can consider "out of band"), I set one of my managed nodes to PXE boot off the manager. That's right! You DON'T need to install a damn thing on the managed node! It's diskless! The TFTP server and the DHCP server give this box an IP address, and point it to a preconfigured Xen boot image. Their preconfigured boot image is a Xen hypervisor with a very stripped down Suse Linux Enterprise 10 (SLES10) on it. So stripped down that the managed nodes can run headless. There is ZERO interaction on those boxes other than the power button!
Once the managed node loads it's boot from the network, it shows up in the Java managemenr interface and you're ready to create VMs and assign them RAM, CPU, network and storage. In our case, the SLES10 image has drivers for our Emulex LightPulse fiberchannel HBAs, so LUNs presented by the SAN are fully accessible from within the VirtualIron manager. Once VirtualIron was up, I was off and running installing RHEL 4.5 for my Zimbra installation. It's a beautiful thing! The managed nodes don't have a damn thing on them. In fact, not only do they run headless, but you don't need ANY storage in them at all if you don't want it! All VM configuration resides on the managing server. So that's the guy you want backed up reliably.
I can't say enough good things about VirtualIron. It can bring the power of Xen virtualization to anyone who wants it, even if they've never touched Linux. It really is an amazing thing.
PROGRAMMING: Please Tell Me More About Java on the Desktop
OK... Here is what I know (or at least think I know) about Java:
1. It's supposed to be write once, run everywhere which is a good thing.
2. It's also OOP which is arguably a good or bad thing depending on your POV
3. It was released in 1995 (twelve years ago) and was a "hog" (on the desktop) then because of RAM and CPU requirements. Only within the past year or two has it become viable for desktop applications in the opinion of many a desktop user.
4. Java applications that suck are usually the fault of the developer and not Java itself.
5. The last time I checked, there was no Java native printing interface since each OS that could run Java has it's own very unique approach to printing.
6. This part I really don't know much about, but I've noticed that many Java apps seem to ignore the local host UI's toolkit in preference for the Java UI toolkit (which is pretty lame IMNSHO). I'm not sure if this is a limitation of Java, a developer who doesn't know what they're doing, an inherent quality of the write-once run everywhere nature, or a combination of all of the above.
My personal experiences with Java apps have been rather frustrating (NOTE: I'm not meaning to insult anyone with my comments, just posting my experiences):
-A Java app to manage the music on my Rio Karma. I needed to use it since I run Linux and there is no application to natively manage the Karma. I abandoned this application as soon as I discovered lkarmafs. Yes... I'd rather deal with a CLI to manage my Karma than a broken and unreliable GUI app.
-The Java interface from hell in my opinion is Cisco's latest and greatest ASDM (Java Firewall Management tool). I think it's version 6. It's a bloody mess in my opinion. I won't even go into all of it because I'd need a whole JE just for that. One simple example is that they have a section where they display a table view of information. There are column headers. But you click on them to sort by that information, and nothing happens. OK. No surprise there as this was the case in the past. However, in another section of the same app, there is another table view, also with column headers. You click on them and... they work. But they work in a pretty strange way. Instead of the customary arrow pointing up or down to indicate the sort direction or no icon for unsorted, you just get (1) (2) (3) or a blank. Very VERY bizarre, inconsistent and annoying. Is this a Java toolkit issue or dodgy coding from Cisco land?
-Sun/iPlanet's Java based administration interface for LDAP and their Enterprise Messaging Server did not like X very much. I have memories of trying to use my workstation's X server to access the application from the iPlanet server in the computer room (that is headless) and taking literally five to ten minutes to expand a tree. Eventually I wound up having to run an Xvnc server on the iPlanet box after which the Java app worked fine. So Java doesn't seem to always like being exported via X protocol.
-I had a very similar experience with the Oracle installer on another headless Digital Unix box. Once we moved to HP-UX and the version of Java for the installer was a little newer, I didn't have that problem. So that leads me to suspect that older versions of Java didn't like the X protocol.
-Of course you can also insert nearly all Java applets from the web that seem to eventually lock up browser on just about any platform.
-Since Java seems to be in constant development, there are large inconsistencies between which apps will run with which versions of Java. Leading to the ultimate annoyance of being tied to very specific versions of Java for specific apps. Eventually you wind up with many of those apps being on the same box and so you wind up with multiple versions of Java on the same box. If you're in Unix land, many times you wind up with applications that are bundled with their own Java buried deep in your system.
I'm not meaning for this to be a rant against Java. What I'm hoping is that knowledgeable people here on Slashdot can inform me as to why they chose to go with Java for their language and whether or not it really can be made to work well. I'm also specifically thinking Java on the desktop, not the server. I can see how it might be better suited to back-end work since servers tend to have the resources needed. The only question being, can it be done with efficient memory and CPU utilization?
UNIX: Yet Another Stupid SSH Trick
Yay!!! I get post yet another incredibly useful way of using ssh for something that most people would think was "stupid".
You're on a box with a much older version of NIX on it than you should be. In the middle of doing your work, you find the certain utilities are missing, or are old enough that they have some key features missing. What do you do? Tell your boss the box sucks, get a new one. Wipe the box and all the important data you're supposed to be working on with a new installation of some free *nix? Give up?
In most cases, if you're working on a box like this, it's likely that your dealing with text. That was what I was dealing with and the version of egrep was too old to parse the following:
So what did I do? I took advantage of the newer egrep on my Linux workstation using ssh:
/opt/iplanet/server5/shared/bin/ldapsearch -D "cn=King of all Mail" -w iam1337d00dzg1v3m3w4r3z -b "o=peons.org, o=werule.org" "uid=*" | ssh email@example.com "egrep '(cn:|inetUserStatus:|mailUserStatus:)' -" | less
The end result is that the text stream from the old *nix box is sent via ssh to my workstation where I run the egrep using STDIO. Works like a charm! Hope this helps someone else.
The Real News?
Multiply: One Good Thing So Far...
Even though my time lately has been quite limited both at work and at home, I just discovered something I do like about Multiply.com. I can compose a blog entry there, then switch to "edit HTML" and copy the HTML to here and quickly post without having to actually type out all the HTML. Pretty handy if I'm feeling in the mood to post to both locations.
SPAM: What's in a Name?
So here I am minding my own business when a co-worker asks me to make sure that an important message comes through from a specific sender (cvent-planner.com). I figure... sure. Why not. I white list IP addresses for domains all the time when it comes to legit stuff. So I do a search in our spam filtering system and find the blocked message so I can force delivery to said co-worker. But then I notice that the reason it was blocked is that according to one of the blacklists that the filter uses (could be the spam filter vendor for all I know) cvent.com (AKA cvent-planner.com) is a known spammer.
So, to be sure I did a little googling and found a link to someones blog
wherein he explains why he thinks they're a spammer. I tend to agree since any business that buys names and e-mail addresses from other sources to start sending out bulk mail to them, is by my own understanding a spammer. A little more looking around indicates that this company has no real "opt out" empowerment for the recipient of their crap. Even more digging indicates that the people who started getting messages from cvent.com never signed up for anything with them and that the companies that cvent claims to have legitimately acquired the addresses from know nothing about cvent.com. So either cvent is lying, or the companies that the recipients had previous business with are lying.
As a result, I removed the IP white list that I'd added only minutes earlier and suggested to my co-worker that I do a "per-user" white list for her and one other associate so they can get the cvnet.com stuff but not the rest of the organization. My main reason for posting this here is to get the blogger's site that I linked to above raised higher in the google page rankings. So one more time: Cvent is a spammer!!!!
I almost forgot to mention that cvent appears to be somewhat aware of their status. This is a modified version of the message they sent to the people they are attempting to spam:
**Attention [insert vendor] conference attendees**
The conference documentation links were sent out at the end of August and again in early September. If you have not received either of these emails, they may be getting blocked.
Please have your IT staff or email provider add the following domain to the allowed list:
Yeah. Right. Nice try.