Rocky Liu

Rocky Liu liux0229

Niner since 2009

I love programming, innovations, computer languages and trying out new technologies. I love to play with Big O and Big Omega. I am interesting in different cultures in the world and believe that human beings are the same in the very inside.


  • GoingNative 33: C++ Refactoring in Visual Studio 2015

    In the code extraction case, why do we deduce the parameter type to be `TimeSpan&` instead of `const TimeSpan&`? I understand you are basing that on the type of local variable used as the argument (which is non-const), but it should be relatively easy to figure out none of the extracted code is calling a non-const member function of the parameter?

    Automatically deducing `TimeSpan&` seems to encourage bad coding practices and is actually worse than just use `TimeSpan`.

  • Anders Hejlsberg: Introducing TypeScript

    This is truly awesome. I don't understand some of the negative comments above.

    • There are advantages to static typing (and in modern day static typing you tend to type less). Some of the extra complexities you take out from static typing in making a dynamic languages could simply reemerge in other places in your development process.
    • There is virtually no learning curve for the superset if you know JS and some basic OO. Being a framework there is always the risk that if you take a dependency the framework could go out of date someday - this is a more universal problem. The open source nature of the project could probably help here.
    • As already mentioned the advantage of TS compared to Script# is that it interoperates better with existing or new JS libraries. Providing wrappers could quickly go out of sync as the libararies evolve.
  • Visual C++ and the Native Renaissance

    Great talk! One comment: you seem to imply that C++ is lower level than C#/Java? I'd disagree. C++ allows you to work on lower level stuff when you need to, but nothing prevents you from expressing and using higher level abstractions with C++ (e.g. a smart pointer is an abstraction over how memory is managed). 

    The plain C++ language itself (w/o the standard library) doesn't try to provide many things "out of the box", so without good libraries it takes longer to get to the same speed as some other languages because you'd have to take the time to build the necessary building blocks. On the other hand C++ does provide convenient mechanisms for you to express abstractions so you can easily build constructs that could be difficult to express in other languages.

    One example of this is using RAII to express lock/unlock semantics. C# has a built-in language feature "using" which does the same. The difference is that there are other semantics that share the same pattern with lock/unlock. You could easily express them with RAII in C++, but in C# you probably would need to resort to try...catch...finally because the language does not provide those "out of the box".

    (For the record I am a huge fan of C# too. There is just no total ordering over programming language virtues Smiley)

  • Future directions for C# and Visual Basic

    This is really awesome. I love Ander's humorous style.

  • TWC9: Windows 8, Code Formatting Macro, You will love Debugger Canvas

    The debugger canvas video is awesome! Can't wait to try and use it.

  • Windows Phone 7 ​announcemen​ts from Mobile World Congress 2011

    This is great news to hear!

  • A Look at Microsoft's Surface Computer V.2

    The red bull demo is way cool!

  • Microsoft Touch Mouse

    This is so cool! Cannot wait to buy one...

  • Channel 9: Who We Are Now

    Great Channel 9. Ch9 is the place which re-ignite my passion with Microsoft. After starting to watch videos from early 2009, I began to feel like "WOW, these are the things I desire to see and hear. These are the people I want to work with. This is a place I want to work in."

  • Channel 9 Emerges in China

    This is really great! Good news for both Channel 9 and Chinese developers!