Friday, June 12, 2009

Outside the Box (or circle, in this case)

The MX-6000 has a feature that no previous URC remote has included: the combination 5-way and scroll wheel. I love the scroll wheel for page flipping (that feature is included in all the default MX-6000 templates). It’s also used extensively in some of the two-way modules for the MX-6000. The other day I was reading through the posts on the URC Control Room forum and came across a question about how to reduce the sensitivity of the scroll wheel on the MX-6000.

I replied that yes, there’s an easy way to reduce the sensitivity using variables. I gave the following example for the macro I use in my left scroll function:

IF (Variable(ScrollLeft),True)

.….Jump (Page-)
.….VAR (ScrollLeft = FALSE)
..ELSE

.….VAR (ScrollLeft = TRUE)

This works pretty well because it requires two scroll events to occur before issuing the Page- jump command. I patted myself on the back, posted the solution, and casually mentioned that you could make the scroll wheel even less sensitive by using the same technique, but nesting multiple variables and IF statements. I didn’t bother to explain how, because thinking about it gave me a Slurpee headache. I figured that anyone dedicated enough would figure out what I meant. They could have the headache instead of me.

I consider myself to be a fairly skilled MX-6000 programmer. Working for URC doesn’t hurt in that regard. But stop to consider the engineering team that designs Formula-1 race cars. Those are really smart folks, but I doubt a single one of them could qualify for a Formula-1 race if they had to sit behind the wheel themselves. Sure, they can probably out-drive you or me, but their specialty is in making the car. Driving it is a whole other art, and that’s where professional drivers shine.

Recognizing this, I mentioned my little Scroll Sensitivity solution to my good friend Bracken Baker over at tripleBsoftware. He’s a really polite guy, so instead of breaking out in a round of belly-busting guffaws, he kindly said, “Yeah, that’ll work.” But then, as I expected he would, he quickly showed me a sample of code with a multi-variable solution that made my solution look clunky.

I very nearly posted that solution to URC Control Room, but then Bracken said, “WAIT!!”

Spend enough time around brilliant engineers and you’ll learn that “WAIT” means My brain just told me there’s a better solution, but it hasn’t told me what words to use to describe it yet! But before he could get the new idea fully typed, he jumped in again with, “HOLD ON!!” With our previous example, I’m sure you understand that “HOLD ON” means I’ve got an even BETTER idea! So I held… uh… on.

Bracken’s mind went through several iterations of the problem, considering angles I’d never have thought of. He wanted the solution to work well and be dead-simple to implement. Before I knew it, he came up with a way that any MX-6000 programmer can adjust the sensitivity of the MX-6000 scroll wheel without using any variables at all!

Bracken’s solution takes advantage of the often-misunderstood Toggle feature. It’s just downright genius, so I wanted to share it with you here:

TOGGLE
.….TEXT (hold)
.….JUMP (Page-)


The beauty of this solution is that the TEXT step doesn’t really do anything except “waste” a step of the Toggle command. Specifically, it tells the left scroll function to display the text “hold.” But since there’s no button text on the scroll wheel, “hold” never appears. However, while not displaying anything, the remote is also waiting for the user to continue moving the scroll wheel. It’s only when the wheel has moved enough times to step through all the toggle steps that the remote finally issues the “Jump (Page-)” command.

So in three lines of code, Bracken accomplished what took me five lines, plus I had to create and name the macro in the first place.

But it gets better. Because if I wanted my solution to reduce the sensitivity of the wheel any further, I had to nest IF’s and add more variables, putting me right back in SlurpeeTown. But Bracken’s solution is elegant: just keep adding TEXT statements until you reach the level of sensitivity you want. Here’s the same macro, made four times less sensitive:

TOGGLE
.….TEXT (hold)
.….TEXT (hold)
.….TEXT (hold)
.….TEXT (hold)
.….JUMP (Page-)

See how that works? Each TEXT command adds a tiny delay, then the Toggle function waits for the scroll wheel to continue moving before finally landing on the JUMP command, which actually issues the page flip.

So there you have it—a super-simple way to make the MX-6000 scroll wheel precisely as sensitive as you want it to be. Once you understand the technique, it’s easy to see ways to do things like give audio feedback to the wheel (add a “tick” sound after the jump) or turn it into an absolute volume control (add discrete RS-232 volume commands to each step of the Toggle control), or a thousand other cool ideas. It’s a whole new way of thinking of the scroll wheel!

My thanks again to Bracken for helping me out and coming up with this cool technique. It’s the Formula-1 drivers like him that prevent us regular-old programmers from having Brain Freeze on an everyday basis.

Saturday, June 6, 2009

The Best Connections – Part II

In my last entry I talked about the unexpected professional benefits that friendships can bring into your life. Over the course of your life, you’ve probably known a lot more people than you know right now. So I’d like to talk a bit about the benefits of reconnecting with long lost friends.

Ever since I was in junior high I’ve had a hobby of writing horror/thrillers and science fiction. I never imagined myself becoming the next Stephen King or Dean Koontz. I never even imagined that my job would ever be writing novels. But I always dreamed that one day I’d be able to walk into a book store or log on to Amazon.com, see something I wrote, and quietly whisper to myself, “That’s mine. I did that.” Beyond that, I always hoped that someday something I’d written would be adapted to the big screen. And that’s where I left my hobby, my dream, because like everyone else, I’ve got bills to pay.

Recently URC created a page on Facebook. I wasn’t a Facebook user at the time, and I admit that like many of you, I snickered when I heard what we were doing. Social networking? What was that? It seemed goofy to me. But the guy at URC who came up with the idea asked us to check out Facebook so we’d know what it was all about. Maybe we might want to create our own page there. I did.

Now I just wish I had been the person who came up with the idea.

Within days of joining Facebook, I reconnected with dozens of friends I’d lost contact with. I didn’t know where to start, but that was okay, because mostly they found me. People I never thought would remember me came calling with open arms. I learned of a high school reunion I would otherwise have missed. I told everyone my ups and downs, what I’ve done for all these years, and what I’m up to now.

And I learned their stories too. Some of them, it turns out, use some of the software I helped design or wrote the manuals for in my positions at previous jobs. Some even use the very products I help to design for URC. Once again, I got to feel like a rock star for half an hour. A few of my old friends remembered my writing from school and asked if I’d ever finished any of those book ideas I’d always talked about. So I told them about the books I’ve completed and some that are still in the oven.

One friend asked where she could buy a copy of a novel I mentioned, so I sent her a copy. She read the novel and enjoyed it. And then she said she’d told a close friend about the book, and he wanted to read it too. So she asked if I would mind if she shared the book with him. I agreed because hey, I love it when anyone reads my writing. (Shameless plug: Search the Books section on Amazon.com for “Dale Crawford The Price,” or check out the first 35 pages at http://www.lulu.com/browse/preview.php?fCID=6561409
. I’d love to hear your thoughts!)

An amazing opportunity came about due to that long-lost friend asking about my novel. It turns out that her good friend just so happened to be an executive at a major film studio. He wasn’t just wanting to read the book… he wanted to consider it. So there I was, mailing off a requested copy of my novel to a person whose in-box I could otherwise never have seen without breaking and entering.

I’m not getting too worked up about where things might go from here, of course—the studio probably discards a hundred novels like mine a day. But it was pretty exciting for me to know it was even being read by someone at that level! If everything worked out the best it could, the sale of the movie rights wouldn’t mean a career change for a first-time author. I’d still be right here designing remote controls, and loving it! But I’d have the opportunity to do something else I’ve dreamed of since childhood: I could walk by a movie poster, smile, and know inside, “I did that!”

But that’s just a dream. That same Facebook page has allowed me to help one friend find a job in this tough economy. Another of my friends is now a client of an installer I know. But I never set out to “market” to anyone or to “expand my contact list.” No, all I did was say, “hello world,” in a medium that was new to me. I’m still amazed at how much the world has said in reply.


So go check out URC’s Facebook page. Friend it. Start your networking circle there, then maybe expand to LinkedIn or some of the other more “serious” social networking sites. It’s a digital world out there, and if you’re not participating in the social aspect of it, you’re missing a big part of what’s going on.

But more importantly, it will build and rebuild the best connections. It will open you up to new opportunities—probably ones you will never realize exist until you hop on the social networking bandwagon.

Monday, June 1, 2009

The Best Connections – Part I

I’m not writing today about HDMI or $200 per-foot component cables, so you may wonder for a while if what I’ve got to say relates to your job. But bear with me—it does.


One year as my wedding anniversary approached, my wife knew that I was tired of the coffee table clutter. I was a home theater geek, so she started looking in that direction for an anniversary gift. Her gift to me was my first PC-programmable universal remote. It was the same green-backlit, grayscale touch screen that most of you once programmed professionally and eventually abandoned in frustration because programming took so long per client that you couldn’t make any money selling them.


But I was a hobbyist, so I stuck with it, determined to make my remote do things it was simply never designed to do. Eventually I was proud of what I’d accomplished, so I uploaded my file to a popular web site. It was there that my work caught the attention of Eric Johnson, a guy who was well known in our industry, but unknown to hobbyists like me. Eric contracted me for some graphics work from time to time, but mostly we just struck up a friendship. At the time, I didn’t expect that friendship to ever affect me professionally.


The files I had posted online elicited a lot of commentary on the forums, so around that time I coined a term to describe home theater components that fail to offer the discrete IR codes installers need for good automation. I wanted the term to imply an insult, so I came up with “Toggle-Only Actuated Device,” or “TOAD.” Eric Johnson picked up the term and used it in his trainings, presentations, and documentation. Due to his frequent use of the term, I succeeded at one of my geeky lifetime goals as a writer: I “invented” a word that has come into relatively common use.


That’s something I probably would have never accomplished without my friendship with Eric Johnson. And that’s a connection that paid off in more ways than one. Back then I was working as a technical writer and user interface designer for a struggling firm that finally hit their last hurdle and had to shut my department down. The layoff notices were a big shock in a tough economy. But later that day, by pure chance, I got a call from Eric at Universal Remote Control asking if I would come aboard full time. Amazingly, even after an unexpected layoff, I didn’t go a single day without a paycheck. Now I am part of a team that designs the products your clients use every day. To a geek like me, that’s pretty close to being a rock star.


Inventing a new word or designing consumer electronics may not be line items on your bucket list, but they are both very big things to me. I probably would have accomplished neither of them without putting forth the effort to maintain my friendships. The fulfillment of both goals came out of left field when I least expected them.


The point in all of this is probably obvious by now. Yes, the Federal Reserve says the economy is starting to improve. But that doesn’t mean we won’t see good days and bad days going forward. The quality of your tomorrows, quite often, is a direct reflection of the connections you make today.


You give your best to your clients. Be sure to also give your best to your friends, your family, and to yourself. The payoff comes in the enrichment of your life. Sure, you expect that personally, but you'll be amazed at how much those personal connections can mean professionally as well.