Wednesday November 05, 2008
A democracy cannot exist as a permanent form of government. It can only exist until the voters discover that they can vote themselves largesse from the public treasury. From that moment on, the majority always votes for the candidates promising the most benefits from the public treasury with the result that a democracy always collapses over loose fiscal policy, always followed by a dictatorship. The average age of the world's greatest civilizations has been 200 years.
Great nations rise and fall. The people go from bondage to spiritual truth, to great courage, from courage to liberty, from liberty to abundance, from abundance to selfishness, from selfishness to complacency, from complacency to apathy, from apathy to dependence, from dependence back again to bondage.
An exhaustive history of these quotes and their non-authoritative attributions.
(2008-11-05 11:10:01.0)
Permalink
Friday October 20, 2006
Being an avid follower of all Google watcher theories and theorists, I immediately recalled Cringely's year old article when Sun announced Project Blackbox on Tuesday. I had been checking Cringely's site to get his reaction and it appeared today: "Sun announces the Google shipping container data center, but will it fly?".
For what it is worth, Cringely likes Sun's approach and he feels confident that Google will be a customer of it although he offers scant evidence. The other very encouraging spin he had was that this product would likely sell into completely new customer bases. Given that Blackbox can be outfitted with Solaris, Linux or Windows (since our Opteron kit is Microsoft Windows certified) the field is absolutely wide open to any type of shop out there.
For those who haven't read the technical details for the Blackbox, it requires 3 connections: data link, electricity and chilled water (to the tune of 60 tons). Since I grew up around the chillers used to cool data centers, I had to poke around and see what options our customers are going to have when they procure water chillers to compliment the Blackboxes.
Here is a Carrier water chiller rated at 600 tons in rental packaging (Enough capacity to provide the cooling for 10 Blackboxes)
It's no coincidence that Carrier chose the very same TEU (Twenty-foot Equivalent Unit) Container to package their portable chillers that Sun chose for the portable data center. Its the standard around which the transportation industry revolves.
During my childhood, my father would take me with him on emergency repair calls for the cooling systems for some of Silicon Valley's biggest names in computing. The highlight for me was the day we had to work on the cooling for the Cray at Apple. It was one of the models that cooled the chips by immersion in a non-conductive liquid. I specifically recall that my dad was not fond of that system.
I can only hope the Blackbox captures the imagination of a generation the way the Cray captured mine, and that it proves to be more profitable. I can already assure you it will be more popular with the on-call HVAC guys - their entire interface with the Blackbox will be no harder than a water heater, cold water in, hot water out. You ready to come out of retirement Dad? (2006-10-20 14:09:51.0)
Permalink
Comments [3]
Friday April 28, 2006 This is a rare company that actually has a soul. We are a collegial community of competent people that thrive on mutual respect. That environment helps inspire the development of great products which not only enhance the bottom line, but contain higher order goals of advancing humanity. I personally need to work for a company that has a multi-dimensional culture. It is a cynical attitude which believes all corporations exist only to make profits. While all corporations must answer to their shareholders, that responsibility is not mutually exclusive of additional motivations for a corporation. I, for one, get very little satisfaction from just making money without having contributed something. Scoring a winning trade in the stock market is not nearly as rewarding as being compensated for mowing a lawn, writing a useful program, managing people, or being awarded a patent. I've profited from all those activities, but each one comes with varying levels of fringe benefits, and sometimes heartaches. Scott has referenced the intangibles as "psychic income".
We are all made of body, mind and spirit. I appreciate that Sun remains a place that recognizes and values all three facets in its employees and reflects them as a corporate entity; beautiful things embodied in campuses and hardware products, brilliant ideas expressed in tight code and redundant architectures, and lofty aspirations beckoning us to participate in realizing green technologies and bridging the digital divide.
(2006-04-28 12:35:17.0)
Permalink
Tuesday September 27, 2005 We've met all the neighbors around our future home and we have already become members of Hill Country Bible Church. My wife and I are leaders in the Awana group and we have joined a Thursday night small group that meets on our future street. We have also joined a huge gym that just opened this September called Lifetime Fitenss where we have been pleasantly surprised to bump into several church friends, so North Austin is beginning to feel like our home town. My wife is a also a leader in the MOPS (Mothers of Pre-Schoolers) group and has gone card making at a Stampin' Up! rep's house about 6 doors donw from where we will live. One of our girls has joined a choir, but we are still looking for a piano teacher for our other daughter. My wife's sister from So-Cal spent a week with us interviewing for jobs in the area trying to decide if she wants to relocate. Let's just say the home affordability is attractive. We have heard that the Avery Ranch subdivision in which we are building is approaching a level of 60% California transplants. A family my wife knew in California moved into our apartment complex a few weeks ago and is deciding where to buy, but with so many beautiful houses in their price range, they are suffering from choice shock.
So if anyone out there is desiring to focus your life on traditional values and raising kids, Texas has acres of land with miles of freeways under construction and most importantly a welcoming attitude to immigrants that is unparalled.
There is one aspect of the local culture that I do not expect I will ever assimilate - the love of college football. When meeting some people, you'll find that they are interested to know your college affiliation which from what I have gathered so far seems to translate to: "Are you an Aggie or a Longhorn?". (2005-09-27 08:14:47.0)
Permalink
Comments [2]
Friday August 12, 2005 Here are the main points of the Fair Tax:
The goal
Wednesday August 10, 2005 However, considering that I have experienced 8 years of interesting and ever evolving marketing requirements, I wonder if this might not be the perfect opportunity to implement a rule engine. This would give the business the flexibility of developing more complex logic to derive roles from an assortment of entitlements. It would also put the power to change the rules in their hands. The idea behind rule engines is that the business logic can be coded by non-programmers in simple syntaxes - or even GUI abstractions - like drag and drop flow charts. These new rules can be added to the system on the fly like any other data. Essentially the rule engines allow the logic of a system to be changed just as easily as all systems allow the data to be changed.
Looking at rules engines and the Java Rule Engine API, JSR 94, led me to a neat interview with the inventor of Jess (Java Expert System Shell), Dr. Ernest J. Friedman-Hill. I was particularly entertained by this exchange regarding the perception of AI in the job marketplace (emphasis added):
JM: I'm concerned that AI/expert systems experience is still too esoteric for most employers of Java programmers to value as a skill. Am I wrong? How does a Jess developer market him/herself?
EJF: You're right to say that AI experience isn't going to impress many potential employers. But I just did a search at monster.com for business rules and found 1,200 job listings. Like anything else, it's all in the marketing. The cardinal rule of defining AI [is] if it works, it's not AI anymore - it's just programming.
(2005-08-10 07:17:44.0)
Permalink
Comments [1]
Thursday July 28, 2005
Wednesday July 20, 2005
# !/bin/csh
#
## Invoke this script from the english branch in the directory
## of the file(s) that need to be copied to all the locales
##
## use -n switch to echo commands instead of executing them
##
## Example: where pwd is
## /web/www.java.com/en/renderers
##
## /web/tools/cp_l10n.csh -n javacom-rate-this-page.jsp javacom-rb.jsp
##
## output for dry run should be:
## /bin/cp javacom-rate-this-page.jsp /web/www.java.com/de/renderers/javacom-rate-this-page.jsp
## /bin/cp javacom-rb.jsp /web/www.java.com/de/renderers/javacom-rb.jsp
## /bin/cp javacom-rate-this-page.jsp /web/www.java.com/es/renderers/javacom-rate-this-page.jsp
## /bin/cp javacom-rb.jsp /web/www.java.com/es/renderers/javacom-rb.jsp
##
set dry_run=
if ( $#argv > 0 ) then
if ($argv[1] == "-n") then
set dry_run=echo
shift
endif
foreach lang (de es fr it ja ko nl pt_BR sv zh_CN zh_TW)
foreach file (${argv[*]})
set destination_dir = `pwd | sed 's-/en/-/${lang}/-'`
eval ${dry_run} /bin/cp ${file} ${destination_dir}/${file}
end
end
else
cat $0 | grep "^##"
endif
While I was in there, the sed command attracted my attention - probably because its the only fun part of part of the script - well the eval of the dry run variable and the grep through $0 for lazy usage message are kinda neat too, but back to the story. I thought, "Gee John, you were really playing fast and loose with your regex. Replacing any occurance of 'en' is crazy. We need '/en/' to be safe to match only the english directory name. So I hastily changed the sed line to:
sed 's-/\/en\//-/\/${lang}\//-g'
Thinking, "Great, now it will only match the exact string '/en/'".
Note: '\/en\/' being the escaped form of the pattern - since as everyone knows sed uses '/' as its delimiter...
You all laughing yet?!
Yeah, you seasoned regex guys, and I'm one of you - just having one of those days - you're seeing that when I had originally authored the sed command I chose '-' as the delimiter since '/' was going to be heavily used in the pattern. So now sed was looking for literally this mess: '/\/en\//'. Naturally it found no such patterns in the list of files and the script accomplished nothing.
I've had some half-baked idea that future coding in IDEs might free us from regular expression escaping problems and all syntax for that matter. I envision some visual clue that sets off a regular expression from the surrounding code such that no escaping is needed since the expression is expressed in non-ascii characters. I'll get back to that idea some day, or help me out here - anyone else thought about this?
Not sure if there is any lesson to be learned. The good thing is I used the dry run switch when I invoked the script and therefore had a chance to see that the pattern did not work and the script, if it were not in dry run, would have simply copied the same english file onto itself 11 times. I'm frequently surprised by how often the code I have authored looks foreign to me. Could be related to the fact that I continuously switch between perl, csh, sh, ksh, java, jsp, and jstl. Hard to believe, 50 years into the history of software programming, a single programmer is regularly using 7 or more different syntaxes for "if then else if" branching.
| perl | if ( ) { } elsif ( ) { } |
| csh | if ( ) then else if ( ) then |
| sh | if [ ] then elif [ ] then fi |
| ksh | if [ ]; then elif [ ]; then fi |
| java | if ( ) { } else if ( ) { } |
| jsp | <% if ( ) {%> <%} else if ( ) {%> <%}%> |
| and my personal favorite, not! | |
| jstl | <c:choose><c:when test='${}'></c:when><c:otherwise></c:otherwise></c:choose> |
I've annotated another copy of the script, in the event anyone can learn from it:
# !/bin/csh
#
## Invoke this script from the english branch in the directory
## of the file(s) that need to be copied to all the locales
##
## use -n switch to echo commands instead of executing them
##
## Example: where pwd is
## /web/www.java.com/en/renderers
##
## /web/tools/cp_l10n.csh -n javacom-rate-this-page.jsp javacom-rb.jsp
##
## output for dry run should be:
## /bin/cp javacom-rate-this-page.jsp /web/www.java.com/de/renderers/javacom-rate-this-page.jsp
## /bin/cp javacom-rb.jsp /web/www.java.com/de/renderers/javacom-rb.jsp
## /bin/cp javacom-rate-this-page.jsp /web/www.java.com/es/renderers/javacom-rate-this-page.jsp
## /bin/cp javacom-rb.jsp /web/www.java.com/es/renderers/javacom-rb.jsp
##
# be default the dry_run variable is set to nothing
set dry_run=
# check to see if we have more than 0 arguments
if ( $#argv > 0 ) then
# check to see if the dry run flag is the first argument
if ($argv[1] == "-n") then
# if it is set its value to the command "echo"
set dry_run=echo
# remove -n from the argument list
shift
endif
# Loop through the set of languages
foreach lang (de es fr it ja ko nl pt_BR sv zh_CN zh_TW)
# Inner loop through the remaining arguments which should be file
# names in the current directory
foreach file (${argv[*]})
# create a variable that substitutes the enlgish directory name
# for the directory name of the language in the outer loop
# use the back tick to cause the pwd (present working directory)
# comand to be run and
# pipe the pwd output into sed which does the language
# search and replace, the resultant value is stored in
# the variable destination_dir
set destination_dir = `pwd | sed 's-/en/-/${lang}/-'`
# use the eval command to execute the value of the dry_run varaible
# if dry_run was empty, then /bin/cp gets executed
# otherwise the echo command gets executed and /bin/cp
# is simply printed to standard out as text
eval ${dry_run} /bin/cp ${file} ${destination_dir}/${file}
end
end
# if we had less than 1 argument, cat the file and use grep to
# show only the lines marked as usage instructions designated by ##
# $0 a predefined shell variable set to the path of the script
else
cat $0 | grep "^##"
endif
Note, my professor of "Unix Shell Programming" would be very dissappointed that I have repeatedly referred to this utility as a script. He encouraged all his students to call them programs so that Unix administrators who wrote in shell would command the same salaries as programmers. They are slightly different skills, but I'm not sure I place a higher value on one over the other. Shell programming provides more instant gratification in that it usually provides very quick returns on time invested. It also often has higher risk in that you can easily create run away programs that do very bad things if they fail to check for arguments or validate accuracy of constructed paths. Something to watch out for is hooking up a script as a root cronjob. Make sure you test that script in a pure root environment before setting it loose. The ENV for root is often different than what you experience su'd to root. Use the su - , to make sure you're not bringing along any ENV baggage that cronjob root won't have. Whenever possible I also like to adjust the time the cronjob is set to run so that I can watch the results while I am at work, since it is often the case that you set your crons to run at night and its never fun to be greeted first thing the next morning, or the 1st of the month with an unwelcome surprise. (2005-07-20 12:19:18.0)
Permalink
Comments [3]
Thursday July 14, 2005
Monday June 20, 2005
Leaving my buddies at Sun is the biggest downside to the move. An engineering team that I used to manage took me out to "Joy Luck" Dim Sum in Cupertino so I could enjoy chicken feet and jelly fish one last time before setting off to the land of barbequed red meat - which I have nothing against mind you.

Left to right: Brian "Yukfai" Lam, Tiep Vo, Matthew Montgomery, John "Hoffie" Hoffmann, Richard "Tony/Frosty" Welch, Mike Matsui and Venky "Venkman" Kumar.
Photo taken by our former colleague and longtime friend Gwynn (2005-06-20 10:10:10.0)
Permalink
Comments [0]
Tuesday May 24, 2005
Thursday April 28, 2005
![]() Neo sees Agent Smith laying a trap |
![]() Hoffie sees a missing class file |
That output is from running truss on the process ID of the webserver demon; webservd. # truss -p 25150And of course a little editing in The GIMP which came packaged with my Java Desktop System. |
|
The debugging above is from my current project to install Sun's Java Enterprise System stack to provide a Portal infrastructure. We're deploying it on a Solaris 10 whole root zone that was created from a minimized install intended to be internet facing. This will be the first use of zones in my group's internet presence. For this test deployment we are using using two smokin' fast v40z's.
I'm jacking back in, uh, I mean turn up the volume. (2005-04-28 10:56:04.0)
Permalink
Comments [2]
Wednesday April 27, 2005 
Pat, we missed you. (2005-04-27 08:58:42.0)
Permalink
Comments [10]
Tuesday March 29, 2005
"I hereby declare, on oath, that I absolutely and entirely renounce and abjure all allegiance and fidelity to any foreign prince, potentate, state, or sovereignty of whom or which I have heretofore been a subject or citizen; that I will support and defend the Constitution and laws of the United States of America against all enemies, foreign and domestic; that I will bear true faith and allegiance to the same; that I will bear arms on behalf of the United States when required by the law; that I will perform noncombatant service in the Armed Forces of the United States when required by the law; that I will perform work of national importance under civilian direction when required by the law; and that I take this obligation freely without any mental reservation or purpose of evasion; so help me God."
As people born into citizenship, we have taken much for granted and might consider a military draft an incovenience. I remember feeling impetulant about registering with the Selective Service when I turned 18. Immigrants are faced directly with the bi-directional nature of American citizenship. My wife expressed concern over how many new citizens there were. My response was that these legal immigrants are the ideal people with which to swell the ranks of America; hard working, law abiding and hopefully sincere in their oaths. (2005-03-29 15:28:26.0)
Permalink
Comments [3]
Tuesday September 21, 2004
I just listened to the NC04Q3 New York event and heard Jonathan announce the utility computing plan to sell computing power at $1/CPU per hour. Although I did not hear him make this connection, I drew this conclusion from the announcement. Since we know we have the best price-performance kit out there, we will buy our own machines and sell the hardware's ability to crunch data as a commoditized utility to our customers. This way we can still make money while riding out the perception change. As we wait for the reality to sink in, we'll put our money where our mouth is, make the purchase for the customer, selling the raw performance instead. Ingenious. Credible. And you can sign up to test drive it now. (2004-09-21 10:49:41.0)
Permalink