Thursday, April 24, 2008

And You Thought Steam Punk Was Dead

150-Year-Old Computer Brought to Life (Scientific American).

Monday, April 21, 2008

Something You'll Never See Again

A little more fun with the Major College Major Sports in 2007-8: I found 239 teams which played both Division I Men's Basketball and either Division I (Bowl Subdivision) or Division I-A (Championship Division) football. The table below presents the wins, losses, and winning “percentage” for Football and Basketball. I then averaged the two percentages, to compute a “Combined Percentage,” and ranked the schools in order according to that. Fans of Kansas football (remember the slogan: “A Tradition Since September”) will note that this year was, indeed, special.

This table just shows the top 25. I've put the complete list elsewhere. Let me know which teams I've missed, there are probably several.

Rk School Football Basketball Comb.
      W     L       Pct.       W     L       Pct.     Pct.
1 Kansas 12 1 0.9231 30 3 0.9091 0.9161
2 Brigham Young 11 2 0.8462 27 7 0.7941 0.8201
3 Dayton 11 1 0.9167 21 10 0.6774 0.7970
4 Tennessee 10 4 0.7143 28 4 0.8750 0.7946
5 Texas 10 3 0.7692 27 6 0.8182 0.7937
6 Wisconsin 9 4 0.6923 29 4 0.8788 0.7855
7 West Virginia 11 2 0.8462 23 10 0.6970 0.7716
8 Boise State 10 3 0.7692 24 8 0.7500 0.7596
9 Memphis 7 6 0.5385 33 1 0.9706 0.7545
10 Southern California 11 2 0.8462 21 11 0.6562 0.7512
11 Northern Iowa 12 1 0.9231 17 14 0.5484 0.7357
12 Oklahoma 11 3 0.7857 22 11 0.6667 0.7262
13 Massachusetts 10 3 0.7692 21 10 0.6774 0.7233
14 New Mexico 9 4 0.6923 24 8 0.7500 0.7212
15 Connecticut 9 4 0.6923 24 8 0.7500 0.7212
16 Ohio State 11 2 0.8462 19 13 0.5938 0.7200
17 Appalachian State 13 2 0.8667 17 13 0.5667 0.7167
18 North Dakota State 10 1 0.9091 14 13 0.5185 0.7138
19 San Diego 9 2 0.8182 20 13 0.6061 0.7121
20 Drake 6 5 0.5455 26 4 0.8667 0.7061
21 Clemson 9 4 0.6923 23 9 0.7188 0.7055
22 Davidson 6 4 0.6000 25 6 0.8065 0.7032
23 Southern Illinois 12 2 0.8571 17 14 0.5484 0.7028
24 Western Kentucky 7 5 0.5833 25 6 0.8065 0.6949
25 Arizona State 10 3 0.7692 19 12 0.6129 0.6911

Monday, April 14, 2008

The X Files

An irritant of the Office 2007 era is that some people insist on sending you files in that $&#**$% program's default format: .docx, .xlsx, or .pptx. And these same people won't comply with your request to save the frakkin' thing in a reasonable format. (Like PDF. Nice, small, and I can't edit them to make you look completely ridiculous and send the result to all our friends. But that's a subject for another post.)

I've really been tempted to send my responses in Swahili. Transliterated into Urdu. Unfortunately, I don't speak Swahili, and my Acme translator's instruction book is in Hindi. So that's out.

Short of ending friendships and associations forever, it's now possible to read these files with version 2.3 or better of OpenOffice.org. You can't write in those formats, unless you want to do some minor hacking, but you can read them and convert them to a reasonable format.

Say as OpenDocument (.odt). Then send it back to them and when they complain, point out that it's an open standard, and Microsoft should be able to read it. (Not my idea.)

Wednesday, April 09, 2008

Baskeball Rule Changes I'd Like to See

While watching the (fantastic) NCAA Men's Basketball tournament, I realized that there are a few rules I'd like to see changed. One I've mentioned before, but the others are new, at least for me.

  • As I mentioned before, eliminate the ability to call time out when you're about to loose the ball. In the Monday night game, during overtime, I think, there was a play where a half-dozen players were on the floor going after the ball. Someone tried to cradle the ball and call time. And we've all seen people call time as they're flying out of bounds. Why do we allow this? If you're trying to put the ball in play from out of bounds, you can't call time after the four second count. You can't call time after you've spent eight seconds in the back court. Yet you can call time as you catch an errant pass while you're flying out of bounds, if you can get your hands into a “T” before you touch down.

    In the timed cases mentioned above, the purpose of the rule is to forbid a team to call time out before a change of possession. Well, in the case in Monday's game, or the guy-flying-out, a change of possession is about to occur. So why can you call time?
  • Move the three-point line out another foot or so. Looks like this will happen in the fall.
  • Except in the case of injuries, a substitute has to stay in the game for two changes of possession: this eliminates the offense-defense substitutions you see at every whistle during the end game, which tends to slow things down immensely. I noticed this while watching taped games during the tournament. My DVR has a ten-second advance button. When I heard the substitution buzzer sound, I'd hit the advance once. I never missed a single second of play, or a free throw.
  • And here's the biggie: Eliminate the Hack-a-Shaq. Kansas won the game because they did something illegal: they fouled. Repeatedly. That Memphis didn't take advantage (and I'm glad they didn't) is the Tigers' fault, but the point is, KU took advantage of a bad rule. It gets worse, at least from my point of view: in the last ten seconds of regulation, Memphis was trying to foul someone, anyone, so that Kansas would get two free throws, rather than a chance to hit a three and tie the game. A Memphis foul, an illegal act, would most likely win them the game. OK, KU could have done the make-the-first, miss-the-second, trick, but then they'd have to get the rebound and put it back up with only five or six seconds left, at best.

    Not to mention, the endless trek to the foul line at the end of a close game is boring. It doesn't help your ratings, CBS, got that?

    So let's change the rule: let the team fouled in the last two minutes have its choice, assuming they're in the bonus:
    • On One&One fouls, if the team makes the first shot, they can either shoot the second shot or take the ball out of bounds.
    • On Two shot fouls, the team can take the both shots, or take one shot and then get the ball out of bounds.
    • On Three shot fouls, it's two shots plus ball.
    • Of course, on flagrant fouls, it's still two shots plus the ball.
    • You still only get one shot if you're fouled in the act of shooting and make the basket.
    • If you're not in the bonus yet, you get the ball out of bounds, same as now.
    This change would speed up the end-game considerably, as well as keeping a team from profiting while fouling. (Sorry, Memphis, it's not retroactive.)

Anybody else like any of these?

Note added in proof: I swear I did not read this until after I first posted the above.

Tuesday, April 08, 2008

The Game

KU 75, Memphis 68 (OT)

Thursday, April 03, 2008

pathlint

In my day job I spend a fair amount of time working on computers where I'm not the sysadmin. That's fine, as I'm glad not to have to administer a 90-node cluster, but it means that I have to put up with some things that I don't here on dear, old, slow, Hal. (Hey! Sorry.)

For example, different machines have different locations for the Fortran compiler and libraries, so the sysadmin helpfully locates them for you by adding the appropriate directories to your path. Typically, you'll be told to put a statement of the form

source /usr/sysadmin/cshrc

into your .cshrc or .bashrc file, where that file says something like:

setenv PATH $PATH:/opt/intel/bin

(in csh, of course) which adds the Intel directory to your path.

That's fine the first time you open up an xterm. But suppose you use your xterm file to launch another xterm? Now you've got two invocations of /opt/intel/bin in your path, one after another. Doesn't do too much harm, but it can be difficult to look at your path and decide which directories are there.

So I wrote a little Perl script called pathlint to take care of this:

#! /usr/bin/perl

# Learn about $ENV in "Learning Perl," 2nd ed., pp. 143-4
# split is on pp. 89-90:

# Sort routine from http://www.perl.com/doc/FAQs/FAQ/oldfaq-html/Q5.4.html:

# This could almost be made into a one-liner:

undef %saw;
@out = grep(!$saw{$_}++, split(/:/,$ENV{"PATH"}));

# The inverse of split is (Learning Perl, p. 90):

$newpath = join(":",@out);

# Note the lack of a newline, because we're going to use
#  this as the argument of a path command

print $newpath;

Note that this doesn't actually reset the path, which would require adding something like

# Reset the path:
# $ENV{"PATH"} = $newpath;

That's because the Perl script is a child process, and children can't reset the environment of their parents. Think about it: if you could, then a program like xine could switch your directory so that you would start looking at Aunt Tillie's porn directory – trust me, you don't want to go there.

So what pathlint does is to print out the current path, without any duplicate directory names, e.g.

$ echo $PATH
/bin:/usr/bin/:/opt/intel/bin:/opt/intel/bin

$ pathlint
/bin:/usr/bin/:/opt/intel/bin

without a newline. To actually change the path, just

$ setenv PATH `pathlint`

(those are backquotes) if you are using cshell or one of its derivatives, or

PATH=`pathlint`

from bash, dash, sh, ksh, etc. If you put the appropriate line at the bottom of your .cshrc or .bashrc file, opening up a new xterm will always start you with an unduplicated path.

Wednesday, April 02, 2008

The First Night

Of course, I got tickets to the official opening game at Nationals Park, watching the Braves play the Nationals on Sunday.

Those of you outside the DC area might not know that they built the park with very little parking. As a 20-game ticket holder, I could have gotten a parking pass for $20-$35 per game, but it's a difficult part of town to get in and out of, so I decided to use one of the other two options: Metro, or the National's unique shuttle service, where you park (for free) in a lot at old RFK Stadium, and then take a shuttle bus to the new park, all for free. Must cost the Lerners a bundle. Tonight, I decided to take the shuttle, which winds out of RFK, onto the Southeast-Southwest Freeway (I295/395), past the Marine Barracks, and dumps you about three blocks from the stadium. All in all it went pretty smoothly, but this was a Sunday night. How things will work during rush hour is anyone's guess.

Since I had tickets up (way up) above first base, when I got to the park

First View of Nationals Park

I headed for the first base entrance, where I found a rather long line:

The Line Outside Nationals Park

The problem, of course, was that Dubya was present, so we all had to go through metal detectors. That's fine, except the first base side only had four. After an hour or so, someone from the Nationals finally got a clue, and told us that in right center field there were twenty (count 'em, 20) gates, and small lines. Gee, thanks guys. There were dozens of Nats employees hanging around, saying “gee, look at the long lines” for an hour or more, and they finally say something at about 7:50, for an 8pm start.

I eventually got in, and up the the main concourse in time for the National Anthem

The Opening Ceremonies

and, thanks to the wonders of TV commercials, up to my seat (second row from the top, though our regular seats will be much closer to the field) in time for the first pitch

Just after first pitch at Nationals Park

Odalis Perez to Kelly Johnson, for a strike.

The Nats scored twice in the first inning, then made 24 straight outs before Ryan Zimmerman ended it with a walk-off homer with two out in the bottom of the ninth. During the game, I took a bit of a walk-about, and got this picture of the Anacostia waterfront, which looks a lot better at night than it does in the day.

Anacostia Waterfront from top of Nationals Park

All in all, the park looks to be a pretty good place to see a ball game. The main question is whether or not 40,000 people can get to it during a DC rush hour, or out of it after a day game. But as a place to watch baseball, it looks like it's going to be a winner.