Roosting at home

All those years I advocated for doing XML namespaces by the book. We’re going to want to do stuff with namespaces in the future. All those years no one else thought there was no way we’d ever want to do that and that namespaces introduce unnecessary complexity. All those years of being outvoted.

Today, bitches. Today is what I was trying to prevent. And who is going to clean this up?

Sometimes being right sucks.

Windows installer [sucks]

So, for whatever reason, Windows Installer service doesn’t just install crap. Instead, it runs through all of the steps to an installation in some kind of imaginary sandbox thing and then it runs everything again on the live system.

Sure, all of this is probably well and good. You don’t want to be halfway to rearranging some filesystem only to decide that you need to roll back. If only it worked that way. When it does its practice install, it doesn’t actually write files or twiddle IIS or any of those fun sorts of things. Nope. It just pretends. Except for when it doesn’t.

Because if you want to schedule features or components for install, this needs to be decided in the practice stage. Also, if you want to set properties to be used in a later custom action, you need to do this here.

But then, explicitly, you cannot reference these properties in the second, live run. Why? Because it’s Microsoft?!

No, in order to get a reference, you need to dump them into a for-special place and then use a different, for-special mechanism for retrieving them.

It just doesn’t get much stupider.

Hub ‘n’ spoke hilarity

I love the ol’ hub and spoke paradigm [1] for transporting things places. I mean, seriously, it is the most efficient methods of routing in that all points can be connected with the (number of points) minus one routes. All points can be reached in no more than two jumps. Totally efficient.

Except when it isn’t. For example, a shiny bauble I ordered is being shipped from Commerce City, CO (Denver) to Council Bluffs, IA. The shipping manifest so far looks like this:

Location Date Time Activity
Des Moines, IA, United States 05/30/2014 11:15 A.M. Arrival Scan
Omaha, NE, United States 05/30/2014 8:41 A.M. Departure Scan
05/30/2014 7:18 A.M. Arrival Scan
North Platte, NE, United States 05/30/2014 3:17 A.M. Departure Scan
05/30/2014 2:19 A.M. Arrival Scan
Commerce City, CO, United States 05/29/2014 9:35 P.M. Departure Scan
05/29/2014 7:24 P.M. Origin Scan

Now, then, the damn thing passed through Omaha at roughly the same time I was driving to work. I probably passed it on the Interstate. Council Bluffs is exactly the same thing as Omaha as far as UPS is concerned. Dump the damn thing off the truck here and get it on a delivery vehicle so I can play with it!

Instead, it traveled on to Des Moines. It’s probably on its way to Kansas City now, from which it will be shipped to back to Omaha where it will be removed from the truck this time and delivered to me. Hopefully. Perhaps it will make yet another trip around the Midwest first. Or maybe it will go off visiting the Southeast. I hear it isn’t too humid out that way yet.

All of this is really just a whinge because I want my shiny bauble now, not Monday. Why couldn’t they have just thrown it off the truck while it was here? If it was just passing through, don’t tell me about it on the package tracking page.

[1] https://en.wikipedia.org/wiki/Spoke-hub_distribution_paradigm

Victory

After several iterations of arguing the denials of my request for lxml to be installed as a Python egg, my web host finally acquiesced.

I think I’m going to print this out and get it framed:

Hello,

I apologize for the delay. We were able to install this for you:

xxxxxxx@xxxxxxxx.net [~/lxml-3.3.5]# CFLAGS=”-O0″ easy_install –install-dir=/xxxxx/xxxxxxx/xxxxx/xxxxxxx/python2.6/site-packages lxml
Searching for lxml
Reading http://pypi.python.org/simple/lxml/
Best match: lxml 3.3.5
Downloading https://pypi.python.org/packages/source/l/lxml/lxml-3.3.5.tar.gz#md5=88c75f4c73fc8f59c9ebb17495044f2f
Processing lxml-3.3.5.tar.gz
Running lxml-3.3.5/setup.py -q bdist_egg –dist-dir /tmp/easy_install-qdMwRH/lxml-3.3.5/egg-dist-tmp-bZ_ZZT
Building lxml version 3.3.5.
Building without Cython.
Using build configuration of libxslt 1.1.26
Building against libxml2/libxslt in the following directory: /usr/lib64
/usr/lib64/python2.6/distutils/dist.py:266: UserWarning: Unknown distribution option: ‘bugtrack_url’
warnings.warn(msg)
Adding lxml 3.3.5 to easy-install.pth file

Installed /xxxxx/xxxxxxx/xxxxx/xxxxxxx/python2.6/site-packages/lxml-3.3.5-py2.6-linux-x86_64.egg
Processing dependencies for lxml
Finished processing dependencies for lxml
———————————————-

Inches and miles

They‘re forcing you to virtualize your production SVN server. Your physical server has eight physical cores that can act as sixteen thanks to hyper-threading.

The virtual machine they give you has two cores.

You ask for sixteen. They hold at two. You make the switch-over and go live and the new virtual machine tanks. You ask for sixteen cores and they ask you to contact the software vendor to ask for a guide on virtualization performance tuning. You escalate.

Half a day later they give you four cores.

Four cores can keep up for almost five minutes of truly serious load before tanking. You mention that adding cores seems to be improving. They argue why this should not be working–using arguments from theory. You point to the performance monitoring and ask for sixteen cores.

Three hours of arguing later they give you six cores.

You and they are all on the same conference call. You and they are both watching the CPU load. It takes almost fifteen minutes to get the CPUs to peg with six cores. You wearily ask for a mere eight cores.

They give you eight cores and ask you to not mention this to anyone else because, obviously, you’re the 1% of the virtual machine user population and they don’t want this getting around. Theoretically you should have been okay with two cores after all.

Little over an hour later of work under an artificially heavy load and the machine with eight CPU cores hasn’t hung.

Huh.

How was your day?

Shoot the receptionist first

Why I Drink reason #376:
Security theater emails that make the most convenient doors off-limits because they’re “unsupervised”. They’re badge-access controlled and have video monitoring but apparently that is not enough. So now when a disgruntled employee wants to shoot up the place, they’re just going to have to shoot the receptionist first I guess.

I’d be super pissed if I was a receptionist.