February 27, 2005

My Sweet Baboo

Lisa and I bought a Peanuts calendar for our fridge this year. On Thursday evening, I was reading the comic for February when Emily came toddling over....go ahead, read it. Then read the rest of this blog.

So, you read it, right?

Just off the top of my head, I said "Hi, my sweet baboo!" Emily just looked up and smiled and said "Sweet baboo! Sweet baboo!" and just keep repeating it for the rest of the evening. Friday, I was off to school all day. I called home in the afternoon to check up and see how Lisa was doing. Apparently Emily had been asking about me and saying "sweet baboo" all day.

It's funny how a little silly moment can mean so much for Emily. It melts my heart and reminds me how important everything I do around her really is. God granted me the privilege and responsibility of helping to mold and shape who she is. And it's convicting and so rewarding! I love her so much and she is so sweet. She is my sweet baboo.

On another note, you can read more about Peanuts and Valentine's Day here.

Posted by enigma at 09:02 PM | Comments (0)

February 21, 2005

It's Beautiful

We've been having gorgeous weather for the last few days up here in Corvallis, Oregon. I hear Southern California's been having non-stop rain. It looks like all the Oregon weather either got confused and went to the wrong place, or just decided to go to So Cal on vacation. Although, I have a hard time remembering when, in the last year-and-a-half, we have ever had non-stop rain for days here in Corvallis. Maybe just once or twice.

New theory: California is going through an identity crisis. After all, the California state quarter just came out depicting a beautiful scene in Yosemite. California realized it doesn't know how to reconcile this image with that of millions of homes packed to together in a desert transformed into a suburban jungle. So, until it figures it out, it will just behave like it's greener neighbors.

Posted by enigma at 07:58 PM | Comments (1)

February 20, 2005

ID3 Tags

After messing with some files in my MP3 collection yesterday, I got frustrated with all sorts of inconsistencies in the ID3 tag information. Artists names weren't always capitalized the same way between album rips. Sometimes I had changed the v1.x and not the v2.x tags. Some files didn't have v2.x tags defined at all. I couldn't tell which tags mythmusic was favoring to get it's information. I decided things had to be consistent and that everything is going to be ID3v2. After hunting around for a while and bemoning poor ID3v2 support, I discovered two great utilities which both support ID3v2.

The id3lib project comes with the great command line tools: id3info and id3tag. By default, they simultaneously manipulate *both* v1.x and v2.x tags! Nice! Great for scripting, touch-up tagging or batch tagging. id3lib also features a wonderful command id3convert which allows you to convert v1.x tags to v2.x tags and vice-versa. You can even strip out v1.x tags and leave v2.x tags. (Which I what I prefer.)

easytag is a great GUI tool that supports filling in tag information from filenames, mass tagging, and, most importantly, renaming files based on the ID3 info. Very nice for cleaning up whole batches of files all at a shot. I've been somewhat fickle with my naming conventions, so easytag's file renaming has really rescued me there. And, of course, I told easytag to strip out v1.x tags and only write v2.x tags.

I can't end without mentioning the trusty mp3info utility. Even though it doesn't do ID3v2 tags, it is the only command line tool I'm aware of that can give me that data rate statistics for VBR MP3s. Maybe there is another tool out there that one of you could tell me about? (sox tells me about everything but the data rate.)

In the whole process, the most interesting fact I found was that ID3 tags aren't just for MP3 files, but for a whole other host of media files. Cool!

Posted by enigma at 11:21 PM | Comments (0)

February 12, 2005

Xkeyboard and Gnome 2.6

Turns out Gnome 2.6 uses the Xkeyboard extension. In the end, this is good thing, but until I figured that out, I was going nuts.

I wanted to run a script when I pressed the "Mute" key on my HP zt3000 notebook. I had used gnome's "Keyboard Shortcuts" GUI to associate actions like "Raise the volume" and "Lower the volume" with the correct multimedia keys, but the "Mute the volume" action wasn't muting the right ALSA channel. My HP has some nice hardware tie-ins when you mute the special channel "External Amplifier". The ti-ins don't work when you mute "Master". So naturally, I wanted to write a mute toggle script myself and have gnome use my script instead of gnome's built-in muting feature.

I found a great article about associating arbitrary commands with hotkeys in Gnome. Hint: It requires setting property values directly using the "Configuration Editor" (a.k.a. gconf). Yeah, that's real user friendly. (Not that I'm saying gconf is bad. I agree with this article, gconf is a good thing.)

Turns out the "multimedia" keys have non-standard key codes, so their symbolic names ("XF86AudioRaiseVolume", "XF86AudioMute", etc) they aren't defined for standard PC keyboard configurations. For some reason, the "Keyboard Shortcuts" GUI was allowing me to use the hex value of the key code without the need for a symbolic name, BUT I could not use the hex value when editing the configuration directly with gconf. Yeah, go figure. Who know's what black magic goes on behind the scenes in gnome. (Yeah, yeah, yeah..."read the source, Luke.")

I searched online to figure out how I could define my key mappings. I was told to use "xmodmap" to associate symbolic names with particular key codes. No sweat. I simply did "xmodmap -pke > .Xmodmap" to get a list of all the keycodes that are defined. I then used "xev" to figure out which keys generated which key codes, and edited ".Xmodmap" to associate the right symbolic names with the key codes. (Search for "xmodmap" on Google for more info.) I then installed the new definitions by hand doing "xmodmap .Xmodmap". This worked great, until I logged out and logged back in.

According to the "way things should be", the definitions in ".Xmodmap" should be loaded automatically. But no, that wasn't working. So, I tried forcing them to load in my ".xprofile". Nope, that didn't work either. I tried having gnome automatically run "xmodmap ~/.Xmodmap" when gnome is starting my session. That didn't work either. Basically, the only thing that worked was loading my custom definitions from a terminal, by hand, after gnome had started. Clearly, that wasn't acceptible.

By this time I got smart enough to search for "xmodmap gnome 2.6" on Google and I discovered that gnome 2.6 use the "new way": the Xkeyboard extension. The Xkeyboard extension supports all sorts of keyboards including so-called "multimedia" and "Internet" keyboards. I grepped around and found the definition for these keyboards is in "/etc/X11/xkb/symbols/inet". And after looking to in "/etc/X11/xkb/keycodes/xfree86" to see the translation between the key code (ex. "160") and the new strange notation (ex. ""), I was able to find the "zt11xx" profile in the "inet" set that had all the keys I needed defined for the right key codes. Horray!

I used gnome's "Keyboard Preferences" GUI to set "HP Pavillion ZT11xx" as my keyboard. (Yes, I own a zt3000, not a zt11xx. I guess HP is somewhat consistent between models.) After logging out and back in, I was able to use gconf to associate my mute key with the "toggle_mute" script I wrote. Horray!

In summary, it was WAY TOO DIFFICULT to associate a command with a multimedia key. This was due to a few things: intentionally hiding features, inconsistency (sometimes hex, sometimes not), and outdated information.

Maybe there should be some sort of "keyboard finder" where you select the special function (such as mute) from a list and press the key on the keyboard. After you do that for all the keys you care about, the "keyboard finder" determines the predefined keymap that fits, and if one doesn't exist, it makes a custom one.

If I only had time to code....

Posted by enigma at 01:16 PM | Comments (0)

February 08, 2005

Bad Design Sucks!

Nate's post on Donald Norman's "The Design of Everyday Things" inspired me. I started writing a comment and figured out that I needed to blog. I suppose trackback is good for this sort of thing, but I've never taken the time to figure out how it works. (Maybe someone could tell me.)

It amazes me how poor design permiates so much of the world around us. Why is this? You would think businessess would figure out that bad design cost them money: either through lost productivity or lost sales.

Don't businesses realize how much money they are losing when their "in-house" application has a bad user interface? Shouldn't they force their development team to take a user interface (UI) design class--or better yet--hire someone with human-computer interaction (HCI) experience.

The market rewards businesses who spend the time to develop good user interfaces. Just look at iPod versus just about any other portible MP3 player. Also, look at experience provided by video game consoles versus computer games. The consumer can easily figure out how to use the console game, the consumer can simply "install" the game by placing the game inside the console ("uninstall is just as easy"), and once "installed", the game will "just work" and "look great." Computer games are a bigger risk--the consumer doesn't necessarily know that he can get game to work with his system. It seems that computer games have become more and more niche to compete with console games (RTSes, super high-end graphics, online-gaming). Even Microsoft realizes this. MS could leverage their desktop OS monopoly to push their own games, but instead they dove into the console business. Microsoft, of all businesses, has the most control over the variables involved in ensuring a game will work for a computer system, but even Microsoft can't get deliver the consistent user experience via the PC like the consoles provide by avoid the PC.

Why don't businesses realize that good UIs give them a competative advantage and spend the extra money to get ahead? Some businesses may be able to get away with bad UIs because consumers don't realize just how much their product stinks until they have already paid for it. But with greater access to product reviews via the Internet, consumers can make even more informed choices than before. Why don't companies realize good interface design will give them that coveted word-of-mouth advertizing?

On another note, I think anyone who is responsible for creating a user interface (not just software UIs) should take an UI design class. Particularly computer science programs should require their students to take an HCI class. Sure, some of those students will go out into industry and create software components without ever touching the software's UI, but most every CS grad that I know has worked on a project where they have influenced in the UI. If people just had enough training to see the problem, bad design might bother them enough that they wouldn't churn out horrible interfaces.

Posted by enigma at 01:28 PM | Comments (1)

February 06, 2005

Crazy and Fun

It's been crazy. I mean CRAZY! I can't believe how much work I've been doing. Between classes, TAing, research, and family stuff it seems like I never have enough time for anything. So, one bright spot in the craziness was our Super Bowl party today.

The Super Bowl always gives us an opportunity to have lots of people over to hang out and bring us food. I don't care for the game much, but it's fun to sit around, chat, keep tabs on the score, and snack...and snack...and snack. It's great!

We had a bunch of people from church over. We're part of the "Family Foundations" group. The group's for people who have kids 5 years and younger. It's been great to hang out with people in the same stage of life as us. Needless to say, our party was somewhat of a zoo. Kids running up and down the stairs. A tantrum here, a poopy diaper there--typicall kid stuff.

All-in-all, it was a blast. I can't wait until next year. I guess we'll have to come up with an excuse to have a party before then.

Posted by enigma at 10:59 PM | Comments (0)