Compensate this

I’m a programmer, and as such it bothers me when I see other programmers doing a crappy job of it. Now it’s easy of course to get overly judgmental too; after all, I know from experience that some bugs are intermittent, and what happens for one person may not happen for another who’s trying to reproduce it. No, the things that bother me are glaring, hideous errors in logic that really should have been thought through, when it’s clear no thought went into them at all. Those are avoidable. Those are stupid.

Awhile back, Time-Warner Cable introduced a feature on their DVRs called DVR compensation. The idea is that when you fast forward or rewind, and then hit play or pause, it’ll jump back a little bit in the opposite direction in case you went too far. This isn’t, on its face, a bad idea, but if you have a brain in your head you already see where the problem is with this: rewinding. My wife has a terrible time hearing the dialogue in some shows, which appears to be a problem with processing the sounds rather than hearing them. (It doesn’t help that I mumble, either.) We chalk it up to residual chemo-brain. So we often find ourselves rewinding shows a short way. DVR compensation made this a nightmare.

When you try to go back a few seconds, DVR compensation in its “normal” setting (you can set it to normal, more, less, or none) will actually jump you forward a few seconds. That jump is so pronounced that with a short rewind, you can actually end up going forward past the point where you started rewinding. I had to get used to using the repeat button for these cases, which doesn’t use the compensation, but my wife still isn’t used to that and prefers to rewind. It caused no end of problems. So finally, I looked for the setting and found where I could turn it off; as useful as it was for fast-forwarding, it was making rewinding hellish.

Hence the first portion of my rant: When, in the history of anything, has someone said: “Oops, I went back too far. I’d like to skip forward about ten seconds.” The truth is there aren’t many situations where you’d want to do this when rewinding, because if you go back a few seconds too far it’s not the end of the world; time will catch up. And under no circumstances whatsoever would you ever want rewinding to end up pushing you forward, nor undo the lion’s share of your rewind. So when designing this feature, one very easy way to prevent this very obvious and predictable problem was to make DVR compensation a fast-forward feature only. Either somebody in a development meeting decided to leave this in for rewinding regardless of the problem when somebody pointed it out, or nobody saw it. I can’t figure out which is worse.

Now being a programmer, I’m also about solutions. I’m a world-class complainer, but I like finding solutions when I can. DVR compensation has some pretty easy solutions for its drawbacks, one of which as I mentioned is the simple one of removing it from the rewind process. That solves all kinds of problems. But in truth, the problem with rewinding short distances can also be a problem when you’re fast-forwarding short distances; it just doesn’t come up as often because let’s face it, we’re mostly fast-forwarding through commercials. So if there’s some reason compensation is desired on a rewind action, I would suggest something very simple: Limit the amount of compensation, the jump-back time, to a small percentage (like 10%) of the total time the viewer rewound or fast-forwarded. That way it uses the full amount of jump-back for long skips where you can very well go too far, but it uses almost none for short skips where your goal is more precision to catch something you missed. I’d even take this a step further and take some reasonable time, like the jump-back itself, off the total before taking a percentage. If your jump-back is ten seconds (that seems to be the case for the normal setting), then any skip in the 0-10 range would have no compensation at all.

This is not rocket science. The guy doing the focus groups with kindergarteners could have come back with the suggestion of a simple percentage limit. Anyone who thinks the problem through could have come up with this, or at the very least they could have come up with the compromise of turning it off on rewind. I recognize there might be constraints in their software at a lower level that would make a percentage limit difficult, though I doubt such things to be in play; but letting rewind be free and clear is freaking easy.

Now as I said, I had turned DVR compensation off quite some time ago, because it was so badly implemented and was causing us much grief. But awhile back, the feature mysteriously disappeared from other people’s boxes as well. This made a bunch of people, who obviously didn’t have to live with the rewind issue so much, mad. I can see why: When used for just fast-forwarding or when you’re rewinding much longer chunks, compensation is just dandy. So Time-Warner listened to their customers and brought it back.

Well that’s nice, right? Wrong! Because when they brought it back, yet another case of stupid programming surfaced. When the feature was removed, the setting was also. So they put some logic in their boot-up process that says: If DVR compensation is turned off, turn it back on at a normal setting. The stupid part is, they gave no thought to the distinction between off-because-we-removed-it and off-because-the-user-wants-it-off.

For the past three weeks or so, since compensation came back, the DVR has been rebooting very frequently, like every 1-3 days. Every time it reboots, compensation is turned back on. I have to turn it right back off again. Every single frelling time. Naturally this rates high on the Nicki Minaj rage scale. Let’s give it a 14 or so, for each reboot. 21 if my wife turned on the TV before I did, so I never noticed it had reverted back to channel 1 and therefore that I had to turn compensation back off, and we end up in the middle of a show when I see it’s back.

Again this is just dumb programming. The way you’d do this properly depends on how the setting is stored in the first place. Is it some kind of value table like Firefox’s about:config or the Windows registry, where you look up settings by name? If so, then the obvious thing to do is to see if the setting is there before you change it. If it’s there, respect what’s already there and leave it alone. (I understand why the setting could have been removed when the feature was, but once I changed it again it should have stuck.) Is the value stored only as a number, like 0-3, at a specific memory address? That’s workable too. This being the 21st century, I assume they’re not trying to cram that number into a two-bit space, and can use values outside the 0-3 range. More likely it’s a full byte. In that case, use -1 for the “user has deliberately turned this off” setting, and that way they don’t have to deal with the consequences of this:

// Stupid us, we never considered 0 could be there on purpose
if(settings.compensation == 0) {
    settings.compensation = 2;

That’s just pseudocode, but it’s a rough idea of what I’d expect to find. I’d bet good money there’s code like that somewhere in the boot process. It might not be a 2 I’d look for, because good practice uses named constants like DVR_COMP_NORMAL instead of 2, but at any rate it seems like it’d be easy to track down. Fixing this is another big priority.

Unfortunately I can’t figure out where to proffer these suggestions demands. Nothing comes up readily on Google, and TWC’s site is crashing my browser. Lovely. I don’t (entirely) blame them for the browser crash, but nothing’s stopping me from venting my ire.

These are simple, simple things that somebody could have thought through but didn’t. And I’ll cop to making dumb mistakes myself from time to time; sure, that happens to everybody. What’s annoying is how long we go without a fix. DVR compensation has never, ever been fixed to work right. They had months and months to do it the first time around, and now that it’s back it’s still a disaster. Not cool, dudes. What happened to “Enjoy better”?


About Lummox JR

Aspiring to be a beloved supervillain
This entry was posted in Uncategorized and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s