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
———————————————-

A two-fer

A banner day for overhearing in the cube farm:

  1. [That guy] must get offended at the very idea of a functioning system

  2. In re the Winter Classic

    Next year they need to go the next step and play that on an actual pond

I think watching two NHL teams battle it out that way would probably be transcendent. No boards and no bleachers. Just two teams, an open pond, and about a billion television cameras.

Funner than it looks

A thing I’m working on is supposed to interact with a Scheduled Task [1] if it exists. Instead of writing out my own parser for this backwater of the Windows operating system I found something lying about at CodePlex [2]. As far as documentation goes, this one is pretty decent [3]…for a CodePlex project. Then again, that bar is pretty low.

So this afternoon has been brought to you by the method Console.WriteLine()

Don’t know what a thing does? Console.WriteLine( THING ) is great. If it’s a string, it’ll tell you what it represents. If it is something else, it’ll give you a clue as to how that method/object reference is employed. It’s nowhere near as cool or useful as Python's dir() [4] which is what I was really jonesing for this afternoon. Still, half an hour of iterating over Console.WriteLine( THING ), compile, run test executable made quick work of finding a solution.

Eventually I found Microsoft.Win32.TaskScheduler.Task.Definition.XmlText and this all the bait I need to make this an XML-based solution. Why use an object wrapper with moderately unhelpful documentation when you can just do a simple XPath operation? Pretty sure about half of the solutions I come up with eventually dump into XML and then leverage XPath. It is the very best hammer because it can turn virtually anything into a nail.

[1] http://msdn.microsoft.com/en-us/library/windows/desktop/aa383614%28v=vs.85%29.aspx
[2] http://taskscheduler.codeplex.com/
[3] http://taskscheduler.codeplex.com/documentation
[4] https://docs.python.org/3/library/functions.html?highlight=dir#dir

Therapeutic

My first stint of four weeks between INR readings turned out to be flawless. Despite my inconsistent diet and periodic consumption of alcohol my levels have stayed within the therapeutic range ever since the Great Blood Clot and Pulmonary Embolism Fest of 2014.

Best news: I get another four week reprieve before visiting the bloodsuckers again.

Bonus: I managed to remember to fast until the lunch hour so finally got the ol’ lipids checked too.