Archive for December, 2008

Happy New Year

Wednesday, December 31st, 2008

I may or may not be busy getting ready to celebrate the end of the year today. I may or may not be intoxicated later on. In either case, I wanted to wish everyone Happy New Year!

For your reference here is the year 2009 in all it’s irregular glory:

      January               February               March        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3   1  2  3  4  5  6  7   1  2  3  4  5  6  7
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   8  9 10 11 12 13 14
11 12 13 14 15 16 17  15 16 17 18 19 20 21  15 16 17 18 19 20 21
18 19 20 21 22 23 24  22 23 24 25 26 27 28  22 23 24 25 26 27 28
25 26 27 28 29 30 31                        29 30 31            
 
       April                  May                   June        
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
          1  2  3  4                  1  2      1  2  3  4  5  6
 5  6  7  8  9 10 11   3  4  5  6  7  8  9   7  8  9 10 11 12 13
12 13 14 15 16 17 18  10 11 12 13 14 15 16  14 15 16 17 18 19 20
19 20 21 22 23 24 25  17 18 19 20 21 22 23  21 22 23 24 25 26 27
26 27 28 29 30        24 25 26 27 28 29 30  28 29 30            
                      31                                        
        July                 August              September      
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
          1  2  3  4                     1         1  2  3  4  5
 5  6  7  8  9 10 11   2  3  4  5  6  7  8   6  7  8  9 10 11 12
12 13 14 15 16 17 18   9 10 11 12 13 14 15  13 14 15 16 17 18 19
19 20 21 22 23 24 25  16 17 18 19 20 21 22  20 21 22 23 24 25 26
26 27 28 29 30 31     23 24 25 26 27 28 29  27 28 29 30         
                      30 31                                     
      October               November              December      
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3   1  2  3  4  5  6  7         1  2  3  4  5
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   6  7  8  9 10 11 12
11 12 13 14 15 16 17  15 16 17 18 19 20 21  13 14 15 16 17 18 19
18 19 20 21 22 23 24  22 23 24 25 26 27 28  20 21 22 23 24 25 26
25 26 27 28 29 30 31  29 30                 27 28 29 30 31

Apparently, 2009 is the International Year of Astronomy and also the year of Ox according to the Chinese calendar (last year of the Ox being 97). This useless trivia was brought to you by the combined power of the intertubes.

Speaking of which, as you may or may not know, the internet (and by extension the universe) ends on January 19, 2038 at 03:14.08 UTC sharp. This only leaves us 29 years of awesome so make this one count folks!

See you all next year! Enjoy your New Year’s eve celebrations. If your preferred calendar does not roll over to the next year today, please keep in mind that mine does and my future posts will be dated appropriately.

Also, due to the celebration of the International Hangover Day, there will be no post tomorrow.

Reflections on the Wii

Tuesday, December 30th, 2008

Believe it or not but until this month my exposure to the new generation of consoles, including the Wii was minimal. The only console I have ever owned was a PS1, but that was long time ago. I simply never had the urge to own one of the newer consoles, and for some strange reason I never really had a chance to play with the Wii for an extended amount of time.

This year my cousin got a Wii for Christmas and so I was able to play around with the thing. I’m not going to comment on the social aspect of the console because it is a closed topic. Needless to say, the nature of the controller makes it immediately accessible and attractive to people who usually have little interest in console gaming. It provides a more natural and intuitive interface that people have no problem learning.

But as with many innovative interfaces, it does not work well for traditional software. For example, while playing Smash Bros I was longing for the traditional controller Playing a game that required traditional input, and did not rely on the Wii’s motion control using the Wiimote and a Nunchuk was awkward to say the least. Aiming with the Wiimote is also quite difficult making it useless for FPS games. I’m not sure how much does the Wii Zapper extension change this but in my experience even something as simple as hitting a button on the screen requires a quite bit of waving, and aiming and is far from effortless or intuitive. Or rather, it is intuitive because everyone immediately knows how to use the controller, but actually putting the pointer on a button and clicking it requires some effort.

To fully exploit the device you must write software that is designed for it from the ground up, and keep in mind it’s various quirks. For example I noticed that the Wii Sports that ships with the console has a very fuzzy motion detection system. Or rather, the emphasis of the system is to create fun and engaging game play mechanic rather than forcing the user to learn complex Wiimote motions. Thus:

  1. The golf game does not really care which way you swing. I would actually always swing away from the TV for better control.
  2. The baseball game does not really seem to be able to tell the difference between an underhand an overhand swing when pitching. Also, both pitching and batting could be accomplished with just a quick wrist snap.
  3. The tennis game did not appear to care which way you swing when you try to hit the ball. I successfully struck the ball by swinging in the opposite direction without any negative effects
  4. The boxing game seemed especially fuzzy, ignoring roughly half of the frantic Wiimote wailing

All of this made me wonder how exactly does the Wiimote works. How does it report the motion back to the console, and how hard it is to detect and interpret these signals. I’m wondering if the fuzzy controls of Wii Sports are actually conscious design choices, or are they dictated by the shortcomings of the technology itself.

It might be a little bit of both. It turns out that the Wii devices use 3-axis accelerometers (probably these) which report back the acceleration imparted on the controller via Bluetooth. When you are holding the controller perfectly horizontally with the A button facing up, you will likely get a reading of 0 on the X and Y axis and a negative reading on the Z axis due to gravity). If you stand it up on the table with the IR sensor facing down, and the expansion port facing up, you will get a read on the Y axis, and zero everywhere else. Finally, if you lay it flat on the side you will get a reading on the X axis.

Based on these 3 numbers and compensating for gravity you can extrapolate how and when the Wiimote is moved, and approximately in which direction it is pitched or rolled. However, you can’t exactly pinpoint the position of the Wiimote with respect to the screen - that’s what the infrared sensors are for. You probably can’t also detect the yaw of the controller because rotating it on the spot will not exert any acceleration on the X axis.

So while Wii sports could probably detect which way I’m swinging it is likely that the actual Wiimote API actually abstracts basic motions. And if it doesn’t, I believe that the first thing that any Wii development team writes are motion libraries. Let’s face it - it is much easier to create a basic listener that tracks the Wiimote and fires of an uniquely named event when it detects a predefined motion than to re-invent the wheel every time you want to detect whether or not the user is swinging the controller or holding it still. On the other hand, detecting complex motions with high degree of accuracy might actually not be all that easy considering your only inputs are acceleration readings. It is probably trivial to detect a swing as a noticable acceleration spike on one or more axis. It is probably more difficult to differentiate between an underhand, overhand or a backhand swing. If you throw in more complex motions into the mix, it quickly becomes a mess. Which I believe is what I experienced in the Boxing mini game. Wii was dropping half of my rapid motions because it was detecting them as continuations of previous ones. When I started throwing punches one at a time, the detection rate seemed to improve.

Keeping the motions simple, guarantees good detection and responsiveness. Thus, not caring about the direction of the swing makes for a better game play.

Detecting complex Wiimote motions is actually an interesting research area. I’ll refer you to the Wiigee project which is a Java framework which uses Hidden Markov Models for training and analysis of the controller motions. They are able to recognize complex movements such as drawing a circle, square or a Z shape in the air solely based on the accelerometer input.

But you can do much more. If you combine the accelerometer readings with the IR sensor readings you can fully track the remote in 3D space allowing you to do some pretty amazing stuff. Check out Oliver Kreylo’s Wiimote Hacking page (especially this video) or the infamous head tracking project by Johny Lee.

Microsoft Natural Ergonomic Keyboard 4000

Monday, December 29th, 2008

As you may recall, I’m a big fan of split keyboards. In general, I believe that if you are the type of person who spends most of their life in front of a computer, you ought to invest in high quality input devices. Personally, I spend 8 hours at work sitting at a desk staring on a computer screen. Then I come back home, grab something to eat and sit back in front of a monitor. Last year I invested into some nice mice both for home and for work.

I also bought the Microsoft Natural Keyboard Elite which I use at the office. At home I was still using an old Dell keyboard that originally came with my computer. I didn’t mind it, because it was simple and functional. I was considering buying a split keyboard for myself, but since Christmas was coming I simply put that on my gift list. )

My cousin was nice enough to get me the Microsoft Natural Ergonomic Keyboard 4000 this year. It is actually the high end cousin of the Elite keyboard with the standard inverted T and normal Home/End/Insert key block.

microsoft-natural-keyboard-4000-2.jpg

It has all the features I look for in a keyboard these days, namely:

  1. Pronounced and raised wrist rest
  2. Keyboard split in two blocks
  3. Standard inverted T block for arrow keys
  4. Insert, Delete, Home, End keys being in predictable places

I especially like the wrist support section. It is nice and wide allowing you to rest your wrists as you type but unlike Elite it is actually soft to touch. I think it has some sort of jelly inside, but unlike many of the wrist support thingymabobs you can buy it has a slick leather like finish to it which it will be easy to keep clean and should be less prone to wear and tear. I found that the cloth finishes on things like that tend to thin out, lose color and start to look filthy after a while.

The keyboard itself seems a bit bigger than the elite. It is actually wider, and the keys seem to be more spaced out. The numeric pad is like 5 miles away from the home row for example. But it also might be an illusion caused by the curvature of this keyboard. All ergonomic keyboards tend to have this hump toward the middle (which culminates where the keys are being split) and the sides taper of at an angle. This is actually by design, and it helps you to keep your hands at a more natural position. As you can see on the image above the 4000 has a very pronounced hump where the designers placed the fairly useless zoom bar. At least useless to me, because I hardly ever use any zoom features for anything, and I have yet to figure out how to re-bind that thing. Needless to say, by being there it actually forces the split key blocks to be farther apart than in the elite. Which is probably why the whole thing seems so wide.

The keyboard has few dozen additional keys all over the place. There are actually 14 special buttons above the function key row, and additional parentheses , equals and backspace above the numpad. Fortunately you can re-bind nearly all of them using the InteliType software that shifts with the keyboard. Yeah, I really hate the fact that I must install a driver to actually use the full functionality of my keyboard but eh… You either do that, or you are left with bunch of dead keys.

5 out of the 13 special keys are so called “Favorites Buttons” which have no built in function. You are actually supposed to bind them yourself to commonly used programs:

croppercapture112.jpg

This is neat, until you realize that there is actually no way of reaching these keys from above the home row, without lifting your hand. This severely limits their usefulness, and relegates them to the realm of novelty feature. Next to these you have your volume control, calculator button (which I immediately rebound to use the XP Power Toy calc), and the Web, Search and Mail buttons which I will probably use for something else.

Strangely enough, the keyboard only has one Windows key (on the left) and one Menu Key (on the right). Most keyboards have them mirrored on both sides just like Alt keys. Then again, Elite also had one of each so I guess this is a design choice MS made for all of their ergonomic keyboards.

I have only one gripe with this keyboard. It is a minor annoyance, which I wouldn’t even mention if this was not a $60 keyboard. When I pay that much for a keyboard, I expect quality. Sadly, there seems to be a little play in the space bar. It seems to be a little loose on the left side. As if there was a few millimeter gap somewhere allowing the key to move up and down slightly without being depressed. It feels perfectly fine on the right, but when you hit it with your left thumb (as I commonly do) it makes an unusual “clunk” sound as it drops down a millimeter or two and the right side rises slightly in a sea-saw effect of sorts. At first I thought that this was simply a flawed keyboard, but I noticed that I was not the only person with this issues. Quite a few people are complaining of the same exact problem in Amazon comments and product forums and elsewhere online.

I believe that this is an inherent design flaw caused by the sheer size and curvature of the key. The space bar is actually bent and extends the whole length of the hump. This curvature combined with it’s length and would require some stabilization and support, which is likely missing here. Thus, it introduces the slight play which is detectable and a bit annoying. It is not a deal breaker though - I think I can live with it. I also heard you can correct this by taking off the key, and slightly bending the support bar inside of it. I might try that at some point if it keeps annoying me.

Here is a tip for Microsoft design team - in the next model, just split the damn space bar in two. Most ergonomic keyboard manufacturers do that these days, probably to avoid precisely this sort of issue from surfacing. Either that, or put the Windows key on both sides of the split, making the space bar smaller. A $60 keyboard should not have a clunky space bar!

Other than that, it is a fine piece of hardware. I’ve been using it for 3 days now and I think it is very comfortable. I’d recommend it whole heatedly if it wasn’t for the space bar issue. For some people it might be a deal breaker. If you are easily annoyed with that stuff you’d probably be better off with the Elite. But then you’d have to deal with the non-standard arrow key block, which may be even more annoying. P

I have not tested this keyboard under Linux, and probably won’t for some time because the box I hooked it up to is currently running single boot WinXP. At some point I’ll try to hook it up to my Ubuntu box and see how it works, but I don’t feel like crawling underneath my desk and untangling cables again. Considering this is a Microsoft product, I’d expect half-assed Linux support. But, we shall see…

X-Mas

Thursday, December 25th, 2008

Sorry for another filler post guys. I’m taking the rest of this week off due to holiday madness. Robot Santa is being especially destructive and ruthless in my area. Regular posts will be back on Monday. In the meantime I leave you with this:

mtg__robot_santa_by_kanjan1991.jpg
image © KanJan1991

May your holidays be awesome, regardless of your denomination!

Merry X-Mas!

Wednesday, December 24th, 2008

Robot Santa strikes at midnight! Are you prepared?

robot-santa.jpg

May you have a safe and death-free X-mas. I hope your defense systems may keep the mad robot at bay this year.