Jensen Harris, the author of the excellent and very useful KnockOut utility for Outlook has agreed to let me bundle KnockOut with TEO 3.0 when it is released later this year. This is very cool because it will expose more people to the utility and TEO users will be able to easily include it in the installation to compensate for Outlook shut down issues.

All too frequently do I get an email from a user who doesn’t see the TEO menu after installing because Outlook was invisibly open in the background because of something like ActiveSync or another add-in. And once TEO is installed and working there may be times when Outlook refuses to shut down even when you think that it has. KnockOut allows you to monitor and control these invisible processes with a simple intuitive tray menu.

Although I take every precaution that I can to prevent Outlook shut down problems, the reality is that Outlook with Add Ins and external apps like ActiveSync will sometimes just not shut down on its own. Now TEO users will be able to fight back against processes that refuse to die!

Oh and by the way, KnockOut is a free download. You don’t have to wait for TEO 3 to get it. You can download it now.

Since I got this Motion, I have been having a major problem with Standby and Hibernate in XP. The options worked just fine if I used the Start Menu to bring up the options but after a defined period of inactivity, the computer would never go into Standby or Hibernate.

The weird thing was, the monitor *would* turn off after the specified period of inactivity.

I thought first that an application may have been denying standby in the WM_POWERBROADCAST message so I fired up Spy++ and watched but this message never happened.

I searched Google Groups to no avail, then I downloaded Speedswitch XP and started dicking with some of the advanced power options which really had no effect.

Finally, I started shutting down apps and services one by one and Indexing Service was to blame. To confirm this, I searched Google Groups again but this time with “indexing service” in the query and confirmed my suspicions.

I guess I installed Indexing Service pre-emptively because I assumed MSN Desktop Search needed it. I don’t know why I thought that but I uninstalled Indexing Service and now Standby and Hibernate work fine (except for that damned 1.5GB memory bug…) and MSN Desktop Search still works.

Hopefully someone will come across this in their search and save themselves some time.

Just noticed I have exceeded the 10,000 download mark over on TabletPCPost.com. I wanna thank Lora, Loren, Layne, and any other Heiny that contributed to that site. It truly is an awesome place to list your Tablet PC software.

Let’s make it another 10,000 real soon with TEO 3!

I’m off to go camping for the weekend with Heather. I will have my cell phone with me but I don’t know if there’s any EVDO coverage so I may or may not be checking support email while I’m gone. I am gonna be working on TEO there cause I’m not really into camping much.

Made a ton of progress last night (thanks, Stacker 2) but I’m still having some trouble with DynamicRenderer.Refresh(). It’s just an annoying visual glitch right now. But anyway, the new window management is completed and working and TEO forms are loading much faster in 3.0. I had to scrap the standard XP-themed tab control (again) because it does not paint quickly when using transparent controls. Since there’s a lot of tab switching going on, there’s a lot of paint operations. So I’m back with SandDock again.

All of you who have asked for larger input areas will get your wish! But those of you with ultra portables, don’t worry there is a special layout manager for smaller screens that will optimize the UI for your display.

As I work diligently on TEO 3.0, one of the things I am writing completely from scratch is the input control. This handy little “ink text box” is the rounded rectangular region in which you write in TEO. I feel that my ink text box has a number of advantages over controls such as InkEdit, the ink feature in InfoPath, and ink entry controls in other applications. Here are the four big advantages that I see:

  1. Ink to text conversion is an explicit mode switch
    That is to say that recognition does not happen automatically from the user’s perspective. (Though recognition is performed in the background for interoperability purposes.) The user chooses exactly when to convert the ink, if ever.
  2. Mode switching is fast! Not context menu driven, no dialogs.
  3. Eraser is fully supported
    Because of #1, the eraser can be used to give a more natural pen-on-paper experience. Scratch-out is also supported (and by the way, works much more predictably than in Journal, OneNote, and Infinotes!) for a faster (but less natural) erasing method.
  4. Field is still fully functional with a keyboard
    Many users don’t know this, but you can actually click into a TEO field and start typing to switch it into text mode. Part of the problem with this in 2.x is that there is no indicator that an ink control has the focus. This is being improved upon for 3.0.

But now let me get back to the title of the post. Better recognition in Tablet PC OS. As I am rewriting this control and finding ways to make it better, I am learning all sorts of new tricks that I knew existed but didn’t fully investigate in previous versions. For example, the recognizer can be provided a guide that tells it where you expect the user to be writing and how the position of the ink should be understood. In TEO 2.0 I didn’t use this at all. And while common requests were “make the fields bigger” and “give me a visible base line”, really what people were asking me without realizing it was to implement this guide.

TEO 2.0's input control

So for TEO 3.0, the guide will be fully supported for both Western/European languages and Asian languages which take boxed input. The guide will be drawn with an attractive decorator object that renders subtle rule lines like you’re used to as well as a dashed midline. This helps improve recognition greatly for two reasons. First, you know where to draw now. Secondly, the recognizer knows where you’re supposed to draw! Whereas before, you were both just guessing. Which, by the way, the recognizer is very good at doing. But every little hint helps.

TEO 3.0's input control (prototype)

This along with some very pretty visual enhancements to the control will make sure TEO’s input control remains, in my not so humble opinion, the best ink entry control (for fields) that exists.

As I sit here brainstorming how I am going to design my managed implementation of the Sylantro Application Interface (SAI) protocol, I am reminded that the benefit of the Tablet PC isn’t always about the ink. Sure that’s what first comes to mind, how useful it is to draw, sketch, write, etc. But there’s more to it than that.

I find that I am much better at the initial design on the Tablet PC because of its form factor. It allows me to be more relaxed and comfortable which lends itself well to the creative process. At first I’ll brainstorm some ideas in TEO’s Journal, but soon I’m moving to the VS.NET 2005 Class Designer to start laying out the object model. This is where I find that I work better on the tablet. Sure it’s more time consuming to enter class names and member names with the TIP, but for some reason, with the tablet, my thoughts flow better and ideas come more easily and I’m less distracted. All the while I’m using the tablet in slate mode but not using a pixel of ink.

So this is the message that I think sometimes gets lost when talking about the Tablet PC. It’s not always about the cool things you can do with ink. It’s about having a highly portable full fledged Windows XP computer with a flexible form factor that lets you use it just about anywhere.

Now I just gotta wait for all 3.8 GB of VS.NET 2005 to download to my tablet since I deleted the ISO. :(

Thanks to Lora and Loren for hosting www.tabletpcpost.com and I’m proud to announce that TEO has once again pulled ahead to become the #1 most popular download.

o_MostPopular

But this time it has nothing to do with ink or pen at all. I’m finding myself wanting to have a conversation with Outlook about things. I started digging into the SAPI framework (which Tablet PC guru, Arin Goldberg also contributed to — what can’t this guy do?) and found that it’s not all that hard to get a reliable conversation going between you and your PC. Even with the crappy mic in my Electrovaya.

Expect to see some demos of voice enhancements to TEO at Microsoft Windows Anywhere.

For a guy that hates to fly, I’ve sure got a lot of it coming up. Microsoft is being kind enough to accommodate me at Microsoft Windows Anywhere, a conference for Tablet PC developers and enthusiasts which is located in San Francisco, CA. I of course live outside of Philadelphia so I have about a 6 hour trip. The conference is Feb 6-10 but you’ll need a lot more than Tablet PC’s and fellow geeks to pry me away from the Superbowl. Especially since I’m sure the Eagles are going.

Once that’s done, I will be representing Einstein Technologies as an attendee for VON the VoIP conference in San Jose, CA March 7-10. Another 6 hour trip, only this time with a stop. Twice as many takeoff’s and landings. Sigh.

I have a completely irrational fear of flying. I hate it. Scared to death of it. All I can think of are engines falling off, failing during takeoff, landing gear not coming down, etc. Terrorists don’t scare me. We know now how to deal with terrorists. Human error and mechanical failure scares me. After all, I want to make it long enough to get to Mars, don’t I?

In my previous post I talked about the nightmare I was having trying to get TEO 2.0 to load on a customer’s machine. This happened to more than one person and I couldn’t figure out why or even fix it until I stumbled across the fact that installing it on another user account and choosing the Help -> Detect and Repair could fix it.

But I still didn’t know why it happened. Apparently there is this barely documented “feature” of Outlook that disables AddIns during load if Outlook detects that the AddIn was not loaded successfully. Why that happened is another issue altogether that I have to try and solve.

AddIn’s currently have a LoadBehavior registry value that is typically “3” for enable at startup and “2” if the AddIn is disabled. The TEO installer always resets this to “3”. This registry key can be found at HKLM\Software\Microsoft\Office\Outlook\AddIns\(YourAddIn’sConnectProgID).

There is also a HKCU flavor of this key so your AddIn can be in either one. If you are in the HKLM section, your AddIn will *not* show up in the COM AddIns dialog within Outlook. For this reason, I am considering making TEO 2.0 use the HKCU even though it would require that each user reinstall TEO.

But you would think that Outlook would simply set this LoadBehavior to 2 when the AddIn crashes just like it does when it can’t find the AddIn. But that is not the case! If the AddIn experiences a problem during initialization, Outlook will prompt the user that the AddIn caused a problem and would you like to disable it. The user will of course always choose “yes” and this is where the problem starts.

Outlook creates a new item in HKCU\Software\Microsoft\Office\11.0\Outlook\Resiliency\DisabledItems that contains some cryptic hashed value of your AddIn. If your AddIn is listed here, forget about it! Outlook will not load it again. You can remove and reinstall the application as much as you like but that key never gets overwritten so the AddIn never gets loaded.

What I don’t understand then is that even when the AddIn is registered in HKCU, and you can see it in the COM AddIns, you can’t simply check it to re-enable the AddIn. The LoadBehavior can still be “3” but Outlook won’t load the AddIn.

How do you fix it? Well before I realized this Disabled Items button in Help -> About was different than setting the LoadBehavior to “2”, we fixed it by having the user log on as another user. Notice that the DisabledItems key is stored in HKCU so the new user can load the AddIn once again. Also doing a Detect and Repair with the “Reset my settings” check box checked will clear this DisabledItems key.

So by clicking Help -> About and then “Disabled Items” button, you should see the disabled AddIn listed there and you can enable it once again.

I’m glad I finally got this figured out because it’s going in my knowledge base.