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

    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

    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

    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

    Using the .ToDictionary() Extension Method

    • 1 Comments
    Last time, I showed how you can use the Cast() extension method defined on IEnumerable/IEnumerable(Of T) to do an element conversion for a sequence that implements one of the enumerable interfaces. Today I want to talk about the ToDictionary extension...
  • Tim Ng

    F# Quick Guides: Object Oriented Programming

    • 0 Comments
    Hello! As I mentioned in my earlier post, the F# team is tremendously proud of being a part of Visual Studio 2010. We have worked long and hard to get to this point, and we are very excited with the release of the first fully supported F# language. ...
  • Tim Ng

    VS2010 + VIM

    • 0 Comments
    As you may know, I am a diehard VIM user. Thankfully, Jared , a big F# fan (Jared and I used to work on VB together), has written a plug-in for VS2010 called VsVim which supports VIM emulation in VS2010. If you are a VIM user, this plug-in is essential...
  • Tim Ng

    Getting SQL Express to work nicely with Visual Studio 2005

    • 0 Comments
    I just spent the last 4 hours getting my machine ready for a user group demo; I was trying to get SQL Express setup so that I could do a LINQ to SQL demo; what a painful 4 hours! I will try to document things that I discovered along the way here so that...
  • 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

    IEnumerable(Of T) and LINQ Queries

    • 1 Comments
    Now that the March CTP is released, I wanted to blog about different ways you can use LINQ queries to simplify your code and write less code to achieve the same results. Consider a typical application that has a collection of some type (say, a collection...
  • Tim Ng

    Devices for Visual Studio 2005 Beta 1

    • 0 Comments
    Sorry for the lack of presence here - we've been busy working on the beta 1 release that is now out the door and hopefully in your hands. We've made a lot of device improvements to this beta over the Community Technology Previews, so I hope that you have...
  • Tim Ng

    Making Collections of Anonymous Types

    • 1 Comments
    One of the cool but lesser known features introduced in VB9 is the anonymous type. What exactly are anonymous types? They are simply unnamed types that you can define easily: Dim x = New With { .Name = " timng ", .Age = 27 ] The above statement instructs...
  • Tim Ng

    Beta 1 Push

    • 0 Comments
    The last month has been marked by a push for stability for Beta 1 that we could have never imagined. We laugh now as we reminisce on our plans from January. I remember telling my team mates that “it would be nice if we could step through 'if' statements...
  • Tim Ng

    Using the .Cast() Extension Method

    • 1 Comments
    If you take a look at the set of extension methods offered on IEnumerable (and IEnumerable(Of T)), you'll find that there are plenty of very interesting extension methods. One of them is the Cast() extension method. What does this extension method do...
  • Tim Ng

    Why customer service is the most important aspect of business

    • 1 Comments
    For those that know me personally, you'll know that my brother loves motorcycles, and that recently we have purchased 3 motorcycles within the last 8 months. Our experience through this time has definitely confirmed to us why customer service and interaction...
  • 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

    Understanding LINQ

    • 1 Comments
    Note : I plan to post this blog on the VB team blog eventually. However, because of the length and complexity, I'm posting this up on my blog for now to hopefully get some eyes on it so that I won't make a fool of myself on the team blog :) Please feel...
  • Tim Ng

    Smart Devices Native C++ Debugger

    • 0 Comments
    I’m a developer for the Smart Devices Native Debugger that will be released with Visual Studio Whidbey. We have been working really hard on delivering a solid native C++ debugger for smart devices (including devices in the Pocket PC family, Smartphone...
  • Tim Ng

    Friend Assemblies for Visual Basic Orcas

    • 1 Comments
    One of the features missing from Visual Basic 2005 was support for what is known as friend assemblies . We are currently working on enabling Friend Assemblies for the next version of Visual Basic (code named Orcas). I wanted to share with you some of...
  • 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

    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

    F# + WPF + Events

    • 0 Comments
    I recently had to do some travelling for the VS launch event in Las Vegas and QCON event in Beijing. One of the things thats nice about travelling is that it gives you time to do some things you may not otherwise do - in my case, I had a chance 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

    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

    Where do you use F#?

    • 0 Comments
    Recently on StackOverflow there was a question asked about “ what areas might the use of F# would be more appropriate then C# ”. Some of the answers are very insightful – take a look and see if you agree or disagree! You’ll notice that my good friend...
  • 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...
Page 1 of 3 (68 items) 123