Tim Ng

F# for the masses

Blog - About

About Tim Ng

I'm from Toronto, Ontario - graduated from the University of Waterloo in 2003, and have been working at Microsoft since then. I interned twice on the Visual Studio for Devices team, and started my full time job there as well. I also worked on the VS Core team briefly, before joining on the VB team, where I am now.

On the Device team, I worked on the native debugger; specifically, I worked on the expression evaluation piece (if you interact with the debugger by inspecting values and changing values, you interact with the expression evaluator). I also worked on some of the high-level communication between the debugger and the device, as well as some other random tasks.

On the Visual Basic team now, I work on the compiler team. We are focused mainly on LINQ, but we are also working on other things such as improving performance and stability of the compiler.

  • Tim Ng

    In Dayton, Ohio

    • 6 Comments
    I'm visiting my girlfriend for a week in Dayton, Ohio. She's doing an internship here for a few months, and it's been definitely quite strange. We're both from Toronto, Ontario, and we both went to school at the University of Waterloo (she's in Optometry...
  • Tim Ng

    COM, Re-entrancy, and Message Pumping

    • 6 Comments
    Disclaimer: I hesitated posting this because this is a topic that is extremely complicated and deep, and like I point out in the article, lots of smart people have talked about some aspect of this problem, but I thought that I would share our specific...
  • Tim Ng

    Type inference in Visual Basic (part 1)

    • 5 Comments
    If you play around with the LINQ CTP , you will notice that in order to support the LINQ scenarios quite a lot of features were added to the language. A lot of these features, if not all, are useful in scenarios other then LINQ. In this post, I will talk...
  • Tim Ng

    VB expression trees - coalesce operator

    • 4 Comments
    Hey there! In this post, I'll continue describing some of the things that are interesting about the VB compiler, especially related to expression trees and the consumption of expression trees in your LINQ provider. Again, this may not be too interesting...
  • Tim Ng

    Creating a class that has an anonymous type as a field

    • 3 Comments
    Here's another way to use the generic parameter trick to get an anonymous type as a field. The other day, I was trying to store the result of a lambda expression in a field, but the lambda was typed as Func(Of <anonymoustype>) and since there is...
  • Tim Ng

    How did the collection of Anonymous Types work?

    • 3 Comments
    In my last post on Making Collections of Anonymous Types , I demonstrated how to create anonymous type collections by using a generic method as a "blueprint" factory method. Today, I will describe how this works, and conclude that it might not be a good...
  • Tim Ng

    Anonymous Types and Object Identities

    • 3 Comments
    One of the recent changes we made to anonymous types was to allow the syntax to convey the notion of object identity. Paul (our architect) has a blog post on this topic, and I wanted to add a little bit to what he said with a few examples. The C# team...
  • Tim Ng

    MDC Push

    • 3 Comments
    For the last couple of weeks, my team has been pushing hard to enable key scenarios for MDC. Needless to say, the MDC release is a community release (or alpha release) and although we have made a huge effort to get a solid release out the door, there...
  • Tim Ng

    Steve Jobs' speech

    • 2 Comments
    Highly recommend that you view it if you have not. Steve is an awesome presenter. Very insightful. It actually reminded me of a conversation I had with my brother (who also works at Microsoft, on the C# compiler team). He asked me, "if you had all...
  • Tim Ng

    Download the Consolas font pack for VS

    • 2 Comments
    http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&displaylang=en I've been using the Consolas font for my comand prompt, my source editor vim , and Visual Studio - Consolas rocks. It makes editing in...
  • Tim Ng

    My trip to Dayton, Ohio

    • 2 Comments
    Some thoughts after spending a week in Dayton/Cincinnati. I will most likely be back to visit Joyce again, so thanks to rodtrent and ajoyk for some comments! It definitely wasn't as bad as when I first got here and was shocked :) In fact, it was actually...
  • Tim Ng

    Does agile sound funny?

    • 2 Comments
    When I first started exploring and experimenting with Agile methodology, I was doubtful about the perceived benefits and wondered whether it was just a fad that would die down in time. Only after I saw how useful it was did I embrace it more and more...
  • Tim Ng

    The impact of VB

    • 2 Comments
    Check out this article, in which Linus Torvalds says that "VB has done more for programming languages then OOP" - http://sztywny.titaniumhosting.com/2006/07/23/stiff-asks-great-programmers-answers/ . He cites the ease of data programmability present in...
  • Tim Ng

    RubyCLR and Visual Basic - Part 1

    • 2 Comments
    Over the last week I've had a chance to play around with RubyCLR ( John Lam is the brains behind it - what an awesome project!). I thought that I would post some thoughts around it and some "tutorial" like articles since the documentation was a bit scarce...
  • Tim Ng

    Partial methods for Visual Basic

    • 2 Comments
    One of the new features that we are adding to the language is the concept of a private partial method. In order to discover the rationale behind this feature, let's consider a scenario where a designer generates some code and wishes to allow the user...
  • Tim Ng

    Lambda expressions article published on MSDN Magazine

    • 2 Comments
    Hey guys, just a quick note to let you know that my article on lambda expressions has been published on MSDN magazine. I'll be updating this blog (actually, probably the VB team blog ) with more information on lambda expressions that I didn't have time...
  • Tim Ng

    Dependency Injection in C#

    • 2 Comments
    Jim Weirich has an excellent article on Dependency Injection for Ruby. I decided to take the design pattern and translate it to C# code to see how it would feel under C#, and see how this pattern holds up in relatively large projects. I've attached the...
  • Tim Ng

    Bad COM practices: Returning an AddRef'd pointer

    • 2 Comments
    Recently I had to fix a memory leak in some COM code that was pretty poorly written. The problematic code looked something like this: IMyInterface* GetInterface() { IMyInterface* pRef = NULL; pRef = ::CoCreateInstance(...); // At this point...
  • Tim Ng

    Immutability

    • 2 Comments
    There has been quite a few discussions on immutability lately. Patrick has written an excellent blog post summarizing some of the various thoughts on immutability along with a cool feature in NDepend to do immutable queries. The only thing that I would...
  • Tim Ng

    SVC CodeCamp F# Talk

    • 2 Comments
    Over the weekend, I had a chance to go to the SVC codecamp and give a couple talks. Codecamp was fun, and it was great to meet many of you that I had a chance to talk to. Feel free to email me if you have any questions about any of the things I presented...
  • Tim Ng

    Happy New Year! And a small change for me

    • 1 Comments
    Happy New Year! 2008 just flew by for me. And looking forward, there's a small change I wanted to let you guys know about. As many of you know, I've been the dev lead for the VB compiler team since Visual Studio 2008. A few months ago, I decided to try...
  • Tim Ng

    Critical Pause in Hyper V

    • 1 Comments
    Just posting this because I ran into this problem today and searching Google/Live didn’t help (returned a site where you have to pay to get answers? I guess the http://www.stackoverflow.com model doesn’t work for them :) In any case, the problem I ran...
  • Tim Ng

    F# Beta 1 Release

    • 1 Comments
    F# beta 1 is now live! See Don and Brian’s blog post for lots more information. In particular, on the F# team, we have worked really hard to bring not one but two releases! We are releasing a fully integrated F# experience into Visual Studio 2010 targeting...
  • Tim Ng

    Checking generic parameters for Nothing/null

    • 1 Comments
    Consider the following code fragment: Module Module1 Sub Foo(Of T)( ByVal x As T) If x Is Nothing Then End If End Sub Sub Main() Foo(10) End Sub End Module The first thing you might ask is : "hey, how come the compiler allows me to check for Nothing...
  • Tim Ng

    Silicon Valley Code Camp

    • 1 Comments
    It's been a long time since I've posted : we've been very busy working hard on the next version of Visual Basic (the next version of Visual Studio will officially be called Visual Studio 2010 ). I'm really excited about the work we've done, and can't...
Page 1 of 3 (68 items) 123