Archive for April, 2007

Lehigh Valley Half-Marathon Race Report

Sunday, April 29th, 2007

I ran in the Lehigh Valley Half-Marathon today. This was my first race over 4 miles and also by far the biggest race I’ve ever been in (4000 runners!). I have been training for the event since mid-December, putting in approximately 410 miles of running in the previous 19 weeks (averaging about 22 miles a week). I had three weeks of 30 or more miles. I’m hoping next year to be at a higher mileage base, but for now I was really happy to make it through training without any significant injuries.

The start of the race was neat. The MC was great, there was tons of energy in the crowd as he got everyone psyched up before the race began, and a nice gentle downhill for the first half a mile or so. The runners were initially really packed in, but after the first two miles the racers started thinning out and it wasn’t quite so awkward. There were live bands or DJs at least every mile which provides a nice distraction (although a few weren’t really playing anything upbeat). The finish line was on the track of the J. Birney Crum Stadium which added a nice touch.

Due to my (somewhat) trusty Garmin Forerunner 305, I was able to get splits for the race, which were:

Mile Split Time Heart Rate
1 7:50 164
2 7:46 172
3 7:35 173
4 7:39 175
5 7:35 178
6 7:52 178
7 7:47 178
8 7:56 177
9 7:50 179
10 7:59 177
11 8:23 177
12 8:23 177
13 8:10 178

My official time will be 1 hour 44 minutes and some odd seconds, it is chip timed and I will post the time once I learn my official results. My friends James Leigh and Jon Laman ran the race too and did really well, they came in around 1 hour and 32/33 minutes.

Update: The official results are posted at http://www.lehighvalleyhalfmarathon.com/results/07results_half.txt

My chip time was 1:43:55

Place Div  /Tot   Gende/Tot   Name                Ag G Bib   City      St Split10 Guntime Chiptim Pace
473    64/235     386/1499  Bill Hathaway       35 M   418 York Have PA   47:47 1:44:15 1:43:55  7:56 

Self-Signed Certificates with Sun’s Directory Server 6

Thursday, April 26th, 2007

This is basically a rehash of an email conversation I had on a mailing list with someone who was trying to get ldapsearch and the Solaris LDAP namesevice commands to communicate with a DS 6 instance over SSL.

Problem: The self-signed certs generated by DS6 have a certificate name that doesn’t validate properly to tools like the Solaris 10 ldapsearch command or ldap_cachemgr when used in SSL mode.

Background: Any SSL based software that wants to verify certificates will compare the subject/cn of the certificate against the hostname of the server.
The default subject of the DS6 auto-generated certs looks something like this:

CN=$SHORTNAME,CN=636,CN=Directory Server,O=Sun Microsystems

Solution: In order to work with software that validates that the hostname matches the subject, we need to remove the existing certificate and create a new certificate with a subject. that matches the hostname. The steps below will generate a self-signed cert with a proper subject :

# dsadm stop $PATH_TO_YOUR_INSTANCE

# dsadm remove-cert $PATH_TO_YOUR_INSTANCE defaultCert
(will see error msg: You are going to remove the certificate used by the instance. You will not be able to restart the instance.)

# dsadm add-selfsign-cert -S cn=$YOUR_FQDN_HERE \

         $PATH_TO_YOUR_INSTANCE  defaultCert

# dsadm start $PATH_TO_YOUR_INSTANCE

Once you have done this, you will still need to export the certificate and import it into your certificate database (typically cert7.db/cert8.db for NSS based commands or a java keystore).

Got a Nintedo Wii

Thursday, April 26th, 2007

I played with a Wii at a friend’s house around Christmas and it was pretty fun. I had been checking the local Target and Costo stores once every few weeks for Wiis, but they never had any in stock. I finally broke down and bought one on Ebay for about $320. It arrived yesterday and the whole user experience is just a good time.

My wife and I spent about 20 minutes checking out all the options available for creating the avatars used in the game (called “Miis”) and then we played some bowling. I also played a bit with the tennis and boxing games. I know you don’t need to put a lot of body english into moves, but it can make it more fun (and somewhat of a workout).

If you are a graphics junkie, theWii will very likely dissapoint you as the graphics certainly aren’t killer, but the way you interact with the game controllers makes playing far more enjoyable than any experience I’ve had with other game consoles or PC based games. I need to pick some more games and an extra controller set this weekend so two people can play at once.

QFS on top of ZFS

Thursday, April 26th, 2007

A co-worker had a question today about QFS that I wanted to test out. I didn’t have any machines handy that had free disk drives, but I did have a machine which had free space in a ZFS pool. It was simple to make some zvols to emulate block devices and created a QFS file system on top of the zvols. Here is what I did:

root@t2000: 415 # pkgadd -d . SUNWqfsr SUNWqfsu

root@t2000: 416 # zfs create -V 2g zfs/metadata
root@t2000: 417 # zfs create -V 2g zfs/data1
root@t2000: 418 # zfs create -V 2g zfs/data2

root@t2000: 419 # vi /etc/opt/SUNWsamfs/mcf
qfs1 10 ma qfs1 on
/dev/zvol/dsk/zfs/metadata 11 mm qfs1 on
/dev/zvol/dsk/zfs/data1 12 mr qfs1 on
/dev/zvol/dsk/zfs/data2 13 mr qfs1 on

root@t2000: 420 # /opt/SUNWsamfs/sbin/sammkfs -a 128 qfs1

root@t2000: 421 # echo “qfs1 – /qfs1 samfs – yes stripe=1″ >> /etc/vfstab

root@t2000: 421 # mkdir /qfs1

root@t2000: 422 # mount /qfs1

I’m positive my configuration wasn’t optimal, but it was very easy to get QFS setup to answer the question.

I just saw an annoucement about QFS being open-sourced, very cool indeed.

ZFS boot in Solaris Express works

Saturday, April 21st, 2007

I downloaded a copy of Solaris Express (aka Nevada) build 62 and was able to use the toolkit and instructions posted by Lori Alt to get a VMWare image built with only ZFS on a mirrored storage pool.

Here is the profile that I used:
# Jumpstart profile for VMWare image w/ two
# emulated IDE drives
#
# ZFS boot settings based off Nevada b62 patched
# install image
#
#
install_type initial_install
cluster SUNWCreq
cluster SUNWCssh
package SUNWbash add
filesys c0d0s1 auto swap
pool bootpool free / mirror c0d0s0 c0d1s0
dataset bootpool/BE1 auto /
dataset bootpool/BE1/usr auto /usr
dataset bootpool/BE1/opt auto /opt
dataset bootpool/BE1/var auto /var
dataset bootpool/BE1/export auto /export
# uname -a
SunOS zfsboot 5.11 snv_62 i86pc i386 i86pc
# df -k

Filesystem            kbytes    used   avail capacity  Mounted on
bootpool/BE1         7676928  353874 7153830     5%    /
/devices                   0       0       0     0%    /devices
/dev                       0       0       0     0%    /dev
ctfs                       0       0       0     0%    /system/contract
proc                       0       0       0     0%    /proc
mnttab                     0       0       0     0%    /etc/mnttab
swap                  300032     364  299668     1%    /etc/svc/volatile
objfs                      0       0       0     0%    /system/object
sharefs                    0       0       0     0%    /etc/dfs/sharetab
bootpool/BE1/usr     7676928  158180 7153830     3%    /usr
/usr/lib/libc/libc_hwcap1.so.1
7312010  158180 7153830     3%    /lib/libc.so.1
fd                         0       0       0     0%    /dev/fd
bootpool/BE1/var     7676928    9672 7153830     1%    /var
swap                  299668       0  299668     0%    /tmp
swap                  299692      24  299668     1%    /var/run
bootpool/BE1/export  7676928      18 7153830     1%    /export
bootpool/BE1/opt     7676928      18 7153830     1%    /opt

#
# zpool list

NAME                    SIZE    USED   AVAIL    CAP  HEALTH     ALTROOT
bootpool               7.44G    511M   6.94G     6%  ONLINE     -
# zpool status
pool: bootpool
state: ONLINE
scrub: none requested
config:

NAME        STATE     READ WRITE CKSUM
bootpool ONLINE        0     0     0
mirror   ONLINE        0     0     0
c0d0s0   ONLINE        0     0     0
c0d1s0   ONLINE        0     0     0

# swap -l

swapfile             dev    swaplo   blocks     free
/dev/zvol/dsk/bootpool/swapvol 182,1         8     2040     2040

# dumpadm

      Dump content: kernel pages
       Dump device: /dev/dsk/c0d0s1 (dedicated)
Savecore directory: /var/crash/zfsboot
  Savecore enabled: yes

It is too cool being able to run:

zfs snapshot -r bootpool/BE1@initial_install

I’m really looking forward to when this technology makes it into the production Solaris distribution.

Note about the jumpstart profile: this isn’t a standard jumpstart profile I would use (I typically load a customized set of clusters and packages, components like man pages are always a good thing to have), but I wanted to just get a feel for ZFS boot and not have to wait for a large amount of Solaris OE software to load since I was likely going to be re-jumpstarting my VM a bunch of times over the weekend.

New cross-platform variant of the SE Toolkit

Friday, April 20th, 2007

Richard Petitte, the original creator of the venerable SE Toolkit has now started a cross-platform version that looks pretty interesting.

You can get more details at the xetoolkit website. Here are the high-level points Richard said he was trying to address:

XE is an attempt to recreate the usefulness of SE in a product that has many other features there from the start. These are

  • Multi-platform; Solaris is a nice place to collect metrics, but the world is a big place.
  • Network aware; data collection is a service and all applications connect to the service.
  • Multi-platform GUI without dependence on a particular set of user interface libraries.
  • Multi-lingual; SE is used around the globe and if XE enjoys the same success, it’s important that it speak the native language.
  • 64 bit clean; we’re at the point where applications should be written in 64 bit first and then QA’d for 32 bit functionality.
  • Thread safe; as all Java applications need to be.
  • Secure; both authentication and transmission.
  • Open source for open source uses. Free to use for those only using the tools and free to use for those developing other free tools. Use of The XE Toolkit for development of proprietary, commercial software requires a professional edition license.

I’m going to take XE for a Solaris and Linux spin this weekend (after I take a crack at ZFS Boot on Nevada build 62).

Update: When trying XE on a  Solaris 10 11/06 box, I received error messages that the locale couldn’t be set.  I had to add the following packages: SUNWeuluf  SUNWeu8os.  The wrapper script forces a locale setting of en_US.UTF-8 and you need to have that to be able to run XE.  The XE Toolkit mailing list quickly helped out with that problem.

Tapering for the half-marathon

Friday, April 20th, 2007

My big race is in 9 days, so I’m starting to taper my training.  I came across an interesting article about tapering for various distances by running guru Pete Pfitzinger that had some good advice.    Basically it comes down to the fact that with a short period of time left, there is almost nothing you can do to increase fitness, but you can certainly hurt your performance by over-training and not having sufficient rest, or in the worst case, injuring yourself.

Jury Duty

Friday, April 20th, 2007

I had to serve on jury duty this week for the York County, PA court system. Ive never served on jury duty before, so I was really interested in finding out how it worked. I arrived on Monday morning and and we had about 45 minutes worth of instructions and watched a video on the process. I basically spent the rest of the day reading and chatting with other people.

Tuesday was pretty much the same case, until around 3:00 pm, when I was selected to be part of a jury pool. A group of names were called out, and about 24 of us (myself included) were marched down to a court room. Once inside, the judge explained the process and we were asked a series of questions to make sure that none of the jurors knew any of the parties (judge, lawyers, defendant) and didn’t have any reason to be biased (such as having a police officer for a spouse). The lawyers on each side we allowed to eliminate jurors they didn’t want to have on the case. We waited for 10-15 minutes while the two sides analyzed the list of jurors (they had listened to our responses to questions and also had detailed questionaires we had filled out before arriving), and submitted their list to the judge. I was one of the 12 chosen to be on the jury. Since it was about 4:00 at that point, court broke for the day and we were instructed to show up to the jury room assigned to the judge the next morning.

On Wednesday morning the trial started. The prosecution and defense read their opening arguments and then the prosecution called their witnesses. We were also shown some video footage and photographs. The defense attorney cross-examined some of the prosecution’s witnesses, but seemed to be going down a few odd tangents. The defendant testified and would have of had a reasonable story were it just a “one witness versus another” case, but the video footage clearly showed major contradictions against the defendant’s testimony. It was actually kind of odd hearing what the defendant said when he had just seen the same video the jury had. After the closing arguments finished, the judge instructed us to return to the jury room for deliberation. I asked about the procedure for reviewing evidence (mentioning the video tape) and the judge replied that he would check with the attorneys and then send it to us if allowed. We filed into the jury room and started discussing the case.

I was elected the jury foreman (I think largely based off my question to the judge), which seemed kind of novel, but also made me a bit nervous since I felt some additional weight on my shoulders that we reach a verdict fairly. I had read in Robert Cialdini’s excellent book Influence that it was important to not have anyone state their initial decision first, since once a public position is taken, people tend to be much more reluctant to change their views. We received the video that had been submitted into evidence by the tipstaff (the people responsible for handling the jury and other misc. items for the court), and watched it again, going back and re-watching several key parts. I went around the table and asked everyone if they had any questions about the evidence or the charge they wanted to discuss before we voted. We had about 30-40 minutes of discussion, but most were minor points and it seemed that everyone felt satisfied that they understoof the evidence and the nature of the charge. We then went around the table and asked everyone what felt the verdict should be. We had a unanimous decision that the defendant was guilty. We all had to sign a paper with our names and juror numbers that indicated the verdict. I then knocked on the door to inform the tipstaff that we were finished deliberation. After about 30 more minutes, the tipstaff informed us that court was going back into session and the jury was marched back in.

The judge asked if we had reached a verdict, and I said yes, I then got to say “We the jury find the defendant, XXXXX, guilty of the charge of retail theft”. It was kind of enjoyable saying that line, although I felt some sympathy for the defendant. There were a few more formalities, and then we were dismissed. Sentencing would happen at a later date, and be at the judge’s discretion. The jury is only involved in deciding the guilt of the suspect, not the punishment.

On Thursday morning I reported back to the main jury duty area and spent the time reading. Just before lunch one of the administrative staff came in and said that all the cases requiring jury duty for the week had been cleared and our service was up.

Redundancy and horizontal scaling

Saturday, April 14th, 2007

I was recently talking with a coworker about the architecture of a large web project he was working on.  One of the topics we were discussing was how redundant individual components should be (such as internal disks, network cards, or HBAs).  My first thought was that if you have for example 100 web servers, but only need the capacity of say 90, then it shouldn’t really matter if any particular node or two goes down for a bit and needs to be serviced.  If an internal disk, or network card fails, then it is no big deal.  On further thinking though, we realized the primary issue isn’t having redundant components in horizontal servers to cover single component failure, it is to cover communication switch or storage failure.

If you have 100 web servers that have single network connections to a particular network divided across four switches, and you lose a switch, you have now lost the service of 25% of your servers.  If OTOH, you have redundant network/storage connections on each server (going to independent switches), you now have removed the chance that the failure of any single switch taking out a big chunk of your infrastructure.  This also applies to network and fibre channel connections, but doesn’t apply to components that aren’t tied to external objects such as CPUs, internal disks, and power supplies.

While you should definitely size CPU and internal disks by the amount of processing and IOs p/s, I don’t think you really need to worry about redundancy in any given horizontally scaled machine.  Certainly if you get a good deal on systems that come with redundant components, that is great, but don’t spend the extra $$ on redundancy that adds little value, it is probably better to buy a few more nodes of a simpler configuration.

Bizarre hotel sign

Saturday, April 14th, 2007

There is a Holiday Inn located in York, PA that has very frequently had a specific bizarre saying on their main sign. I first noticed it about a year ago, and figured it was a mistake, but I typically go by that area once a month or more, and I’ve seen the saying (which seems to have minor variances in punctuation at times) on about four or five different occasions now.

Holiday Inn Sign

It really makes me wonder what the managers are thinking. Someone should try calling them up and play the “Hey, since we are best buddies and I’m having a rough time, can I crash there for a week for free?” card on them.


Copyright © 2012 williamhathaway.com. All Rights Reserved.
No computers were harmed in the 0.417 seconds it took to produce this page.

Designed/Developed by Lloyd Armbrust & hot, fresh, coffee.