Saturday, June 13, 2009

Installing OpenSUSE 11.1 on a Dell OptiPlex GX270

Ouch! June 14 update

Bad things have been happening. The box reliably(!) freezes. More in a follow-up.
OK, call me a Luddite, but after some years, I'm finally going to update this machine to OpenSUSE 11.1. So I got the image and burned a DVD-R.

Today I popped the DVD into the drive, shutdown the box, and rebooted.

Oops, can't boot from the DVD drive (/dev/hdd)! That's an annoyance. The BIOS didn't seem to give me a way to do that. It was willing to boot from the CD drive (/dev/hdc)

Well, I had to open the box and pull the drive out so I could see the legend. The jumper was set to "CABLE" (as in "cable select"); based on an old prejudice I moved it to "MASTER". I also put the end of the cable onto the DVD drive, so the cable and the jumper would agree.

Now I could boot! OK, first thing, it complained about my fstab; it said the root partition on /dev/sda6 had things like "/dev/hda1" for the device; they wanted me to do "LABEL=blahblah". or maybe the uuid thing, which I am just not gonna do. Why? Alert readers will notice that the new OS calls the root partition /dev/sda6 (as in SCSI) whereas the fstab used /dev/hda1 (IDE). Harrumpf.

OK, I humored it; I switched the non-root partitions to the LABEL thing. Next was a conflict with kernel-default-nongpl-2.6.11.4-21.11.i586; I told Yast2 to just deinstall it.

What's next? OK, it added a whole boat-load of other packages to resolve dependencies. And that was it! I pulled the trigger.

Man, I feel like a twitter-er, but I'm gonna stop here because the other computer (the one I'm typing this one on) wants to upgrade ffox to 3.0.11

Other issues

Yes, there were several:
  • we had avahi-daemon taking up just about all the CPU; "chkconfig off" took care of that. also "/etc/init.d/avahi-daemon stop"
  • I typed "startx -- :1" but I got no WINDOWMANAGER because the path to fvwm2 is now /usr/bin not /usr/X11R6/bin. Not only that, but the .fvwm2rc has paths like /usr/X11R6/lib/X11/fvwm2/ -- that's right, doesn't exist.
  • sound doesn't work!
  • emacs doesn't do what I'm accustomed to.
  • NFS server was turned off! "/etc/chkconfig nfsserver on", then "/etc/init.d/nfsserver start" Whew!
  • autofs was turned off. they also moved my auto.master aside (auto.master.rpmsave). Arrgh, there was a reason for that -- syntax has changed! Gotta puzzle through that too, as the NFS client won't mount any of my (now all automounted) remote filesystems.
    • NEVERMIND. The problem was I had an extra parameter on the line. It wasn't "all" that couldn't be mounted, just the one that had the (bad) extra parameter. The bad file had:
      pres15content  -rw,hard,blahblah pres15:/content --timeout 60
      The desired line was:
      pres15content  -rw,hard,blahblah pres15:/content
      i.e., everything except the "--timeout 60". So that was my fault.

I'm going to have to get used to emacs. It's got all this gtk stuff! But not having sound... that's annoying.

East Coast to West Coast Executive's Translation Guide

I found this in my archives, from the late 1980s. It's mostly (but not entirely) tongue in cheek.

East Coast to West Coast
Executive's Translation Guide

EAST COAST  WEST COAST
Absolutely no Maybe
Action item for Joe by 2/12 Joe's working on the problem
Bozo Subcontractor
Brawl Design Review
Dictator Facilitator
Do it and do it now Can you sign up for this program
Do it right or you're fired I'm confident in you
F--- off Trust me
Follow the spec Is there a spec?
Get out of my office Let's get a consensus on this one
He's a jerk He's not signed up to our plan
He's a subordinate He's a team player
I'll cover your a-- Consider me your resource
Ignore him he's new I'm bringing you up to speed
Local bar Offsite facility
Oh sh-- Thanks for bringing that to my attention
Overdesigned Robust
Punch his lights out Constructive confrontation
Shut the f--- up Thank you for your input
Shut up a minute Let me share this with you
That's totally incompetent Let me build on that point
Unemployed Consulting
Overbudget On schedule
Underbudget We haven't started yet
We finished early <No translation>
We're done How do you feel about that
What's wrong with you I certainly understand your feelings
Where is the spec? What is a spec?
Where's the schedule What is the game plan
Yes Maybe
Your plan sucks Let me share my feelings on this plan

Friday, June 12, 2009

Machine translation may have a way to go...

For some reason the Japanese children's song about goat pen-pals came to mind. I couldn't completely recall the lyrics but I got a few of them: black goat, white goat, letter, ate... and google helped me out. If your display looks like mine, quite a few entries show a "Translate this page" link on the right, and just for kicks I tried one.

The original page is here: http://blog.poko.daa.jp/?eid=603838; what you see basically in the middle is the title "やぎさんゆうびん" -- yagi-san (goat) yuubin (post, as in postal service). Then come the lines of the song:
♪ しろやぎさんから おてがみついた
♪ くろやぎさんたら よまずにたべた
♪ しかたがないので おてがみかいた
♪ さっきのてがみの ごようじなぁに
Basically, a letter from the white goat came to the black goat, who ate it without reading it. Nothing for it but to write a letter back: "What was your last letter about?" You can see where this is going, right? The white goat gets the letter from the black goat, eats it rather than reading, and infinite loop....

Now check out the translation. Japanese often doesn't have separations between words; in the above song, there are separations sort of between lines. I think this is what makes it really hard for the translation software to parse it.

Still the translation has its farcical side:
♪ MITSUITA to us from the white goat TABETA to YOMAZU GISANTARA
♪ ♪ KAITA there are black and you can not stand it so I stick ♪ The earlier you have it
I'll guess that English, French, or Chinese are easier than Japanese. Just a guess though.

Cheaper than a flight to Paris

The lovely Carol had a birthday recently, so I took CalTrain to San Francisco and walked a few blocks up 4th to meet her and our teen-ager at LuLu, on Folsom, just off 4th next to a Shell(?) station. I got there first, and decided to wait for them at the table. I saw them walking up to the door and dashed up to greet them. "Welcome to LuLu!" I said, and got a kiss from the birthday girl.

LuLu has an extensive wine list, and something I really liked was their "wine flight" -- "tastes", 2 oz. each -- of each of four wines from a region. I tried the Rhône valley set and liked three of them:
  • Syrah, costieres de Nimes, domaine de petite mas (France) 2006;
  • Syrah and Grenache, domaine de l'Echevin, Côtes du Rhône Villages (France) 2006 (really nice);
  • Syrah, Grenache and Carignan, Domaine de la Verrière, Côtes du Ventoux (France) 2007 (maybe my favorite)
H'm, I guess that means I'm a blend kind of guy? Those four quarter-glasses set us back $11, a fantastic chance to get a taste of four pretty good wines. Now if I spelled them correctly....

On to the food: we got the romaine salad for the table. Carol ordered the "Grilled Pacific Prawns with Chick Pea, White Bean and Green Bean Salad, Charmoula Sauce." The teen-ager got the asparagus risotto (big surprise there--not). I asked for the rotisserie lamb, which came with ratatouille. We also got a succotash of corn and... something. It was sweet and tasty.

Everything was good. The lamb was a little on the rare side. But what really excited me was the ratatouille. I'm not sure what they put in there, but every bite reminded me of a past visit to the Paris area. I can't describe it exactly, but there it is.

We didn't finish everything, and the wait-staff boxed the leftovers for us in paper-based boxes, placed in a paper sack. We did order dessert: a semifreddo with fruit, and the panna cotta. I asked for a cup of decaf coffee. It tasted great -- like coffee I've had in France -- but I think it was what one French barista called "vrai café" rather than "faux café" (I was wide awake quite early -- like two -- the next morning).

Dessert came with a candle for the birthday girl. The semifreddo -- well, I guess we aren't quite sophisticated enough to fully appreciate it. The panna cotta -- that was a different story. I took just a couple of small bites, but if I closed my eyes and forgot everybody was speaking English, I might think I was on the Continent.

Gosh, I feel really decadent writing all that stuff about Europe, and I hope I haven't oversold the place. But I'm glad we discovered LuLu. The service was terrific. It's not an economy kind of place, but it's a lot cheaper than a ticket to Europe, and you don't have to speak French.

Sunday, June 07, 2009

Means of Grace? Spiritual Disciplines?

I just posted this article on waywords. There's this tension between the disciplines, and grace, and remembering how much we need God and...

I hope you enjoy it.

wget 1.10 hurts -- or, Perils of an Old OS

The ex-teen's friend tried to update Firefox on our box and discovered that the commands he knew just didn't work. What operating system are we using, anyway?
$ uname -a
Linux p4 2.6.11.4-21.11-default #1 Thu Feb 2 20:54:26 UTC 2006 i686 i686 i386 GNU/Linux
OK, so it was compiled three years ago. Well, ffox 3.x wouldn't run on this box anyway, even if whatever commands had worked.

So I decided to overcome my Luddite slothful tendencies and download the latest stable OpenSUSE version -- which turns out to be 11.1 (there are release candidates for 11.2, but I didn't want to go there). So I went to the download site, selected DVD and 32-bit processor, and fed the ISO image link to wget, like this:
$ time wget -O /content/openSUSE-11.1-DVD-i586.iso \
http://download.opensuse.org/distribution/11.1/iso/openSUSE-11.1-DVD-i586.iso &
[1] 9452
[[...]]
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/opensuse/distribution/11.1/iso ... done.
==> PASV ... done. ==> RETR openSUSE-11.1-DVD-i586.iso ... done.
Length: 262,916,096 (unauthoritative)
It got off to a good start, though 262-263 Mbytes seemed pretty small for a DVD install image. I feared a 32-bit arithmetic problem, but anyway, the download speed was over 1Mbit/second over DSL. A few hours later, I got some bad news:
100%[==================================>] 2,147,469,984  157.43K/s    ETA 00:00
wget: progress.c:704: create_image: Assertion `insz <= dlsz' failed.
-bash: line 4: 9453 Aborted wget -O /content/openSUSE-11.1-DVD-i586.iso http://download.opensuse.org/distribution/11.1/iso/openSUSE-11.1-DVD-i586.iso

real 275m45.797s
user 0m4.908s
sys 0m26.973s
$ ls -o /content/openSUSE-11.1-DVD-i586.iso
-rw-r--r-- 1 collin 2147502816 2009-06-07 12:46 /content/openSUSE-11.1-DVD-i586.iso
$
That looked to me like a 32-bit problem. I mean really, 2147502816 is clearly bigger than 2,147,469,984, right? Well, not in 32-bit signed arithmetic:
$ d2x 2147502816
0x80004ae0
$ d2x 2147469984
0x7fffcaa0
$ type d2x
d2x is a function
d2x ()
{
python -c "print('%#x' % $1)"
}
$
Awww, man! What kind of wget were we using here anyway?
$ rpm -qf /usr/bin/wget
wget-1.10-1.3
$ rpm -qi wget
Name : wget Relocations: (not relocatable)
Version : 1.10 Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany
Release : 1.3 Build Date: Fri 14 Oct 2005 09:34:32 AM PDT
[[...]]
$
So, it was compiled over three years ago. I made a token effort to find release notes for this 3½-year-old version of wget but no joy.

Well, it turns out that the file was actually 4557883392 bytes in length. Translated into hex, that's 0x10fabc800. If we trim that to 32 bits, it comes to...
$ x2d fabc800
262916096
$
Which matches the bogus "Length: 262,916,096 (unauthoritative)" that my old version of wget gave me earlier.

Well, perhaps OpenSUSE 11.1 will give me a version of wget that'll handle a 4.5Gbyte download, even in a 32-bit version.

"Hope springs eternal..." --Pope

Workaround

So what to do? Fortunately my office is very Linux-friendly. I pulled the image onto one of the boxen there, and I'm running rsync. Yes, even a 2005 rsync (version 2.6.3, Build Date: Tue 22 Mar 2005 10:54:18 AM PST) can handle files bigger than 2GB; hopefully it can also handle files bigger than 4GB. I guess we'll see.
Yes it does!

<Pope again here> "A longing fulfilled is a tree of life."

Tuesday, June 02, 2009

Best place to work? You bet!

True story about working at NetApp. Names changed arbitrarily. "Bob" was an intern with us last summer; he shared an office with me (still does). At the end of the summer, our boss, "Ingrid," told me we could hire a new college grad. Should Bob come on full-time after graduation (December)?

"Sure!" I said. He performed well during the summer -- not like a seasoned veteran, but like a promising young intern.

Ingrid made the offer and Bob accepted. He helped Ingrid out a number of times with reports and websites and such, while learning a whole bunch of stuff, including Python. He did some programming tasks that I really would never have gotten around to, and we were able to deliver a fuller set of services to the product developers. In particular, Bob came up with a cool way to provide a service the developers have wanted for quite a while, and put it into production last week. It's fast, too -- faster than the rest of us thought it could be.

Yesterday, June 1, one of the developers emailed Bob (I was cc'd). The new capability Bob coded up? It worked great!

Now for the fun part. NetApp's Vice Chairman, Tom, has an open offer out: "Catch someone doing something right," he said, "and tell me about it. I'll call that person and thank them." So I emailed Tom last night:
To: Vice Chairman Tom
Subject: Caught this guy doing something right!
Date: Mon Jun 1 19:19:59 PDT 2009

Hi Tom,

Bob is a young guy, been with us just over a year (the first 6 months as an intern, some of that being part-time). Our developers had been asking for the capability to (technical details elided) Though he's been with us this short time, he figured out a way to provide this capability, and as you can see from the below, a happy (internal) customer also expressed his appreciation.

btw "only took 2 minutes" is contrasted with "waiting a few hours after the nightly build" so this is a huge plus for our developers. If you're still making those phone calls, I'm sure it would mean a whole lot to him.

Bob's extension number is: XXXX

Thanks!

--- Original message ---
From: <Joe.Developer@netapp.com>
To: Bob
cc: <elided>
Subject: re: quick <elided> capability

It works really well. Only took 2 mins to check (technical details elided)....

Now we have a way to ensure the fix really works before checkin.
Thanks a lot, Bob

Joe
Mid-morning, the phone rang. Bob didn't recognize the number. It was local, though, so he picked it up. I overheard the conversation (Tom's voice carries, even on the phone).
Bob: Hello?

Tom: Hi, Bob? This is Tom M______. How ya doin'? (Bob looked quite surprised.)

Bob: Uh, fine.

Tom: Hey, I just got a message from Collin Park telling me that you provided a way for developers to (technical details elided)... Very cool. How long you been with us?

...etc...
The whole thing was maybe a minute or two, but Bob had this gigantic smile on his face afterwards.

A minute or two later, I got an email back from Tom. "Just spoke to Bob... thanks for bringing that to my attention."

You know, the only reason I would ever want to be a big-time manager or VP or anything would be so I could make phone calls like that. What a kick in the pants! I think Bob was smiling the rest of the day.

NetApp's not perfect; it is, however, a great place to work. How many other companies have a big-time executive willing to call a one-year employee on some random person's recommendation?

I love this company!