2016-07-21

When there's no will, there's no way

My relationship with my father can be described as "strained", at best. Growing up, I don't remember him being around much. He worked hard to make sure we never really wanted for anything; and though it meant we did have a very comfortable lifestyle, it did mean we didn't spend a lot of time together.

I've never been very good at communicating. I think there are many reasons for this, but I don't want to get into them for fear of being accused of trying to place blame. Even now, as a fully-grown adult, I get very anxious when I think about making a simple telephone call. I also tend to be forgetful and more than just a little lazy. My ideal vacation consists of one where I never leave the house. Not that I don't enjoy the occasional family trip once in a while, but I don't really ever fully relax until I can get back home.

My father has never accepted these aspects of me, though. While it could be considered noble to want me to be a better person, he's always taken my failings as a personal affront to him. If I don't call, it's because I don't respect him, and I'm a horrible, ungrateful little brat because of that. And he takes that as license to treat me as such. Which makes me more likely to act that way, and the cycle spirals downward.

My biggest issue, though, is that I am always the one to shoulder the blame, and the punishment. And, sometimes, that punishment borders on revenge.

Many years ago, we were having issues with email spam. An email address we had set up was getting hundreds of messages a day. We decided to change our email address to try to hide from some of these electronic assaults. I think that might have been the time when we set up our own email server, so that we could create new email accounts at-will and give a new email address to every website with which we were inclined to register. This is a huge benefit in that it means, when we start getting spam, we can identify exactly whose email list was hacked or sold, and we can terminate a single address without affecting our communication with any other person or business.

Anyway, we sent out notices about our email address change, and after a couple months, deactivated the account. I am not certain if we failed to send such a notice to my father, or if he failed to read it and update his address book (though I'm leaning heavily towards the latter, for reasons I will explain later), but eventually, he noticed that emails he was sending were going unanswered, and eventually started to bounce.

I'm not sure how long it was before he eventually got in contact with us, and we told him (or reminded him) of our email address change. I'm not sure how we failed to communicate this, because apparently what he heard was: "We changed our email address and didn't tell you so we wouldn't have to hear from you." And, being so affronted, he then stopped sending birthday or Christmas cards for a while.

This was annoying for two reasons. One, it was clearly a misunderstanding. Somehow our change of address didn't "take". Although we were reasonably sure we told everyone, we accepted responsibility, apologized, and made sure he had our correct email. A reasonable response would be to accept that it happened, it's been resolved, and move on. But his response was to be angry that it happened, accuse us of doing it on purpose, and to punish us by not sending Christmas cards anymore. Two, he went beyond us. Not only did he stop sending my wife and me anything, but he stopped sending birthday cards to his grandkids, too. He was punishing them for what he perceived as our "attack" on him.

This was a very long time ago, so I don't remember exactly when things might have turned around. It might have been when my son was admitted to the hospital a few years back, and I decided to call him and let him know. But in any case, we had been back to sending cards and gifts for birthdays and Christmas again.

But moving forward to a few years ago. He and his wife came to visit around Thanksgiving time, as they decided to take a vacation to the Rocky Mountains and would stop by for a couple days. They stayed for a day, and we chatted for a while in the living room, but he wasn't feeling well and ended up spending most of the time back at his hotel to get some rest.

The next month, he sent a Christmas card. Since he handed us a check when he came to visit, I didn't expect there to be anything inside. Which I'm not complaining about. In any case — as with all Christmas cards and checks we get from relatives that time of year — I didn't open it right away and put it on the tree, for opening on Christmas day. We had also sent him a package, with some hand-made quilted wall hangings that my wife had been busy making for relatives all that previous month.

Christmas day came, we opened our gifts, and I opened the card to find a rather sizeable check inside. We were pretty thankful for this. We knew he was planning on having a big family gathering at his house that next summer, and we were planning on going, but we were a little concerned about the logistics of making such a trip with four kids on a budget. (I have not done as well for my family as he did for his when it comes to finances. We've always had "enough", and in many cases even some "extra", but I don't know that I would ever consider us "affluent". Though maybe that's because my only real comparison is with how much my own father provided us.) I put the check aside, with the intent to deposit it later, and, as is typical for me, didn't think about it for a bit.

A couple weeks had gone by, and the checks were still on my "to-do" board, since I had forgotten to grab them on my way out to work every day since. (Again, typical me. If you ever send me a check, and you need it cashed right away, please call me and I'll make it happen. Because it's not unusual for a check to be sitting in my "out box" for a month before I remember it's there. I've had our church's clerk come to me and ask me to deposit a reimbursement check for things we've bought for the scout troop on more than one occasion.) So I receive this email:

We sent you a Christmas card with an extra check to maybe make your Christmas a little happier. We didn't hear from you for Christmas or New Year's which is not unusual as you hardly ever call. But I am concerned about the check being lost in the mail and I am going to put a stop payment on it. If you did receive the card and still intend to deposit the check, please let me know before Monday.

Ok, oops. I hadn't deposited the check yet. Need to rectify that. I'd better reply.

Yes, we sure did, just haven't remembered to take the checks to the bank yet. Thanks so much! We're going to be putting that away for our trip out there this summer. Looking forward to it.

How was your trip up to Harvard? I heard there was a big storm that hit New England around that time.

Oh, but he won't have any of that "cordiality" or "small talk".

Unbelievable. You would think I would not have to solicit a thank you, or a Merry Christmas.

And you'd think he would know by now that I'm just not that good at replying. But the sound of his emails imply that we made zero communication at all. Notice how there's no mention of the gift we sent him (that my wife had been stressing over making the prior few weeks), which did include a "Merry Christmas" card enclosed. I don't know whether to be concerned or angry — concerned that our package didn't get to him, or angry that he got it, didn't say anything about it, and tries to lay the guilt trip on me for not saying anything. I'll try to keep things cordial by assuming the first, and copy his wife just in case she got it but forgot to tell him.

Well, now I'm a little concerned. Did you not get our gift to you? [My wife] spent a lot of time and effort designing and making it. We sent it to the Alabama address around the second week of December. Did it arrive? [His wife], have you seen the present we sent?

Enough already, I'm not going to play your game. Yes we got the Christmas present you sent and thank you. And, If I recall correctly, you said thank you when I gave you the Christmas card when we stopped to see you in November. I guess I thought that a check for [amount redacted] would be something a little extra special and something you might pick up the phone and call and express your appreciation, or call on Christmas, or on New Years. I know I don't call, I stopped several years ago because I felt communication with you was a one-way street.

Maybe our feelings toward each other are mutual. Maybe you think I am rude, inconsiderate, and ungrateful for anything you do. That is the way I feel about you and it just isn't worth it to me to try anymore. Please take the check and put it to good use for your family. You don't need to think I sent it to you so you could come visit us.

Yes, see, I forgot the rules of the "game". The rules that say I'm totally at fault for everything, and how dare I accuse him of not taking some of the responsibility himself. He claims to want to talk to me, but he'll be damned to be bothered to actually pick up the phone himself and call, because he doesn't feel that I don't call him enough. Which, yes, I don't, because that's just me. Yet he takes it as some personal slight to him, and because I don't live my life according to his rules, he can't be bothered to try.

I will give him credit for the masterful way he phrased this, though. He managed to call me rude, inconsiderate, and ungrateful, but worded it in a way that put the blame squarely on me for thinking that's what he thinks of me.

But, at least he did address my concern — our hand-made Christmas gift did, in fact, arrive; so it was just his own hypocrisy at work here. "How dare you not thank me for my gift! I don't have to thank you for yours, because you wouldn't appreciate it anyway!" But now I'm starting to wonder about this upcoming trip. Do I really want my kids to be exposed by this kind of treatment? Maybe he doesn't want me there, anyway. Of course, he's unlikely to admit to any such thing, instead making it so that my failure to attend is my decision and fault anyway. Perhaps he would answer a direct question.

No game was being played. Your previous message seemed to imply that you received absolutely nothing from us with regards to Christmas, and we were concerned that what we did send didn't make it. But I’m glad to hear that it did arrive.

You have always made your feelings for me abundantly clear. You can rest assured that none of this was any revelation.

We were legitimately looking forward to using the money you sent for coming out to visit, but the end of your message makes it sound like you don't want us to do that. We are willing to come, but it is your home, so I will leave the decision entirely up to you. Do you, or do you not, want us to come and visit this summer?


Don't bother.

Your actions have been abundantly clear since you've been a teanager and I don't know that there will ever be anything I can do to change your feelings toward me, either. Just like my father told me a few years ago,he did for me and I did for you what I thought was best for you.

Have a good life. I'll stay out of it.

I'll be there if you ever appreciate or respect me as a father, all be it not a perfect one. But I am not going to continuing doing things that are not acknowledged or appreciated.

This will be my last communication.

"Don't bother." As close to a direct answer as I could expect.

The cry to appreciate or respect him as he is, is, once again, hypocritical and insulting, when he obviously has no respect for the kind of person I am. You know, "all be it not a perfect one." And I really hope I don't harbor resentment for my own kids the way they act as teenagers the way he does for me. I'm sure he didn't act out at all when he was a kid, either.

I replied to make it clear that I refuse to accept total responsibility.

As you wish. If you ever decide to change your mind and treat me with the level of respect you seem to expect from me, you know how to reach me.

I did deposit the check, only to get a call from my bank a few days later to inform me that he did stop payment on it. I guess he really didn't want me to "take the check and put it to good use for your family", though I'm more inclined to think it was his reply to my last email (which he couldn't actually write since he already said it was his "last communication"). He had to get the last word in somehow.

A couple years later, we took a trip to visit family. When we got to my father's sister's house, we got a lot of admonishments as to how horribly we were treating my father, and how I should call him. Apparently, he has spent a lot of time telling his family what a horrible son he has and how I'm exiling him from our and his grandkids' life. Up until this point, I have not discussed our relationship with anyone in the family — I did not feel it was anyone else's business and didn't feel the need to burden anyone else with our "issues". Besides, I don't communicate much, anyway. My father, on the other hand, obviously did not feel the same. We had to spend a lot of time explaining our side of things while we were there.

I can only assume that some of our conversations with the family got back to him (one of our biggest complaints being how he seemed to punish the grandchildren for our disagreements or misunderstandings, when he severed all communication), because he actually sent us a card for the next occasion. We sent him one back, and, later, he mailed us a thank-you note that he had tried to email to us. Remember when I suspected that he just didn't update his address book when we changed our email? Yeah, the thank-you email had bounced back from an email service we hadn't used in well over a decade now. Apparently, if he wants to chide or berate me, he has no problem using the correct email address; but when it comes to sending something nice, suddenly he can't use the right address?

We continued to send cards back and forth. (Though not gifts; if he's not going to acknowledge the time and effort we spend into making and sending gifts, it's not worth sending. See, I did learn something from him after all.) We also made sure to send a thank-you card for every gift he sent us and the kids, since that seemed to be very important to him. But it was very obvious he had no interest in talking to us, just the grandkids, when birthday cards would come in for each of the kids and our days were conspicuously skipped. We had almost missed Father's Day, so we sent a quick e-card and, respecting his apparent wishes, "signed" it from the grandkids.

Apparently, the absence of my and my wife's names on this email was the last straw, as this email came in addressed to my wife:

Please inform my son that I have an appointment with my estate attorney in a few days with the purpose being to take him out of my will. I don't know what I did that was so bad that has resulted in his lack of any respect for me. I do believe I was not half as hard on him as my father was on me and I do believe had I not been hard on him he might not have been what he is today.

I intend to send birthday cards and gifts through the end of this year. After that, it just isn't worth it to me to make any more effort.

TL;DR: How dare you snub me after I snubbed you! I quit!

So, I suppose, that's it. Because he makes efforts to punish me for not being the kind of person he demands me to be, and because I don't kowtow and give him the love and adoration and respect he demands while he treats me like dirt, I'm not worth his "effort".

Some of my reaction may seem harsh with the limited discussion here, but this is just a small sampling of my interactions with him. And most of this has occurred after I have gotten tired of the beating down, bullying, and lack of respect as a person that I've endured for many years. He was a very toxic influence on my emotional well-being. I've tried to maintain the lines of communication so as not to cut him off from his grandchildren. But I have felt no guilt for declining to go above the minimal effort required when nothing is ever good enough.

2016-07-08

Why does Disney hate families?

Our Netflix queue recently delivered the Disney movie The Princess and the Frog. It's an adaptation of the old frog prince fairy tale, and all and all it's pretty good. John Lasseter, who proved himself at Pixar, is an excellent storyteller, and Disney is benefiting greatly from his influence. (When I first saw Bolt, my first thought was, "This was about as good as a Pixar movie," and it didn't surprise me to see Lasseter's name in the credits.)

When the movie starts, you see a young girl, Tiana, with her mom and dad. Then, we flash forward, and the girl has grown up. She talks to a picture of her dad in a military uniform, and soon we see her mother in person. They make references to the father being "gone", but they don't immediately reveal his status. My wife and I wondered to each other, "Is he away at war, or has he died?" When, later, we finally hear the words "dad" and "died" used together, our response was, "Of course he's dead; it's a Disney movie."

Disney movies seem to have this "thing" about having a broken family. It's like they hate having a complete, traditional family. Seriously. Let's review. These are animated movies, where a main or important character and their family is present.

  • Snow White, Cinderella — wicked stepmothers
  • The Little Mermaid — Ariel's mother not mentioned; Prince Eric's parents never appear (being a prince, one would assume a king and queen, but they don't even show for his own wedding)
  • Beauty and the Beast — Belle's mother not mentioned
  • Aladdin — Jasmine's mother has died
  • The Lion King — father dies
  • The Emperor's New Groove — parents presumed dead for him to be a young emperor (mitigating factor: Emperor Kuzco gets his "new groove" from traditional family man Pacha)
  • Lilo & Stitch — parents have died
  • Brother Bear — Kenai kills Koda's mother, who appears to be his only living parent
  • Chicken Little — mother has died
  • Meet the Robinsons — orphan (mitigating factor: adopted into traditional – albeit weird – family)
  • Bolt — Only Penny's mother is seen; no father mentioned (and, Penny's character in the TV show within the movie only has a father; no mother is mentioned)
  • The Princess and the Frog — dad dies

Note that Pixar isn't much better:

  • Toy Story — Andy's mother is there, but there's never even a mention of a father
  • Finding Nemo — Mother is killed in the opening scene
  • Ratatouille — Remy clashes with his father, no mother mentioned
  • Up — Russell's home life is uncertain; we know his father doesn't spend time with him much, and there's a woman who lives with them that's not his mother (nanny? stepmom?)

Snow White, Cinderella, and Beauty and the Beast probably aren't fair to mention, considering they come from fairy tales and stories that have the situation already established. I'll concede that in some cases, the family situation is part of the story — The Lion King, The Emperor's New Groove, Brother Bear, and Meet the Robinsons wouldn't have been the same story by a long shot if they were in traditional families that stayed whole throughout the movie. Finding Nemo might've worked (a father flipping out over a son being kidnapped, even if he has a wife and other kids safe at home, isn't much of a leap), but seeing his wife and all his other kids die before hatching gave him a reason for being neurotic that you could relate to.

But the rest? Could Lilo have been a troubled kid even with loving parents? Absolutely. Could Tiana have still been trying to build the restaurant for her dad if he was alive at home, just old and retired and unable to work for himself? Yes. Would Toy Story have been any less of a story if Dad was at least around to help with the move, or the birthday party, or to open presents at Christmas? Could Jasmine have had a mother who shared in her father's concern for her future?

So, what's the deal? Is Disney just trying to make their stories accessible to even those with broken families? Is it just easier to not have to write an extra character into the story, or cheaper to not hire another voice actor or animator? Or do they really have something against a mother, a father, and a child together that they avoid the situation as much as possible?

Meeting Your Heroes

I often wondered how I would react if I met someone famous, like an actor. I figured that such people would often be hounded by fans who see them as (and expect them to be) something different than they are, who only "know" them because of the persona they put forward in front of an audience — a personality that, often, is really a product of not just their talents, but also those of the writers and directors that work together to build the show that the audience sees. If I were such a person, I reason, it would be much more refreshing to have someone meet me as a person, instead of as some fictional character that I was pretending to be. So, if I were to meet a famous actor, I would try to treat them as a person, so they wouldn't see me as just some starry-eyed fanboy out of thousands who just fawn over something that doesn't truly exist. Maybe they would appreciate not having to act for a few minutes; and, at best, maybe I could make a friend with a real individual (even if only for a moment). So, that's what I would do if I met a famous actor: meet them like any other real person.

I think it's safe to say that, when meeting Rob Paulsen (the voice behind the real Yakko Warner) at Denver Comic Con in the summer of 2015, that I pretty much failed to live up to that plan.

I wasn't sure I was going to go to Comic Con. My son and his friend were going, and though I knew the voices behind the Animaniacs were going to be there, I wasn't really feeling up to it. I'm not sure I would qualify it as a clinical depression, as I wasn't having any life-terminating thoughts. (I've had those before, so by comparison, this is "just feeling sad".) But the thought of being in large crowds with lots of people didn't sound too appealing. My wife, though, strongly encouraged me to go. I'm not sure if it was for my sake, or for the sake of being near my son (instead of sending him off to be downtown all day with just his friend), or both, but we ended up getting two tickets so that I could go.

I didn't take a ton of cash with me, so I knew that I wouldn't be bringing home a lot of autographs or memorabilia. But I did take my copy of the CD "Yakko's World" — of my Animaniacs CDs, that seemed to be the most appropriate to have Mr. Paulsen sign. After waiting in what seemed like an endless line, I finally got to meet him. My hands shook as I brought out my CD, and when he asked me my name, I'm not sure how I managed not to squeak like a little girl. As he signed, I told him how I used to take this music along on my occasional post-college road trips, how teaching myself to sing things like Yakko's World didn't just make the trip more fun, but helped me to keep my brain engaged and stay awake. I also mentioned how I was looking forward to the Animaniacs reunion sing-a-long later that day, so that I could actually sing along with him.

One thing I noticed in that very brief encounter, is that he seemed genuinely happy to meet people. Some celebrities, when you see them interacting with fans, you sometimes get the feeling that they would rather be somewhere else. They may not overtly show it, but you find they aren't really engaged in the moment. But I didn't get that impression from Mr. Paulsen at all. He really seemed to enjoy meeting each person that came up to him, throwing out one-liners in the character of whatever show his visitor was a fan of.

After meeting Rob Paulsen, I noted that there wasn't a ton of time before the Animaniacs reunion show, probably not enough time to wait in line to talk to the rest of the cast present that day (Jess Harnell, Tress MacNeille, and Maurice LaMarche were all there). But I noticed a shorter line decorated with Animaniacs pictures nearby, leading to one Randy Rogel. It wasn't a name I immediately recognized, but one I should have known. Mr. Rogel was the man behind many of the songs to which I would sing along on those road trips. He had available his song charts, which I eagerly grabbed, and he graciously signed. He also told me that he had written a new verse for Yakko's World, incorporating the changes in countries in the years since he first wrote the song. He was planning on performing it in the Animainacs sing-a-long that afternoon, something I told him I would look forward to hearing.

The sing-a-long was a real treat. Rob Paulsen and Randy Rogel performed some of the original songs, and the other actors would join on stage for some of them as well. One of the things I remember most is when Mr. Paulsen spotted someone in the audience dressed in a full Pinky costume. He said something in Pinky's voice, laughed, "narfed", and then said in a sing-song voice, "I get paid for doing this," as he did a little skip. The impression that I got was that this was a man who primarily loves what he does, has fun, and is sometimes amazed that it's also his job.

After the show, I went to get in line to meet the rest of the cast. Lines were already forming by the time I got there, so I decided to start with the shortest one (in a very relative sense, since they were all pretty long), and that was Jess Harnell's line. Eventually the cast made their way back upstairs as well, to cheers from the crowd. The rest took their places at their tables, but Mr. Paulsen did something different in his line; he went down the line, shook hands, and said hi to everyone, before going back up to his table.

I met Jess Harnell and Tress MacNeille. Mr. Harnell was an easy person to talk to, and was happy to hear about me being able to teach my kids things like Wakko's America. Ms. MacNeille was a little harder to read. I didn't find her rude or anything, but she definitely did not seem as engaged with her fans as her "siblings" were.

I then got in Mr. Paulsen's line again, just to say how much fun it was to sing along. I might've said something else, but I honestly couldn't remember. I just knew I wanted to meet him one more time.

After that, I went back to see Mr. Rogel. I noticed that the mysterious new verse of Yakko's World didn't make an appearance in the sing-a-long, so I wanted to ask him about it. He pulled out his own copy of his charts, which had the new verse in it, and actually sang it for me. Awesome! I got to hear a new verse to a song written by the man himself! I wish I could've recorded it, but getting video was one of the things that cost money (I don't fault them for that; I understand that impressions and paid exposure is how their industry works), and, as I said, I didn't bring much.

I had yet to talk to Maurice LaMarche, so I got in his line. As I was waiting, I kept looking over towards Mr. Paulsen (since they were next to each other). That's when I noticed something about myself: my cheeks were starting to hurt, because I was grinning so much. I was enjoying this.

Waiting for Mr. LaMarche, I noticed the pictures of his characters on his poster, and I was surprised to see the king from Frozen. When I met him and told him this, and how it impressed me when I'm unable to recognize a voice actor from a given character because they can change so much, he did a few more voices for me that I didn't recognize as him. (Sadly, I didn't think until it was too late to tell him, "Egad, Brain, you astound me!").

After this, I decided I had to talk to Rob Paulsen one last time. I'm not sure if he recognized that it was my third time to visit him, and hopefully he didn't start to see me as a creepy fanboy stalker (even if I was starting to feel like one). But I told him, honestly, that I hadn't felt like smiling in a while, and here I was, smiling so much it started to hurt, and I wanted to thank him. He gave me a genuine look of concern, came around the table, and gave me a big hug. That completely made my day.

They say you shouldn't ever actually meet your heroes, because you'll end up disappointed when you find out they're just human. Though I don't know that I ever thought of Rob Paulsen as my "hero" rather than as someone whose talents I enjoyed listening to, I have to say that the person I met was truly a kind and happy person; and in that, was definitely not disappointed.

I was able to meet some other people on a more human level. I met Garrett Wang of Star Trek: Voyager fame. I asked him about what he's been doing since Voyager, and we talked a bit about life goals (how he had been travelling, considering starting a family, that kind of thing). I also got to meet Nichelle Nichols, who had all the personality of a spunky old grandmother. She ribbed me a little for not giving her money, and then I got to shake her hand. So, as far as not going total fanboy meeting famous actors, I guess I didn't completely fail.

2016-07-07

That's an oddly-specific coincidence

While my wife was busy trying to coordinate Cub Scout Twilight Camp, we borrowed my mother's extended-cab pickup truck for transporting stuff to and around the camp. One day, however, as we went to drive the truck to camp, we noticed that one of the rear windows was rolled down. Thinking we goofed and left the window rolled down (though no one remembered that window being down the day before), we tried to roll it up. The motor clicked and made a short whirring sound (not unlike what you might expect to hear when starting to roll up a window), but stopped very quickly with no visible change to the window's position.

Our first thought was that maybe we hadn't rolled down the window after all. Perhaps someone had broken the window to get into the car. But the contents were undisturbed. Even a particular electronic device had not been removed. Plus, peeking into the door frame, one could see the entire top of the window glass, apparently intact (though far enough down to prevent a comprehensive visual survey).

We covered the window with a custom-fit replacement (i.e., we traced the window opening to a cardboard box, cut it out, and duct-taped it into place) until we could get it repaired. The following week, my mother took the car to the shop, who discovered that the motor had simply given out and had to be replaced — something, they said, was not entirely uncommon for a vehicle of that age. It was, unfortunately, an expensive repair, but it was done, and we figured that would be the end of it.

With the Twilight Camp supplies still taking up half of our garage, our minivan has been spending its nights parked on our driveway. This week, my wife went to take it shopping. She started the car and rolled down the front windows to let out some of the heat. As the driver's side window rolled down, she noticed that the second half of its descent seemed abnormally quick. She tried to roll it back up, and only got a click in response.

Now, we started to get suspicious. Two vehicles, both parked out in front of our house, have issues with a window not rolling up, only two weeks apart? Could there be someone trying to break into cars by shoving something down in the door, failing, but breaking the window motor in the process?

We took the van to the shop this morning, and asked specifically if they could look for evidence of any foul play.

The mechanic who first looked it over immediately noticed a broken wire and could diagnose the problem. He said it's not terribly unusual and doesn't necessarily mean sabotage, but he promised to look for signs as he worked on the car.

Meanwhile, I guess we'll prepare for a big auto bill….

2016-02-28

The Case of the Missing Nintendo

My youngest son has wanted his very own Nintendo 3DS for a long time, so that he could play with his older brothers. After saving his money, after his sixth birthday, he finally had enough to buy his own. He was so proud to be able to buy it and so happy to be able to play Pokémon with his brothers; and I was proud of him for saving his money to be able to get it himself.

Unfortunately, maybe three months later, it went missing. My wife would ask my son if he wanted to bring his Nintendo on trips where he had to go but might otherwise be just sitting around, and he kept saying he didn't want to, that he just left it plugged in and charging. But after a couple weeks of this, he said he couldn't find it. (Whether he knew it was gone for those two weeks or not, we have no way of knowing.) We tried to backtrack to when it was last seen. There were a couple places he had taken it, but we were reasonably sure it had come home afterwards. We did call and revisit those places to be certain, and no one had seen it. We believe it was brought home and plugged into its charger in the family room. Then, one of his brothers had some friends over for a birthday party.

We have talked to the parents of the kids who were over, to see if their kids remembered seeing it and where it might have been moved to -- or, yes, if perhaps they happened to come home with something that wasn't theirs. So far, though, there has been no report.

It's been almost three months since then, and I'm actually pretty upset about it. He even got a new game for Christmas that he's never even had a chance to play. If it was in the house, I would have hoped that it would have turned up by now. Today, thinking about it, I got very frustrated on my son's behalf and turned the family room upside-down looking for it. It is, granted, not the first time that room has been searched, with the same results.

I have no way of knowing if someone did end up taking it. I would hope that parents would be observant and notice if their child had a pretty expensive video game system they didn't have before. But I'm not so sure. Last year, my wife was in charge of the Cub Scout Pinewood Derby, and she took a couple of my older sons' old cars (including one that one of my boys won 2nd place in the district with, something he was pretty proud of) as test cars. They were swiped at that event, and despite sending announcements to the parents and mentioning it at the following pack meeting, they have never been returned.

I don't know for sure where it is. It could've been misplaced in the house somewhere. My son could've taken it with him somewhere and lost it. It could've been stolen. There's no way to know. And while he seems to have let it go (he doesn't talk about it, even when all of his brothers are playing around him), it still makes me very upset for him. He set a goal for himself, he saved up his money, and he purchased his very own thing, and now, he doesn't get to have it.

2015-02-17

Caffeine detox, days 1-3

I taught a lesson in church last Sunday on the subject of free agency, how God wants us to be free to make our own decisions (but not necessarily be free of the consequences of those decisions). One of the topics that came up was that of addiction, how being addicted to substances takes away our agency to do certain things. I admitted to being addicted to caffeine, how I have a hard time functioning if I don't have a daily soda, and how that limits my freedom by requiring that I have that drink before I can do anything I really want.

I figured I should probably fix that.

This isn't the first time I've tried to give up drinking soda. I did it a few years back, swearing off caffeinated drinks completely. Unfortunately, to compensate for the headaches, I started taking Excedrin (which contains caffeine), the only thing that seems to work on my toughest headaches (which, I know, sounds like the commercials, but is pretty accurate). After a couple months, I realized how ridiculous it was that I was avoiding soda but popping pills, and decided that just drinking the soda was the lesser of two evils.

Where I work, there is a fountain soda machine in the kitchen area. I thought a good way to kick this caffeine habit would be to take my 32oz water bottle and fill it with progressively less soda each day. Unfortunately, that didn't seem to be working out too well. Even just trying to dial it back an ounce or two, by Wednesday, I started to get a headache and popped a couple Excedrin. To make matters worse, on Thursday, the soda machine wasn't working, so I couldn't get my daily Coke anyway.

This Sunday, I decided to try again, but to give up on trying to make it complicated by fiddling with soda amounts. I decided to bite the bullet and go cold turkey. I didn't decide this right away — a busy morning left me soda-less before I realized it was time to go. I just decided, as I started to feel the pressure in my forehead, that I wasn't going to give in and take a caffeinated painkiller to make it go away. My wife asked me a couple times that day if I was sure I didn't want to take anything, but I had made up my mind. I was not going to be a slave to this chemical any more, and I was just going to have to suffer through it.

I wasn't feeling too well by Sunday night. I went to bed relatively early, with an ice pack on my head. I was tired enough to fall asleep fairly quickly, but I woke up about an hour before my alarm with my head buzzing. It wasn't easy getting out of bed — I'm not sure I opened my eyes much until I was already showered and dressed. Snow had fallen over the Denver area, and the roads were very slick, which meant I had to work extra hard to force my brain to ignore the pain trying to shut it down, and muster up the extra concentration required to drive safely. And, by the grace of God, I made it to work without incident (even though I passed several people who had not been so lucky).

Work was a chore. By the end of the day, the pain in my head was pretty intense, triggering feelings of nausea. Fortunately, the roads were in better condition for my drive home. Although I don't think of President's Day as a major holiday, the number of people on the road seemed rather light for a Monday rush hour. When I made it home, I immediately flopped down on the couch, while my wife got me ice packs from the freezer. I felt very tired, but I don't think I slept much more than maybe a 15-minute doze. I didn't feel well enough to eat dinner, but my wife had prepared a dessert of pound cake and fruit, and that was light enough for me to keep down. I finished off dinner with some ibuprofen, and acetaminophen (uncaffeinated) an hour later, and I was able to participate in our family bedtime scripture reading and prayer.

I would have gone to bed right then, but I had already signed up for a video game boosting session that night. (Basically, people who are having trouble getting certain Xbox achievements will sign up for a time to get together and help each other.) It would have been easy for me to just blow it off, but I didn't feel right, even if it would only affect people I have and probably never will actually meet in real life. Actually, having something to concentrate on did help me ignore the pain in my head, which by that time had moved from an all-over ache to a pinpoint stabbing behind one eye (though still not as painful as some I've had). By the end of the session, though, it was getting harder to concentrate, so I was thankful when it came to an end and I could put myself in bed. I went to bed with an ice pack on my head and tossed around a bit before I finally fell asleep.

The good news is, I woke up this morning without a headache at all. It was an encouraging start to this third day without caffeine. I didn't even feel the oppressing fatigue or headache pressure that usually drives me to have a soda or some Excedrin by lunch. About lunchtime, though, I could start to feel the pressure build up behind my eyes.

2014-09-24

More MVC and JSON.Net - Exceptions

In my last episode with MVC, I was trying to reconcile MVC 5.0 with WebAPI 5.1 and the fact that the former used a broken JSON library, while the latter used the better Newtonsoft JSON library. I implemented a model binder and a value provider factory to get the two projects in sync, and all was right with the world.

As the project has gone on, we've come across instances where we've needed to call MVC controllers and get JSON responses back. We have created WebAPI controllers in some cases, but the way the project is structured, we've needed to post MVC models as JSON via AJAX back to MVC methods where we cannot reference them in the WebAPI project (otherwise we'd have a circular reference).

There are probably a few ways to restructure this to work. Ripping the view models out to a library that can be referenced by both MVC and WebAPI was one idea, for instance. But that would've been a lot of work and caused bigger deployment headaches that I don't want to get into here. (A smaller project might've gotten away with it, though.)

Returning JSON to the client is almost as easy as having your MVC controller return a JsonResult — the MVC Controller class has its own built-in Json() method to do just that. Except, of course, it uses the JSON serializer we never want to see again. In this case, I created my own JsonNetResult class (based on a StackOverflow question, naturally), and my controller just calls this.JsonNetResult(resultObj); to do the magic.

The remaining issue, though, is when it came to exceptions. While WebAPI, on a JSON request, returns an error response formatted in JSON (that jQuery's ajax method parses easily), MVC gives you that nice, big, friendly "yellow screen of death" with the error formatted in HTML (or a generic message when you get to production). Not too useful when you want your JavaScript to report back some detail about what went wrong.

The solution, here, was to use an exception filter. The JsonNetExceptionFilter class checks to see if the incoming request was specified as JSON (using very similar code to the model binder), and if so, it handles the error on its own. We were throwing HTTP error messages using two different types of objects, depending on whether the code was copied from WebAPI or MVC (since they each have their own namespaces for this kind of thing). I check for these types so that I can set the response code to something besides the default 500 (400 Bad Request is used quite a bit), and I set the content to a JsonNetResult object with the data being a message formatted in something similar to the WebAPI format (and thus parsed by the same JavaScript code).

I considered leaving it here, so that we would have to decorate every JSON method with this handler as well as specifying it returned a JsonNetResult (unless there's a way to find out programmatically in the filter whether the current controller method returns a JsonNetResult, but I failed to find that); but ultimately, I decided to just override the default error handler site-wide (since it falls back to the base class for non-JSON requests, it shouldn't be an issue). That was done by editing the MVC app's RegisterGlobalFilters method to read:

filters.add(new JsonNetExceptionFilter());

Now, whenever we want to return an exception back to a JSON request, all we have to do is throw an exception:

throw new System.Web.HttpException((int)System.Net. HttpStatusCode.BadRequest, "Bad request data.");

Processing the return message in jQuery is left as an exercise to the reader (though if you use WebAPI, you probably already know). ;)

2014-08-11

How is escrow not a scam?

The concept of "escrow" already annoys me. As a requirement for my mortgage, I have to put aside money to pay for my homeowners insurance and property taxes, into a special account managed by the mortgage company, plus some extra depending on the mortgage company's demands. I can understand why they have a vested interest in making sure these things get paid, since technically they do own the house; but it seems it operates under the assumption that I would not take responsibility for these payments, and it gives me no opportunity to prove otherwise. Instead, the mortgage company gets to take the money and earn the interest, or dividends on the investments, and I have to just trust that they will make the tax and insurance payments (that I am responsible for) on time.

(To their credit, I have not yet had a mortgage company fail to pay either of these things on time.)

But recent events make me even more ticked off at the whole racket. I have a homeowners insurance claim in progress for storm damage (nothing too serious, mostly hail damage on the roof; we had the same thing five years ago). If the check is over a certain amount, the insurance company makes the check out to us and the mortgage company, requiring endorsement from all parties before the money can be used. I don't fully understand this. The insurance policy is a contract I have entered into with the insurance company. The mortgage company did not co-sign or endorse this contract, outside of requiring me to have a contract that meets whatever minimum requirements they had to allow me to get the mortgage. The mortgage company does not put any money into this contract — while they do make the payment of funds every year, they do so out of money they took from me. So why should they have a claim to the money on the insurance policy I paid for?

Still, before now, it was just a hurdle I had to jump before I could start repairing my home.

This time around, it's worse. Because the insurance payment was over a specific amount, my mortgage company demands I endorse the check and send it to them, and they will deposit it in a separate escrow account, and only give me money from it when I turn in receipts for repairs.

This is ridiculous. For one thing, it means I will be paying money out of pocket first. I don't have thousands of dollars sitting around that I can "float", paying for the repairs and waiting for the mortgage company to validate the receipts and give me my money back. That's the reason I have an insurance policy, so I don't have to pay out of pocket for catastrophes. For another, if my insurance company overestimated the damage amount, or if I am able to find a contractor willing to make the repairs for much less than the amount the insurance company gave me, how do I get that money when I don't have a big receipt to cover it? (The fact that the insurance company may have overpaid me is a discussion between me and them alone, since we are the ones that hold that contract.)

And this is just on top of my initial annoyance with escrow, that I'm not able to so much as put that money in an interest-bearing account to make a lousy 1‰ until I get the repairs done.

Of course, the answer is going to be so that they know that damage to their property is repaired, because otherwise the value of their property will be lessened by my negligence, while I could pocket the money and run. Still, this should be something I should prove first, let them sue me for negligence later. I get weary fast of having to pay for someone else's mistakes, and it seems like that's what is happing now: because irresponsible people exist, I cannot be trusted to do the right thing.

2014-07-27

Attraction doesn't always mean action

So here's a really interesting story. It's a hard one to read or listen to, because it involves something that, I'd wager, most of us would rather not think about. It's about a young man who discovered he was sexually attracted to children, and how he's been struggling with this attraction all his life. A big part of his struggle is that pedophilia is something for which it is very difficult to get help. As the article states: "…they have no way to talk about these urges or how to prevent them from taking control of their lives without being considered a threat. Talk to a shrink? You risk being reported to the authorities. The scientific community is so afraid of the stigma attached to even researching pedophilia that it's barely been studied it at all." Which is why this young man has risked tarring and feathering to set up support groups, to help people who need help taking control of their lives instead of letting their urges define and control them. It's actually a pretty inspirational story about taking control and standing up for what's right, even when the wrongness is coming from your own self.

Now, here's where I'm about to get very unpopular.

Take that same story, but replace all references to sexual attraction to children, with sexual attraction to members of the same sex.

Suddenly, it goes from a story of inspiration and self-control to one worthy of derision because of its support of self-denial and giving in to homophobia.

I've seen many arguments that saying "anti-gay" is wrong because people can't change who they are, and they should be free to act on their feelings. It's the whole crux of the argument for allowing same-sex marriage: preventing discrimination based on what a person is. Yet if we were to apply the same logic to other sexual attractions that are (still) considered bad — pedophilia, bestiality, necrophilia, take your pick — we would be immediately shot down for trying to support the "sick" or "depraved" (if we weren't immediately shot for merely insinuating any kind of relationship between homosexuality and pedophilia).

So what's the difference? Attraction to children is something that, as a society, we all seem to agree is wrong — so it's ok to have laws against it and to not even think about granting legal protections and rights to those forms of relationships. And yet, it wasn't until just the past few years that the same could be said for same-sex attraction. Debate or blame whomever you wish for the existence of California's famous Proposition 8, but the fact that it passed means there was a significant number of people who, less than a decade ago, supported the idea that condoning same-sex attraction was wrong.

So, why? Why is this form of sexual attraction ok, and others aren't? What makes same-sex attraction part of a person's being, but underage attraction something that a person can and should suppress and live their lives in denial of? And what form of sexual attraction that we think is wrong today, will we be forced to bake cakes in celebration of ten years from now?

2014-07-17

MVC, JSON, and DateTime (oh my)

It's been a while since I've had a programming issue that warrants a blog post, but here's an interesting one.
First, let me set up the situation. I have an MVC project (MVC version 5.0) that communicates to RESTful services using WebAPI (version 5.1). In one particular view, I write out an object in JSON with the intent that the client can make changes to it and POST it back to an MVC action to get an HTML table back. Here's the model:

public class PaymentScheduleRequestModel {
[JsonProperty(PropertyName = "effDt", NullValueHandling = NullValueHandling.Ignore)]
public DateTime EffectiveDate { get; set; }

[JsonProperty(PropertyName = "termId", NullValueHandling = NullValueHandling.Ignore)]
public Nullable<int> ContractTermId { get; set; }

[JsonProperty(PropertyName = "billDay", NullValueHandling = NullValueHandling.Ignore)]
public int BillingDayOfMonth { get; set; }

[JsonProperty(PropertyName = "freq", NullValueHandling = NullValueHandling.Ignore)]
public PaymentScheduleFrequencyId PaymentScheduleFrequencyId { get; set; }

[JsonProperty(PropertyName = "prem", NullValueHandling = NullValueHandling.Ignore)]
public decimal TotalPremium { get; set; }
}

(Note that the JsonProperty decorators exist because the same model is used to communicate to the WebAPI service -- we are using shorter property names to lighten the payload.)

And the MVC action that is set up to process it looks like this:

[HttpPost] public async Task<ActionResult> NewPaymentSchedule(PaymentScheduleRequestModel request) { … }

To put it in JavaScript, the view has this block of code:

window.ScriptModel = @Html.Raw(Json.Encode(new {
PaymentScheduleUrl = Url.Action("NewPaymentSchedule", "Contract"),
PaymentScheduleRequestModel = new PaymentScheduleRequestModel {
ContractTermId = Model.ContractTermId,
EffectiveDate = Model.StartDate ?? DateTime.Now,
TotalPremium = 200m
}
}));

Unfortunately, Json.Encode doesn't work well with dates. This is the output that the browser sees (with line breaks added for legibility):

window.ScriptModel={
"PaymentScheduleUrl":"/Contract/NewPaymentSchedule",
"PaymentScheduleRequestModel":{
"EffectiveDate":"\/Date(1078729200000)\/",
"ContractTermId":null,
"BillingDayOfMonth":0,
"PaymentScheduleFrequencyId":0,
"TotalPremium":200
}
};

Notice two things about System.Web.Helpers.Json.Encode's output:

  1. The property names are the .Net property names. The same code could not be used to post what should be the same model to MVC or to WebAPI.
  2. The EffectiveDate field has been converted to a Date function, enclosed in a string. Even if the Date function would reveal the correct value, the fact that it's in a string means JavaScript will not see it as a Date.

If I don't do anything with this object and just post it back to the MVC app, the resulting object does not have a valid date — all other values carry over, but the EffectiveDate property is 01/01/0001. So not only does it look odd, not only is it inconvenient in that JavaScript can't use it as-is (without picking apart the string), but it doesn't even work for round-tripping data to and from the client.

In doing some research on this topic, I came across Scott Hanselman's blog post describing the problem, and stating that the release of WebAPI won't have the issue since it will use JSON.Net (a.k.a. Newtonsoft.Json). Since I'm using the same model in an WebAPI call further downstream, I can verify that it does work as intended. It uses the JsonProperty decorators to rename the properties, and it serializes and deserializes like magic.

To solve this problem in MVC, you have to alter how it deals with JSON on the way out and on the way in.

On the way out is easy in my case, since I am manually spitting out JSON into the HTML. I just exchanged Json.Encode with Newtonsoft's serializer:

window.ScriptModel = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(new {
PaymentScheduleUrl = Url.Action("NewPaymentSchedule", "Contract"),
PaymentScheduleRequestModel = new PaymentScheduleRequestModel {
ContractTermId = Model.ContractTermId,
EffectiveDate = Model.StartDate ?? DateTime.Now,
TotalPremium = 200m
}
}));

And the browser sees:

window.ScriptModel={
"PaymentScheduleUrl":"/Contract/NewPaymentSchedule",
"PaymentScheduleRequestModel":{
"effDt":"2004-03-08T00:00:00",
"billDay":0,
"freq":0,
"prem":200
}
};

This is better. Of course, the controller action doesn't understand this. It's still looking for the .Net property names, and, since they don't exist on the incoming object, all values come back empty. (In this simple example, not only is EffectiveDate 01/01/0001, but TotalPremium is 0.0.)

The trick here is to override MVC's default model binder, so that it, too, uses the Newtonsoft.Json library. It is also consistent to have MVC use a value provider factory that also uses JSON.Net.

Fortunately, people smarter than I figured out these two steps. I found a value provider factory on this blog: http://www.dalsoft.co.uk/blog/index.php/2012/01/10/asp-net-mvc-3-improved-jsonvalueproviderfactory-using-json-net/
and the important piece, the model binder, that will translate the JSON property names to their real .Net names, is detailed here: http://stackoverflow.com/questions/4164114/posting-json-data-to-asp-net-mvc

My implementation looks like this:

And this code gets called from Application_Start (I actually added it to my WebApiConfig class (which, for some reason, exists in my MVC app even though it's obviously not the same as WebAPI), since other configuration-type things were being done here):

ValueProviderFactories.Factories.Remove(ValueProviderFactories.Factories.OfType<JsonValueProviderFactory>().FirstOrDefault());
ValueProviderFactories.Factories.Add(new JsonDotNetValueProviderFactory());

ModelBinders.Binders.DefaultBinder = new JsonDotNetDefaultModelBinder();

All this because, although Microsoft updated one of their web interfaces (WebAPI) to use the JSON.Net library that works, another one of their interfaces (MVC) uses their own, broken, JSON serialization library.

2014-04-30

Consequences of free speech

A lot has been made recently of Los Angeles Clippers' owner Donald Sterling, being caught on tape saying some pretty racist things, bad enough for the NBA to ban him for life, fine him $2½ million, and force him to sell his team. From what I've heard, this result seems like a net positive for society as a whole, but how this whole thing has come about makes me very worried for the direction this country is headed.

According to the reports I've been reading, Sterling is not a very nice guy. Some say he has a long history of being racist. By the sound of things, the NBA will be better off without him. And yet, the NAACP gave him an award back in 2009 because (at least in part) he gave away a lot of tickets. The more cynical reports suggest he was given this award, with his racism overlooked, because he gave money to the right people. He was, in fact, due to receive another award this year from the NAACP, before recent events made the organization reconsider.

But what were the "recent events"? Did he use his power as an owner in real estate to deny housing to blacks or hispanics? Did he make an employment decision based on race? No, that was years ago (before, during, and after the NAACP was giving him his first lifetime achievement award). It happened because his girlfriend recorded a private conversation, coaxed him to say what he did, and sold the tape to the online tabloid TMZ.

I've read conflicting comments as to whether or not Sterling knew he was being recorded, but those that care to mention the girlfriend seem to agree that she really worked on Sterling to get him to make his damaging statements, leading him to say what he did and really dragging it out of him. Of course that brings a lot of rumor and speculation about how much, and from whom, she was getting paid to do this, and whether or not it was illegal (most likely if Sterling didn't know the tape was rolling).

Kareem Abdul-Jabbar wrote an excellent opinion of the issue for Time, which echoes a lot of the comments I've heard that led me to my conclusion above. It also comes to pretty much the same end — Sterling's eviction from the NBA is a good thing and long overdue, but how it happened is very, very wrong.

The big question, of course, is, did Sterling deserve his NBA exile, fine, and loss of ownership of his team for what he said? Maybe his speech just served to bring about awareness of what he was actually doing, but because he only got punished when he expressed his views in the privacy of his own home, it certainly looks like that's his sin. He said something that was unpopular, and now he must pay.

It is true that "freedom of speech" does not make you free of consequences. If you say something that someone doesn't like, that person is just as entitled to use their own freedom of speech to speak out against you, exercise their freedom of association to refuse to do business with you, and even freely encourage others to avoid you as well. But why does it seem like it's only the speech — or even the perceived interpretation of speech — that deserves to be punished, when actions can go unnoticed or be forgiven?

We've been sliding down this slope for a while. Paula Deen was condemned for using a racial slur in the past (including in a description of someone who had a gun to her head), despite having apparently changed her ways since. Phil Robertson lost his place on the show Duck Dynasty for daring to honestly answer an interview question asking what he considered a sin (only to be reinstated after enough public support). Brendan Eich found he was unable to do his new job as Netscape CEO due to all the protests that, six years prior, he gave a paltry (for him) sum for California Proposition 8 — a view that, even though is becoming less so now, was the popular view at the time (Prop 8 passed) and, at the time, was even supported by presidential candidate Barack Obama. Cliven Bundy was supported by many in the (mostly right-wing) media, before he expressed his political opinion that came off as racist (though that might be less actual racism and more poor word choice and selective editing by the media, depending on your point of view).

So now, it's not just what you say in public. It's not even what you said in public in the past, whether or not you've recanted since. But what you say in private, behind closed doors, can and will be used against you in the court of public opinion; and if your opinion goes against the prevailing wisdom, whichever way it happens to be blowing at the time, then God help you.

2014-03-13

My New Year's Resolutions

I try to avoid making New Year's Resolutions. They tend to be some big life-changing or life-enhancing promises that start with really good intentions, and then fall flat within a month or two. Personally, I just can't see myself deciding to completely change my habits or lifestyle overnight. But this year, I decided there were a couple things I could do better. They aren't major issues, but at least it's something I can do and accomplish and feel like I've done something to improve.

The first is a bit of housekeeping. Our HVAC system has stainless steel air filters (rather than cheap cardboard-framed filters), and they are supposed to be cleaned out periodically. Historically, I've been very bad at cleaning those filters, going way back to when we first had the system installed. I remember cleaning them one day and then being very surprised that I actually saw curtains moving in the breeze from the air vents. Our house also tends to be very dusty, which I don't doubt is at least partially the fault of the HVAC's inability to move air through the completely clogged filters. So, I resolved this year to incorporate into my Sunday routine, cleaning out those air filters.

For the month of January, I did manage to clean the filters out every week. At least in those first couple weeks, it really needed it, as the filters were pretty well coated when I pulled them out. But by the time I got to February, the filters were still pretty clear when I went to clean them. So, I've backed off a bit on my initial resolution, instead cleaning the filters out every other week. Even then, they're not catching nearly as much dust as they were, so I feel that I'm reaching my ultimate goal of keeping them clear so the heater & A/C will work efficiently. I'm not certain it's cut down on the dust that gathers in the rest of the house, as that's pretty hard to quantify (especially when we just simply don't dust around here), but I like to think so. I was hoping to see my energy bill go down a bit as a result of the better air flow, but that, too, failed to come to pass. Still, I can at least pretend that I'm doing the right thing.

The second has to do with my church. I believe in the Law of Tithing, where I give 10% of everything I earn back to the Lord. The way I've kept track of what I should pay, on every increase, I enter a transaction in my financial software with a future date with the 10% amount. It's always there at the bottom of my register, so I always know how much I owe; and I can always make sure I don't spend too much such that there isn't enough for the tithing amount. If I forget to take a check to church one week, I just keep adding to that transaction in my register, until I get around to writing the check and giving it a real date.

I thought it was a pretty good system, but a couple things bothered me. One, I noticed in months where money was tight, I would find myself "borrowing" from that total to pay the bills. Oh, I wouldn't change the amount, but I would ignore the fact that the tithing transaction was actually making my balance negative, because it would be fine when the next paycheck showed up. But I found that it seemed to happen more frequently and with greater amounts the longer I left that transaction in there unpaid (not to mention the tithing amount was growing over time as well).

The other thing occurred to me as we discussed tithing in church one Sunday. While it's relatively easy for us to pay tithing now by just writing a check, in the past it involved real items — for example, agricultural farmers would bring food from their harvest, and livestock farmers would bring animals. They always referred to it as bringing the "firstfruits" of the harvest or the flock, because it was a sign of devotion and respect to God that we give Him the best portion of what He gave us. When I applied this to my system of reserving money in my register, I realized that what I was doing was closer to making sure everything else was paid first, and then giving God what was left over. In practice, I had it backwards.

My resolution for tithing is to pay as soon as possible. That means, on Saturday night, I check to see if I need to pay anything for tithing (since I don't really think about which weeks are the pay weeks and which aren't), and write out the check, so it's ready to turn in the very next day. It just feels like the right thing to do, and I feel better about doing it this way.

So yeah, that's it. Those are my New Year's resolutions. Nothing earth-shattering or anything, but I feel like they are realistic, attainable goals that I can actually keep. And now, here they are in writing, so I can hold myself accountable.

2013-11-21

A no good very bad end of the day

So I went to a karate class this evening. Usually, I just wear my uniform pants (fairly thin), a t-shirt, and flip-flops. Tonight, my wife was helping out with a Cub Scout activity, and since she had to leave before I would be home, she would have to take the kids with her, and I would come by and pick them up after my class. I figured I would at least bring a set of sweats with me, so I wouldn't show up to get the kids just in my sweaty karate gear.

On my way to the church after my class, I went to turn on the street. I wasn't going very fast, but the road was very icy, and my car just wouldn't stop. I slid right into the curb, there was a loud smack, and then my car refused to drive. I got out and checked the damage, and found the tire that hit the curb had been driven right into the wheel well, pretty much jammed in there.

I didn't think to take my phone with me to karate, so there I was in sweats and flip-flops, just under 20°F outside, with no way to call for help.

Fortunately, I was only about three blocks away from the church (blessing number 1, I suppose), so I set my hazard lights on, left the car, and started walking. I got to the church, found my wife, grabbed her phone, and left her to her business while I walked back to the car.

The company for whom I work happens to provide roadside assistance plans, and one of the perks of my employment is enrollment in that plan (blessing number 2), so I called for help. I'm not sure if I had a bad signal or not, but the agent on the phone seemed to have a very hard time understanding the road names I recited and spelled for him several times. Then he told me that a tow truck would be there in about an hour and a half.

So there I sat in the car at a very icy intersection, waiting for help. How it is that no other car hit me coming around that corner, I'll never know (blessing number 3). I was at least able to start the car periodically to run the heater so I didn't freeze. I also happened to find a pair of socks that my son had left in the car, and that I had asked him to take out more than once. They weren't clean, but it was better than just wearing flip-flops. Once I had the socks on, I realized I had a spare pair of boots in the car. They're not a perfect fit, but I keep them there for emergencies. (Looking back, I wish I had realized that earlier and put them on, even without socks, before walking three blocks back and forth.)

While I was waiting, the tow truck dispatcher called saying he couldn't find the streets on the map. No wonder, since the agent had gotten them very wrong. I was able to give him directions at least.

Help finally arrived. Somehow, the details of my problem got mixed up, as he was expecting to just winch me out of something, but fortunately he didn't have an issue giving me a tow. I just had him tow me back to my house (not even a quarter mile away; I could have just walked it, if it didn't mean leaving my car in the middle of an icy road where it would be likely to get hit). I had a shop in mind, but I figured it'd be easier to get all the details together and set up the appointment in the morning.

So at least I'm home. Though with money already tight, I'm not looking forward to trying to figure out how to pay for this repair.

A shame. I mean, it wasn't that bad of a day up until tonight.

2012-12-13

Animaniacs Volume 4 is coming!

If you know the origin of my nom de plume, you'll also understand why this news is very exciting to me.

The 3rd volume of the 1990s cartoon show Animaniacs was released back in 2007, but it did not complete the series. Fans (including myself) have been waiting for the fourth volume to be released with the remainder of the series, but Warner Bros. has been sitting on them for the past five years. My kids have developed an appreciation for the show (and Pinky and The Brain, whose full 3-volume collection has already been released, save for the forgettable Pinky, Elmira, and The Brain fiasco). There are some real gems in the missing 4th volume, like the excellent parodies The Sound of Warners, Cutie and the Beast, and Jokahontas, that I've only been able to relive via poor-quality uploads on YouTube. Now I'll finally get to see them and share them with my kids.

This news apparently came out two months ago. I don't know what prompted me to search for evidence of Volume 4, but I'm glad I did. And with a February release date, I know what's going on my birthday wish list!

2012-12-05

Switches Gone Wild

Had an interesting network error the other day. Very suddenly, while I was paying bills online and my kids were watching Doctor Who on Netflix, the network was completely non-responsive. My first thought was that I had lost my connection to the internet again. But as I tried to connect to my server to check, I was unable to connect to that machine, too. Even when my internet connection drops, I don't lose connection to machines on the internal network.

I went downstairs to check the server. It appeared to be running normally, and I was able to log in to the machine using the keyboard and ancient CRT monitor I keep plugged in for emergencies. I tried resetting the network stack. Curiously, it threw up an error message trying to bring up the network card for the internal network, something about an inability to allocate memory. But the external interface came up without error. I tried a second time, and again, the internal interface still couldn't connect to any other machine.

Thinking there shouldn't be anything wrong with the network adapter itself, I spent quite a bit of time checking my iptables rules. I assumed there must be something in there preventing packets from the internal network from getting processed. Perhaps I had set the wrong rule when I was trying to get a couple new devices to play nice with the email server. But why would it work fine for a while and only now, many days later, decide to drop internal traffic? And why couldn't I fix it? Even when I dropped all filtering rules, I couldn't get any traffic through my internal network to that network card.

Not long ago, my computer failed to get an IP address from my ISP, and for whatever reason, it wouldn't get one until I gave up and rebooted the server. Figuring this was another symptom of whatever the problem was before, I just rebooted the server. It came up again, with only errors I've seen before (fairly obscure warning messages that haven't before caused any noticeable issues). It acquired the ISP's network quickly enough, but still, the internal interface didn't appear to respond.

I finally decided to take a close look at the network switch. One light was flickering rapidly, which was on the port connected to the entertainment center. This seemed odd, since the only devices on at the time were the TV (which does have an Ethernet port, but its features have been pretty useless so far) and the Blu-ray player (which was streaming Netflix before the network crashed, had been powered off by the kids, and was currently displaying a screen complaining about a lack of network connectivity since I turned it on to check).

Just to check if it was a bad port, I pulled the cord for the entertainment center and plugged it into an empty port. The light on that port came on solid, then started to flicker rapidly as before. I then unplugged the switch's power cable, waited several seconds, and plugged it back in. Each of the lights cycled in sequence as the switch went through the startup sequence, then all lights on ports connected to live devices turned on solid. Some started to blink, and the one connected to the entertainment center started to flicker rapidly again.

I went up to the entertainment center to check on the switch there. The lights on ports connected to the TV and Blu-ray player were on solid. Only the light on the port connected to the wall (and back down to the entertainment center) was blinking, and it was flashing rapidly.

This was seriously odd. No lights connected to any computers or devices were blinking with any intensity — only the lights on the switches that connected to each other. Were the switches generating their own traffic, talking back and forth to each other? These are fairly inexpensive, unmanaged switches, with no network address of their own to speak of; what could they possibly be saying to each other, and how?

I unplugged the power cord on the switch behind the entertainment center, waited a few seconds, and plugged it back in. All its lights came on briefly as it powered up, and then finally, mercifully, the lights on all connected ports came on and stayed solid, including the light leading to the switch on the server. I checked the Blu-ray player and my laptop, and both were able to connect to the server and, by extension, the rest of the internet.

I still have no clue what was causing all that traffic. I did notice that, when the Blu-ray player started streaming Netflix again, the lights on both ports on the switch that connect to the wall and the Blu-ray player were flickering quickly, looking much like the flickering on the one port when things weren't working (although there's no way to tell by sight if the flickering was exactly the same). Near as I can figure, there was so much of this mysterious traffic that it jammed the main switch so thoroughly that no traffic could get through any other port. (Since they are both 1Gb switches, it certainly could do it. The only other gigabit network device on my home network is the network adapter on the server facing the internal network, but the light on the switch on that port wasn't showing anything but the most rudimentary activity.)

2012-11-28

MVC: Any object you want, but not a string

I often refer to MVC — the Model-View-Controller pattern for building websites — as "Magic, Voodoo, & Conjuring", because a lot of things just happen by what seems like magic. Moreover, when something goes wrong, it's very difficult to find exactly where it went wrong, because the process is happening without writing any code.

I had one such example of something going wrong today. It was only after I got another pair of eyes to confirm I wasn't crazy that I found a StackOverflow question that addressed my question.

We had a JavaScript method that took a method name, a key, and an object, and posted that to an AJAX handler on the server, more or less like so:

$.ajax({
    url: "/Home/" + methodName + "?key=" + keyId,
    contentType: 'application/json',
    data: $.toJSON(dataObject),
    success: function (result) { doSomething(); },
    type: "POST"
});

This JavaScript code block was part of a plug-in that we wrote to apply to many different forms on the site, that shared common functionality. Depending on the data being processed, the dataObject could be anything from a string to a full-blown object. The controller methods all had similar signatures:

public ActionResult ProcessStringData(string key, string newData);

public ActionResult ProcessDataEntity(string key, DataEntity newData);

When the AJAX call was made, the querystring parameter key was correctly mapped to the method parameter key, and the JSON object in the request payload was magically deserialized and mapped to the newData parameter.

The problem was (as you may have guessed from the StackOverflow question), while this worked great for the object, it was completely ineffective for the string — despite the fact that the data was in the request input stream, the value would always be "null".

This is why it was such a head-scratcher. If the data was a DataEntity object and we were calling the ProcessDataEntity method, the AJAX payload would simply be:

{ prop1: "value", prop2: "value2" }

Note that nowhere in that text is the name newData, and yet the MVC framework somehow managed to interpret it as a DataEntity object and pass it as the newData parameter.

Calling the ProcessStringData method with a string as data, however, resulted in this payload:

"data value"

So why wasn't it magically treating this as a string and assigning it to the correct parameter?

Maybe the JSON deserialization magic was throwing an unseen error. Using Fiddler, I tried submitting a payload of { "data value" }. This resulted in a very visible error response from the server about an invalid JSON object. Since "data value" did not return the error, the deserializer must've been relatively fine with it.

Curiously, if I changed the payload to:

{ newData: "data value" }

it did, in fact, work. However, I didn't want to have to wrap a simple string with a named parameter object to get it to work — it would be inconsistent with the object-processing methods that did not require this massaging. (Consistency makes for much more maintainable code. Try bringing up a new developer to speed and explaining that data is in a certain format, except in a list of "special cases" that you're lucky if you remember to mention, and you discover this truth quickly.)

Looking through StackOverflow, it seems that it is possible to remove the content type to process strings. Again, this would have required determining if I was calling a string-based or object-based method and setting the content type (because I actually did want the application/json type for objects). It just didn't "feel" right.

I ended up wrapping the payload in an array. For whatever reason, it is unable to take a string payload and map it to a string parameter, but it is perfectly fine mapping a payload of the form [ "value" ] to a parameter of type List<string>.

It's just one of those things that requires some coding around, but the hard part is trying to understand why. And because it's all handled by magic, voodoo, and conjuring (a.k.a. some method buried deep inside the framework), it's not in your working code, and therefore very difficult to track down.

2012-10-06

Microsoft Store fixing my preorder

This is a follow up to the previous post.

After yet another exchange of emails saying "You weren't charged, so it was canceled" and "I wanted to be charged, why was it canceled", I got an email from another "escalation specialist". He referenced my exchange with Aubrey, so I figured this new person was taking over for the previous one, and he offered to re-place the order and get all my preorder bonuses for me.

We had a couple emails back and forth to confirm everything, and he asked for my phone number and a time to call so he could get my credit card information (since it wasn't available to him, and email is way too insecure for sending that information). When I was on the phone with him, he placed the order and gave me the new order number. He commented that it had been flagged for review from the fraud department, so it might take a day to process, but he would put a note on it so the investigators would know what was going on. Sometime during the night, I got a confirmation email that the order had been processed.

He called a couple days later in regards to the 1600 Microsoft Points card that was one of the preorder bonuses, asking if I wanted a physical card or a code by email. I told him a code was fine, and he said he would get that processed. He also told me he would be upping my $10 next-purchase credit to $20 for my trouble. Interestingly enough, when he emailed later with the Points code, he commented that every order he is placing for me is getting flagged for review. In my thank-you reply for the code, I asked if there was a way to check into why this was so. Maybe it's just the oddity of the customer service person placing orders on my behalf, but if there is another underlying reason, it'll be good to know before I try to use my $20 credit on my next order.

The next day, I got a call from Aubrey, who wanted to check on my shipping details to get my order replaced. I guess the "takeover" wasn't fully communicated. I gave him the other guy's phone number, and he said he'd double-check everything to make sure it was getting taken care of; and he later emailed me to say it looks like everything is good.

So, it took a while, and a few frustrating emails to start off, but it does look like everything is finally getting taken care of.

2012-09-28

Microsoft Store canceled my pre-order [UPDATED]

See my update in the next post — it looks like it's all getting fixed.

The Microsoft Store online was having a special. For certain pre-ordered games, you could get a coupon code for $10 off on your next purchase, plus 1600 Microsoft Points ($20 worth). There was a game going for $30 that I thought might be a nice one for one of my boys, and with the bonuses for pre-ordering, that was like getting a free game! Seemed like a great deal to me. It was a Friday, and the game was to be released the following Monday, so I placed my order. The website told me my order was successful, and I put it to the back of my mind.

Towards the end of the next week, I realized the game had not arrived yet. They didn't say anything about "release day delivery", so I didn't expect it on Monday, but I thought for sure it would've arrived that week. I logged on to the Microsoft Store and checked the order. Oddly enough, it still said "In Process". So I decided to call their support line to find out what was up.

The very courteous person who took my call was just as confused as I was when he looked at my order status. He talked to his manager, and when neither of them had an answer, he told me he would escalate the problem, and someone should contact me within 48 hours. This was on a Saturday. The next Tuesday, I found this message in my email inbox:

Thank you for contacting Microsoft Office Electronic Software Delivery customer support.

My name is Aubrey and I will be looking into your case [case number] and will keep you updated.

Please confirm any issues you are having with your order.

The charge you have referenced is a pre-authorization only.

A pre-authorization is a temporary hold to verify that funds are available when you place an order. Pre-authorizations are typically removed from your credit card transaction history when the full charge processes and funds are withdrawn. However, in some cases, this process can take up to 2 business days. Rest assured, you were not charged for your purchase. If you feel this is an error, please provide a Proof of Purchase such as a Bank Statement.

Please note that debit cards may display both the pre-authorization and the completed payment as full charges for up to 5 to 7 business days from the date of purchase. If you need assistance removing a pre-authorization from your debit card transaction history, please contact your bank or financial

Thank you and if you have any questions, please reply to this email or you can find my contact information below.

Regards,

Aubrey Teeter | Escalation Specialist | Microsoft Store Support| 1-877-696-7786| a-auteet@microsoft.com | www.MicrosoftStore.com

So, naturally, I figure my order must've been stuck in some "pre-authorization" state. I replied,

Ok, but this order was placed on the 14th, a full 11 days (7 business days) ago. When is it going to go from "in process" to shipping and complete?

And the response:

I am contacting you to give you a quick update as to where we are with your case.

My apologies. I wasn't clear. Pre-authorization means you were never charged. There are many reasons for this but the order has been cancelled. You may reorder at anytime.

Again, thank you for contacting Office ESD. If we can be of further assistance, please reply to this message. When replying, please be sure to include this and any other relevant correspondence in your message.

Well, that doesn't make any sense. I am positive the card would not have declined the charge, considering I used that same card just a few days later to pay a medical bill (several times the balance of this video game order). So what was the specific reason?

Why was it cancelled??

Which received this less-than-helpful response:

Hello,

It was cancelled due to no monies exchanged hands and time lapse You may now re-order the product now to take atvantage of the bundle before it expires.

Again, thank you for contacting Office ESD. If we can be of further assistance, please reply to this message. When replying, please be sure to include this and any other relevant correspondence in your message.

To which I replied:

Ok, apparently I need to be more clear.

I placed the order and provided my credit card information on your website with the expectation that my card would be charged and my order would be shipped as promised. Instead, you didn’t charge my card and cancelled my order without notification. WHY?

I didn't even bother to bring to Aubrey's attention that the referenced bundle had already expired when the game released nine days prior to this point (yes, I did attempt to re-place the order to confirm this).

I posted my complaint to the Microsoft Store Twitter account, @MicrosoftStore, which invited me to email my issue to storesoc@microsoft.com. I forwarded my email conversation with Aubrey, with a summary of the issue.

I haven't heard anything back from either email at this point.

Not only does this make me not want to ever attempt to do business with their online store again, but it makes me very uncomfortable with regards to my Halo 4 preorder at their store where I'll be spending most of November 5th.

See my update in the next post — it looks like it's all getting fixed.