Movie Review: "Eagle Eye"

I've never written a movie review before. And I may well never write another. But I saw "Eagle Eye" at one of those pre-screenings on Wednesday night and as such I saw it before most everyone else so I thought I'd take a minute here to let you know what I thought about it in the hopes it might be informative to you.

Now, my goal here isn't to be objective or to evaluate the movie on any particular set of criteria--I'm simply going to tell you my thoughts. Note that I cannot be held responsible for any irreparable damage this may cause. ;P

Here's the thing about this movie: the villain is a computer. Specifically, the antagonist is a computer that has become too smart for its own good and is now trying to do things that the humans in the movie consider to be nefarious. These include wearing white shoes after Labor Day, swimming immediately after eating, and killing people. Silly computer--tricks are for kids! Okay, so the computer doesn't have feet on which to wear shoes and it doesn't appear to have any interest in either eating or swimming, but it sure ain't kidding around on that whole killing people thing!

Let me say this: I like Terminator as much as the next guy. But that's set way in the future. And that machine at least acts like a dude. The computer in Eagle Eye, on the other hand, isn't all that different from the computers we're all used to, only except this one is ginormous, has these befuddling infrared innards which Hollywood apparently thinks will impress people with their complexity, and oh yeah--is trying to kill people (and I don't want to hear about how your computer seems to be trying to ruin your life by crashing at all the wrong times--it's not the same thing). The computer in Eagle Eye isn't at all like a dude--it does talk, but it has no face, no body, and it can't move around under its own power. Actually, it does have a bit of a thing for car chases so maybe it's a little like a dude after all.

So anyway, much as I like Terminator, I don't like movies set in the present day where the main difference between our actual world and the world depicted in the movie is that in the movie there's a crazed computer bent on destruction. Eh, I suppose that if the crazed computer were some minor plot line, I could hang with it if the rest of the movie were interesting, but when the crazed computer is core the entire story of the movie, I'm pretty much done. Because I was with my girlfriend and I simply don't like giving up on things, I hung in there with Eagle Eye for a bit after it became clear that the villain was a computer. But the film is so predictable that there wasn't anything even interesting to keep my attention, and so it got to the point where I just couldn't wait for it to end. To the film's credit, it at least didn't drag things out.

If you like movies where the antagonist is a computer, have at it. But if you're like me and such movies aren't your thing, skip this one. And remember, computers don't kill people, people kill people. Or something.

2011-04-21: given the age of this post, it seems unlikely to receive further legitimate comments. Yet comments continue to be posted: spam. Accordingly, it seems wise to me then to stop the insanity by closing comments to this post. Should you have a legitimate comment you wish to post here, please contact me via the the contact form here on my blog. Thanks!

ColdFusion @ Adobe MAX 2008

Adobe MAX 2008 figures to be the best MAX ever. But did you know that there are a ton of great ColdFusion sessions on tap? I don't know specifics, but I know there are more sessions planned this year than in at least the recent past. So...hopefully you have heard only good things about Adobe MAX, but if you instead heard something about there not being enough ColdFusion content, put that thought to rest! But don't just take my word for it, check out the Adobe MAX 2008 North America Session Locator and see for yourself (as Charlie Arehart pointed out to me, it's important to notice that the tool includes a Product selection and by choosing "ColdFusion" you will see over 30 distinct sessions, not including repeats, pertaining to ColdFusion)! Then check out all the great information and register on the Adobe MAX 2008 North America website. Speaking of registration: for the best possible price, you need a special code--and I may be able to provide one; contact me for more information.

Unsupported ColdFusion Configurations

I guess you could say this is the unofficial thread on unofficial ColdFusion configurations. :)

But before we get to that, I need to make this statement: I recommend running ColdFusion in a supported configuration as specified here:

http://www.adobe.com/products/coldfusion/systemreqs

ANY deviation from these System Requirements is strictly at your own risk! Among the risks is a lack of support from Adobe--Adobe only supports configurations meeting the System Requirements!

Now, let me explain things a little further: the System Requirements information indicates tested and supported configurations for ColdFusion; it does not (at least necessarily) contain definitive information on what configurations will run ColdFusion. That is to say, there may well be configurations not listed that will run ColdFusion, but Adobe cannot and will not make any comments about these and again I must stress that, most importantly, Adobe will not support such configurations.

I hope the information I have just shared is enlightening in and of itself; I think it will be because I'm regularly asked questions on the subject, usually in the form of "will xxx work with ColdFusion." But for those questions to which I have to answer "it is not supported, but as to whether or not it will work, I cannot say" my hope here is that others will be able to share their experiences with these unsupported configurations. My intention is in no way to encourage the use of ColdFusion with unsupported configurations; my only desire is to help those who choose to use such configurations knowingly and with a full understanding the implications of using such configurations.

So...if you have a question about an unsupported ColdFusion configuration, ask away in a comment! If your experience has been that ColdFusion either does or does not work with a certain unsupported configuration, please note it in a comment! When commenting, please specify as much information as possible about your configuration, certainly including your version of ColdFusion.

Adobe eSeminars

One of my roles at Adobe is to present eSeminars (online seminars via Adobe Acrobat Connect) related to ColdFusion. Join me, won't you? I will be presenting the Adobe ColdFusion 8 eSeminar Series over the next couple of months; details can be found via this URL:

http://www.adobe.com/cfusion/event/index.cfm?event=detail&id=1345643

Speaking of eSeminars: you might also be interested in the Adobe Flex eSeminar Series for Developers; details can be found via this URL:

http://www.adobe.com/cfusion/event/index.cfm?event=detail&id=462539

Upgrading from ColdFusion MX to ColdFusion 8

Just as I am frequently asked about the process of migrating from ColdFusion 5 or older to ColdFusion 8, I am also regularly asked about the process of upgrading from ColdFusion MX (the releases variously known as ColdFusion MX, ColdFusion MX 6, ColdFusion MX 6.1, ColdFusion MX 7, ColdFusion MX 7.0.1, ColdFusion MX 7.0.2, ColdFusion 7, ColdFusion 7.0.1, and ColdFusion 7.0.2) to ColdFusion 8 (at the time of this posting, the current release of ColdFusion 8 is ColdFusion 8.0.1). And so here too I have compiled some helpful information:

First and foremost, to set things up: as noted in the following link, ColdFusion MX to ColdFusion 8 is a valid upgrade path (upgrading to ColdFusion 8 is supported for the 2 most recent previous major releases of ColdFusion):

You can use the ColdFusion Code Compatibility Analyzer to determine if your code is valid for ColdFusion 8:

I recommend reviewing the tag and function changes to ColdFusion. Be sure to note the addition of functions with names that collide with user-defined functions in your code (for instance, ColdFusion 8 introduced the isImage() function; if your code has a user-defined function called isImage() you will need to change the name of that user-defined function and all references to it in your code before upgrading to ColdFusion 8):

You may also wish to check the CFML Language History:

It's very important to read the release notes in case some might apply to your environment:

Many of these upgrading best practices from Adobe's Sarge Sargent's blog will certainly apply:

For even more helpful info, visit this blog post from Charlie Arehart:

When you're ready to install ColdFusion 8, you'll want to review the "Installing and Using ColdFusion" documentation:

Adobe has worked hard to make the upgrade process as smooth and easy as possible. The process involved varies depending on:

  • Your current product version and edition as well as, in the case of ColdFusion Enterprise, your current deployment type.
  • Your desired product version and edition as well as, in the case of ColdFusion Enterprise, your desired deployment type.

To upgrade to ColdFusion 8 Enterprise from ColdFusion 8 Standard:

  • Enter your license key for ColdFusion 8 Enterprise in the ColdFusion Administrator in the System Information section accessible via the link marked with an "i" Information icon in the upper-right. No reinstall of ColdFusion 8 is required. This is true because there is a single runtime (per platform; the same is true for the installer) for ColdFusion 8 which acts as a particular edition based on what license key(s) are entered--if you enter a license key for ColdFusion 8 Enterprise, the runtime will act as ColdFusion 8 Enterprise; if you enter a license key for ColdFusion 8 Standard, the runtime will act as ColdFusion 8 Standard. Note that both ColdFusion 8 Trial and ColdFusion 8 Developer are the same as ColdFusion 8 Enterprise, with the notable exception that neither is licensed for production use, Trial becomes Developer after 30 days, and Developer accepts connections only from a limited number of IP addresses.

To upgrade to ColdFusion 8 from standalone installations of any release of ColdFusion MX (NOTE: the process is the same for standalone installations of both ColdFusion Enterprise and ColdFusion Standard):

  • Run the ColdFusion 8 installation wizard to install ColdFusion 8
  • Browse to the ColdFusion Administrator to launch the Configuration Wizard and allow it to import the settings from ColdFusion MX

To upgrade to ColdFusion 8 Enterprise from multi-server and J2EE installations of any release of ColdFusion MX, follow this TechNote:

As long as you choose to use the built-in web server during installation of ColdFusion 8, your installation of ColdFusion MX will not be altered or removed by the installation of ColdFusion 8. You will therefore be able to continue running ColdFusion MX while you test your new ColdFusion 8 installation.

If during installation of ColdFusion 8 you choose to use the same external web server as you are using for ColdFusion MX, note that the CFIDE and CFDOCS directories in the root of your external web server will be replaced by the CFIDE and CFDOCS directories for ColdFusion 8. If you wish to avoid this, you must instead choose to use the built-in web server during installation of ColdFusion 8. As Adobe Technical Account Manager Michael Collins explains in the following blog post, you can later use the Web Server Configuration Tool to configure your external web server for ColdFusion 8:

If you wish to configure your external web server to work properly with both ColdFusion MX and ColdFusion 8 on an ongoing basis (as opposed to working with only one version or the other), you can do so, but you will need to do some manual configuration of your web server; see the following blog post by Adobe Community Expert Charlie Arehart for more information (even if you're not using Microsoft IIS and Microsoft Windows XP, the principles described will apply):

There is no need for you to uninstall ColdFusion MX once you are no longer using it, but you may do so if you would like. However, if you wish to uninstall any release of ColdFusion MX, please view the following TechNote (which is written for the uninstallation of ColdFusion MX after upgrading to ColdFusion MX 7, but is also applicable to the uninstallation of any release of ColdFusion MX after upgrading to ColdFusion 8) before uninstalling ColdFusion MX:

Still have questions? First, visit the Installation section of the ColdFusion Support Center. If you can't find your answer there, feel free to contact me or, particularly if your question is one you believe would benefit other readers of this post, add a comment on this post.

One final note: Adobe offers implementation consulting for a fee; if you would like more information on this offering, please contact me.

Migrating from ColdFusion 5 or Earlier to ColdFusion 8

I am regularly asked about the process of moving applications from ColdFusion 5 or earlier releases (ColdFusion 4.5, ColdFusion 4, etc.) to ColdFusion 8. Nowhere else is there good consolidated information on the subject so, with some help from the excellent Adobe ColdFusion Support Team, I have compiled this information:

First and foremost, to set things up: as noted in the following link, ColdFusion 5 or earlier to ColdFusion 8 is not a valid upgrade path:

However, you can still migrate your ColdFusion applications from ColdFusion 5 to ColdFusion 8. Note that unlike the valid upgrade paths available for moving from ColdFusion MX 6.x and 7.x to ColdFusion 8, migrating from ColdFusion 5 to ColdFusion 8 does not allow for automated migration of ColdFusion settings like datasources, mappings, custom tag paths, and so on; instead, you must migrate your ColdFusion 5 settings to ColdFusion 8 manually.

Below you will find a number of resources that will be helpful in the process of migrating from ColdFusion 5 to ColdFusion 8:

"Migrating Applications to ColdFusion MX 7" is an incredibly valuable resource and although it was unfortunately not updated for ColdFusion 8, to a large extent that's because there really wasn't any need: the concerns involved when migrating from ColdFusion 5 to ColdFusion 8 are (with possibly some small exceptions that don't come to mind right now) the same as those involved when migrating from ColdFusion 5 to ColdFusion MX 7:

Although this article was written for migration to ColdFusion MX, which is 2 full releases earlier than ColdFusion 8, many of the topics covered will apply to ColdFusion 8 as well:

The previous link also mentions the Code Compatibility Analyzer. You can use the ColdFusion Code Compatibility Analyzer to determine if your code is valid for ColdFusion 8:

I recommend also this link for ensuring your migration from ColdFusion 5 will at least be compatible with ColdFusion MX:

I recommend reviewing the tag and function changes to ColdFusion. Be sure to note the addition of functions with names that collide with user-defined functions in your code (for instance, ColdFusion 8 introduced the isImage() function; if your code has a user-defined function called isImage() you will need to change the name of that user-defined function and all references to it in your code before upgrading to ColdFusion 8):

You may also wish to check the CFML Language History:

It's very important to read the release notes in case some might apply to your environment:

Many of these upgrading best practices from Adobe's Sarge Sargent's blog will certainly apply:

For even more helpful info, visit this blog post from Charlie Arehart:

And finally, when you're ready to install ColdFusion 8, you'll want to review the "Installing and Using ColdFusion" documentation:

Still have questions? First, visit the Installation section of the ColdFusion Support Center. If you can't find your answer there, feel free to contact me or, particularly if your question is one you believe would benefit other readers of this post, add a comment on this post.

One final note: Adobe offers implementation consulting for a fee; if you would like more information on this offering, please contact me.

ColdFusion 8 Enterprise Now FREE for Qualifying Educational Use

As announced at CFUnited 2008, ColdFusion 8 Enterprise is now FREE for qualifying educational use!

One big point I want to make up front: ColdFusion 8 Enterprise in a production environment at even a qualifying institution still requires a commercial license. For more details on this andother important program details, please see the following links:

Bad Marketing, Part 1

I find myself regularly surprised at some of the downright confounding marketing decisions I see made out there. Now, I'm a detail-oriented person so I sometimes catch things that most people wouldn't, but some of these things are glaring. Everyone makes mistakes, but when it's something like a TV commercial, I would think that there would be multiple content reviewers to prevent those mistakes from making it out into the wild. Yet today, I heard this in a commercial:

Don't shop around, call [offending company] first.

So much for content reviewers! Maybe it's just me, but the first thing I thought was "why are they telling me not to shop around?" Well, actually the first thing I thought was how arrogant it is that they would presume to tell me what to do, but once I moved past that I was left with the aforementioned question, to which I could only conclude that they have something to hide. Now, maybe they do have something to hide and maybe they don't--it doesn't really matter because at this point they have put the seed of doubt in my mind and I don't trust them. And that's what I call Bad Marketing.

Make Sure USB Connection Not Interrupted When Updating iPhone

I just plugged my iPhone into my MacBook Pro via USB and was immediately informed that there was a new version of the iPhone software available and I was asked if I wanted to install that software. I clicked yes and the process started. While it was doing its thing, I moved over into my Windows XP instance running in VMWare Fusion. Well, part of the process of updating the iPhone involved the iPhone restarting and when it restarted, because I was using VMWare Fusion, VMWare Fusion grabbed the USB connection and this completely hosed the iPhone. Let me be clear: it didn't just mess up the update, it hosed the iPhone--meaning it wouldn't work at all. It isn't that the iPhone connecting to the Windows XP instance in VMWare Fusion hoses the iPhone inherently; in fact, in a normal circumstance, connecting the iPhone to the Windows XP instance in VMWare Fusion would be no problem at all. What is a problem, however, is the iPhone losing the connection to iTunes in the middle of the update process.

So my only choice was to restore the iPhone to factory settings and from there to restore the phone's settings from a backup. I'm not sure that before beginning the update iTunes bothers to do a backup of your iPhone (if it doesn't, it sure should and I recommend that you do your own backup before letting iTunes do a software update), but in any case it seems I was able to restore from a recent enough backup that I didn't lose much, if anything. Because I'm using over-the-air Exchange synchronization, my most imporant data (Contacts, Calendar, Email) are not synced via iTunes so fortunately there was no risk of losing any of that data.

But even though in the end I lost little to nothing, the whole process of restoring is long and a rather big pain in the butt. So for that reason alone, I highly recommend avoiding it at all costs--and that means making sure the USB connection between your machine and your iPhone is not interrupted when you're updating the iPhone's software!

Incidentally, even after restoring from a backup, I had to completely re-do my settings for my Adobe Exchange account (I'm guessing that the certificate for the phone can't be backed up). Also, although my setting for syncing an image directory on the MacBook Pro to the iPhone was still present, the image in the directory (I only have 1 image in that directory) was not on the iPhone until I did another sync and, because I use that image as my Wallpaper, I had to reset my Wallpaper after I synced the image back to the iPhone.

Creating an RSS Feed Using <cffeed> with a Structure

The Adobe ColdFusion 8 documentation has a ton of great information on the <cffeed> tag, including a nice example of how to create an RSS feed using <cffeed> with a structure. There's no need to rehash that information, but I do want to expound on it to explain how you specify categories and enclosures as well as guid info for an item in a feed because I think specifying these for an item in a feed is a little tricky. So what I'm going to do is take the above example as a starting point, adding in the code that demonstrates how to specify categories and enclosures and guid info for an item and removing some non-essential code so as not to overly complicate things:

<cfsetting showdebugoutput="no">

<cfscript>
   /* Create the feed data structure and add the metadata. */
   myStruct = StructNew();
   myStruct.link = "http://" & CGI.HTTP_HOST & CGI.SCRIPT_NAME;
   myStruct.title = "My RSS Feed";
   myStruct.description = "A demonstration of <cffeed>";
   myStruct.pubDate = Now();
   myStruct.version = "rss_2.0";
   
   /* Add the feed items. A more sophisticated application would use dynamic variables
      and support varying numbers of items. */

   myStruct.item = ArrayNew(1);
   myStruct.item[1] = StructNew();
   myStruct.item[1].category = ArrayNew(1);
   myStruct.item[1].category[1] = StructNew();
   myStruct.item[1].category[1].value = "Cat1";
   myStruct.item[1].enclosure = ArrayNew(1);
   myStruct.item[1].enclosure[1] = StructNew();
   myStruct.item[1].enclosure[1].url = "http://" & CGI.HTTP_HOST & "enc/myenclosure.mp3";
   myStruct.item[1].enclosure[1].length = 1212;
   myStruct.item[1].enclosure[1].type = "audio/mp3";
   myStruct.item[1].description = StructNew();
   myStruct.item[1].description.value = "The first item in the feed";
   myStruct.item[1].guid = StructNew();
   myStruct.item[1].guid.isPermaLink = "Yes";
   myStruct.item[1].guid.value = "http://" & CGI.HTTP_HOST;
   myStruct.item[1].title = "Item 1";
   myStruct.item[2] = StructNew();
   myStruct.item[2].category = ArrayNew(1);
   myStruct.item[2].category[1] = StructNew();
   myStruct.item[2].category[1].value = "Cat1";
   myStruct.item[2].category[2] = StructNew();
   myStruct.item[2].category[2].value = "Cat2";
   myStruct.item[2].description = StructNew();
   myStruct.item[2].description.value = "The second item in the feed";
   myStruct.item[2].guid = StructNew();
   myStruct.item[2].guid.isPermaLink = "Yes";
   myStruct.item[2].guid.value = "http://" & CGI.HTTP_HOST;
   myStruct.item[2].title = "Item 2";
</cfscript>

<cffeed action = "create"
   name = "#myStruct#"
   xmlVar = "myXML">


<cfcontent type="text/xml" reset="true"><cfoutput>#myXML#</cfoutput>

Please note the following:

  • The code was specifically written without external dependencies so that it will work on any ColdFusion 8 installation.
  • <cfsetting showdebugoutput="no"> can be a lifesaver when working with <cffeed>--I was tearing my hair out for a bit until I had that head-slapping moment when it dawned on me why I kept being told by the browser that the feed was invalid.
  • I consider it good coding practice to always scope variables, even those in the Variables scope. The only reason the above code doesn't use scoped variables is to keep it as similar as possible to the example code referenced at the top of this post.
  • If you're looking for information on the metadata properties for the feed itself, see Ray Camden's blog post on the subject.

Emulating Task Lists on iPhone with Calendars

Without any implication that it's at all okay that Apple hasn't bothered to implement a Task List application on the iPhone, here's a method I thought up to emulate task lists using the Calendar application:

  1. In your computer's Exchange client (you can't do it on the iPhone; you have to use Outlook or Entourage or whatever on your computer), create a new sub-directory of your current Calendar (and make sure you set it to be of the Calendar type). Call it Tasks.
  2. Repeat the above step with the exception that this time call the sub-directory Completed Tasks.

Pretty simple, huh? So how do you use it? Well, when you enter the Calendar application on the iPhone, you'll be able to view the calendars for your Exchange account (when you're in the Calendar app looking at the main view, you should see in the upper left-hand corner a button labeled "Calendars" that will take you to view the calendars). You'll see that you can view just one calendar or all of your calendars; as you may also know, your main view choices include List--so you can choose to view the "Tasks" calendar and view it as a List, very much as you would expect to view tasks in a Task List application. And of course you add a new task by creating a new calendar item in the Tasks calendar.

Unfortunately, there's no way to designate a calendar item as complete; that's why I use the second calendar called Completed Tasks. But there's one more unfortunate thing (referenced in my iPhone 2.0 Insights blog post) that comes into play here: you can't move calendar items from one calendar to another on the iPhone. Totally inexplicable pain in the butt, but it isn't the end of the world to just move the items over on your computer (if you don't care about completed tasks, you can always just delete them on either the iPhone or your computer and not worry about the Completed Tasks calendar).

Using 2 directories and calling them "Tasks" and "Completed Tasks" is just my choice: obviously, you can change the names of the calendar sub-directories as you see fit and you can create more than just 2 if you'd like.

Note: this definitely works with iPhone synched up over the air with Exchange; it may or may not work in other configurations (all I can say is that prior to synching over the air with Exchange, I was not aware of any way to synch with multiple calendars nor to view multiple calendars on the iPhone).

Note: I am aware that there are 3rd party Task List applications available for iPhone, however, given that none of those are able to synch with Exchange, they do not suit my purposes. I also don't know if any of those can alert me like calendars items can.

Fixing Inverted Caps Lock on VMWare Fusion, Parallels, or Remote Desktop

UPDATE: although this post was originally written in regards to running Windows in VMWare Fusion, as pointed out by multiple kind people who have commented on this post, this information is also useful for those accessing Windows through means other than VMWare Fusion including Parallels and Remote Desktop. Accordingly, I have changed the title of the post to include Parallels and Remote Desktop.

I use a MacBook Pro and on it I run VMWare Fusion on top of which I run Windows XP. Normally, when Caps Lock is on in the Mac, it's on in the Windows XP instance and when Caps Lock is off in the Mac, it's off in the Windows XP instance. However, from time to time, on the Windows XP instance Caps Lock becomes "inverted"--that is, Caps Lock on the Windows XP instance is reversed from what it is on the Mac. So on the Mac, Caps Lock will be off and on the Windows XP instance, Caps Lock will be on. Or, the Mac Caps Lock will be on--and so will be the light on the Caps Lock key--yet the Windows XP instance Caps Lock will be off.

Okay, now that I've established the problem, I'll go ahead and explain the solution, then for those interested, I'll backtrack into the details.

UPDATE: there is, at least in VMWare Fusion 2.0, a simpler solution than I originally detailed in this blog post (that original solution and my explanation of the cause of the problem are still included below): go to the Virtual Machine menu in VMWare Fusion and choose Send Key ==> Caps Lock. You'll note while you're there that there are a number of other keys you can send as well; I discovered this whole capability tonight while looking around to try to find a way to send the Insert key (Insert had gotten toggled on in Internet Explorer and I wanted to toggle it back off) which I didn't know how to do directly because the MacBook Pro keyboard has no Insert key.

UPDATE: as pointed out by Bob in one of the Comments to this entry, another simple solution is to launch the On-screen Keyboard application (generally this can be done by choosing Start ==> All Programs ==> Accessories ==> Accessibility ==> On-screen Keyboard; as noted by DrFooMod2 in a comment below, you can also bring up the On-screen Keyboard by typing "osk" without the quotes in the Windows Run... box) and toggle Caps Lock by clicking on the virtual "lock" button in the application. The On-screen Keyboard application shows--and can change--the state of Caps Lock in the Windows XP instance without any regard to the state of Caps Lock on the Mac itself.

So here is the solution: in the Windows XP instance, open an application that can toggle Caps Lock (didn't know Windows apps could do such a thing? Surprise!) such as Microsoft Word and go into whatever context is required for the app to toggle Caps Lock (in Word, that means typing in a document). Make sure Caps Lock on the Mac is off; this will mean that Caps Lock in the Windows XP instance is on. Start typing normally (that is, as if Caps Lock in the Windows XP instance is off); if you try to type "Hello" what you'll get instead is "hELLO" but as soon as you hit the space bar, the app will "correct" what you typed to "Hello" and toggle the Windows XP instance Caps Lock off--and as a result, Caps Lock will be back in synch between the Mac and the Windows XP instance. :)

Why does this problem happen in the first place? You've probably figured at least part of that out already: when you use an app that can toggle the Windows XP Caps Lock and you have Caps Lock on but type in a way that the app thinks indicates Caps Lock is on unintentionally, it "helps" you by "correcting" what you typed and turning off Caps Lock on the Windows XP instance for you. This isn't necessarily a bad thing--in a standalone Windows XP instance. However, with consideration to the fact that in this case it causes the Windows XP instance to toggle its Caps Lock but doesn't do the same for the Mac such that the Windows XP Caps Lock and the Mac Caps Lock become out of synch, it's not good. And why doesn't the toggling of Caps Lock in the Mac instance cascade up to the Mac anyway? As well as I can tell, Mac applications do not have the ability to toggle Caps Lock on and off (side note: this makes complete sense when you note the difference between what Windows & Mac do when you press the shift key while Caps Lock is on: on Windows, it's sort of a "double negative" type of thing such that the result is a lowercase letter whereas on Mac, the result is still an uppercase letter--so then it wouldn't make sense for the app to toggle Caps Lock) which means that VMWare Fusion can't toggle Caps Lock on the Mac when it is toggled in the Windows instance (now, I'm not even sure that VMWare Fusion can detect Caps Lock being toggled in the Windows instance but if VWWare Fusion can't toggle it on the Mac then really it's a moot point whether or not it can detect it being toggled in the Windows instance).

One note of interest: the behavior here makes it clear that the Mac-VMWare Fusion-Windows XP instance communication isn't along the lines of "Caps Lock on" or "Caps Lock off" but rather "toggle Caps Lock." See, you'll note that I didn't indicate that to fix the problem you just have to hit the Caps Lock key on the Mac and it will get things back in synch--that would work if the communication were "Caps Lock on" or "Caps Lock off" but since it's just "toggle Caps Lock" all that happens is that the Caps Lock gets reversed the other way around!

UPDATE 2012-07-27: this blog post is 2 days shy of being 4 years old and it's still generating comments! One such comment below states "Here is a simple solution (work around) that worked for me for inverted caps lock (same for num lock). When you are on VM or NXClient press 'alt'+'ctl'+'del', then press the caps lock(same for num lock). Then press 'escape'. Hope this works." I haven't tried this but wanted to pull it up here in the blog post in case it's of help to you. Thanks for the tip, Partha.

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9.002. Contact Blog Owner