TheJayMann TheJayMann

Niner since 2010


  • Extending DevOps Practices to SQL Server Databases with ReadyRoll and VSTS

    As the video goes on, the audio gets far out of sync of the video, to the point that it is hard to follow what is happening.

  • ASP.NET Monsters #26: GitHub ​Authenticat​ion in ASP.NET Core

    I see you mentioned that you cannot specify custom scopes using the OAuthOptions.  However, looking at the definition of Scope, it is defined as ICollection<string>.  This class has a method defined as Add(string item), which you can use to add scopes to the options.  This means, once you have created your OAuthOptions object, you can simply use options.Scopes.Add(scope1), options.Scopes.Add(scope2), etc.  You can even wrap this in an extension method, along the lines:

    public OAuthOptions WithScopes(this OAuthOptions options, params string[] scopes) {
    foreach(var scope in scopes) {

    Or, if you prefer to fully use object initializers, you can still use a collection initializer without specifying the new portion, i.e.:

    new OAuthOptions() {
    ClientId = GetClientId(),
    ClientSecret = GetClientSecret(),
    // Set other important properties here
    Scopes = {
  • Defrag: Return of Gov, Removing Network Drives, Security Essentials 4

    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.)

  • Defrag: Admin Accounts, Block Sizes, PerfView

    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).

  • Defrag: Moving Page File, Recovering Encrypted Files, Missing User Account

    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.

  • Rx Update: Async support, ​IAsync​Enumerable and more with Jeff and Wes

    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.