Microsoft Word adding an extra space before colon

When looking at my blog analytics, I noticed an intriging thing: my most read post is a very old one, one I wrote more than 8 years ago. And yet, people seem to like to info that’s on there, as I regularly get comments and thank you’s from people that were close to insanity not understanding why sometimes Microsoft Word is automatically adding an extra space before a colon.

If you have been struggling with this as well, read my post of March 2008.

Removing even more annoying context menus

Building further on my series of posts to get rid of annoying context menus, another list of things to remove:

  • 3D Print with 3D Builder context
    • regedit: remove subkeys
      HKEY_CLASSES_ROOT\SystemFileAssociations\.bmp\Shell\T3DPrint
      HKEY_CLASSES_ROOT\SystemFileAssociations\.jpg\Shell\T3DPrint
      HKEY_CLASSES_ROOT\SystemFileAssociations\.png\Shell\T3DPrint
  • Cast to Device (*)
    • Add the following String value to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked:
      • Key: {7AD84985-87B4-4a16-BE58-8B72A5B390F7}
      • Value: Play to Menu
  • Scan with Windows Defender
    • regsvr32 /u "C:\Program Files\Windows Defender\shellext.dll
  • Burn with Nero
    • Run C:\Program Files (x86)\Common Files\Nero\NeroShellExt\x64\shellreg64uninstall.reg

(*) Only disappears after reboot

2 Javascript discoveries

If you are an experienced Javascript developer, the following will not come as a surprise to you, but for those who might be struggling with some of the quirks of this otherwise pretty useful language, I’d like to share 2 discoveries. I spent quite some time trying to understand why certain code wouldn’t do what I intended and after several frustrating hours, I finally found that

  • Javascript is not a pure “pass-by-value” language, as I thought. When passing an object to a function, any changes to the internals of that object within the function, will alter the object outside the function.
  • A long-running JavaScript will freeze the browser, preventing it from being updated, so any visual changes will not be visible, until after the processing has finished.
    • Solution: Add a delay (even a 0ms delay) between making a visible change, and starting the script. Add this delay using setTimeout():
      $("#xxx").addClass("changing");
      setTimeout(function () {
      // process long scripts
      }, 0);
      

Background:

  • Some complex code on one of my websites didn’t behave properly, even though the code looked fine. Eventually I learned that an object that I passed to a function should not be altered within that function, as it directly changes the object itself, rather than a copy, which would be the case in a pure “pass-by-value” language. See http://nsono.net/javascript-pass-by-value-or-pass-by-reference/ for details.
  • I’m using the powerful datatables plugin on my websites. As some tables contain a lot of columns, I wanted to provide shortcuts to dynamically show or hide certain columns. You can do that with the column().visible() method, but as the table is large, it takes a few seconds to see the result. I therefore wanted to show the user that some processing was going on, with a small popup or by adding a “changing” class to a DOM element. However, these visual changes did not show, or better, they only showed AFTER the processing was done. I really didn’t understand why it was not working, until eventually http://stackoverflow.com/questions/20048357/loading-overlay-with-datatables gave a clue: “A long-running JavaScript will freeze the browser, preventing it from being updated.” Using setTimeout() with a delay of 0ms finally solved it.