2007-12-30

Learning to live with Quicken

As someone with whom I once worked was fond of saying, "Once you've used it a while, you get used to it." I still think from a UI perspective that Money is the better program, but I am starting to appreciate Quicken a bit more.

For one thing, I went through my bills lists and changed the types for transfers from "Transfer" back to "Payment". Fundamentally, there doesn't seem to be any difference, since the thing that really defines it as a transfer is the fact that the Category is the other account (surrounded in brackets to help distinguish it as an account). The difference, though, is that you get the "Payee" textbox back. I went through and put the account name in the payee field, so now on my bill list, I see the accounts under the "Payee" heading. A part of me is not completely satisfied with this, as it means I have to be descriptive enough in my payee field to identify the transaction in a list, or that in some cases the payee may not match the account and only be confusing (way back when I had a Circuit City card, which I got for the finance deal for one purchase and never used again, the account was "Circuit City Card" but the bills were paid to whatever the holding bank was). But since most of my bills are paid online these days, I don't know that it's that big a deal anymore.

I mentioned before how Quicken's calculator needed to be brought up manually with a click, whereas Money's would pop up automatically on the first press of a math symbol. I'm not sure why this wasn't working for me before, but when I was entering splits paying bills tonight, it worked just fine when I hit the "+" key. Perhaps last time, it was in one of those fields that doesn't automatically insert decimal points either despite having that option turned on.

I also complained about the lack of shortcuts in the date field in Quicken. Well, it would seem that I didn't even try them. "t" does in fact enter today's date, "y" and "r" go to the start and end of the year, and "m" and "h" the start and end of the month. I also noticed that repeated presses of "y" or "m" go back a year/month, and repeatedly pressing "r" and "h" go forward a year/month. I don't recall Money doing that, but I never tried it there; now I'm tempted to fire up Money and see. Oh yes, and "-" and "=" go back and forward one day, too. I really have no excuse for missing that; I'm usually very much a "try it and see what happens" kind of guy. All I can figure was that I was in a complaining mood and started assuming the worst. Bad Yakko.

I had to balance my business checkbook tonight, and that was confusing. I had forgotten to mark my previous transactions as "Reconciled", so when I entered my statement amounts, I couldn't get the balances to match up. That, again, is somewhere Money excels and Quicken fumbles. If everything isn't exactly right before you start something, you're screwed. Money, see, would take the starting and ending values from your statement, decide the transactions on that statement need to describe just the difference, and then when you're done, alert you to the discrepancy between the bank's balance and your register's reconciled balance. Quicken is very confusing in this respect, because no matter how you mark things, nothing will match up. Or maybe that's something else I have to get "used to" -- but hopefully, I won't have to get used to that anyway once I get the first set of statements balanced.

Downloading transactions, however... Let's see. Quicken:

  1. click the button
  2. enter your "password vault" password (still wish I didn't have to do this)
  3. wait for a pause before the dialog box pops up with all my accounts and passwords (hidden -- see, I'd prefer only needing the vault password if I was changing those, instead of having to type it in so Quicken could retrieve the passwords from the vault itself)
  4. click OK and let it fly

I didn't time it, but I don't think it could've taken more than a couple minutes to be ready for me to start entering transactions and such.

Money:

  1. click the button
  2. more or less instantly, see the dialog box with all accounts and passwords (hidden -- note, no master password required)
  3. click OK and let it fly

Again, Money wins out on the UI. I've also ranted and raved about Money entering transactions in the register and Quicken using a separate (and small, un-resizable) list. However, the time required is where Quicken wins, and wins big. Money would spend the next half hour to an hour "updating transactions", and as I mentioned before, often sit there not "updating transactions" until I start to enter a transaction myself, at which time it starts "updating transactions" and refuses to let me save any changes until it finishes, five, ten, fifteen minutes later. For that, I'll enter a stinkin' master password in Quicken.

2007-12-24

How much can I put up with to resist evil?

Today is my traditional bill paying day, and it's my first day using Quicken as my primary financial software program to do it. I got the opportunity to balance my checkbook against a bank statement. How did it go? Well, let's compare.

Money would ask for my beginning and ending balances, plus ask for service charges and interest. I'd usually enter this from my statement, but then I'd have to delete the duplicate entry as those transactions would have already been downloaded. Quicken doesn't even give the option to enter those amounts, which I suppose is a blessing in my case since I couldn't seem to get it through my head that I didn't need to enter these things in twice.

Money then shows my list of unreconciled items. Its default method is to sort by checks first (defined as anything where the "check number" is actually a number, not "ATM" or "Internet" or blank) sorted by number, then all other withdrawals sorted by date, then all deposits sorted by date. Coincidentally, this is exactly how my bank statement is printed. Also, the list is editable, in that you can enter transactions on the fly — very useful if something came through on my statement that I forgot to enter. Admittedly this is less of an issue since the transactions are downloaded long before I get to the statement. Also, since Money puts downloaded transactions in the register before you "Accept" them, you can balance against them and reconcile, even while leaving the transaction "unaccepted" pending review (i.e. trying to remember what that transaction was for, so I can put the right category on it).

Quicken lists the unreconciled items in two groups, deposits and withdrawals. Each list is sorted by date. The deposits are fine, but this makes the withdrawals very difficult, as checks are much more difficult to find (their dates are updated as they clear, which is quite often not in the same order they were written; also, with my wife and I writing checks from two different checkbooks, our check numbers are shuffled together instead of separated sequentially). There appears to be no option to sort differently. Also, because downloaded transactions are not in the register until you "accept" them, you must do that step first. And of course entering new transactions can't be done in-place. (I think I recall a "Finish Later" button, so I suppose it would be possible to exit and come back.)

I've already ranted about the bills and seeing a list of "Transfer" "Transfer" "Transfer" "Transfer", not much to add there — except perhaps to note that my previous rant about really small list boxes (or dropdown boxes) applies even more so to the transaction list when you try to manually match a downloaded transaction to your register. Seriously, can I please see more than four things at a time? I did see that, like Money, Quicken has an option to "automatically insert decimal point in money fields". However, this only applies to the check register or split window. Forms, such as the one used to enter a bill or the one used to start the reconciliation process, do not auto-enter a decimal point. This inconsistency has so far led to frequent errors resulting in very large dollar amounts that would almost be funny if I weren't actually trying to get something done. Also, Quicken includes a calculator button by most every money field, but you have to click it to activate it. Money has it too, with the added bonus that the instant you type in a math symbol (+ - * /), the calculator opens starting with the value you just entered and the action primed and ready for the next value. Quicken's date control has one extra bit of lameness that I'll have to get used to. It only shows the current month. If the month ends on a Monday, that's all of that week it'll show. In Money, you'll see in a lighter color the first few days of the next month to fill out the week. It's minor, but an annoyance since I pay my bills on a weekly schedule, so when I'm spanning a month boundary, I have to tab forward to use the date control. Money also has nice little shortcuts in its date control that I used often: "t" goes to "today", "m" goes to the start of the month, "h" the end of the month, "y" and "r" for year, "-" goes back a day, "=" (under the "+") goes forward a day. Pretty small and simple, but you don't realize how much you use it until it's gone.

Yeah, so far, I'm of the opinion that, compared to Money, Quicken sucks. Except that Money tries to lead you along with its flaxen cords while it binds you with chains. Knowing that, how could I ever go back to Money?

2007-12-19

Getting there is half the fun

The conversion from Money to Quicken continues. Once the reports were finished (I don't know how long the account one ran, but the investing one was quick -- probably because it is a much smaller fraction of my database), I ran the conversion tool, which finished and launched Quicken with the converted data. Now, I know data conversion is an inexact science. I've written data conversion programs myself, and even when the source and target databases are designed in-house, not everything comes over as cleanly as you hope.

The first problem I noticed came up as I tried to set up my accounts' online access. When it converted the accounts, every account came across as a "Bank" account. "Credit Card" accounts, however, are a different type. While this doesn't seem like a big distinction, there was one very clear issue. When selecting financial institutions, Quicken filters the list based on the account type. It confused me at first, because an institution would show up, but the specific bank that manages credit cards wouldn't be there, and trying to continue with the bank listed wouldn't work (because I don't have a "bank" account with them, I have a "credit card" account with someone else).

The fix wasn't horrid, fortunately. I had to set up a "Credit Card" account for each credit card, and then I could select all transactions from the "Bank" accounts in turn and move them to the appropriate "Credit Card" account, and finally delete the old "Bank" account.

What made this process a little more annoying was the "Move" dialog box. The destination was a simple dropdown list that showed maybe four or five accounts at a time. The sort order was as it appears in the ever-present sidebar: Cash accounts first, then credit, then assets (I think -- I might have that order wrong), alphabeticaly sorted within each group (unless you move one, which I did accidentally on occasion). But there were no dividers or anything in the dropdown; it was just a list. And if you're not expecting that exact sort order -- because, for instance, the application is new to you and you don't instinctively know credit cards are at the bottom -- it makes it a royal pain to find anything. A point to Microsoft for better UI design here, where account list dropdowns are larger, have descriptive dividers, and in some cases end up being rich custom windows making it very easy to see where and what accounts you have.

Downloading transactions wasn't too painful, but again I did come across another UI blockade trying to have it save my passwords. When you elect to do so, you have to use the "password vault" wizard, where first you select your institution, then (if you have multiple "identities") select an identity (the username -- note this only appears if you have more than one), then enter the password. Why was this an issue? Because I don't often think of my accounts in terms of institutions; I think of them as accounts. I don't think "Citi Cards", I think "MasterCard". And, when I think of passwords, I think of them tied to a username. I don't connect "Citi Cards" to "p@sSw0rD", I think "My credentials for the MasterCard account are yakko_0123/p@sSw0rD". Quicken definitely loses points for forcing me to link institutions to passwords one at a time in their predefined order; another point for Money in that a full list of online credentials is displayed all at once, with a simple checkbox by each for remembering passwords right there, without needing a separate wizard. Although once remembered, I don't think I ever found where to change that information in Money, so Quicken gets a point for having a "go-to" place for password management, even if its interface sucks.

Downloading transactions is pretty straightforward. They have different ways of entering them into the register -- Money puts them in the register and has you accept them in-place, Quicken puts them in a list below the register. When you match a downloaded one to an existing one, both will remember the translation between the downloaded name (usually something messy like "WAL-MAR#919238 COLO") and the name you used ("Wal-Mart"). Quicken tells you it's doing it, though, but I wish it gave you the option to override that new "naming rule" on its popup. When I use the ATM to deposit birthday money from my mom, I'll enter "Mom" as the payee, but it'll get downloaded as "ATM DEPOSIT". That doesn't mean I want all my "ATM DEPOSIT"s to be from "Mom"...

As I was doing this, I noticed something that I knew was going to cause me pain. When Money downloads a transaction, it assigns the same Split information (if available) as it had from the last time that payee was used. Often, the amount will be different, but Money uses the old Split values anyway -- it then flags that transaction with a warning. In the conversion, those splits came across, but the warnings did not; so now I have a ton of transactions (because my wife, who spends the money and keeps promising to update the splits to what was really spent and never does) in Quicken that have invalid data. I'm going to have to compare Quicken and Money side-by-side, see which transactions Money has flagged, and delete the splits in Quicken by hand.

Loans do not convert. This, I knew ahead of time. Still doesn't mean it wasn't a pain to set that up again. I started with the mortgage, because that bill is due first, but at some point I'm going to want to rebuild those properly as well.

Most of my investment accounts, I just left as-is, because they've closed, so if the information isn't entirely accurate, it's not a big deal. My active ones, though, for some reason didn't convert right. I forget what kind of account they came over as, but it wasn't the right kind of investment or something that prevented online access. So, I set those up by hand. And that included having to enter the purchases of each lot of stocks (which, with dividend reinvestment plans over the course of a few years, was a lot of data entry). Pretty annoying; and the interface felt rather clunky. And after doing so, I of course was a little off by thousandths or ten-thousandths of shares. I'm sure this is not helped by the fact that E*Trade seems to round shares to thousandths in its file downloads -- in Money, whenever I got a statement update from E*Trade, I always had to log on to the site myself to get the exact share amounts before entering the transactions into my register; otherwise Money would complain that the brokerage statement and my Money register were off by 0.000128 shares.

I noticed, too, that categories were a little off. Quicken has its own predefined list, and in many cases, it took categories I used and converted them. It took Bills:Telephone and turned it into Utilities:Telephone, for instance. All things considered, it's not too bad. Half of my bills are under Bills and half are under Utilities now, but Quicken can move and merge categories just fine. One thing I did find amusing is it seemed to match my Insurance category to its Auto:Insurance subcategory. This led to categories such as Auto:Insurance:Automobile, Auto:Insurance:Health, Auto:Insurance:Dental, Auto:Insurance:Life...

The next thing I decided to do was to enter my scheduled bills and transfers, so I could pretend to get back on schedule. This wasn't too bad. The option to set a bill for the "First Sunday of the Month" was nice for scheduling Fast Offerings, which I used to have scheduled for the first of the month and always be "overdue". I did have a slight annoyance when doing the transfers, because the payee/category is listed at the top of the form, but transaction type is further down, and when you switch the type to "Transfer" is when "Transfer To" replaces "Payee". It should be strongly noted, however, that this replacement is probably one of the most idiotic UI blunders. When it hides "Payee", behind the scenes, it enters the word "Transfer" into the payee field. When I was done, I looked at the upcoming bill list. What did I see for the week? "Transfer", "Transfer", "Transfer", "Transfer", "Electric company", "Transfer", "Transfer", "Transfer", "Transfer", "Transfer". The only option I could find for customizing this view was to add "Account", which showed me the account that was paying out, namely my checking account. THIS DOES NOT HELP ME. In order to see what "Transfers" are due next, I have to double-click and open each one in turn.

When I went to actually pay my bills, I noticed something a little odd. Due to medical bills (and an uncooperative insurance company -- which reminds me, I still need to call and ask why they're refusing to pay for the emergency surgery performed by an in-network surgeon), cash flow has been really tight, so, in the back of my mind, I was wondering if I would need to pull money out of savings to pay this week's bills. So, after entering my bill payments, I checked my checking account balance, and it was higher than I remembered. A lot higher. Somewhere to the tune of $3000 higher. "Hey, good news! I just saved a bundle by switching financial software!" Um, no. That can't be right. I switched over to Money, and sure enough, my balance was just as low as I remembered. It seems that my next major task is to have Quicken and Money side-by-side and comparing each and every transaction over the past 10 years and see what's missing (or extra).

When I first switched from Quicken to Money, the two programs were virtually identical. Now, they are so different, I feel like I'm on a completely new operating system. (I can't quite put my finger on it, but Quicken "feels" like a Java app -- maybe it's just that all those Java-based financial apps I checked out were made to look like Quicken?) Although some of it could be chalked up to familiarity, I have found so many reasons why Money's UI is far superior to Quicken that I'm actually tempted to return Quicken for a full refund (I really wish they'd had a demo available for download).

Except I won't be going back to Money. Not when it pegs my CPU for minutes at a time doing apparently nothing, and certainly not when they demand a Passport ID to connect to my banks. That's right, it's worth the pain to go to Quicken for that.

Here's what I'd like to see from Money:

Better/faster database
Money started out on a Jet database, and I suspect it still is. Why not upgrade it to the SQL Express engine, the one they've been promoting for .Net developers? I don't know if that's the source of all the slowness, but it couldn't hurt to move into the current century. Perhaps Reporting Services could take over some of the report work?
Open database
Back in the 1900s, you could fire up Access and connect to your Money database and access your data at will. Now, there's what, one tool out there that lets you connect Excel to Money? I say let me at my data.
Lose the Passport
I do not want my data stored on your servers. Do not make that a requirement for useful and unrelated features.

2007-12-16

Do you have all your install disks?

My computer has been degrading over time. The most recent manifestation was video playback. For some reason, videos were playing as if I was in 256-color mode. I'm not entirely sure what happened; I have upgraded the video card and monitor within the past year or so, and even upgraded the video drivers more recently, but this seemed to happen well after any tinkering I did there. I tried uninstalling and reinstalling video codecs (I use the K-Lite Mega Codec Pack; it's generally served me well), but nothing seemed to fix it. I decided it was probably time to wipe and reinstall.

So, I moved the desktop files and My Documents folders, plus any other data I found (forgot about my Audible books, but I can always re-download those), to the data partition, and reinstalled Windows. So far, I can sum up the progress as "fair". Audible Manager unfortunately is giving me problems downloading books (and I'm reluctant to upgrade to the newest version, for reasons I won't describe here) -- I think I can work around that, if nothing else than by installing the latest on a VPC (something I think I need to do more often).

I ran into a big problem today, though. Sundays are usually my days for paying the bills for the week. As I've mentioned before, I use Microsoft Money for my finances, but that is something I want to change. I did pick up a copy of Quicken already, so I figured this would be an ideal time to make the switch. Unfortunately, Intuit can't read Microsoft's data files directly, so the transfer involves running a couple reports out of Money and using a tool from Intuit to import them into Quicken. Seems simple enough. All I have to do is reinstall Money and run those reports.

And it was only then that I discovered I couldn't find my Money 2006 install disc. I started with a frantic search of the disaster area that is my office, but the closest I could find was Money 2005. I was pretty sure 2006 was the version I was last using, though. So I tried the internet. I searched for Money 2006 Download, and I found a link to download a trial version. Should be good enough, all I need to do is run the reports and be done. But when I started it up, it accessed my Money data file and immediately reported that my trial version of 2005 had expired. Wait, 2005? Was I wrong? Did it read that from the data file, and was it really 2005 that I had been using? They haven't changed the interface at all; the version year is easy enough to overlook.

So I installed Money 2005, but when I tried to open my data file, I got the ever-helpful error message "Money cannot locate filename or cannot open it, possibly because it is a read-only file, you do not have permission to change it, or your disk drive is write-protected. If you have chosen the correct file and it cannot be accessed, you will need to click OK and then Restore your most recent backup file." Searching Microsoft's site brought me through a few "Page cannot be found" links (why do their own search results result in dead links?), but I finally found a page that mentioned the error might be caused by Money not being fully updated before opening a file that had been previously opened by a fully-updated copy of Money 2005. Makes sense to me. Except following the steps to update Money and then opening the file didn't help. The other explanation seemed more likely: the data file was created in a later version of Money (namely, 2006), and 2005 can't open it.

After a few moments of panic, I started to weigh my options. Attempt to buy a copy of Money 2006? Should be cheap, but an unnecessary expense, not to mention a delay I should do without before paying my bills. Find an illegal copy on the web? A possibility, one I entertained only because I had actually purchased the program, I just couldn't find the stupid disc -- but a search that would be fraught with hassles: finding the right version, making sure I got everything, making sure the download didn't include a virus or two.... What about a trial of the current version of Money? I went to Microsoft's site, and sure enough, they have one available. Their FAQ even discusses running it side-by-side with an existing version of Money on an existing data file, which gave me hope that I wouldn't see it complain the same way the 2006 trial did when I pointed it at my data file. Downloaded, installed, ran -- success.

Now, it is in the process of generating the first report. It's been at it for nearly an hour, keeping my 1st-generation Pentium 4 (i.e. pre-hyperthreaded) pegged on my nearly-clean Windows XP installation. I guess I should expect the lack of speed by now. Maybe it's not really fair for me to judge it; it is, after all, generating an XML document based on my entire financial history for as long as I've tracked it, about 15 years or so. Still, it does seem like a long time to process a file that is only 30MB, especially when I've seen reports run in an Access database (which I strongly suspect Money still uses, with the ".ldb" file it creates when it runs) up to a gigabyte in size in much less time than it takes Money to do even the simplest tasks.

Maybe it just "knows" these are its last moments with me, and it wants to make the most of them. Well, good luck with that; I'm going to bed. Hopefully it'll be done with the first report by the time I wake up, and I can start the next one off before I leave for work.

2007-12-07

We're not done yet?

Got another box today from the Microsoft repair center in McAllen, TX. Anyone want to guess what's in it? Yep, another Microsoft Xbox 360 Wireless Racing Wheel. I don't know the serial number of my old wheel off-hand, nor do I think I would recognize it, so I don't know if this wheel is the same; but I suppose it is a repaired wheel in response to the one I sent in just last week.

For those of you keeping score, that makes four boxes I've received:

  1. Empty box, with instructions and packing tape but no return mailing label, not returned
  2. Box with wheel, probably retrofit
  3. Empty box with return label, returned to MS with my original wheel
  4. Box with wheel, likely retrofit, likely response to previous box

So to anyone who bet on the wheel getting repaired and returned, despite my having already received a (probably) repaired wheel, I guess you win. Give yourself a pat on the back.

Now, why couldn't they have done this when my 360 had to be repaired? :D

Anyone know where I can get an extra set of pedals? ;)

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.

2007-06-26

CyberKnight's MythTV Project

I'm working on a project for my wife, building her a personal video recorder. I've decided to blog the experience, just for kicks. You can follow the progress at the link here.

2007-06-05

You *CAN* say that on TV?

So, apparently a couple celebrities said some dirty words on a FOX show (the Billboard Music Awards shows, back in 2002 and 2003), and the FCC attempted to slap a fine on them.  But the 2nd US Court of Appeals said, no, that was okay.

I get the feeling this date will be remembered as the day the floodgates opened for all kinds of language on public TV.  Or, to quote the article, quoting the dissenting judge and the FCC chairman:

In his dissenting judgment, however, Judge Pierre Leval argued strongly against that particular finding. Apart from disagreeing with the key ruling against the FCC, Judge Leval said that he would "put his money" on the FCC's prediction that any relaxation in the law would give broadcasters a "virtual free pass" for indecency.

"The majority's view presupposes that the future would repeat the past. It argues that because the networks were not flooded with discrete, fleeting expletives when fleeting expletives had a free pass, they would not be flooded in the future," Judge Leval wrote.

"This fails to take account of two facts. First, the words proscribed by the Commission's decency standards are much more common in daily discourse today than they were thirty years ago. Second, the regulated networks compete for audience with the unregulated cable channels, which increasingly make liberal use of their freedom to fill programming with such expletives."

That warning was taken up by Kevin Martin, the FCC chairman, in a fierce statement responding to the court's decision - itself peppered with the F-word.

Mr Martin said he completely disagreed with the court and was disappointed for American families. "I find it hard to believe that the New York court would tell American families that "s***" and "f***" are fine to say on broadcast television during the hours when children are most likely to be in the audience.

He added: "If ever there was an appropriate time for Commission action, this was it. If we can't restrict the use of the words "f***" and "s***" during prime time, Hollywood will be able to say anything they want, whenever they want."

I've long been resisting the digital TV era.  Primarily, I like the fact that I can take a TV to any room in my house, hook a coaxial cable up to the jack, and get all the TV I want.  The thought of having to use (and pay rent for) another box for any TV I want to use just irritates me to no end.  So I've long since dreading the impending doom of analog cable.

Fortunately, it appears that problem has been solved.  If TV gets a free pass for foul language, I will be canceling cable TV altogether.  Can't say that we'll miss it.

2007-04-08

Are they trying to send a message?

This past week, the family went to see the movie Happy Feet, starring Elijah Wood and about six Robin Williamses. The kids liked it well enough, which I suppose being kids and this being an animated feature kind of stands to reason. I thought the penguins were cute, although the music didn't really do that much for me (except for when they broke out in Boogie Wonderland; I may be a child of the '80s, but I was born in the '70s). The one thing I definitely could've done without was being beat over the head with a thick, heavy, blunt instrument with an environmental message tied to it. Yes, much thicker and heavier than the one used by Star Trek IV.

The finer details of their message were still a little unclear. Yes, humans taking all the fish leaves the penguins to starve. Indiscriminate fishing = endangering wildlife. I got that. (Oh yeah, and throw in a little pollution/littering statement for good measure.) But are they saying humans only care about creatures if they do something cute and silly? Or maybe it was simply the cute and silly that got their attention to the existing problem. I think perhaps the dancing theme in the entertaining part of the movie confused their environmentalist message.

There was another message there, too, that may not have been tied to as big of a blunt instrument, but it was still there. When Mumble (methinks Dad got dropped as an egg as well to come up with that name) tries to tell the penguins what is going on, he is cast out by the leaders, who refuse to listen rather than blindly follow their faith in the Great 'Guin. I suppose I'm being a little overly-sensitive -- after all, there's a difference between religious faithful and blind religious fundamentalism, and these characters were clearly of the latter -- but I get a little bothered by the anti-religious movement, probably because it's too often I see the anti-religious use fundamentalist whackos as a springboard to attack all religion. And that annoys me even more, because I do think fundamentalists (including those in this movie) could stand a good hard hit to the head with a thick, heavy, blunt instrument.

2007-03-12

I have to lose sleep over this?

Summary of this article: economists at UC-Berkeley propose that DST provides no "energy saving benefit", by studying recent experiments with DST in Australia (instead of relying on 30-year-old data that supported the recent extension).

The most troubling part I find about the article is this quote:

In the 2005 energy bill, Congress calls on the department to report whether energy consumption drops, as hoped, after the early start of DST. If not, the bill has a provision for the country to return to the old daylight savings calendar. Under the previous law, standardized in 1986, DST began on the first Sunday in April.

So, if I read this correctly, it means if they find energy consumption does not drop as expected, they could change DST back to the prior dates, and we get to go through the whole time zone update thing again.

My guess is that most studies will find no measurable savings in energy, but the politicians will find one that does, and they'll declare victory. More likely that, than to admit they made a mistake, and oh by the way, all the money you spent in adjusting your various computer systems for the new rules was not only a complete waste, but you have to do it all again to change it back.

Last I had heard, this was also going to cause problems with Canada, as they would be out of sync with the U.S. for three weeks out of the year. However, I just checked, and it seems they are following suit. In fact, this site refers to it as the "new North American standard". I would think that, if I were Canadian, that would piss me off to no end, to have the U.S. dictate Canadian time zone policy.

But the whole Daylight Saving (saving nothing; "shifting" is more appropriate) thing pisses me off anyway. Heaven forbid people actually adjust their schedule to get more daylight time when they want it; no, we have to shift the measuring of the cosmos. I'm sure if they could find a way to actually slow the earth's rotation just to get an extra half hour of daylight, they'd pass that into law, too, with no thought to the consequences.

2007-02-01

You don't want to work here, either?

This is an excerpt from a letter I was writing to a friend who's out on a mission, with just a sampling of what I'm putting up with today.


Work hasn't changed. In fact, it's as wee-tawd-id as ever. I had to deploy a new link into Production last week. Now, you might think that adding a link to a page or two wouldn't be that big of a deal. I mean, how many ways could you screw up <a href="http://over.there.com">Go Over There</a>?

Well, let's see. Of course, they wanted a graphic to go with it. But this wasn't added to the design documents. Fortunately, this happened before I got here, so the full-time developer who actually did the work and had to deal with this "undocumented change" was ready and waiting to voice that fight. (It was disappointingly anti-climatic: "Why is this image here?" "I was told to, and they refused to update the document." "Oh, well, fine then.") But the image wasn't aligned neatly with the rest of the page. (Funny, the documentation doesn't describe how the non-existent image should be aligned.) So I got that all lined up, tested it with IE6 (no one's said anything about IE7 yet, which was just released and changes a lot of rules -- even xbox.com doesn't look entirely kosher in IE7), Firefox, and Opera, and called it good.

Then there was the requirement that this new text link (in addition to the graphic in the middle, a new text link should appear on the left) should replace this other link, not be shown in addition to it. Whoops, the developer missed that one. No problem. Go through the thirty-two files and comment out the link. (Yes, apparently, there are eight files that draw the left side, depending on what you have clicked; times four, one copy for each environment in the deployment chain.)

Gets to User Acceptance Testing. Bug gets filed about text overlapping in Mozilla. Eh? But it works in Firefox. No, not Mozilla Firefox, just Mozilla (the one that uses the old Netscape Navigator logo). Apparently the two browsers don't work exactly the same. So, I download Mozilla, view the page, note the problem, start playing with the tags to see what's throwing it off (yep, it's that non-existent image again; whole lot of work for something that shouldn't exist), fix it, and set up to deploy.

I don't know what I'll do if they find a bug in Mac IE or Safari; we don't have a Mac available.

So, we schedule the Production build. But before we go there, someone just happens to notice that there is a link missing in the secured site. (Most of the changes, including the non-existent image, were to the "unsecured" site (i.e. the login page, something they see before entering a username and password to get into a secure area), but there were a couple changes in the secured area.) What happened? Well, apparently there was a change made in production, deployed from the production maintenance branch, but that change was not added back to this development branch. Short answer, if we deployed, we would remove something that should be in production (and, in fact, is, as of now).

So we should just postpone the release until the code can be reconciled, right? Absolutely, if Marketing hadn't already published that this new link would be available. It's the age-old problem in this field. Marketing makes a promise, and we have to deliver. Fortunately, Marketing only promised the link on the unsecured site, so we could deploy that half of the project, and deploy the second half the next night.

I went home, prepared to call in at 8pm to a conference number while the deployment happens (standard procedure, get everyone involved to be present -- physically or virtually -- in case something goes wrong). As I'm listening to everyone going about their business, I learn that sometime between the time I left (about 5:30) and the deployment time, it was determined that there should be disclaimer text below the link graphic. (I've heard that came from the CEO, so it's not like just saying "no" was much of an option. And neither was postponing deployment to properly deploy the disclaimer text. Not a lot of space between this rock and this hard place.)

Ok, the next day, we get the secured code reconciled, and schedule the deployment. Since it is just a code change, this can be done mid-day (site content changes take down the site during deployment; code changes do not), and we were told to schedule the deployment for 4pm. At 1pm, we receive the final decision from a list of emails we didn't know were going back and forth all morning. The conversation goes something like this:

Business Users: What happened to the other link?

Product Manager: We removed it, per the requirements.

BU: But now people can't get to that link! We need it back!

PM: You signed off on the requirements, saying you'd give the URL to those who needed it! If you want it back, it is a change to requirements. So what do you want?

BU: Put it back.

So, I make the change, restoring the link in the thirty-two files that I had to remove because it said to in the requirements. So it's almost 2pm. We have a deployment at 4. I check the files in and request an immediate deployment to Test and UAT to get it ready for deployment. That goes something like this:

Project Manager: Get this out there immediately!

me: Get this out there immediately!

Source Control Management: Where are the release notes?

me: They need release notes.

PM: Forward on the email.

me: Here's the email.

SCM: These are emails, not release notes. I'm not deploying.

me: They won't accept this.

PM: (creates a change request) Here's the ticket number. Use that in release notes.

me: (creates release notes) Here are release notes.

SCM: (has gone home for the day)

At least now I know what a ping pong ball feels like.

This was the point where I let the PM talk to the manager in SCM and "let the grown-ups talk". Having me run back and forth wasn't doing anybody any good.

The weekly deployment meeting, which happened to be the next day, was entertaining as well.

Source Control Management: You didn't follow procedure.

Full-Time Developer: What procedure? We've never had this restriction before.

SCM: It's common practice.

FTD: What common practice? This is all new to us!

SCM: How did you get it deployed anyway? We didn't stage it for production, just test.

Deployment Manager: It was the same set of files; we didn't need a special stage for production.

SCM: You're supposed to get it from us. Otherwise, what's the purpose of SCM? (obvious pouting in tone of voice)

DM: SCM is supposed to be available for deployments. You went home!

SCM: My boss told me to go home!

All this for a stupid little link.

Did I mention that the project manager mentioned they were looking for full-time .Net programmers, and that she had mentioned this to the account manager about my status (contract to hire or not, and when I'd be available to hire)? She said she had no power to make any offers, but she was talking to me as if the offer would be coming. It was an effort not to laugh out loud. My poker face must be better than I thought, or she's just good at ignoring facial expressions. (Probably the latter; she's one of those who, once she gets talking, there's no stopping the locomotive.)

Hmm. You know, it's just possible that work would go more smoothly if they didn't randomly decide to take the database down for the day to "reload data", during the day, with less than a half hour's advance notice, sent only to a handful of people who don't seem able to forward that information to those of us trying to work within that half hour.

6 November

Back at work. Checking email. Hmm, a defect, let's see. This link doesn't appear on this form. Let's look up the requirements. Ah, link is "TBD". Well, I suppose if they want to see a link there, I can put it there, but somehow I don't think they'll like "TBD" as the target.

What else? Ah, a message from my PM, asking to please send the results of a test I was asked to run on Friday. I guess I'll reply, and attach the test results I sent to him Friday afternoon. This man is the master of chaotic management. How anything gets accomplished, I'll never know. But it probably fits with the rest of the company, which is likely why the other huge project of which I actually wanted to be a part is shutting down due to lack of progress. Lucky. They all get to move on to new projects, and I'm stuck here through Q1.

Oh neat. The DBAs decided to take our development database offline. Funny that I only hear about this decision in passing from one of the testers.

And I seem to be the designated release manager for the development team. And part of that is just "knowing" when code should be deployed.

Oh yeah?

I have put a fresh build on DevInt and have requested the move to System Test at 3pm. I will send out an email when I hear from ITSWS that the move has completed. When I receive confirmation that everything looks good on System Test and everyone approves deployment, I will schedule the move to UAT.

Thanks,

Want to take bets on how many people take notice? I can bet on one, only because he complains about process and lack of communication more than I do. And he has about as much power as I do to make people actually listen.

7 November

Ok, I've officially decided that I really dislike this job. When it's not even 9am and I feel the need to smack somebody, then something is definitely wrong. Apparently, two of the pages on their site are really serviced by a completely different provider at an entirely diffrerent URL. So the project we have that changes the header for the site isn't working on these other two pages (gee, imagine that). I raise the issue to those who might actually have the authority to coordinate, and after their emails go down a completely different tangent and I spell out the problem (and the possible solution on their end, since we have no control over their code), I suddenly receive no emails.

And this morning, they want to know when they can expect to see it working. "How about, after it's fixed?" I want to shout.

Incidentally, this is the same project that the Microsoft consultant put together. I seriously doubt he had any more knowledge about these two pages and how they work than I did up until yesterday, so I'm not saying it's his fault at all; I just find it an... "interesting" coincidence.

Wow. And it just keeps getting worse. For me to even attempt to give a play-by-play of what is happening now, putting the proper context around it, would be an exercise in futility. But in an quick summary: the release management person who was pouting back towards the beginning of this letter, is again deciding he won't do a release without a detailed description of every file that was changed; the tool that the Microsoft guy wrote to deploy SharePoint lists has a serious flaw in that it builds an XML document by simply concatenating user-entered strings (want to guess what happens when one of the user's values has an "&" in it?); the resident architect said to fix the problem with the images on the external site, all we need to do is send them the logos, because otherwise we have to pay them to update their code (note that (1) these logos are uploaded by users, so it'll be a changing list that now we have to somehow maintain across two systems, and (2) it won't magically fix the fact they're putting the URL in the WRONG PLACE); and the testers are all wondering why the latest updates haven't been deployed yet, and when that will happen.

And it's only Tuesday.