Where are you now?

I’I’I’mMy wife has been using Google Maps to follow the train route. I started texting her as I reached towns here in Texas, but data and text coverage is really spotty out here in the boondocks.

However, the GPS on my phone seems to be keeping up with my location, although there’s not much point in zooming in for details unless the data connection is available.

I’m starting an offline log of timepoints in Word – I’ll update the live blog as I get data.

April 8, 2015

4:00 PM – coming up on Pontiac, which would be awesome if it were Pontiac, MI – but it’s Pontiac, IL. Still a ways to go to Chicago. I hope I can make it in time to catch the 6:00 Greyhound…

3:29 PM – stopped at the Normal, IL station.

3:25 PM – Bloomington, IL

3:17 PM – Shirley, IL. I am serious. And don’t call me, surely.

3:13 PM – Funks Grove, IL.

2:49 PM – Lincoln, IL. It sounds like THIS is the stop where they’re only opening one door in the sleeper car (not Carlinville). Or maybe not. We just rolled past the downtown station – slowly, but not that slowly. I did get a couple of pics of a very ornate town hall or something of the sort.

2:17 PM – departing the Springfield station. The state capitol is behind us on the port side – I didn’t notice it until just now. That’s the problem with sitting with my back to the forward bulkhead – you don’t see the sights until too late. I did get pictures of some older downtown buildings on the starboard side (on my left facing the back of the train), including one multi-story hotel made of brick, with window unit air conditioners.

2:05 PM – rolling into Springfield, IL – the state capitol, and thus the old stamping grounds of one Illinois State Senator Barack H. Obama.

1:40 PM – rolling through Girard, IL. I would take pictures of the town for my friend L. Girard, but there’s just one problem – there’s no THERE there. Also, the southbound Amtrak just barreled past us. I wonder if they’re on time?

1:35 PM – Either those sleeper passengers literally jumped off the train in Carlinville (it was moving kind of slowly through town), or I misheard the conductor’s announcement (maybe we’re stopping at a different town), or there was a miscommunication. But I don’t hear this train full of already-delayed passengers clamoring for the train to stop to sort it all out.

1:28 PM – we’re making a stop in Carlinville IL for only one party – or at least, the conductor announced that the only door being opened is the one on the sleeper car at the front of the train. The weird thing is that we’re still rolling, although we left the Carlinville Amtrak station behind a couple of minutes ago. Are we stopping at an intersection on the edge of town?

1:12 PM – going through Shipman IL. I just tried to connect the work laptop using the AirCard and had the connection attempt refused. I looked at the miles of prairie farmland going by and figured the failed connection attempt probably isn’t due to cosmic rays.

1:00 PM – there were some Amish folks on the train from before Austin – and probably from before San Antonio, as they got off in Austin to stretch their legs, which you wouldn’t think they’d bother to do after the short run from San Antonio to Austin. I’ve only seen two of them since Austin – an elderly man and woman who’ve spent a good bit of the trip in the Observation Car. They have their own food and drink – or at least they HAD their own food and drink, as the woman just tipped the drink thermos up to get the last drops out. I have never in my life wanted to start a chant of “Chug! Chug! Chug!” as much as I do right now.

12:31 PM – passed through West Alton, East Alton, and Upper Alton. I think Alton is going a little overboard with the whole “Greater Alton” vision thing. Or maybe their annexation battles have been murderous.

12:13 PM – passing through Granite City.

12:10 PM – called Greyhound and spoke to customer support. It’s a Bad News – Good News – Better News situation. The bad news (which I already knew) is that we won’t get to Chicago before the Greyhound leaves the Amtrak station. The good news is that I CAN use the second part of my ticket (for the route that leaves the main Greyhound terminal at 6:00 PM) even if I can’t get there in time for the first bus. The better news is that the main Greyhound terminal is a short cab ride (and even shorter walk, according to what people say online – but the loaner laptop from work is HEAVY, so I ain’t hoofing it) from the Amtrak terminal. I feel better about my chances of making my bus to Ann Arbor.

12:00 PM – we crossed the Mississippi going out of St. Louis. I took a LOT of pictures of the Gateway Arch through the window. I’ve seen it once before – hell, I’ve touched it – but I got the chance to see it and take pictures from a new angle.

11:40 AM – after backing up for a couple of minutes, we stopped. I figured they would switch the track ahead of us and we’d head on down the road again. 20 minutes later, we backed up some more, THEN reversed direction and started making forward progress. I have to remind myself that Amtrak is a low-priority user of the rails – these days, priority is given to trains hauling crude oil and other rolling bombs.

11:08 AM – we’re backing out of the St Louis station. I got out to take some pictures of an interesting building across the street from the station – it has murals on two sides.

10:20 AM – we’re in the station, but we can’t disembark just yet – they’re adding a car to the train.

10:14 AM – the Gateway Arch is on the left side of the train, but the sun is on the left side of the train. I’m in the Observation Car and the reflection from the windows behind me makes it impossible to get a good shot unless I’m looking straight through the window – so no approach shots of the Arch, alas.

10:00 AM – we’ve been running through the outskirts of St. Louis for a few minutes.

9:15 AM – running through cuts that look close enough to touch. I took a couple of video clips from my phone – I’ll upload them (maybe when I get a chance for WiFi)

8:56 AM – De Soto

8:14 AM – between Iron Mountain Lake and Bismarck, MO

7:30 AM – we might have caught up some time overnight – ETA Chicago is 3:50 PM, just 2 hours overdue.

6:32 AM – traveling through a farm area. I’m going to try to get back to my seat for a nap. If I can’t, I’ll take my Bag O’Food etc downstairs to the restroom and see if I can get some kind of decent shave (razor and a small can of shaving goo being part of the “etc” in “Bag O’Food etc”). If I can get a nap, I may bring the work laptop to the Observation Car later and try to sit with my back to the front bulkhead where no one can see the screen while I work. There are plenty of outlets in the Observation Car, as well as in the coach car.

6:23 AM – my seatmate was fast asleep, but I was able to retrieve my Bag O’Food etc from the overhead bin without waking him. I returned to Snowpiercer the Observation Car. My cardigan was in the Bag O’Food, and a couple of the other inhabitants of the car (the ones who hadn’t already frozen to death) spoke to the conductor and got the A/C set to a more reasonable level – it’s quite comfortable in here now. I ate my second packet of sous vide turkey. It was fairly warm, but I figure it was probably safer than Thanksgiving leftovers that have sat out during a long feast. Ah, who am I trying to fool – I’ll probably be dead of food poisoning tomorrow. But it was tasty. BTW, we stopped in Poplar Bluff at 6:15 AM. It’s getting light out – light enough to see that the Poplar Bluff station was in some need of new paint on some doors, etc.

5:57 AM – just crossed into Missouri – looks like the next stop is Poplar Bluff. The Observation Car has gotten kind of chilly – I’m going to see if I can get back to my (window) seat and maybe doze some more.

5:18 AM – pulling out of Hoxie / Walnut Ridge (it was the next stop). I tried the Indoor preset on my camera and got a decent picture which captures the Observation Car (well, the 1/3 of it closest to our coach car – there were people behind me, but I wanted to get a picture of the car by itself).

4:50 AM – Passed Tuckerman, coming up on Swifton, AR. I’m in the Observation Car, which stays open all night for the convenience of night owls. I’ll try to get a decent picture (without flash) if I’m still in here at the next station (which looks to be Hoxie or Walnut Ridge).

4:10 AM – dozed for a while, woke up, looked at Maps. Cortana (the Windows Phone answer to Siri) brings up a Flood Alert. Better check that out! So I click on the alert, Cortana thinks about it for a while…then tells me “Interests are not available now.” Thanks for the Flood Warning there, Cortana! There’s definitely some serious thunder and lightning outside. Oh, and we’re in Bradford, AR.

3:38 AM – Between Beebe and McCrae, AR. Some thunder and lightning outside.

2:56 AM – Rebooted phone – we’re in Little Rock! And departing now…

2:48 AM – ??? I’ve been dozing, and Maps can’t seem to find where we are.

12:40 AM – between Fulton and Hope, AR

12:07 AM – arrived Texarkana station

April 7 2015

10:48 PM – departed Marshall, TX

10:15 PM – departed Longview

9:58 PM – approaching Longview, TX (start of overnight “quiet time” – last PA announcement)

9:22 PM – departed Mineola, TX

8:54 PM – passing by Grand Saline, TX

7:10 PM – arrived Dallas, TX

5:56 PM – arrived Fort Worth, TX

5:10 PM – arrived Cleburne, TX

4:39 PM – crossed a good-sized river (for Texas) between Temple and Cleburne

2:33 PM – departed Temple, TX

1:25 PM – arrived Taylor, TX

12:29 PM – the Texas Eagle pulls out of the Austin station (scheduled departure time was 9:31 AM)

9:07 AM – discovered that the train has been held up at the previous stop (San Antonio) – predicted time of arrival in Austin: 11:00 AM.

9:05 AM – arrived at the Austin Amtrak station – less than the suggested 30 minutes before the scheduled arrival of the Texas Eagle. I hope I’m not too late…

Trains, Planes, and Automobiles (and Buses) (part 3)

“What about Amtrak?”

I’ve never traveled anywhere by train. When my wife asked that question, I almost rejected it out of hand.

Surely, Amtrak would be more expensive than Greyhound, never mind Megabus.

But she was persistent – “Check their website. What have you got to lose?”

Surprise! Amtrak isn’t that much more expensive than Greyhound, and it’s more convenient than Megabus.

Amtrak’s Texas Eagle goes direct from downtown Austin to Union Station in Chicago. Actually, that train starts in Los Angeles, goes to San Antonio (for an extended stop while the train is serviced), and from there to Austin and on to Chicago.

Going from Austin to Chicago by bus means changing buses at least once with Megabus, and probably that many times with Greyhound. Every bus change is another chance to play Seatmate Roulette. Are you feeling lucky?

On Amtrak, if you get on the train in Austin, you ride that train all the way to Chicago. No changing cars, so no schlepping your carry-on luggage from bus to bus, and no Seatmate Roulette.

As far as cost goes, the Texas Eagle is $133 from Austin to Chicago if you buy your ticket at least 24 hours in advance. Megabus is a bit less than $80 – at least $12 from Austin to Dallas, and $64 and up from Chicago to Dallas.

The bad news is there’s no way to go direct from Austin to the Detroit area on Amtrak without a LONG wait in Chicago – the Texas Eagle gets in to Chicago about an hour after the train for Michigan leaves.

So right now I’m riding the Texas Eagle between Dallas and Texarkana.

Trains, Planes, Automobiles (and Buses) (part 2)

So I couldn’t afford to fly, and I didn’t want to take the risk of driving our 1997 Hyundai to Michigan. I figured that had me looking at a long bus trip. Go Greyhound! I’m so happy, I could just jump for joy.

Since my wife and I took that horrible bus trip, Greyhound acquired a competitor – Megabus. In the spirit of this, the “Good News – Bad News Tour”, here are some pros and cons of Megabus:

The Good News:

  • Megabus is cheap. I priced a trip from Austin to Ann Arbor at around $100, a bit more than half the Greyhound price.
  • Megabus promises more amenities – WiFi and AC power outlets at every seat on every bus. Greyhound Express buses also have WiFi and power, but not every Greyhound route is a Greyhound Express route.

The Bad News:

  • From what I’ve read, Greyhound drivers are unionized, and Megabus drivers are not. As a progressive, I like to support union workers when possible.
  • Unlike Greyhound, Megabus’s site wouldn’t ticket me all the way from Austin to Ann Arbor. From Austin, I could get a ticket to Dallas (or Houston). From Dallas, I could get a ticket to Chicago (or other destinations). And from Chicago, I could get a ticket to Ann Arbor.
  • Also unlike Greyhound, Megabus doesn’t have bus stations. You catch your Megabus on a street corner. You have a five-hour wait for your connecting bus? Hope you like standing around with your luggage.

Despite the downsides, I’d about decided to take Megabus, until my wife asked…

Trains, Planes, Automobiles (and Buses) (part 1)

After I decided I wanted to go up to Michigan to see my parents, the question was, “How?”

I didn’t even consider driving. My wife and I have driven our Hyundai to Michigan, Washington D.C., North Carolina, and Tennessee – but it’s gotten a bit worn down and I’m not really confident taking it much farther from home than, say, San Antonio.

What about flying? I checked airline prices, and couldn’t find a flight in the next couple of weeks for less than $1000. Right now, that’s impossibly out of our budget.

The last time my wife and I took the Greyhound bus from Austin to Michigan and back, we swore we’d never do it again. Greyhound severely oversold the trip from Chicago to Memphis, and we couldn’t get two seats together – all the fat people who were waiting in line grabbed window seats, and we were separated.

If you know me, you’re probably saying, “Well, Ed, who are you to talk about people being fat?” That’s a fair point. I was definitely overweight or even obese at that time. But my seatmate, and my wife’s seatmate – they were FAT. We were crowded and miserable all the way to Memphis. We had a fairly good trip the rest of the way home to Austin, but we were determined – NEVER AGAIN!

However, sometimes life has a way of making you change your mind…

The ‘Good News – Bad News Tour’

The Good News: I’m taking an awesome Amtrak train trip to Chicago, and then a cool bus trip to Michigan!

The Bad News: I’m heading home to help my dad and mom with my dad’s surgical recovery.

Dad had some surgery a few days ago, and he was moved to a nursing home while he was recovering. He’s been in a lot of pain and been getting very depressed.

I called him last night (Sunday) to wish him a happy Easter. His pain medication made conversation difficult, but I could tell he was very depressed.

The more we talked, the more worried I got, and the more I decided I wanted to get up north to see him and help Mom, if I could.

It’s less than 48 hours later, and I’m on my way to Michigan. More to come…

Where it all started – the Monad Manifesto

PowerShell originally started as a project called “Monad” within Microsoft.

The original Monad Manifesto[PDF] was written by Jeffrey Snover back in August 2002.

BTW, one of the major influences on Monad was a paper by John Ousterhaut:
Scripting: HigherLevel Programming for the 21st Century[PDF]

It’s interesting to read Snover’s original manifesto and see how much of the original vision made it into PowerShell (and how much didn’t).

Setting up my PowerShell profiles

There comes a time in every programmer’s life when s/he has to strike out on his/her own, writing new code (instead of typing in examples from books / websites). That time has come now for me with regards to PowerShell.

But first, I have to set up my working environment.

Here at work, we have a common (i.e., shared) network directory on our Production resource server. There were no PowerShell utilities in the directory (probably because I think I’m the first person to do anything serious with PowerShell here, with the possible exception of the IT guys – and they don’t use the Production resource server).

However, it occurred to me that that common directory (call it N:\common\utils, because that’s not its name) would be a good place to put modules meant to be shared.

How do I tell PowerShell to look for modules there, without having to specify this every time I start PowerShell?

For now, I just:

  1. created a PS subdirectory in N:\common\utils (PS for PowerShell, of course)
  2. Started PowerShell on my PC and created a profile file in the $profile directory (per Recipe 1.6 from the Windows PowerShell Cookbook):
    New-Item -type file -force $profile
  3. edited the profile file using Notepad.exe:
    notepad $profile
  4. and added a line to add the common directory to the PSModulePath environment variable:
    $env:PSModulePath += “;N:\common\utils\PS”
    (the leading semicolon is the profile path separator)
  5. exited notepad, saving $profile on the way out.


Now, whenever I start PowerShell, the $profile runs and adds the PS shared folder to the module search path.

To do the same thing (less step 1) for the Windows PowerShell ISE, I consulted Microsoft Technet article How to Use Profiles in Windows PowerShell ISE, which suggests wrapping the New-Item in step 2 in an if statement to prevent overwriting an existing profile, and using the ISE to edit the resulting profile file:

  1. (PS subdirectory already created in N:\common\utils)
  2. Started the PowerShell ISE and created a profile file in $profile:
    if (!(test-path $profile)) {New-Item -type file -path $profile -force}
  3. edited the profile file (using the ISE editor):
    psEdit $profile
  4. and added the same line to add the common directory to PSModulePath:
    $env:PSModulePath += “;N:\common\utils\PS”
  5. then closed the ISE editor tab, saving the ISE $profile file on the way out


Now I just have to figure out modules and module manifests…

Automating web browsing using PowerShell

A lot of our Production Quality Control (QC) operations where I work require checking that data has been uploaded to one of our websites, using either one of our internal tools, or our backdoor access to one of our customer-facing sites. This is all right when we’re checking a couple of customer jobs, but gets tedious VERY quickly for routine QC of dozens or hundreds of customer jobs.

A web app works well as a manual tool (“enter text to be searched for in this box, click Search, click the link for desired item in the list of items matching your search term…”), but our internal tools and customer-facing sites were never designed to be scripted.

For a while, when I was working with more cross-platform scripting languages, I was looking at Selenium. Selenium allows you to control popular web browsers from a number of programming languages, including Python, Ruby, and C# – but not directly from PowerShell. It would be possible to write my own PowerShell wrapper for C# to control Selenium, but I don’t have any experience extending PowerShell with C#, and since we’re not a C# shop, I think that would be very fragile from a long-term maintenance standpoint.

Anyway, unlike the typical Selenium application, our Production QC ops aren’t testing a single web app across multiple browsers. We’re searching for a multitude of data items, but we only have to find each one once, in a single web browser. A more robust solution would be to use something more native to PowerShell to control a single browser – which could even be Internet Explorer (perish the thought!).

I Googled “powershell web browser automation” and came up with a number of possibilities.

Web UI Automation with Windows PowerShell, is an MSDN article from 2008 and talks about using COM to control Internet Explorer, which is something I’ve dabbled in using VB Script. My first experiment with the method wasn’t successful, though, so I looked for troubleshooting info for COM in my handy copy of Windows PowerShell in Action. As it happens, the book illustrates COM with an example of “…a COM-based tool to help manage…browser windows,” so the book probably offers a more fertile field for further research.

A post on StackOverflow then led me to WatiN – Web Application Testing in .Net. WatiN allows control of Internet Explorer AND Firefox, so it might be even better than using COM.