It's also possible to use something like SuperSpeed's ram disk drivers to create a ram disk up to 4 GB (I believe) and have it use unaddressable memory (those above 4 GB limit, as well as the unusable memory between 3.2 and 4 GB). (Use at your own risk, I've never used the software, only read about it.)
In reference to switching between windows, since my Windows 98 days, I've been a fan of Alt+Esc (when one time I accedently used it instead of Ctrl+Esc to immediately escape a full screen application without closing it out). It works by taking the current active window and sends it to the bottom, making the second topmost window now the active window. Adding a Shift key has the same effect as adding a Shift key to most other operations, it does the opposite, taking the bottom most window and bringing it to the top. Since it deals with the windows directly, it should not skip over windows without a taskbar entry (at least it doesn't do so in my experience).
Concerning the issue with the calculator, I've noticed this "issue" as well, but only on my home computer, which I use Microsoft Wireless Photo Keyboard model 1027. When I originally got the keyboard some years ago, pressing the calculator button multiple times resulted in multiple instances of the calculator. Sometime I believe beginning with Windows 7, windows update for the keyboard drivers also included installing the IntelliType software. About the third or forth time Windows Update updated IntelliType, pressing the calculator button would instead bring to focus the oldest currently running instance of calculator (which I prefer, as I would sometimes end up with 20 unnecessary calulator windows open that I would have to later close).
At work I have a Logitech keyboard, and pressing the calculator button multiple times results in multiple calculators. The only difference I can really tell is at home I have Windows 7 Pro 64bit with IntelliType software installed, at work I have Windows 7 Pro 32bit using keyboard drivers and builtin OS input software.
I am one of the people who, at first, believed that awaiting an observable should wait on the next item, not thinking there was any other possibility. Of course, once I saw there were the possibilities of awaiting the entire collection as well as awaiting the final value, I see it makes sense to default to the entire collection and provide methods for the other options. However, I don't really agree with the names used for the methods.
The method ToTask doesn't really explain what it's doing. It converts an IObservable to a Task type, but what exactly does that mean? Nobody will know without first looking up the documentation, and hopefully attempt to commit it to memory (maybe this is Microsoft's "evil" attempt to force people to actually read the documentation?). ToTaskLast is a bit more explanatory, but still seems confusing as to it's purpose.
In the example of ToTask, what is really trying to be done is to get the next available value of the observable, while ToTaskLast is to the last available value. Much better names for these methods would be GetNext and GetLast. Of course, GetNext and GetLast would read as returning the actual values and thus blocking until available. The awaitable methods would thus best be called GetNextAsync and GetLastAsync.