Control multiple PCs with single keyboard and mouse

A software KVM approach is sometimes a good solution. While setting up a new PC I had to access the older PC. I used to use Synergy, but could not find if that software is still around.

Now I’m using ‘Mouse without Borders’. It allows me to control the two PCs, Windows 7 and Windows 10. Works very well. It also shares the keyboard and copy and paste.


Windows 7 Startup Repair can take a very very long time

My PC crashed. This time it boots into Startup Repair screen. For those who haven’t experienced this fun example of high technology, it is a dialog box that says, a check for problems will take a few minutes and a repair could even last an hour. The horror of this dialog is that you don’t know if it is working or just hung. It uses a animated “progress” bar. The blue just goes left to right and repeats.

It kept running so long I just stopped the PC (long power button press). Note, many on web warn about interrupting this repair! I’m so tough, I interrupted it multiple times; it ain’t the boss of me. Anyway, I gave up, let it keep running. I figured the hard drive light is blinking every few seconds and then a few rapid flashes. Maybe it is doing some bit twiddling on the hard drive.

It took approximately 72 hours!!!! At the end I was able to log into Win 7. Of course, the Law of Large Numbers, five minutes later the mailman dropped off a new PC I ordered online.

Ok, I logged in. It’s working. I take back all the trash talk on Windows. But, wait … I said to myself, hmmm, if there were disk errors, I should run a checkdisk and sector scan. So I pick those on the C drive and reboot. Now no screen at all, and the hard drive light is on all the time. Oy veah.

Let me work on the new Windows 10 PC. A cheap box, but the processor is not too shabby An Intel Core i5-6400 CPU @ 2.70Ghz.

HomeGroup can’t connect. There is already an existing old HomeGroup. WTH!

1. The checkdisk and sector scan finished. System still running. Yes, these two took hours, and worse than a progress idiot box is no UI at all.

2. HomeGroup. Followed some steps given on web. Did not work. I found these instructions that did work:
BurrWalnut writes: “Go to Control Panel > All Control Panel Items > Homegroup > Leave the Homegroup and click Leave the Homegroup. If all the computers leave the Homegroup, it will no longer exist, so it‘s effectively deleted and can be setup again.” Weird.

The same person writes: “A home group with no connected computers is like a god with no worshipers; neither can exist.” That is deep!!!

3. The HP Hardware Diagnostic Tools just ran and I got a failure of the SMART Short Self Test Failed (Error Code HD521-2W). Hard drive failure is imminent.

Windows mouse pointer disappears on second monitor

Started happening recently. Maybe an upgrade or some new glitch in system caused it. Experimenting, and found that turning on the Mouse’s Pointer trails eliminated the problem.


  • Windows 7 Professional
  • UltrMon 3.2.2
  • HP PC p6230y
  • AMD Phenon II X4 810 Processor 2.60 GHz
  • System Mouse driver

Related Links

BitTorrent sync: Unable to start updater process

On Windows 7, an attempt to automatically update BitTorrent Sync (BTSync) fails.

On the BTSync application one receives a notice that there is a newer version, and then clicks on the Update button.
A warning popup windows is displayed:

Unable to start updater process! Please download the newest version manually on ....
Failed to launch exe  C:\Users\.....AppData\Local\...\utt57AC.tmp.exe

When this happens you may find an entry in the Windows Event Viewer management tool. Here is a snippet of the information in the log entry:

Log Name:      Application
Source:        Microsoft-Windows-SoftwareRestrictionPolicies
Level:         Warning
Description:   Access to C:\Users\...\AppData\Local\Temp\utt57AC.tmp.exe has been restricted by your Administrator by location with policy rule ... placed on path C:\Users\...\AppData\Local\*\*.exe.

Add an exception to the Local Security Policy on the computer?
Nope. Many attack programs like the CryptoLocker Ransomware infection use the AppData\Local file path as temporary storage locations.

Manually install the new version?
Download the latest version manually from the BitTorrent Sync web site and install. It does keep any previous configurations.

Related Information

At Cryptolocker: How to avoid getting infected and what to do if you are, there is good advise regarding use of the “hide file extensions of known programs” setting in Windows; users are making it easier for malware authors:

The virus is, of course, an executable attachment, but interestingly the icon representing the executable is a PDF file. With Windows’ hidden extensions feature, the sender simply adds “.pdf” to the end of the file (Windows hides the .exe) and the unwitting user is fooled into thinking the attachment is a harmless PDF file from a trusted sender. It is, of course, anything but harmless.


Windows file symlinker gui

Windows has the ability to create file links. Not the regular “shortcuts”, Linux like links.

This is hidden in a shell command called MKLINK. Many people are not comfortable with a command shell (even many developers!). I sometimes just want to stay in the graphical view too.

Example Use
Just downloaded the new Groovy 2.1.0-rc-1 to check it out. I put my tools in a versions folder and then I create a directory link to the version I currently use. I wrote about this in “Switching between versions of tools“. So, when I install this new version a directory list (dir groovy) would look like this.

C:\java>dir g* | find "groovy"
01/10/2013  09:08 PM    <JUNCTION>     groovy [C:\java\GroovyVersions\groovy-2.1.0-rc-1]

This would usually be created with the mklink command as follows:

mklink /D groovy GroovyVersions\groovy-2.1.0-rc-1

With symlinker:
“The goal is just make it easier to create symbolic links, hard links, or directory junctions, using a pretty simple interface, so no more bogus command line to do it… ”

Is there any gui linker that allows you to create the link in the current explorer location? Yes, we can create a shell extension and all that, but shouldn’t computers make this easier to do? On symlinker’s project site, a user asks for this capability.

Ok, so it is graphical and looks good. However, now you have to fill in two input fields that require you to navigate using Windows explorer, where to create the link and then where to point the link. Using the command line is faster especially if you use tab-completion. You can use the Windows explorer window and type, of course, however, the “completion” there is more awkward.

Anyway, recommended tool for occasional link creation in Windows.

Tool Switching
The approach above is easy and works. If you need to switch a group of tools and libraries to different versions, that is more complex, perhaps even in the realm of package managers. In Windows there are no lightweight frameworks for this. On Linux there are tools like GVM.

Window limit reached on Android

I’m getting this alert message with the alert box information of “Can’t open a new window until you close one”.   Well sure, that makes sense and yet it doesn’t.


Well, for those who are not into tech here is the quick rundown.  If you were not on a smart phone or maybe tablet, these windows would be called browser “tabs”.  On my phone the limit is 8.  Thus, you just have to close one. That is, in this particular situation, window === tab, and this browser won’t allow many tabs.

Another option is to use another Web Browser. I’m now trying the Google Chrome browser available for Android. On Jelly Bean you can even replace the default browser link icon on the bottom toolbar of the screen with the Chrome one.

How to close a tab in browser

On my phone you scroll to the top of the current web page, and in the top right of the browser app,there is a button, widget, or something that you have to click.  This gets you into the ‘menu’ where you can close some of the open windows.  On my Samsung Note with Android 4.0.1, the button is an icon of cascaded rectangles.  I read that on other phones it is a vertical series of dots.

Note that on web sites they say you have to go into the menu to close a browser window.  Not really true, afaik, there is no old style browser menu.  If you go into the phone menu or soft key and close the browser you are closing the application, not a browser window or tab.   I know, what a mess!


This is so bad.

  1. Prior to my update to Android 4, aka Ice Cream Sandwich, I never had this problem.  So, it is this browser.
  2. It takes too much effort to close those windows.
  3. It takes too much time to close even one window.
  4. This whole thing is dumb.

Instead, why not just prompt or do something to offer a quick solution.  Like:

  • Offer or automatically reuse least recently used window?
  • Offer list of windows and single click to reuse one.
  • Put a link in the alert box to allow single click to go into the window list and close cha cha.
  • Not have a limit.

2013-05-02: The Chrome browser for Android handles multiple tabs much better than the stock browser, at least on my Note. You can have many, resize, order, scroll them, “… all kinds of moves.”

How to Measure User Interface Efficiency

My frustration level reached a peak while using a mobile phone.  So, again, I’m thinking about GUI design.  Why are the interfaces so bad and how to fix them?

First step is just figuring out how to measure the badness.  There are plenty of UI measures out there and many papers on the subject.  BTW, I’m just a developer grunt, coding eight hours a day, so this is out of my league.  Yet, the thoughts are in my head so ….

To get to a goal takes work.  In physics, W = Fd.  Work equals force times distance.  No direct correlation to user interface.  But, what if W is equal to user interface element activated times number of possible objects to act upon, i.e., W = U x O.  Work equals UI force times number of options.  This ‘force’ is not a physical force or pressure, of course.  It is a constant mathematical value.

Example, you click on a button and then you are confronted with a choice of five options.  Lets say you are reading a web page and you want to share it with someone.  This takes too much work, way too much.  Even getting to the sharing choice is monstrous; click the menu button, click share, find which method of sharing, get to contacts app, blah blah.

So, here is what we have.  Activating a user interface element is a force; each type of element is given a constant value, a button is 10, a scroll bar is 100, and so forth.   The number of options that results and is relevant toward the end goal is the ‘distance’.

Now you divide this resulting value by how much time it took you to get there and you have Power.   P = (U x O)/T. (Update 7/26/2013: Probably a better dimension is actual distance of pointer movement or manipulations).

Add these up for each step in completing the goal and you have a metric for an interface user story.

Why use the number of options for distance?  The number of options presented to the user is stress. Kind of related to Hick’s Law, “The time to make a decision is a function of the possible choices he or she has”. If computers and software were not in the 1960s (face it modern stuff is just fancy screens) they would know what the hell I want to do.

A follow up post will give the solution to this User Experience Design (UXD) or Interaction Design (IxD) problem, and the solution is actually pretty easy.


Created the follow up:  Proactive Interface

Related Posts


Access virtual storage with UNC and mklink on Windows

many ways to do this and of course corresponding security concerns. My quick approach was to just use file directory symbolic links.

I set up a Tomcat app server on a ‘virtual’ hard drive. The virtual drive is assigned a local hard drive letter. But when a Groovlet attempts to access a local file, the file path used is on the default local drive, C:. How to allow access to the non-local file?

Symbolic links
There are probably many ways to do this and of course corresponding security concerns. One of these is to use Universal Naming Convention (UNC) paths. My quick approach is to just use file directory symbolic links. These are supported in most windows versions. On Windows 7 the MKLINK command is available.

You want to access the folder w:\a\b\c on the virtual drive. On the “real” drive you create a link:

mkdir a\b
mklink /D c w:\a\b\c

Now when the app server accesses the “c” folder via a UNC, \\mymachine\a\b\c, it will find it.

Show hidden windows utility on PC

Sometimes a program may crash or show deranged behavior and one of the dialogues cannot be accessed. I remember years ago I used a utility that could show these hidden windows. Good luck searching on web for something like “show hidden windows” or better phrases. You won’t find it. Well, yea, you could. I did.

Sometimes a program may crash or show deranged behavior and one of the dialogues cannot be accessed. This just happened to me. A program looks like it is stuck in a thread issue. When I look on its thread list it seems to be waiting for user input. There is no dialog visible. Clicking on the program’s window just gives the waiting mouse pointer. Sure you can just kill the program but this may not help you find out what the problem really is.

I remember years ago I used a utility that could show these hidden windows. Good luck searching on web for something like “show hidden windows” or better phrases. You won’t find it. Well, yea, you could. I did. But, I’m good, smirk.

Note that this utility is pretty basic, just shows a list of window objects. Some of them should not be unhidden, they will lock the utility itself or cause other problems. Perhaps there is something out there that is better? Seems this should be part of the Sysinternals utilities.


  1. Unhider
  2. Windows Sysinternals

Using Powershell instead of cygwin for scripting

Now cygwin is awesome, bringing some of the best tools from *nix. However, with Powershell, Microsoft finally transformed the Windows command line into a powerful and usable administration resource, and unlike *nix scripting, based on Objects, not text.

In this blog entry, Windows Tricks For Whacking Lingering Java Processes …, the author resorts to the cygwin linux shell to automate an admin need.  Now cygwin is awesome, bringing some of the best tools from *nix.  However, with Powershell, Microsoft finally transformed the Windows command line into a powerful and usable administration resource.

Below a line from the bash script the author used to find each process given a process name and then loop thru each process ID and terminate it.   Note how the script requires a good understanding of bash scripting and in addition multiple Linux utilities  ps, grep, and sed.   The most important line in the script is:

found=` ps -aW | grep $procText |  sed -e's/^s*([0-9][0-9]*).*/1/' `
Here is how this works.
ps -aW:   show all processes and windows too.
grep $procText:   only use lines that contain the command line string
sed -e:   run stream editor inline
s///:   substitute
^s*:  all beginning white space
([0-9][0-9]*):  find two or more digits, remember these.
.*:  any characters.
/1/:  replace with the found digits

Very complex!!!! But, to *nix users this is nothing. Its even fun to do. With a Linux command line you can rule the world. Note that in the above script line, it’s just text processing.

Powershell has a different approach. In Powershell one works with objects (in the OOP sense). Thus, instead of transforming everything to text, one manipulates properties of objects. One pipes object instead of text.

To do:
Show how to do this in Powershell. Unfortunately, wrote the above a long time ago and lost what little Powershell mojo I was developing. Any help?

3/18/12: The powershell approach will probably be expanded from something like this, which just lists the processes by name and process ID:

$strComputer = &quot;.&quot;

$colItems = get-wmiobject -class &quot;Win32_Process&quot; -namespace &quot;rootCIMV2&quot; `
-computername $strComputer

foreach ($objItem in $colItems) {
      write-host &quot;Name: &quot; $objItem.Name
      write-host &quot;Process ID: &quot; $objItem.ProcessId