Tim's profiletimngBlogLists Tools Help

Tim Ng

Occupation
April 05

Leadership and Self-Deception

I recently finished the book Leadership and Self-Deception by the Arbinger Institute. It is a well-written, easy to read book with an interesting view on workplace politics and what the solutions to it are. If you believe that Sun Tzu was a Sissy, then this book is definitely interesting because it talks about how the relationships in the workplace are the most fundamental thing to getting results.
 
Forget achieving goals, delivering results, meeting expectations, etc, if you don't get along wth the people you work with. Definitely an interesting read.
April 03

Reformatting a machine sucks

Recently I had to reformat my laptop, and I realized how critical applications such as Norton Ghost are. In this case, I'm not talking about data loss, but I'm simply talking about configuring the laptop the way I like it. I've had to set up Windows the way I like it (why is TrueType not on by default, but show contents while draggin on by default?), install powertoys, clean up the start menu, etc, etc.
 
I've had to install firefox countless times, re-download all the extensions that I like, re-set up my key bindings, get my themes, get all my grease monkey scripts, etc.
 
I have to setup VIM, remove notepad.exe and replace it with notepad2.exe, change the power settings, fix the system tray (i dislike hiding icons that have not been used), turn off useless services (why is the print spooler on when no printer is attached? why is zero wireless configuration on when I have no wireless card?), etc.
 
All this makes me wish for some online magic cloud in the sky that says "hey, lookie here, Tim just installed windows, lets configure it and set it up the way he likes it and install all the useful applications (firefox) and customizations that he likes" without me having to set up some ghosting thing (which doesn't work well across different machines). And this online cloud in the sky will talk to Mozilla to make sure that I have the latest extensions and the latest browser, it will talk to Vim to make sure that all my scripts are up to date, etc - that would just rock. And save me 2 - 3 hours every time I decide to flatten a machine.
 
Is there such a cloud in the sky?
March 28

What you learn in school may not be totally relevant...

This subject may provoke thoughts of congruence - I vividly remember sitting through classes of abstract algebra wondering when I would ever need to prove that a system forms an algebra over a set. Or, take for example a compiler course or text book. Generally, introductory (and maybe even advanced) compiler texts/courses architect the compiler in a series of "stages":
 
You first scan the text using a lexer, which produces tokens for the parser, which produces a parse tree for the analyzer, which decorates and validates the parse tree for the optimizer, which does some funny transformations to the parse tree (and maybe generates some IL) for the code generator, which writes out some low-level assembly representation of your program.
 
But of course, in the real world, things aren't as nice - like the VB compiler. To support real world scenarios like Intellisense, the various features in the Visual Studio IDE, "pretty listing" (where the compiler auto-completes statements for you), etc requires a different approach to architecting a compiler - one which no text book/course I know of discusses, but I stumbled upon this article in MSDN magazine written by my new boss, Matt, which discusses the architecture of the VB compiler.
 
Enjoy :) Maybe as I get more familiar with the code and architecture, I will have some more interesting things to say about the VB compiler.
March 27

The Visual Basic team

About two weeks ago, I joined the Visual Basic team.
 
Back in the summers of '01 and '02, I interned at Microsoft on the Visual Studio for Devices team. It was an amazing experience for me, and one day I will write about my internship and what I learned from it. For now, here's a good article by Steven Sinofsky about it (although he speaks from an Office perspective, the experience is very similar).
 
After my internships, I joined the team full time - I really think that joining the same team you interned at is a great advantage - you already know the people, you know the product, you know the code, you know the experience - you save a bunch of ramp up time and can hit the ground running.
 
On the device team, I worked on the native debugger. In particular, I worked on the expression evaluator (this allows you to query your program for your data using the watch window, local window, etc), and when some members of the team left, I picked up some of the work in the debugger connectivity layer (which uses CoreCon) and some PDB reading stuff.
 
Last summer, the VSD team got transitioned to India, and our team got merged with the VS Core team. I got my hand at trying some new things, but in the end, I decided to re-join a team that was doing compiler/debugger work, since that is what I'm passionate about.
 
And so here I am, on the VB compiler team :)