2007-11-30

Oh, did you want this back?

"Oh, by the way," my wife said yesterday, "you got another box yesterday. I think this one's empty."

Yes, on Wednesday, I got another empty box for returning the Xbox 360 Wireless Racing Wheel. This time, it contained the instructions, the packing tape, and the return address label.

So, the old wheel is all packed up and ready to return. Anyone want to take bets on whether or not it's repaired and returned to me?

2007-11-29

Be careful what you let kids name teddy bears

I've been "reading" (actually listening to the audio version of) the book The Enemy at Home by Dinesh D'Souza. It's a rather opinionated book that offers up a view of Western culture and how the Muslim world views it, as a way to explain why America is hated by the Middle East. It's kind of interesting, and the more I read, the more respect I gain for some of the Muslim culture's values. (It's also kind of insulting, because he's so focused on blaming Liberals that he leaves out so much; it's really a specialized form of "Blame America First" -- but that's another rant.)

And then I see stories like this, and respect just flies out the window. The gist is, a British teacher in Sudan asked her class of 7-year-olds to name a teddy bear. One of the kids suggested Muhammad, his own name and the most common given name in the world. The kids voted in favor, and so it was. Well, the Sudanese government decided that by allowing the use of the name Muhammad for an inanimate object, the teacher was "guilty of 'insulting the faith of Muslims in Sudan' under Article 125 of the Sudanese criminal code" and sentenced her to 15 days in jail and deportation.

I suppose I should give the Sudanese court a little credit here. The original charge was "inciting religious hatred," which would've gotten her up to 40 lashes, a fine, and six months in prison. I'd like to think that they realized no harm was intended and chose the least possible sentence for the least possible crime.

Still, the fact that this was even an issue (and one that was so severe that lawyers assigned to her defense received death threats) sickens me. Maybe D'Souza would accuse me of ethnocentrism, but this is just ridiculous.

edit: It seems the USA Today link I used keeps changing; it was a report on the sentencing a moment ago (and is what some of my quotes were citing), and now it is a report on the response by the British government (which lacks some of the facts I quoted). I wonder if this Bloomberg.com link will be more stable...

edit 2: I've seen many reports that suggest this whole thing was blown out of proportion, that many Muslims do not support this decision. Good for them. I hope they are the majority, and that the sickos that were calling for the teacher's execution represent a radical minority. (Goodness knows this country has its share of vocal whackos that seem to do their best to try to give the rest of us a bad name.) I still think there is sufficient cause for concern, because at least some of those people who think she needed to be punished had the power to make it happen. What would've happened if the British government didn't hear about her and intervene on her behalf? Would reason have prevailed? What's that saying about knowing a person's true character by what they do when no one is watching?

2007-11-21

Goofy IE6 bug of the day

Yeah, here's one that took a while to track down.

If you are able, check out this HTML in IE6:

<table><tr><td>
<span style="color:Red;display:none;">Please enter valid date</span>
<span style="color:Red;display:none;">Please select a Month.</span>
<select style="float:left">
   <option value="0">Month</option>
   <option value="1">Jan</option>
   <option value="2">Feb</option>
   <option value="3">Mar</option>
   <option value="4">Apr</option>
   <option value="5">May</option>
   <option value="6">Jun</option>
   <option value="7">Jul</option>
   <option value="8">Aug</option>
   <option value="9">Sep</option>
   <option value="10">Oct</option>
   <option value="11">Nov</option>
   <option value="12">Dec</option>
</select>
</td></tr></table>

This is a much-stripped-down segment of a web page I'm working on, generated by ASP.Net. It is generated by two standard ASP.Net validators (one Custom and one Required) set to Display="Dynamic" and a standard ASP.Net DropDownList inside a standard, run-of-the-mill HTML table cell, with an element from an included stylesheet thrown on. What you will see is a select box, with the last bunch of bytes from the list of options displayed below it. This text cannot be clicked or selected, the IE Developer Toolbar disavows any knowledge of its existence, and it's obviously not in the source as plain text. The text does appear in the select box where it's supposed to be; there's just a duplicate, unexplained copy on the screen. The amount of text displayed varies from select box to select box -- there is another that is in an AJAX UpdatePanel that loads a very long list of names that only displays the very last character from the very last option.

This appears just fine in IE7, Firefox, and Opera (and probably most others).

What I found, as I was systematically stripping styles and other elements off of the page, is this only seems to occur when there are two validators both with Display="Dynamic" (rendered as "display:none" in the span styles), and only in a table cell. Remove either validator or change its Display property to Static or None makes it go away.

Of course, removing validators or changing their display wasn't going to be the answer -- there are too many pages and too many different ways validators are drawn and used to alter. But as I was going through the stylesheet, I found this block of code:

INPUT, SELECT, TEXTAREA {
   font: 11px Verdana, Arial, sans-serif;
   float: left;
}

I commented out the "float:left", and sure enough, the problem went away. You can try it yourself by either removing the "float:left" on the SELECT tag, or changing it to "float:none".

Why are we floating all input elements left? I'm about to find out, but considering just about everything is in a div or table cell, I'm guessing (and hoping) this style element can be removed safely...

2007-11-18

Cheaper to replace than to repair?

Either Friday or Saturday, I got a new box from the Xbox Repair Center. We noticed it as we were on our way out for the day, sitting on the doorstep, so my wife just grabbed it and put it inside. I figured it was a new empty box for the Wireless Wheel, with instructions and hopefully a return address label this time.

Today, I remembered the box and decided to get my wheel ready to ship out for repair. I grabbed the box and brought it to the kitchen table. It seemed a little heavy for an empty box; perhaps there was more packing material this time? I opened the box, and inside was... a new wheel. No pedals or power supply or anything, just the wheel.

"So," my wife says, "it was easier for them to send you a new wheel instead of sending a return address label?"

"I'm confused," I say. "And, I think, so are they."

Oddly enough, this isn't the first time this has happened. I bought a Mad Catz racing wheel for my Xbox 1 years ago. It was a nice piece of equipment, but it had this rather annoying issue in that it would seemingly randomly lose connection to the Xbox. I'd get a message saying "Controller disconnected, press A to resume" from the game. I could press A immediately and be back in action; although the game would often forget my controller scheme and revert to the default, which meant I had to figure out which standard controller buttons mapped to which shifters and levers on the wheel, which was of course different from the wheel configuration -- very annoying to say the least. I contacted Mad Catz support e-mail and explained the problem. Apparently, some of the wheels had an issue where the vibration motors would interfere with the controller signals. They were aware of the issue and offered to send me a replacement immediately, and in the meantime told me I could work around it by turning off rumble in the game. The replacement I received worked a lot better, but it would still disconnect on occasion; when I emailed Mad Catz and explained that the problem was much improved but still there (I would see the problem maybe once in every three races), they were not satisfied and sent me yet another replacement. That one worked flawlessly. I asked them each time what I should do with the old wheel(s), and their response was just to toss them, not to even worry about returning them. Being the pack rat that I am, they're still around, even if they don't get used (except once when I and my wife's brother's kids turned off rumble and used them for some split-screen racing one holiday).

I'm starting to think I could make a living doing this. If I could fix these things myself (which is the one critical piece missing), I could make some serious money buying racing wheels, calling the manufacturer when they're defective, and getting replacements sent to me.

2007-11-14

They may not have lions or tigers...

It's winter time in Colorado, which means time to buy stock in hand lotion. Even someone with naturally oily skin such as myself ends up with dry, scaly hands when heaters turn on for the season.

My wife got me some lotion to take to work, and I was just looking at the label. It is Neutrogena's "Norwegian Formula Fast Absorbing Hand Cream". "Developed with dermatologists", the back of the bottle proclaims. But, why "Norwegian formula"? What is so special about Norway that would make a hand lotion developed there better than, say, a "Swiss formula" hand lotion? Do all Norwegians have "perfectly soft, supple, smooth hands" (to quote the bottle) thanks to their world-renowned hand lotion formula?

Perhaps it's as my wife says. Americans equate "high culture" with "European", but since the Swiss thing and the French thing have been overdone, they picked another country. Perhaps there were involved marketing meetings where they discussed what country they would use next.

What about Denmark?

Hmm. "Danish Formula." No, sounds like a pastry. We'd have law suits from people seeing "danish" and trying to eat it for breakfast, we'd have to have a whole awareness campaign about not eating hand lotion...

Sweden?

"Swedish Formula." I don't know, makes me think of the Swedish Chef.

Maybe we could get the Swedish Chef to market it for us!

No, the licensing fees alone would bury us. Besides, we're selling skin care products, not food, remember?

How about...looking at a map of Europe...Finland?

Finland, Finland, Finland... "Finnish Formula"? Sounds like something you'd use to treat wood, not skin.

I've got it! Norway! "Norwegian Formula." It's still white European, but has a bit of an exotic sound to it.

Why, that's brilliant! Good work, everyone! Let's break for lunch.

2007-11-08

No more Money for my money

Several years ago, I switched from Quicken to MS Money for managing my finances. The two programs were virtually identical, and I think I had a free offer or something for Money, so the choice was pretty easy. And for a long time, I was fairly satisfied with what I got.

Lately, though, I have started to be more and more frustrated with the program. The major issue is one of performance. Upon launching Money, the CPU will peg at 100% for minutes at a time, when it seems to be doing nothing. Downloading transactions can take 15 minutes to a half hour, with the added frustration that it will sit there and do nothing until I go to enter a transaction, and then, only then, will it start "updating transactions" and lock the form I'm working on ("operation could not be completed at this time") until it gets to a stopping point. It's like it's deliberately wasting my time. When it downloads a transaction that matches a scheduled bill, quite often it will match the downloaded copy to the next instance of the bill (instead of the instance on the exact same date). If I'm not careful, it will consider that next bill paid, and I won't get reminded when it is due. And when I click "Change" to match it to the correct date's instance, it's another 5-minute-or-so wait before it shows me the list of transactions to match.

The straw that has broken the camel's back, however, is this new feature they've been trying to push for a while. The gimmick is, you link your Money file to a Passport ID, and you can access your financials from anywhere with a web browser. Sounds neat, but it doesn't take a genius to figure out this means uploading your information to Microsoft's servers. Call me paranoid, but I don't want my bank accounts on a publicly-accessible server that can be accessed from anywhere with a web browser.

It started with simple "reminders" that you can secure your data file with a password -- a move which automatically enables the "access anywhere" feature. However, now they have locked out one of the main features behind this "requirement". For some reason, the link to the online services for one of my credit cards disappeared, meaning I couldn't download transactions for it anymore. When I went to set it up again, Money insisted -- nay, required -- that I enable the Passport link. It also does this for new accounts, even new accounts at existing institutions. For example, it refuses to acknowledge the new savings account I just opened up, even though I'm sure it's already downloading it with all the other accounts from that same bank with the same login; certain, because before it decided to play this little "give me all your data or I start taking away features" game, I had opened new accounts at existing banks, and the very next update, Money offered to set up the new account it found. Not anymore, though.

Probably the most insulting chapter of this story is that it did not happen when I upgraded versions. It is the same Money 2006 I've had for over the past year. At some point, it must've downloaded a program update that took away a feature of the program that I use, and held it hostage in trade for uploading my account information to their servers.

And to think I used to joke about Microsoft requiring your bank account information before their software would work.

I don't know if the open source projects are mature enough for my needs yet -- they weren't the last time I checked, but that was a few years ago. I have a feeling I'll be purchasing a copy of Quicken in my immediate future.

2007-10-31

Put it in this box and send it nowhere.

It's time for another Xbox 360 Wireless Racing Wheel update!

I got a very large box on Monday. Enclosed was a strip of packaging tape and a sheet of picture instructions showing what to do. Take the wheel -- not the pedals or mounting bracket -- and put it in the box, with the sides folded like so. Use the strip of packing tape to seal the box. Put the return shipment label over the original shipping label.

Hang on a second. What shipment label?

Yes, it seems they forgot to include that critical piece of equipment.

So, I called my friends at 1-800-4MY-XBOX. I got past the automated gatekeeper and to (I assume) a living person. I told him my situation, he looked something up, and then told me that the wheel retrofit works differently, and they won't send me a box, I need to send my own.

Er? But I have a box, it was sent to me. After explaining this, he says he needs to put me on hold and talk to "his resources". (But first, he asks me to verify my information, including my 360's serial number; good thing I decided to make this call working from home today.)

20 minutes of bizarre techno-pop hold music (singing in English, with an occasional female voice in between songs who said a few words in a language I couldn't identify) later, he comes back on the phone to tell me they will be sending another box with the return shipment label, and he gives me a new reference number to write on the outside of the box.

I admit, buying the wheel was an indulgence. I haven't used it that often. Although I have been looking forward to PGR4, it was released early this month, but I still haven't picked it up, knowing full well that Halo 3 will continue to monopolize my time for a long time yet. So I'm able to view this whole retrofit saga with detached amusement. After all, it could be worse...

2007-10-21

Can I stop being sick now?

Three weeks ago, I was sitting in church, and I started to get a cramp in my stomach. This was about quarter to 10 in the morning. About quarter to 11, it was getting worse, so I spent some time in the bathroom to try and get whatever what was in there causing problems, out. I got plenty of crap out (so to speak), but the pain persisted.

I got my family home quickly, and since it was Fast Sunday, my wife thought it was probably hunger-related, so she gave me an ice cream sandwich. It did nothing for me, and I took myself upstairs and laid on the floor outside the bathroom waiting for whatever was in my stomach to pass in one direction or another and get out. The pain just kept getting worse and worse. Nothing came out the back, and the most I could do the other way was dry heave. My wife wanted to take me to the emergency room, which I resisted for some time -- if I was going to be miserable and (as I assumed) in need of a bathroom at some indeterminate yet immediate point, I'd rather be at home than in an uncomfortable hospital emergency room where my chances of immediate attention would be slim. After a while, though, the pain was just too intense, and I couldn't take it anymore.

Fortunately, the hospital was fairly new, and pretty vacant on a Sunday afternoon. I was hooked up on painkillers administered by IV. Initially, they figured it was a kidney stone, so they did a CAT scan. Sitting perfectly still and holding your breath is not easy when you're in intense pain (even on painkillers). The scan came up negative for kidney stones, but it did show that my appendix was on the edge. If the pain was in the right side, they would have been calling for an appendectomy, but since it was on the left, they weren't sure exactly what it was. They just kept me on painkillers until either the pain passed so I was able to go home, or they could figure out what to do for me.

Eventually, my wife had to take the kids home, so she did so and made me an overnight bag. Then she called our home teachers to come deliver the bag and give me a blessing.

After the blessing, the pain moved over to the right side of my stomach. Unfortunately, they had decided to admit me to the hospital proper, a process that took a couple hours, during which the ER doctor wasn't interested in me (since I was supposed to be out of there, and with a football game just ending and people starting their stupid party tricks, they were starting to get busy), so it took some time before I could get seen. Once I got checked into my room, though, I could talk to the nurse and tell her what was going on, and she got the on-call surgeon, and he confirmed the appendix needed to come out.

Well, everything went pretty fine, all things considered, and I came home a couple days later. It took some time to recover, and fortunately I have a job where I could work from home. After a week and a half or so, though, just as the antibiotics wore off, I started feeling sick again. My wife was coughing a bit, so I figured I just caught whatever was going around. But after a week of this, I went in to see my doctor (I had already had this appointment as a follow-up to some migraine treatment), and he diagnosed me with atypical pneumonia.

This was just a few days ago. I'm just finishing up the antibiotics for this, so hopefully I'll stop coughing and being tired and out of breath soon. I am concerned, though, because last year I had a sinus infection that took two courses of antibiotics to cure, and it ended up killing all the wrong bacteria in my gut and I had to go on another set of medication to put everything right again. I really want to avoid that this time around. :-/

2007-10-11

Something new to report?

Just got this letter from Xbox Support:

Dear Wireless Racing Wheel Owner,

Thank you for registering to receive the free wireless wheel retrofit. We are contacting you to let you know that you will be receiving a pre-paid shipping carton for you to send your Wireless Racing Wheel in to Microsoft for the necessary retrofit. The carton will be sent to your registered mailing address, and will contain packing materials, a return postage label, and instructions for the return.

You should receive your retrofitted Wireless Racing Wheel within 2-4 weeks of its receipt at Microsoft. After the retrofit, the customer can use the AC DC adapter.

For further information and support, please contact www.xbox.com/support.

Thank you

XBOX360

A phone call to tell me this same thing wouldn't surprise me.

What does surprise/concern me, though, is that last line in the second full paragraph: "After the retrofit, the customer can use the AC DC adapter." Suddenly they talk to me in the third person?

Call me a snob or grammar nazi if you will, but I expect communication to be gramatically correct, especially if it's customer service from a multi-billion dollar company.

2007-09-17

It's dead, Jim. (epilogue)

Got an email from Xbox Customer Support:

Good news, your Xbox console has been shipped! You can expect to receive it in 3-5 business days.

For your convenience, your shipping information is provided below:

Carrier Name : UPS
Carrier Tracking Number : 1Zblahblahblah

You may track the status of your package using the UPS website and the tracking number provided above.

Yes, I just got that email, for the replacement console I received 2½ weeks ago. *eyeroll*

2007-09-11

Another week, and all's well

So glad the internet is back, because then I could get the phone call telling me that, yes, there is no change to the status of the wireless wheel retrofit kits. *insert eyeroll here*

To report a problem with your phone, please call...

Our internet service was out this morning. Since we have VOIP, that meant the phone was out, too. So I picked up my cell phone and called 1-800-COMCAST, hoping that if I reported the problem before I dropped the kids off at school, it'd be fixed by the time I came back home to work. The call went something like this:

Please enter the phone number where you have service, or wish to order service.
> ##########

For English, press 1. Para espagnol, numero 2.
> 1

To report a problem with your service, press 1...
> 1

For cable TV, press 1. For internet, press 2. For home telephone, press 3.
> 2

Did you know you can visit our website for service requests? Just go to www.comcast.com/service to chat with a live customer service operator!

2007-09-05

Just wanted to let you know, nothing changed

During the saga of the Xbox 360, I mentioned that I initiated a ticket with regards to my wireless racing wheel. I thought it would be amusing to mention that I received another call about the wheel on Saturday. A message was on my machine saying they needed the serial number of the wheel. I gave it to them when I first made the call, but ok, I'll play along.

The guy who answered the phone this time was generally clueless. He pulled up my account, and then proceeded to ask me what I was calling for, did I want to return the wheel, or have it replaced? That initial question, along with his heavy accent suggesting english was not his first language, did not give me much hope for a stress-free phone call. After several minutes of feeling like I was talking to a mound of silly putty, we got to the point where he asked me for the serial number. This wasn't as easy as it sounds, as the barcoded sticker has two numbers on it, one above and one below, in different formats, and neither is labeled with anything that would indicate which might be the actual serial number. I gave him one that seemed to satisfy him (the same that I decided on over a week ago with the help of the very helpful guy who took my information the first time). Then, again, he asked me what part I wanted replaced. "I don't know what needs to be replaced! All I know is there's supposed to be a 'retrofit kit'." He then proceeds to read me the description of the issue, in full, verbatim, as it appears on the Xbox.com website. And then I managed to end the call before he could ask me again what I wanted him to do.

I'm really hoping I don't keep getting calls from them to tell me that nothing's changed, or they need another piece of information from me that they already have. This is starting to get annoying. It's like dealing with Mr. Short-Term Memory.

2007-09-04

Classmates.com, where nothing comes free

At some point, I signed up for a Classmates.com account. I don't remember exactly what prompted it, but from the onset, I figured it was some place I wasn't going to end up visiting often. For one thing, my high school days weren't exactly full of fond memories (moving around as often as I did, I was always the outsider). But more particularly to this site, even though they advertised that it cost nothing to create an account, every page, every feature seemed to be designed to push getting a paid account.

The extent of this push has only become more apparent as time has gone on. The first was when I got an email from someone I knew. It came in through my Classmates.com account, and I was able to view the message. I thought it would be neat to respond and see what she had been up to in the past decade or so. However, I couldn't respond. That feature is for paid members only. Fortunately, I could see her email address, and I was able to respond to her directly.

It seems this little loophole has not yet been closed, as I got another message from someone very recently. Not only could I see his email, but he typed it in the body of the message as well, when he listed a couple different accounts at which he could be reached. I'm not sure if he did this because it was habit, or because he was also aware of how crippled Classmates.com is to free accounts and wanted to make sure I could reply, in case "view return address" was something that had become hidden from free account holders.

Probably the most annoying was an email I got from the Classmates.com server just this past week. Subject: Who's the mystery signer of your guestbook. "Find out who's thinking of you" the link proclaimed. So I clicked. Apparently, there's a "guestbook" feature that lets you leave a message for someone. However, as I clicked on the link and visited my Classmates.com account, I found that I could not view my own guestbook, unless I paid. The lowest charge one could make was $15 for three months. Thank you, no, I'm not that curious to see what random person happened upon my profile (and considering my guestbook has a whopping two entries over the life of the account, I don't see a burning desire to be able to view that guestbook). For all I know, the message waiting for me is from the Classmates.com server, "demonstrating" the usefulness of this feature and "congratulating" me for giving them my money.

Unfortunately, this may mean that someone is actually trying to get in touch with me, and now they're disappointed or annoyed that I'm ignoring them. I'm sure Classmates.com is hoping for this guilt to coerce me into paying up. It is a shame, but one that I refuse to lose sleep over. I can be found outside of Classmates.com if someone wants to chat that much, and if not, well, it's not worth worrying about anyway.

What's worse, the site now hits you repeatedly with popups (the type that are loaded in the browser window, on top of your content, so you cannot view the page without interacting with the popup), encouraging you to upgrade to Gold status or "reminding" you to join the Classmates Dating network (the close link on that particular popup says "remind me later"). Perhaps the subscription requests would disappear if I paid for an account, but would the dating ads, which have 0% relevance and 100% annoyance to me? Although I can't confirm or deny it, their subscription-pushing behavior leads me to believe I'd have a lot more ads in my face if I spent any more time there.

I also have a LinkedIn.com profile. This site has a lot of the same features, although it seems to be more focused on the networking chains rather than the "who did I go to _____ with" idea -- although that feature is available, too. But the best part is, I have not (yet) been pressured to pay for the basic functionality they've advertised. Perhaps this isn't the more profitable business model, but I do know one thing: I've made a lot more page hits to LinkedIn.com than I ever plan on doing to Classmates.com. And if I ever need LinkedIn.com's premium services, I'll be more willing to pay them for it than I will ever consider Classmates.com.

Sure, Classmates.com is entitled to sell their product, and they're entitled to lock up certain features behind a paywall. But when their free services are so limited as to make it almost useless, and they constantly annoy me with ads, they certainly don't give me much incentive to stick around.

2007-08-30

It's dead, Jim. (part 4)

I decided to work from home today. I do this about once a week, because I can, and because I get two hours of my life back on days that I do. A short time after my wife leaves to pick up one of our boys from kindergarten, my dog growls. He does this at almost anything that happens outside -- fortunately it's rarely more than just a little growl. "Moroni," I said, for that is his name, "if it's not the UPS man, I don't want to hear it." Seconds later, there is a knock at the door, and Moroni barks. "Oh. It is the UPS man."

I open the door, and there stands a man in brown with two packages. "The Xbox needs a signature," he says.
"You've seen a few of these?"
"Oh, yeah, it's almost a daily occurrence."

I sign for it and bring the two boxes inside (the other is a Christmas gift for my oldest son -- saw a pretty good deal and decided to get it now). I opened up the 360 and checked its "born-on date" -- September 2006. So I didn't get a new one as a replacement. In fact, I think it might be slightly older. Slight disappointment, but as long as it works, I suppose. I spend a few moments disconnecting the old Xbox and hooking up its younger brother. It powers on fine (except for having to re-sync the controllers, which was expected -- in fact, a piece of paper in the box described the procedure for my benefit), and I go through the "initial setup" screens. It then downloads a couple updates (one on the first reboot, one again when I go through the network setup -- I considered giving it the old 360's IP address, but that confused my switches for a while when I did that with the X1's replacement). I powered it off, slapped my hard drive on it, and powered it back on.

First, I found the settings I could remember -- auto-off, background downloading, XBLA auto-download (apparently that one's also saved with the console), and then I went to Marketplace to download a couple demos. And finally, I fired up the Eternal Sonata demo, the one I had downloaded that fateful night three weeks ago.

As I was playing, my wife comes home. "It's not what it looks like," I said. Honestly, I had no way of knowing it would be here today. I guessed that it was on its way based on the serial number change and the recording at 1-800-4MY-XBOX, but I never received any tracking number or shipment date. It's a very good thing I was home, though, because without someone to sign for it, I'd still be Xbox-less until the delivery coincided with someone being home.

2007-08-28

It's dead, Jim. (part 3)

Apparently there's a little problem with the wireless racing wheel as well. Something about them smoking when plugged in. Microsoft is taking information from people with the wheel so they can send out a "retrofit kit" to correct the problem. Although they have a form for mailing or faxing, I called instead, so I could be sure they got my information. Besides, without a 360, it's not like I don't have anything better to do than sit on hold with 1-800-4MY-XBOX. I called on Friday, and a very nice young man got my information in the system and got a manager to approve it's addition to the retrofit kit queue (the devices aren't ready to ship yet, so they're building a list to send to when available). This apparently took some effort, as he spent a long time trying to get a hold of a manager, but he repeatedly took me off hold to tell me he was still trying, apologizing up and down for the delay. (In retrospect, I suppose he could have just been going out for a smoke instead, but I saw no reason to suspect anything. He certainly had a very helpful attitude.)

Anyway, on Saturday, my wife got a call from the Xbox Service Center, and they left a message requesting I call 1-800-4MY-XBOX. I did so that night. The recorded answering voice recognized my phone number and told me my pending Xbox repair order was open and had been received at the service center, the same status it has been in for a week or so. (Handy feature, since their website is flakier than a pie crust.) I got connected to a live person, who told me the reason for the call was to tell me that they had received my information for the racing wheel, and they don't have anything to send out yet, but rest assured, when they do, I'll get one. Oh...kay... nothing I didn't already know, but... uh, yeah.

Fast-forward to today. On a lark, I hit the service.xbox.com site. I don't know my serial number off-hand, but I was pretty sure it started with a sequence of three zeroes and a nine. But, the serial number registered to me started with one zero and a nine. Sure, I could've been mistaken, but I wondered. Was this an indication that a replacement console was on its way? Others had noted a change in serial number on the web site before they received a replacement. Nothing in my email about a status change or a return tracking number...

I got home, and there's a message on the machine asking me to call 1-800-4MY-XBOX with a reference number. Could it be...? The reference number is different than the one for the original console repair. Don't tell me they're calling me about the wheel again...

The recorded voice tells me that it recognizes my phone number, and that my console has been repaired and should be back to me in up to 5 business days. Well cool. If it takes the same three days it took the coffin to get from there to here, and three days it took to get my 360 from here to there, then I'm thinking it will probably take three days again to go from there to here. The lack of an email with a tracking number is a little unsettling, though. Have they sent it yet? Is it coming? Or is it just "in process", waiting to be put in a UPS box with a tracking number assigned? If I had a tracking number, would I just see "Billing Information Received" for the next few days while they get their act together?

Oh, yeah, the call was about the wheel. "We have your information, we don't have anything yet, we're working on it, please be patient." Be patient? Come on, you called me.

And, I was right. The serial number is different. I remembered the "0009" correctly; the new serial number is very different.

2007-08-14

It's dead, Jim. (part 2)

At about lunchtime today, the coffin arrived. I was telecommuting today, so I was able to grab the 360 (which had been long since disassembled and ready for immediate transport), wrap it up, put it in the box, slap the new label on it, and run it over to the UPS store for shipping. It is now on its way back to McAllen, TX (or should be soon; there's no change yet on the UPS web site for that tracking number) with a scheduled delivery date of 8/17 (this Friday).

8/16 Update: UPS site shows it "OUT FOR DELIVERY" and has updated the delivery date to today (Thursday). Although, the location reads "AUSTIN, TX", which (according to Google) is 313 miles away, so if that's accurate, it might still take until tomorrow to go the "last mile".

8/16 Update 2: I would guess, instead of "OUT FOR DELIVERY", it should've read whatever would indicate that it was being resorted and rerouted. It got rescanned at 8:15pm today with a "DEPARTURE SCAN" from Austin and "IN TRANSIT TO" "CORPUS CHRISTI, TX". That cuts the distance to McAllen by about half (to 158 mi), when it gets there (presumably late tonight). Will it get resorted in Corpus Christi with another DEPARTURE SCAN to a facility in McAllen, or will it go "OUT FOR DELIVERY" from there? A 3-hour delivery route (6 hours round-trip) would be possible. UPS says the delivery will be on 8/17 (again); now I'm curious to see how it gets there.

8/16 Update 3: Apparently it stopped for dinner in San Marcos (30 miles south of Austin), as there's an ARRIVAL SCAN at 9:11pm and a DEPARTURE SCAN at 10:06pm.

8/17 Update 4: Well, the good news is, after spending the night at a bed & breakfast in Corpus Christi, it arrived in McAllen and is now "OUT FOR DELIVERY".
The bad news is, Hurricane Dean is tracking straight for it.

8/17 Update 5: Delivered! 3:25pm, signed by JONES, location: DOCK.

2007-08-10

It's dead, Jim.

Back in November(ish), my Xbox 360 died from the dreaded "Red Ring of Death" -- three red lights and no display. It was very sudden; I had been playing the previous night with no incident, and that night, I hit the power button, and it flashed red. No warning.

At the time, the standard Xbox warranty was 3 months, and mine was a little older than that. The Xbox support person told me it'd be $130 to repair. Instead, I decided to take advantage of the Best Buy replacement plan. $50 for the original plan, plus $60 for a new plan on the new box, and I'm still ahead -- plus I get a new box the same night.

Within the next month or so, Microsoft increased the warranty period to one year, promising refunds for those who paid for out-of-warranty repairs. This, naturally, didn't apply to store-bought plans or other third-party deals, so instead of being $20 ahead, I was $110 behind.

Fast-forward to Monday of this week. I'm playing the space dogfighting game Project Sylpheed. At one point, as one of the other pilots announced we were entering enemy territory, the screen was obscured by red vertical bands. I silently hoped that it was part of the game, but the slightly reduced framerate had me fearing the worst. The mission ended, and I got an invitation to play Shadowrun with some Geezers. On my way out of one game and into the other, I noticed the menus and videos looked fine. More hope, only to be dashed when the games started, and I appeared to be looking at the game through a screen door. I had a feeling that it would be the last time I turned the box on.

I was right. Turning the 360 on, I got one flashing red light, a screen full of text in various languages telling me to call Customer Service, and an error code, E74. I tried unplugging everything -- the hard drive, power cable, network cable, Vision camera -- and turning it on with just the A/V cable and power cable, but there was no change.

It was too late to call 1-800-4MY-XBOX that night, so I called in the morning and set up the repair. That was Tuesday. I got an email update yesterday with a UPS tracking code on the "coffin", and according to UPS, that will be delivered this coming Tuesday.

A couple of silver linings to this cloud. For one thing, it decided to break now, so it's likely I'll get it all fixed up (or replaced) in time for Halo 3, about 7 weeks away. Also, because I swapped my last one for a new one less than a year ago, it's under warranty.

2007-07-31

Dude, where's my DataItems?

ASP.Net coding problem of the day: I have a List of objects, and I have a web page that needs to display them all, allow additions and edits, and save all changes in a batch. Each object has just over a dozen properties, some of which are dependent on others. Also, this is code I inherited from a developer who has since moved on to other things.

What was coded so far was fairly straightforward. There was a user control created with all the TextBoxes and DropDowns, and a page that contained a Repeater control with the user control in it (plus a header and an AJAX CollapsiblePanelExtender to make it look nice and be usable). Most of the code was in place to retrieve the values for the DropDowns, retrieve the object List, and bind the object List to the Repeater. The only thing missing was the actual binding of an object to the user control.

I researched databinding syntax a bit and discovered that the Bind function allows for a two-way binding. I used that in the user control, but I discovered a small problem when trying to bind in the Repeater. Bind attempts to bind a property on the current DataItem, but in the Repeater, what I wanted to do was bind the DataItem (the object) itself to the control. I'm not sure, if I were able to accomplish this, if it would have solved my subsequent problems, but since it wasn't possible, I suppose that question is moot. My only choice was to, in the Repeater, set a property on the user control to <%# Container.DataItem %>.

As I was working with the user control, I found it advantageous to override the SaveViewState and LoadViewState methods, so that each user control saved its associated object in ViewState. (This web app is designed for use on an intranet, so I could afford the extra data transfer.) This would turn out to be my salvation later.

I ran into my first problem when I tried to implement the "Add" button on the page. The Repeater's DataSource is not automatically saved for PostBack, so attempting to add a new object to the List didn't work (the DataSource, and therefore the List, didn't exist). The simple solution was to save the List in the page's ViewState, and in Add_Click, get the List, Add a new object, and re-bind it to the Repeater. The problem was, when I changed some data in the TextBoxes and DropDowns of existing controls, clicking the Add button reverted all values back to their originals.

After much searching (finding many people running into issues with the non-persistence of DataSources and RepeaterItem DataItems), overriding various page- and control-level events, I finally worked out the answer.

The alleged two-way binding doesn't work in this case. Fortunately, the previous developer had already written (most of) a method to populate an object with the values from the on-screen controls, because I would need it. I found that, on PostBack, the Repeater control still contains the controls from the last page load, even if the DataItem itself is lost. So, what I did in the page's Load event, was to have it reconstruct the List based on the controls' copies of the objects (which, remember, were saving them in their own ViewStates). Fortunately, at this stage in the lifecycle, the controls' TextBoxes and DropDowns had already been updated with the changes typed in, so in the control's get accessor for the bound property, I had the control update its object with the values from the TextBoxes before returning it.

In short, the key parts of the code look like this:

MyUserControl.ascx.cs

private MyObject _myObject;

protected override object SaveViewState() {
    object[] vs = new object[] { _myObject, base.SaveViewState() };
    return vs;
}
protected override void LoadViewState(object savedState) {
    object vs;
    if (savedState is object[] && ((object[])savedState).Length == 2) {
        object[] myVS = (object[])savedState;
        _myObject = (MyObject)(myVS[0]);
        vs = myVS[1];
    } else {
        vs = savedState;
    }
    base.LoadViewState(vs);
}
public MyObject MyObject {
    get {
        SaveControlsToObject(_myObject);
        return _myObject;
    }
    set {
        if (_myObject == null) _myObject = value;
    }
}

WebPage.aspx

<asp:Repeater ID='repeater1' runat='server'>
    <ItemTemplate>
        <uc:MyUserControl ID='userControl1' runat='server' MyObject='<%# Container.DataItem %>' />
    </ItemTemplate>
</asp:Repeater>

WebPage.aspx.cs

protected void Page_Load(object sender, EventArgs e)
    if (!IsPostBack) {
        repeater1.DataSource = GetMyObjectList();
        repeater1.DataBind();
    } else {
        //rebuild the data source from the controls
        List<MyObject> myObjects = new List<MyObject>();
        foreach (RepeaterItem repeaterItem in repeater1.Items) {
            MyUserControl myControl = (MyUserControl)repeaterItem.FindControl("userControl1");
            myObjects.Add(myControl.MyObject);
        }
        repeater1.DataSource = myObjects;
    }
}
protected void Add_Click(object sender, EventArgs e) {
    MyObject newObject = new MyObject();
    newObject.someProperty = "initial value";
    ((List<MyObject>)repeater1.DataSource).Add(newObject);
    repeater1.DataBind();
}

Implementation of the Save function is left as an exercise for the user. ;)

2007-07-25

To all legitimate MX admins: Please name your mail servers

I realize my blog doesn't get a whole lot of traffic, but I would like to post this plea to anyone who administers a legitimate mail server that sends email.

Spam sucks. Those of us who run email servers are involved in a constant struggle against the forces of evil. Personally, I run a postfix email server, and I have enabled a series of checks to validate incoming requests. Since turning these on, the signal-to-noise ratio of incoming email is quite high. One of these checks is hostname lookup. My server, when it receives a request from some machine, must be able to find the name of that machine before it will accept email. A failure appears in the mail.log like so (I get a few dozen or so of these per day):

postfix/smtpd[9739]: NOQUEUE: reject: RCPT from unknown[www.xxx.yyy.zzz]: 450 Client host rejected: cannot find your hostname, [www.xxx.yyy.zzz]; from=<spammer@bogusdomain.nul> to=<someaddress@mydomain.nul> proto=ESMTP helo=<another.fakedomain.nul>

Recently, though, it seems there have been some community sites in which I have been interested, but when I try to sign up for them, I can't get the confirmation email (which is often the key to participation). If it was just one or two, I could accept it and move on, but there have been several in recent memory. When I check the mail.log, I can find these attempts with the above error.

While I could turn off this spam trap, or add exceptions for every site from which I want email, I find this unacceptable. There should be no reason for having to go through a configuration change to open myself to spamming, or make individual config changes for every site -- especially when this can be avoided by administrators being responsible for proper configurations. There's a reason this rule exists built-in to my mail server -- because it's a good practice to follow, and it's a practice that spammers are likely to break.

So, if you run a mail server, please make sure your outgoing email server identifies itself appropriately. It's for the common good, after all.