Politics and Technology.

Tuesday, December 8, 2009

A Conversation Not To Have With A Director

"So our manager left to pursue other opportunities, after having screwed up our business. His leaving wasn't a shock; it was expected. I then pleaded and lobbied you to give me his job, because our outgoing manager was such idiot that letting one of his cronies be his successor would have been just like letting him stay and continue to do things the wrong way.

"Now I've had to make some changes without the support of the old manager's cronies. They don't like me, and they don't care that that is making our business continue to struggle. My changes are working, but just not fast enough to keep up with the pile of problems that are mounting. I inherited these problems from the last idiot manager who screwed things up for years, so it is not surprising that one year into my job things aren't turned around yet. The fact that his cronies won't support me is why things are so screwed up."

Tuesday, November 10, 2009

Meh, I dunno. Why'd you ask me?

So I saw a report on mycentraljersey.com about a couple of alleged stick-up men who were charged with possesion of an assault rifle. The picture in the article shows an AR-15 type of rifle, and helpfully labels it as a Colt. The problem is that it seems to look like any ol' AR-15 you can pick up in a gun shop in Jersey.

The article quotes the police as saying the rifle had two out of 5 characteristics that make it an assault weapon. So I was curious to see what that meant. A look at the State Police Firearms Information page states the following.

"Because the New Jersey State Police is not authorized to provide legal advice to private parties, you may wish to consult with independent legal counsel or conduct your own research."

It makes a reference to the office of the New Jersey State Attorney General as the source of "the" guidelines. So I went to the StAG site, and saw this.

Law enforcement officers should, whenever possible, attempt to be helpful and to respond to inquiries concerning particular firearms. Private citizens should also be encouraged to consult with their own attorneys and, where necessary, referred to the Firearms Unit of the Division of State Police.

Granted, the 5 characteristics of what the Executive Branch has decided makes a rifle "substantially identical" to an assault weapon are provided by the StAG, but it bugs me to see one state office point to another, who in turn merely shrugs its shoulders.

For reference, the StAG says the following about what makes a rifle "substantially identical" to an assault weapon.

A. semi-automatic rifle that has the ability to accept a detachable magazine and has at least 2 of the following:
a folding or telescoping stock;
a pistol grip that protrudes conspicuously beneath the action of the weapon;
a bayonet mount;
a flash suppressor or threaded barrel designed to accommodate a flash suppressor; and
a grenade launcher;

If I had to guess looking at the photo, these knuckleheads had a long pistol grip and a flash suppressor.

Thursday, September 3, 2009

My email to Congressman Holt (D-NJ 12)

Congressman Holt,

I wish to express my opposition HR 3200, and any other bill that may create a "Public Health Option" or similar construct that would broaden government's involvement in the health care industry.

I strongly support, and urge the legislative prioritization of, tort reform and tax parity between employee-provided and individually obtained health insurance.

Meaningful tort reform should include a cap on non-economic damages, a limitation on attorney's fees, allowing consideration of "collateral sources" in measuring damages, and a mandate of periodic payment of damages.

Tax parity between employee-provided and individually obtained health insurance should be designed to make health insurance more affordable to individuals.


Jason B Consorti

Monday, August 10, 2009

Creepy Quote Of The Day

“I expect to be held responsible....But I don’t want the folks who created the mess to do a lot of talking. I want them to get out of the way so we can clean up the mess. I don’t mind cleaning up after them, but don’t do a lot of talking.

(From "Best of the Web", August 10, 2009)

Friday, May 1, 2009

Random Password Alias

I find myself generating passwords often. While my password tool of choice is KeePass, sometimes I just need a quick commandline tool to spit out a password. I've added the below as an alias to "randompass" on my Solaris 9 box. It also seems to work on RHEL, without the need of the trailing echo.

head -n 10 /dev/urandom | tr -cd "[:alnum:][:punct:]" | cut -c 1-12 ; echo ""

To see it in action on c-shell in Solaris, see below. I'll loop the command 10 times so I have my pick of the most visually appealing choice to use.

% alias randompass 'head -n 10 /dev/urandom | tr -cd "[:alnum:][:punct:]" | cut -c 1-12 ; echo ""'
% foreach i ( `seq 1 10` )
foreach? randompass
foreach? end

The "head" command just clips enough random bits from the psuedo random generator device for us to make a random password, which when interpreted through the shell can be both printable and non-printable bits. The "tr" transcode just pulls out from the random bits the ASCII alphanumeric and punctuation characters and discards the rest. Finally, we just "cut" the first twelve characters for our password.

I found on my c-shell on Solaris, I needed the trailing echo to force the newline, whereas on my bash shell on RHEL it wasn't required.

Friday, April 17, 2009

Behind The Letter

RU President Richard McCormick released (another) letter to the University's community this week portending the next budget's fiscal woes that already seemingly perpetually plague the school. I believe this letter could potentially expose Dick McCormick to a scandal.

I considered the letter to be the first really honest communication I've read from him. It outlined the University's budget shortfall and the steps he's ordered to meet the challenges that we would face. As I read the letter, I was pleasantly surprised as I felt that for once the president didn't leave me room to criticize. Make no mistake, the letter outlined a bleak picture of hardship, but at least Dick was open about the work that lay ahead.

The measure that most impressed me was his announcement of layoffs. At a public institution, a round of layoffs is significant. He mentioned the 5% contractually obligated salary increase to the faculty and staff as an important detail. Dick's letter carefully tread around the issue of the union giving back the increase in order to save jobs by mentioning how the State is dealing with its shortfalls with those actions. I was left with the impression that the union was approached about the idea of wage freezes and furloughs and it dismissed it out of hand.

Then I read Gannett's report on the letter, and once again found myself despising Dick.

The report quoted Lisa C. Klein, president of the American Association of University Professors at Rutgers, as saying, "We have not been asked to open our contract."

To open the contract, the union will, rightly, demand to see Rutgers' books to determine if all steps have been taken to avoid layoffs.

So, this begs the following question. Is McCormick avoiding a renegotiation of the contract in order to prevent public scrutiny of Rutgers' books? If so, what embarassing details is he hiding?

If his intent is to prevent public scrutiny, as I am not apt to dismiss out of hand, then McCormick is willing to make other people jobless in order protect himself. How selfish would that be? It would be so selfish as to be scandalous.

I sincerely hope there are other valid reasons for him to have not approached the union at this time.

Wednesday, April 15, 2009

Stripping Control-M

One annoying little consequence of being a Unix geek in a Windows world is the common problem of having to strip "^M" (or "control-m" or carriage returns) before the line breaks of text files. These files were typically created on a Windows box, where lines are separated with carriage return line feeds, and transferred to a Unix box, where only a line feed is used.

As the adage goes, there's more than one way to skin a cat (it just depends on how you want the pelt to look), there are many little tricks and tools to remove the "^M" from text files. Unfortunately, I go through this exercise so infrequently that every time I encounter the problem, I forget some of the solutions and am forced to spend 10 or so minutes looking it up.

So, at least for my sake, I'm going to record some ways here. Where "^" is indicated, hold the "Ctrl" key and press the next character.

Perl Judo:

# cat windows.txt | perl -e 'while (<>) {s/\x0D//g; print;}' > unix.txt

Transcode Karate:

# cat windows.txt | tr -d "^v^m" > unix.txt

GNU Kung Fu (Solaris variety)

# dos2unix windows.txt unix.txt

GNU Kung Fu (Linux variety)

# dos2unix -n windows.txt unix.txt

Editor Jujitsu (Vi flavored)


Editor Jujitsu (Emacs flavored)

esc-x comint-strip-ctrl-m

Thursday, March 26, 2009

nsupdate By Key From RHEL

We have a DNS zone here at DJ that's used for allowing nsupdates, typically in the case of applications with an HA capability between VLANS out on the WAN (when migrating the production IP is not an option).

While we have used ACLs for the allow-update stanza in bind's named.conf, I wanted to make the push towards key based authentication. The following how to is what I did to make that work.

First, generate the key. This will create two files, containing the same key, due to backwards compatibility issues with the library used to create the key. The options to pass to the "dnssec-keygen" tool (part of the bind RPM) are simple. The "-r /dev/urandom" bit below uses the psuedo-random driver to generate the key; something perfectly sufficient for this case IMHO. The name you use for the key is not important. Though it looks like an FQDN, it can be "fuzzydice" if you want it to be. The convention in all things BIND seems to be "something.yourdomain.com".

# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST -r /dev/urandom some.meaningful.name.com
# ls *meaningful*
Ksome.meaningful.name.com.+157+01885.key Ksome.meaningful.name.com.+157+01885.private

I prefer to copy the key string from the ".private" key file as it doesn't have any spaces in the key string. Its contents would look like this.

Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: sKTsCBcE9PbjY8nG9izhfbASk5O1xI9L+O7R/tC3go+HVsneIOZuoEy9DH0dTILbjodRj9QZT6RPT3MwUHg8aw==

The next step is to allow this key's use by named. You will need to edit "named.conf" in at least one place, possibly two.

First, update your "allow-update" line in the zone entry. For example see below.

zone "ha.yourdomain.com" in {
type master;
file "db.ha.yourdomain.com";
forwarders {};
allow-update { key some.meaningful.name.com; };

You can mix ACLs, hosts, and keys on the same "allow-update".

allow-update { key some.meaningful.name.com;; my_trusted_acl; };

Secondly, you need to include the key for named to pick up. This is typically done in one of two ways: directly in the "named.conf" file or in an included file. RHEL's named.conf, out of the box, should have the following line.

include "/etc/key.conf";

Ideally, this is where you put the key to avoid a messy "named.conf" but you could put the key directly in. Either way, your entry should look something like this.

key some.meaningful.name.com. {
algorithm hmac-md5;
secret "sKTsCBcE9PbjY8nG9izhfbASk5O1xI9L+O7R/tC3go+HVsneIOZuoEy9DH0dTILbjodRj9QZT6RPT3MwUHg8aw==";

Don't forget to reload named.

# rndc reload

Now that was the hard part. The easy part is to actually use the key. The "nsupdate" tool is well documented in RHEL's man page, so I'll just show an example case. What isn't so well documented is that you need BOTH ".key" and ".private" files even though you only refer to one on the command line. Keep both of those files in the same directory.

# nsupdate -k Ksome.meaningful.name.com.+157+01885.private
> server
> update delete virtualhost.ha.yourdomain.com. CNAME
> update add virtualhost.ha.yourdomain.com. 300 CNAME virtualhost.otherdc.yourdomain.com.
> send
> quit

You can script this action by putting the nsupdate commands in a "conf" file that is passed to "nsupdate" as an option.

Friday, March 20, 2009

When a $100 is not a $100

In today's WSJ, an editorial by Alan Blinder, a professor of economics and public affairs at Princeton University and a former vice chairman of the Federal Reserve Board, uses math with which any "man on the street" should be struck dumbfounded. My typical fair disclosure applies: I work for Dow Jones.

The crux of the article, "Why Obama Is No Socialist", is to argue that the president is merely left-leaning and not a socialist. I can see many ways to validly argue this point and am certain that many editorials have made rather convincing arguments to that effect. As I read the article, hoping to see thoughtful discourse, I stopped dead in my tracks. Whatever the point of Professor Binder's article is, the tools used to strengthen his argument are clumsily used. The object of my derision is the following passage.

As the law now stands, when a family that does not itemize deductions on its tax return donates $100 to its favorite charity, the donation costs the family $100. But when an itemizing family in the 25% bracket donates $100, it costs them only $75 after tax. And when an itemizer in the 35% bracket donates $100, the after-tax cost is only $65. Thus the richer you are, the less it costs. Is it socialistic to say that seems a little backwards?

Somehow, only in Princeton Univeristy, is $100 not $100. If I am with this non-itemizing family, I spent $100 on the charity. If we did itemize our deduction, I still shelled out $100 on this charity. If I don't claim this donation, I'm out an extra amount: the taxes I would have owed on that $100.

So what the professor misses is that no matter who you are, you gave $100 to this charity. You have exactly $100 less in your pocket. Fortunately, you don't have to pay taxes on that $100, but you are still out $100. It didn't "cost" (does giving to charity "cost" you or does it relieve you?) me $65, $75, or $0. It cost me $100. The government is seeking additional money from me, taxing money I gave away to a charity and does not apply to my gross income, which is why you freaking claim the donation in the first place.

Even if you live in the bizarro math world of the Economics professor who failed Finance 101, his argument hinges on the first family NOT CLAIMING THE DONATION. This is not "apples to apples, oranges to oranges" comparison making.

To put it in a vernacular that the professor could appreciate, he assumed a can opener for one family, but not the others.

Go back and re-work your model, Professor.

I am so glad I went to RU and avoided this guy in the few econ courses I've taken.

Wednesday, March 11, 2009

Let's Buy Some Beer

Found this on digg.com today:

Suppose that every day, ten men go out for beer and the bill for all ten comes to $100. If they paid their bill the way we pay our taxes, it would go something like this:

The first four men (the poorest) would pay nothing.
The fifth would pay $1.
The sixth would pay $3.
The seventh would pay $7.
The eighth would pay $12.
The ninth would pay $18.
The tenth man (the richest) would pay $59.
So, that’s what they decided to do. The ten men drank in the bar every day and seemed quite happy with the arrangement, until one day, the owner threw them a curve. ‘Since you are all such good customers, he said, ‘I’m going to reduce the cost of your daily beer by $20. Drinks for the ten now cost just $80.

The group still wanted to pay their bill the way we pay our taxes so the first four men were unaffected. They would still drink for free. But what about the other six men - the paying customers? How could they divide the $20 windfall so that everyone would get his ‘fair share?’ They realized that $20 divided by six is $3.33. But if they subtracted that from everybody’s share, then the fifth man and the sixth man would each end up being paid to drink his beer. So, the bar owner suggested that it would be fair to reduce each man’s bill by roughly the same amount, and he proceeded to work out the amounts each should pay.

And so:

The fifth man, like the first four, now paid nothing (100% savings).
The sixth now paid $2 instead of $3 (33%savings).
The seventh now pay $5 instead of $7 (28%savings).
The eighth now paid $9 instead of $12 (25% savings).
The ninth now paid $14 instead of $18 (22% savings).
The tenth now paid $49 instead of $59 (16% savings).
Each of the six was better off than before. And the first four continued to drink for free. But once outside the restaurant, the men began to compare their savings.

‘I only got a dollar out of the $20,’declared the sixth man. He pointed to the tenth man,’ but he got $10!’

‘Yeah, that’s right,’ exclaimed the fifth man. ‘I only saved a dollar, too. It’s unfair that he got ten times more than I!’

‘That’s true!!’ shouted the seventh man. ‘Why should he get $10 back when I got only two? The wealthy get all the breaks!’

‘Wait a minute,’ yelled the first four men in unison. ‘We didn’t get anything at all. The system exploits the poor!’

The nine men surrounded the tenth and beat him up.

The next night the tenth man didn’t show up for drinks, so the nine sat down and had beers without him. But when it came time to pay the bill, they discovered something important. They didn’t have enough money between all of them for even half of the bill!

And that, boys and girls, journalists and college professors, is how our tax system works. The people who pay the highest taxes get the most benefit from a tax reduction. Tax them too much, attack them for being wealthy, and they just may not show up anymore. In fact, they might start drinking overseas where the atmosphere is somewhat friendlier.

This above (meme) is falsely attributed to David R. Kamerschen, Ph.D., Professor of Economics, University of Georgia.

Monday, March 9, 2009

The Corner Turned, again

Well, it seems I spoke too soon. The US Treasuries 2 year spread has, over the last four weeks, headed north again, this morning sitting at around 77.25. This upward trend has accelerated over the past two weeks.

Gee, I wonder what happened over the past two weeks to spook the markets so?

The pace of recovery will be tempered by how much the government muddles the natural tendency of markets to self-adjust. The government should be more concerned with cushioning the blow that market variance has on individuals rather than quixotically attempting to control that variance.

Friday, January 30, 2009

USB Drive on Solaris

This guide walks you through mounting a USB drive on a Solaris SPARC system. The idea is to get the Solaris SPARC to use a disk that is partitioned to be usable by Windows. This Windows "curse" is unavoidable, but Sun ships the right tools to deal with it.
The idea is to create a primary partition for Solaris. Solaris is them "fooled" into using this Windows partition as if it was just raw disk.
Fortunately I found a good blog entry that explained how to do this.

Solaris 10

This is written for Solaris 10. This was tested on a T5240.

Plug it in

Find a happy and available USB port. Plug your USB drive in. Run "dmesg" to confirm that it saw you add the drive to the USB bus.

Volume Management
It is a good idea to turn off Volume Management. It will force you to use the "psuedo" device to refer to the USB drive until you do. You can stop Volume Management in the old school way, and then run "svcs" to check to see if you were successful.

# /etc/init.d/volmgt stop
# svcs volfs


Regular format doesn't cut the mustard here. It won't even see your USB drive. Fortunately, Solaris now ships with "rmformat" which will show you "removable" type devices. Use the "-l" option to have it list the removable drives and you should be able to pick out the USB drive. Note the cXtXdXsX.

bash-3.00# rmformat -l
Looking for devices...
1. Logical Node: /dev/rdsk/c0t0d0s2
Physical Node: /pci@400/pci@0/pci@1/pci@0/usb@0,2/storage@2/disk@0,0
Connected Device: TSSTcorp CD/DVDW TS-T632A SR03
Device Type: DVD Reader/Writer
2. Logical Node: /dev/rdsk/c2t0d0s2
Physical Node: /pci@400/pci@0/pci@1/pci@0/usb@0,2/storage@1/disk@0,0
Connected Device: Hitachi Easy Device
Device Type: Removable

Now that you know the cXtXdXsX of our target, we have to fdisk it

# fdisk /dev/rdsk/c4t0d0p0

I'll let the blog explain what to do here:

To create the main Solaris partition. If no partition were initially present, just answering yes to the subsequent question will assign 100% of the disk to Solaris. side note: some of you may remember that Linux & Solaris did not like to be on the same disk since Solaris uses the same file format type number than Linux...Well the good news is that one can (and should) use the Solaris2 type so as to avoid those conflicts.

After partitioning the disk, put Solaris partitions on it with the rmformat command. It's easiest to create a template file for it to use.
This file would create a single "backup" slice 2 disk.

# cat my_slices
slices: 2 = 0, 45GB, "wm" "backup"

Remember that this is a USB drive, not a StorEdge box so your read and write performance with the device will be pitiful. If you are using the drive to temporarily store some data, set your slice size to be about 20% bigger than your data set size. It will save a lot of time when you have to newfs it.
Now just run rmformat with this file and the USB device.

# rmformat -s /tmp/my_slices /dev/rdsk/c2t0d0s2

Now check your work with the familiar prtvtoc.

bash-3.00# prtvtoc /dev/rdsk/c2t0d0s2
* /dev/rdsk/c2t0d0s2 partition map
* Dimensions:
* 512 bytes/sector
* 63 sectors/track
* 255 tracks/cylinder
* 16065 sectors/cylinder
* 60801 cylinders
* 60801 accessible cylinders
* Flags:
* 1: unmountable
* 10: read-only
* Unallocated space:
* First Sector Last
* Sector Count Sector
* 0 976768065 976768064
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
2 5 00 0 94371840 94371839


From this point, just treat it like you would any other disk.

# newfs -m 1 /dev/rdsk/c2t0d0s2
# mount /dev/dsk/c2t0d0s2 /mnt

Thursday, January 22, 2009

Adding a 2nd Secondary Site to VVR

Recently, we've had to add a 2nd secondary VVR site to our RDS (RVG). Basically, this means we wanted to replicate from a single primary out to two secondaries. This is nothing out of the ordinary for Veritas' Volume Replicator, but it was something new to us.

As mentioned in a previous post, there is a VVR site in Orlando (with a two node cluster) and another in South Brunswick (a one node cluster). In this exercise, we added a third site in Secaucus (it, too, is a one node cluster). Below are the steps we took.

In this case, VCS is used, but we wanted to just add the 2nd secondary site in this go around, saving the VCS configuration in Secaucus for the next weekend.

1) Copied the dgids to all nodes in /etc/vx/vras/.rdg

2) Edit /etc/hosts on SEC, SBK and ORL

3) Check DNS on SBK and ORL

4) set routing table on servers for secdamsdbp1 vvr nics
a) /etc/sysconfig/network-scripts/route-bond1

5) add the routes between ORL, SBK and SEC

a) route add -net XXX.XXX.XXX.XXX netmask gw XXX.XXX.XXX.XXX

6) plumb up secdamsdbp-vvr on bond1:0

7) Bring Down DAMSdbSG
a) orldamsdbp2 (vcs primary)

# hagrp -offline DAMSdbSG -sys orldamsdbp2

8) Bring Down VCS
a) orldamsdbp1 (vcs secondary)

# hastop -local

b) orldamsdbp2 (vcs primary, vvr primary)

# hastop -local -force

c) sbkdamsdbp1 (vcs primary, vvr secondary)

# hastop -local -force
# hastop -local -force

9) Check That SRL is clean
a) orldamsdbp2 (vvr primary)

# vradmin -g damsdg repstatus damsrvg

10) Check vxrlink
a) orldamsdbp2 (vvr primary)

# vxrlink -g damsdg status orl_to_sbk

11) Migrate VVR from ORL to SBK
a) orldamsdbp2 (vvr primary)

# vradmin -g damsdg migrate damsrvg sbkdamsdbp-vvr

12) Confirm migration
a) sbkdamsdbp1 (new vvr primary)

# vradmin -g damsdg repstatus damsrvg

13) Add SEC to the RDS, as viewed by SBK
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg addsec damsrvg sbkdamsdbp-vvr secdamsdbp-vvr prlink=sbk_to_sec srlink=sec_to_sbk

14) Confirm New Secondary VVR (it should be stopped and inconsistent)
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg repstatus damsrvg

15) Confirm New Rlink (should be unattached and STALE
a) sbkdamsdbp1 (vvr primary)

# vxrlink -g damsdg status sbk_to_sec

16) Stop replication to SEC (will probably not be replicating) SKIPPED
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg stoprep damsrvg secdamsdbp-vvr

17) Start syncing the data
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg -c friday_night_1 syncrvg damsrvg secdamsdbp-vvr

18) Go watch a movie

19) Verify the data
a) sbkdamsdbp1 (vvr primary) SKIP?

# vradmin -g damsdg -verify syncrvg damsrvg secdamsdbp-vvr

20) Finish the movie

21) Start the replication, with DCM autosync
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg -a startrep damsrvg secdamsdbp-vvr

22) Verify that replication completes, and is consistent and up to date
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg repstatus damsrvg

23) Create Rlink from ORL to SEC
a) orldamsdbp2 (vvr secondary)

# vxmake -g damsdg rlink orl_to_sec local_host=orldamsdbp-vvr remote_host=secdamsdbp-vvr remote_rlink=sec_to_orl remote_dg=damsdg

b) orldamsdbp2 (vvr secondary)

# vxrlink -g damsdg assoc damsrvg orl_to_sec

24) Create Rlink from SEC to ORL
a) secdamsdbp1 (vvr secondary)

# vxmake -g damsdg rlink sec_to_orl local_host=secdamsdbp-vvr remote_host=orldamsdbp-vvr remote_rlink=orl_to_sec remote_dg=damsdg

b) secdamsdbp2 (vvr secondary)

# vxrlink -g damsdg assoc damsrvg sec_to_orl

25) Verify replication status and vxprint -Pl on all three nodes
a) orldamsdbp2 (vvr secondary)

# vradmin -g damsdg repstatus damsrvg
# vxprint -Pl

a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg repstatus damsrvg
# vxprint -Pl

a) secdamsdbp1 (vvr secondary)

# vradmin -g damsdg repstatus damsrvg
# vxprint -Pl

26) Test migration from SBK to ORL, orl to sec should be inconsistent
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg migrate damsrvg orldamsdbp-vvr
# vradmin -g damsdg repstatus damsrvg

b) orldamsdbp2 (new vvr primary)

# vradmin -g damsdg -a startrep damsrvg secdamsdbp-vvr

27) Test migration from ORL to SEC, sec to sbk should be consistent and stale
a) orldamsdbp1 (vvr primary)

# vradmin -g damsdg migrate damsrvg secdamsdbp-vvr
# vradmin -g damsdg repstatus damsrvg

b) secdamsdbp1 (new vvr primary)

# vradmin -g damsdg -a startrep damsrvg sbkdamsdbp-vvr

28) Test migration from SEC to ORL, orl to sbk should be consistent and stale
a) secdamsdbp1 (vvr primary)

# vradmin -g damsdg migrate damsrvg orldamsdbp-vvr
# vradmin -g damsdg repstatus damsrvg

b) orldamsdbp2 (new vvr primary)

# vradmin -g damsdg -a startrep damsrvg sbkdamsdbp-vvr

29) Test migration from ORL to SBK
a) orldamsdbp1 (vvr primary)

# vradmin -g damsdg migrate damsrvg sbkdamsdbp-vvr
# vradmin -g damsdg repstatus damsrvg

b) sbkdamsdbp1 (new vvr primary)

# vradmin -g damsdg -a startrep damsrvg secdamsdbp-vvr

30) Migrate from SBK to SEC
a) sbkdamsdbp1 (vvr primary)

# vradmin -g damsdg migrate damsrvg secdamsdbp-vvr
# vradmin -g damsdg repstatus damsrvg

b) secdamsdbp1 (new vvr primary)

# vradmin -g damsdg -a startrep damsrvg orldamsdbp-vvr

31) Migrate from SEC to ORL
a) secdamsdbp1 (vvr primary)

# vradmin -g damsdg migrate damsrvg orldamsdbp-vvr
# vradmin -g damsdg repstatus damsrvg

b) orldamsdbp2 (new vvr primary)

# vradmin -g damsdg -a startrep damsrvg sbkdamsdbp-vvr

32) Bring up VCS
a) orldamsdbp2 (vcs primary, vvr primary)

# hastart

b) orldamsdbp1 (vcs secondary)

# hastart

c) sbkdamsdbp1 (vcs primary, vvr secondary); if it shows as stale, run force the startup.

# hastart -onenode
# hasys -force

33) Start the DAMSdbSG service group
a) orldamsdbp2

# hagrp -online DAMSdbSG -sys orldamsdbp2

Unix Time Event

GEEK ALERT: My buddy Walt pointed out to me that in a few weeks, there will be a special event in Unix Time.

[dj715559@sbkdamsdbp1 ~]$ python -c 'import time; print time.ctime(1234567890)'
Fri Feb 13 18:31:30 2009
[dj715559@sbkdamsdbp1 ~]$

Wednesday, January 21, 2009

Edna On Mac, Followup #1

One thing I've noticed that can be annoying when using Edna, or any streaming media, is when the songs get cut up and choke due to poor network performance. I typically favor VLC Media Player as my streaming media client. I Google searched for a way to increase the default setting for the cache time associated with streams and was always frustrated. Today, I believe I found a hint for the solution on VideoLan's forum board.

Go to your preference pane, using the "Advanced" view (or "Show All Settings), choose Input Codecs -> Access Module -> HTTP(S). The default cache value can be set from there.

For me at work, I've set the cache value to 5000ms (5 seconds). There's a 5 second pause between songs, a pain when the songs are supposed to bleed together, but it's better than the alternative: cut up songs.

Thursday, January 8, 2009

The Corner Turned

The 3 year US treasury spread (difference between US 3 year treasuries rate and the interbank loan rate), at a low of 47.75 today, has hit a normal level. FINALLY!!! The "TED Spread" (same principle but with 3 month US treasuries), currently at 1.25, is still a bit high, but way down from its peak.

The US 3 year spread is probably ahead of the curve because the demand of these instruments is higher than the 3 month treasuries, driving prices up to meet the interbank loan rate, as opposed to the interbank loan rate dropping to meet it.

This still means that the cost to a business to get a loan is approaching normal levels indicating that the seizing of the financial gears of our economy has ended. I think this recession will be shorter than most predictions as money is now flowing into the private economy!

Let the record show that I spy the reversal of our misfortunes and it is during Bush's term!

You can bet that they'll still credit Obama.

Tuesday, January 6, 2009

As If 10 Vladivostoks Disappeared

Recently, there has been a lot of hoopla over Ex-KGB agent Igor Panarin predicting the demise of these United States of America.

In the Wall Street Journal's article (subscription required), there was a pretty picture that described the hypothetical boundaries of a dis-United States. What caught my eye as conspicuously missing was the Commonwealth of Puerto Rico. In searching through Google University, I can find no article that explains Prof. Panarin's vision that includes a reference to Puerto Rico at all.

This gnawed on me a bit as a big oversight in this Ruski's grand plan of an alternate universe of absurdity. Why? Well, PR is a mighty little island in the Caribbean with a relatively large economy. When compared against the States of our Republic, PR is often though of as the poor 2nd cousin you avoid lest he hits you up for some money. But when stacked up against the economies of the world, it would rank 57th out of 180, right between Slovakia and Morocco, with its $73 Billion GDP. This 2nd cousin isn't quite so poor after all, just good ol' blue-collar middle-class. In fact, its economy beats Hawaii's GDP of $48 Billion. Igor deigned to spell out a scenario where Hawaii became an Asian satellite puppet but wholly ignored Puerto Rico.

If the day ever came, heaven forbid, that Puerto Rico seceded from the Union it would immediately become the richest island nation in the Caribbean, nearly doubling the economy of its next contender, Cuba. (As far as I stand on Puerto Rico's future, they have the best of both worlds and should enjoy their special relationship to the US which gives them almost all of the advantages of a State, with none of the baggage).

To understand what a blunder it is for Professor 15-Minutes-Of-Fame to ignore PR, let's look at all of Russia's economic power: at $1.2 Trillion, this bear has bite. But it is all seemingly west of the Urals. If you took a look at the Russian Far East, including that gem of a city, Vladivostok, you'd find a GDP of less than $7 Billion. So for Igor Whats-his-name to forget Puerto Rico would be like he just ignoring 10 Vladivostoks!

You can't take Prof. KGB's analysis that seriously if he neglected a $73 Billion power in the middle of one of the most strategic seas in the world, especially when that margin of error outshines 10-fold a significant portion of his proposed inheritor of Pax Americana.

Anyhow, his hypothetical map has a Mexican influenced"Texas Republic" that stretches from the Navajo Nation to Savannah, GA. Any Texan will tell you they'd go it alone before hooking themselves again to the deep-south. Once bitten, twice shy, you know.