Orbital Frustration

Before I was aware of NRA News I’d been considering getting a satellite receiver for my office (yes, I know I can listen online, but I didn’t want to be subject to the whims of net usage; something I’d been encountering on a more frequent basis of late when trying to listen to online streams).  I have XM in my truck and I prefer the variety to what I can get on local radio.  When NRA News announced their deal with Sirius Satellite Radio it seemed like an interesting opportunity.  They were offering a choice of one of their plug-and-play receivers along with a home or car kit for $49.99 with service for $9.99 per month (with a 12 month commitment).  The receivers alone usually sell for around $100 and the home or car kits are around $50.00.  So for home use the usual price would have been around $150.  A second receiver for XM would have been about the same cost in hardware (i.e. around $150) and the service would have been an extra $6.99 per month.  I suppose it’s not entirely cost effective, but the variety on Sirius is worth the extra $3.00 per month in service charges. 

So I chose the JVC KT-SR1000 along with the home kit.  When it arrived the installation instructions said it needed a north-facing window for optimum reception.  My office window faces east, so that posed a bit of a problem.  I went ahead and set it up and tried to angle the antenna to face a little to the north.  I was able to get between 1/3 and 1/2 signal strength, which was enough to get the preview channel.  Unfortunately, the signal seemed to fluctuate for no reason I could determine.  At first I thought it was wind blowing a nearby tree into the path of the signal, but that turned out not to be the case.  Even though I could receive the preview channel, the unit crapped out when I called to have the activation signal sent.  As soon as the guy at Sirius sent the activation the receiver displayed “Acquiring Signal.”

I decided to relocate the antenna to a north-facing window in another room, but this required a 50-ft extension cable, which was an additional $39.99 (plus shipping, taxes, etc) along with an interminable wait for the damn thing to be delivered.  Now I get a much better signal, but it’s still not satisfactory because it craps out at seemingly random times.  What I’ve learned is that Sirius chose to put up three satellites in elliptical orbits, such that two of them are supposed to be visible over the continental U.S. at all times.  Contrast this to XM which uses two satellites in geosynchronous orbit (I’ve always been amused that XM named their first satellite “Rock” and the second one “Roll”).  Since my neighbor’s house is very close to the north side of my house it appears that when the Sirius satellites play celestial tag with one another that they end up being hidden behind my neighbor’s roof, causing short periods of low or no signal. 

My next move will be to install an outdoor antenna on the edge of the roof and hope that it’s got enough elevation to see the damn satellites as they move around in the northern sky.  This is rapidly turning into way too much trouble for something that should have been simple.  I’ve heard that XM is better suited for home use due to the stability of its satellite positions.  Once you’ve aimed the antenna for maximum signal strength it will stay that way unless something physically blocks the signal, since the XM satellites aren’t moving in relation to the ground position.  I’m not looking forward to getting out there in our near-100° heat to put up the antenna, but I’m hoping that it will finish this once and for all.

Customer Disservice Is Costly

The quickest way to lose me as a customer is to respond to my customer service request with canned information that doesn’t actually address my problem.

I’d been avoiding Amazon.com for the last six months because I just couldn’t get any satisfaction from their “customer service” reps over an issue I was having with their order notification emails.  I’m pretty prickly about how people contact me.  If you aren’t agressive about making sure that companies adhere to your wishes (and their own rules), they’ll quickly fill up your inbox with stuff they think you might be interested in.  Anyhow, this case wasn’t about that but rather about my dislike for HTML emails.  They slow down my email program while waiting for images to load and they often contain lots of flashy crap that I have to work around to get to the real information.  I’ve always had my email preferences on Amazon.com set to “text only” for email.  On several occasions I received HTML-based order confirmations, despite the settings.  Each time I’d contact them to tell them there was something wrong with the system.  The first several times I just got back a canned response that I could go into my preferences and change the setting.  A couple of times they told me they’d gone in and changed it to “text only” for me or that they’d confirmed the setting, despite the fact that I’d told them explictly each time that I’d already confirmed this setting and that this was an intermittent problem.  Eventually I just gave up on them and quit using Amazon.com altogether when I couldn’t get a satisfactory answer that at least implied they took the problem seriously.  In the grand scheme of things, it wasn’t a big issue.  Although part of me was wondering if they can’t be trusted to handle something as simple as an HTML-email flag in their database, why should I let them store my credit card info?

I only went back to Amazon.com on Monday because I was given a gift certificate from them for my birthday.  At checkout time I encountered a problem with the size of the entry fields in Firefox.  For some reason they were so short that I couldn’t see the text that I was entering.  I checked with Internet Explorer and didn’t see the problem.  Despite the problems I was able to complete the order in Firefox.  I sent them a feedback letting them know about the problem.  Unfortunately, their customer disservice department hasn’t improved much in the last six months.  Instead of really acknowledging the problem all I got back was an obviously canned response about how I should clear my browser cache and reload the page.  I responded back that the answer was not helpful and all I really expected was an acknowledgment that the issue had been forwarded to development/support.  Their response to this was an apology and a note that they were sending it for further investigation.  While I give them credit for at least acknowledging the problem, I’m not sanguine that they actually sent it for investigation.  I suspect the responder just said this to make me go away.

But it isn’t just Amazon.com that has sucky support.  Atkins.com is in danger of losing my business because they gave my email address to a third-party for some kind of survey.  I contacted them about the problem, but all I got was what appeared to be a canned response that didn’t even get my name right (“Dear Aubrey Aubrey”).

Thank you for your inquiry.

We use your personal information to fulfill any orders made on the Web site.  We occasionally make our customer list available to a few reputable, carefully screened companies whose products you may find of interest.  However, if you do not want your personal information shared with companies other than Atkins, please check the box that says,” If you do not want your name and contact information shared with Atkins Nutritionals business partners, please check here” when you register and when you purchase products on the Web site.  For more information about this topic, please see our privacy policy.

People who know me (or have been reading this site for a while) will understand why this answer is unsatisfactory.  I explictly stated that I didn’t give permission to be contacted in this manner.  Further, I make it a habit to carefully scan all registration and order forms to make sure I’ve correctly “opted-out” of whatever SPAM they’re trying to get you to take by default.  I know for a fact that I selected the “don’t bug” me checkbox when registering.  I’ve sent back a response telling them this, so we’ll see if it gets anywhere.  But I’m not hopeful that they’ll actually forward the request to anyone who can actually investigate the problem or fix it. 

Given the usual pressure on support staff to answer as many calls/problems as quickly as possible, I can see how they don’t really take time to understand (or even read past the first sentence).  This just highlights how most companies don’t understand the actual costs of their support centers.  They all see the bottom line cost of the expense of hiring support staff, but they don’t understand the cost in terms of lost revenue from pissed off customers.  It doesn’t even require that they completely fix every problem.  Sometimes just acknowledging that a problem exists or simply showing that the rep understands the problem may be sufficient.

Failure to understand this is costing them business.  In the case of Amazon.com I used to use them as my go-to site for any kind of product I was searching for.  Now I tend to try to find it in a local store or search on Google for a different source.  I can’t say for sure how much I’ve spent in other places that would have gone to Amazon.com, since I’ve bought some of the items locally.  However, I was able to determine that they’ve lost $228 to Barnes & Noble for books and CDs and another $109 to DVD Empire for DVDs and CDs.  Another way to look at it is that I spent a little over $3700 with them in 2003.  Although 2003 was a bit of an anomaly since I bought extra items for the house.  Regardless, they’ve lost their opportunity to get a share of those purchases this year.

Atkins stands to lose $240 every six months in supplement sales if they can’t give me a satisfactory answer concerning their failure to adhere to my expressed preferences.  There are a few places around the area that sell the Atkins supplements.  It was more convenient to order them on the website in six-month quantities, but I can get them locally with only a bit more effort.

 

Fundamentally Unserious

As an agnostic, I don’t really have much interest in the Catholic Church, except for what I see in the news about the abuse scandals.  I’ve always been a bit suspicious of the church given its propensity for issuing edicts seeking to run people’s lives, especially in the sexual arena.  The abuse scandals certainly haven’t helped its moral authority.  So I suppose I shouldn’t have been surprised by this reaction from the bishop in charge of a Catholic seminary in Austria that is involved in a child porn and sex scandal.

A vast cache of child pornography and photos of young priests having sex has been discovered at a Roman Catholic seminary in Poelten, officials said yesterday. The announcement led Austrian politicians and church leaders to demand a criminal probe and the resignation of the bishop in charge.

Bishop Kurt Krenn, who oversees the diocese, refused to step down, however, dismissing the images as a “childish prank.” The seminary’s director, the Rev. Ulrich Kuechl, resigned along with his deputy, Wolfgang Rothe.

Until the church cleans its house of people like this and gets its house in order, it’d better keep its opinions about how we run our lives to itself.  Until then, I can only conclude that the church is fundamentally unserious about ending the abuse.

My Hatred Knows No Bounds

My hatred for insects, that is.  The other day I went out to grab the paper and heard an ominous buzzing above my head as I came in.  There was a nest of red wasps on the eave of the house right above the entry area.  At times like this I don’t want any of those namby-pamby new bug sprays that promise to smell nice or be more environmentally friendly.  I want some nasty stuff that knocks those stinging bastards right out of the air.  I hit that nest with a dose of ‘Real Kill’ and most of them dropped down to the ground and rolled around.  A couple of them tried to take off again and I hit them with a personal dose of it and put an end to that.  Real Kill doesn’t smell nice and you don’t want to get it on you, but it does the job of knocking ‘em dead from 20-ft. away.  With that other crap I bought at Home Depot last time you would end up drowning them with the spray rather than having the chemicals do the work.

Which brings me to the general ineffectiveness I’ve noticed in so-called environmentally friendly solutions.  I remember once making the mistake of buying some eco-friendly windshield fluid.  Not only did it smell bad, it didn’t work.  Now I look for the stuff with the skull-and-crossbones on the label so that I know it will work.  When you have to scrub off a bunch of nasty Texas bugs you need toxic chemicals, not green vinegar.

Busted!

As usual, I ignored the repeated reminder emails that my passwords on a number of systems were going to expire soon.  I get so much other email that I tend to see them and immediately forget about them.  So this morning I go to log on and get the message that I have to change my password now.  I always hate picking new passwords, because they’re such a pain.  Not only do I have to adhere to my company’s password rules, I have to be able to remember the damn thing.  I tried several and was growing increasingly frustrated at finding something memorable and “secure” (at least according to their rules).  Anyhow, I finally found something that would work and went into one of our support websites to change the password on six Unix systems all at once.  Except it did something I didn’t expect this time (something it’s never done in the past three years I’ve been using this system).  Whoever runs the system had changed it to send me an email with my new password in cleartext.  Normally, this is just annoying, but it’s not that big of a deal.

Unfortunately, the system also CC’ed my manager on the emails.  One email for each of the six systems.  Did I mention that my password used one of the seven words that are forbidden on TV and radio?  That made for an interesting phone call from my manager about ‘appropriate’ words for use in a business environment.  Of course, the fact that she was never supposed to see the password didn’t make much difference (managers are supposed to be copied on passwords for new accounts and for password resets, but not with user-selected password changes).

If I’d have known that anyone else would have seen the password that I might have chosen a different password selection algorithm.  Anyhow, I sent a nastygram to the support address for the password website.  Perhaps they can be pursuaded to adhere to the password rules before anyone else gets their wrists slapped for an ‘inappropriate’ password that is supposed to be kept private.

Garage Sale Manners

It seems that a couple of my neighborhood residents arrange a neighborhood garage sale twice a year.  It’s going on today and tomorrow from 8:00am to 4:00pm.  I decided that I’d take the dog for a walk during lunch today to avoid the worst of the heat (i.e. it was only 90°F instead of 95 when we left).  On the way back I made the observation that people at garage sales don’t know how to drive or park.  I was almost run down by one driver who was so distracted by the stuff on display that she couldn’t be arsed to stay on her side of the street.  At another house I had to avoid a car parked in the middle (!) of the road by someone who just couldn’t be bothered to park normally, such was the allure of whatever item caught his/her fancy.

I can only imagine what it’s going to be like tomorrow, since I’m sure most of the people will be here then.

PHP Contact Script

Within a day of upgrading to Expression Engine I started getting spam on my contact email address.  The reason for this is that unlike in the old weblog I’d put a live “mailto:” link in the “Contact” part of the page header.  I could have used some Javascript to obfuscate the address to keep it from being harvested, but I’ve always resisted using Javascript when it could interfere with the site’s function if it is disabled.  I know that the majority of web designers hate it when they can’t use Javascript, but I’ve been strongly affected by my company’s guidelines concerning Section 508 compliance for web sites (i.e. disabled access).  One of the core rules is that you can’t use Javascript for “essential tasks” unless there is an alternate method for performing the task.  If Javascript is disabled, the site should degrade gracefully.  Accessibility is one reason why I’ve never enabled ‘CAPTCHAS’ for my comments section.  It’s also why I despise websites that use Flash for their core pages.  It’s OK for special content or presentations, but for basic site navigation and presentation it blows chunks (not only does it interfere with assistive technology, you can’t do freakin’ bookmarks).  While I haven’t bothered to run the site through an accessibility scanner, I try to use valid XHTML in all of my posts as well as in the templates.  But I digress . . .

While Expression Engine has a contact module, it seemed like a nice little diversionary programming task to write my own contact form.  My requirements for the contact module:

  1. Must not reveal the email address on any part of the HTML that is generated for the form (to prevent spammers from harvesting the email).
  2. Must not accept an email address as a parameter (to prevent spammers from relaying through it).
  3. Must support invocation from multiple parts of my site with different destination addresses for each one (i.e. I have different contact addresses for my gun show listings than I do for my guns or my weblog).

Along the way, I also decided I wanted to be able to use it as a pop-up window and use CSS for formatting.  Invoking it as a pop-up window involved a bit of Javascript, but it degrades well when Javascript is disabled and displays the form in the original browser window.  As I was coding, I realized that it might be useful for other people to use on their sites, especially if they didn’t have Expression Engine.  So I made sure that all configuration and customization fields were in a single file, which is separated from the code.  In addition, all of the strings used to build the form are in arrays at the top of the code module, to make future enhancements for translation easier.  The script is in use right now and you’ll see it if you click the “Contact” link in the header of any of my Expression Engine pages.

If anyone wants to use these scripts, they can be downloaded here:

These scripts require PHP, but shouldn’t need any additional modules. 

Installation
Note: If you only have FTP access to your server (my condolences), you’ll need to extract the archive on your system and then upload the files after making the changes I give below.

  1. Upload the files to your server and extract the archive/zip file to the directory where you’ll be running the script.
  2. Modify continfo.php as follows:
         

    • Modify “$contacts” to specify the public target name along with the email address associated with it.  You can have as many targets as you like, although only one is accepted per invocation.
    •    

    • Modify “$base_url” to be the web accessible URL of the directory where the script will be invoked.  It must end with a “/”.  (Example: If the script will be at “http://www.yourdomain/your/directory/contact.php”, then you’d put “http://www.yourdomain/your/directory/” here).
    •    

    • (Optional) Modify “$page_title” to be the title you want to use for your contact page.
    •  

Invocation/Usage
When invoking the script, you must specify one of the targets you used in the “$contacts” array in continfo.php.  This is done using CGI GET parameters.  Using the example URL from the installation section, and assuming you created a target called “mycontact”, you’d invoke the script by calling “http://www.yourdomain/your/directory/contact.php?target=mycontact”

The CSS and the HTML assume that they’ll be used in a 600×600 pop-up window.  To invoke them in a pop-up, you’ll need to use some Javascript on the invocation (if Javascript is disabled in the browser, the pop-up code is ignored and the script opens in the current window).  Here’s a sample:

<a href=“http://www.yourdomain/your/directory/contact.php?target=mycontact” onclick=“OpenContactForm(this.href); return false”>Contact</a>

You’ll also need the Javascript function “OpenContactForm”:

function OpenContactForm(c)
{
window.open(c,
'contact',
'width=600,height=600,scrollbars=yes,status=yes');
}

Further customization
You can customize the colors and page formatting by editing ‘contact.css’.  The text that is displayed on the form is all contained in arrays at the beginning of ‘contact.php’.  You can rename ‘contact.php’ to anything you like.  You can also rename ‘contact’.css’, but you’ll need to edit ‘continfo.php’ to tell the script the new name of the CSS file.

Warning
This code is released ‘as-is’, so you use it at your own risk.  This script doesn’t use any kind of user token, so it is vulnerable to DOS attack if someone took the time to understand the parameters in the form and write another script to post the form over and over.  The attacker could not cause the script to send email to arbitrary addresses (without cracking the server, but you might have bigger problems if that happened).  Instead, the attacker would end up flooding the inbox for the selected target address.  The Expression Engine contact module uses a form of user token (in fact, all of their modules that generate forms have this built-in), so you’re better off using the EE module if you have that.  This script isn’t likely to be modified to fix this problem, since it would require a database to fix it right, and I didn’t want to make this script any more complicated than it is. 

The 35-cent hassle

I have an American Express card that was issued by my company for business expenses.  Normally, business expenses are submitted through an online system we have that then sends payment directly to AmEx.  Somehow I guess I messed up the last submission, because I got a bill from them for $0.35.  It seems like it would almost cost them more than that to process the bill, but a debt is a debt.  Anyhow, it isn’t worth the hassle to me to try to mess with the online system at work, so I decided to just pay it from my BankOne online payment system.  They’ve recently upgraded their software, and along with that upgrade they’ve added a new criteria to their validity checks.  All payments must be at least $1.00.  I know in the past I’ve paid a bill of less than $1.00, so this is definitely new.  Anyhow, this means that I had to send AmEx $1.00, which means I’ll be carrying a tiny credit on the account now.

This isn’t really significant in any way, but it’s the kind of nagging little detail that annoys me.  I want the balance to be $0.00 and have done with it.

Slacking…

After all that work to get this weblog using Expression Engine, I go and let it sit here for most of a week without posting anything.  It’s akin to getting a shiny new toy and just letting it sit on a shelf, gathering dust.

Of course, part of it has been that I have a set of deliverables due on Monday that have been looming over me for a while now.  Unfortunately, my management had several “emergency” requests last week that took up time that would have otherwise been spent on this work.  Since they’d stolen several days from my work on the deliverables I asked for more time to complete this work and was denied, meaning that I had to work extra hours to make up for it.  It irks me a bit when they do this kind of crap, since the deliverables are some bureaucratic nonsense that don’t add any value.  They’re just check marks on some checklist somewhere.  If they were something that added value for the customer, I’d understand not moving the deadline.  Heck, the deadline was arbitrary anyhow, based on the estimate I’d given them for the number of hours it’d take to complete and assuming that I’d be able to work on it half-time.  They’d already moved it several times as they gave me other tasks that were more important.

By the time I’d finished work, walked the dog, and dealt with everything else I just wasn’t interested in writing.  Instead, I got wrapped up in a bit of PHP coding.  It’s kind of addictive in that you can’t stop until everything is just right, although there will always be little tweaks to make.  I think I’ve finally got a handle on the work now, though, and will have everything wrapped up by EOD Monday without having to work the weekend, which is nice since my birthday is Sunday.

Crackle…&nbsp; Run… Thump…&nbsp; Bang!

This (270KB WMV) is why I’m glad I’m able to get away from the wet-blanket nannies of the city and celebrate the 4th the way it was meant to be.  Even though they seem to be making some things weaker every year (i.e. M-150s…), other items seem to be getting better all the time, like the artillery shells and the multi-shot display items.  With the quality, though, comes increased prices.  However, you can still find some impressive items (1.4MB WMV) for around $20.00.