2006 has been a great year where I've reached several milestones. Here
are some of the important events that took place in my life in 2006:
- In January, I flew out to Redmond, WA to interview for a full time job at
Microsoft. They made an offer
and I accepted.
- In May, I graduated a year early from RIT
with a Bachelor of Science degree in Computer Science along with minors in both
Communication and Entrepreneurship. I achieved my goal to graduate with
a 3.7 or higher GPA.
- In July, I moved across the country from upstate NY to Seattle, WA to start
my career at Microsoft. I'm a Program Manager (PM) on the
Common
Language Runtime (CLR) team where I help design APIs in the
base class
libraries. Among other things, I am the PM owner for most of the types
in the following namespaces:
System,
System.IO,
System.Text,
System.Text.RegularExpressions, and
System.Resources.
I also contribute to the BCL team's
blog.
- In late October, I met my wonderful new girlfriend
Deborah.
Here are my goals for 2007:
- Be a great PM.
- Balance work and life.
- Work out at least 3 times a week.
- Create and launch a software product in my free time.
- Blog at least twice a month.
- Read at least one book per month.
- Buy remaining items for my apartment:
- Coffee table
- Large flat screen TV
- TV stand
- Aeron chair
- New desk
- Buy a condo or house.
I hope to make 2007 even better than 2006.
Posted on January 1, 2007 at 11:55 PM
|
Permalink
|
Comments (2)
Robert
Scoble is wondering
what's
going on in building 42. His curiosity seems to be the result of
John Lam's recent announcement that he will be joining Microsoft as a Program
Manager on the CLR.
Well, Mr. Scoble, today is your lucky day. Since I'm a Program Manager
on the CLR, and building 42 is where I work, I'm going to tell you a little about
what's going on here.
First, there are tons of really talented people working in 42. It still
amazes me seeing these individuals on a daily basis around the building and cafeteria.
Just the other day I was in an elevator with
Don Box. Often I'll see him
chatting with Chris Sells. And
Brad Abrams, a former Lead Program Manager
on the CLR, is just upstairs. The list goes on and on.
<tangent>Speaking of Brad, I noticed that he linked to
John Resig a couple weeks ago
on his blog. That was kind of neat because both John and I went to RIT. I seem to remember being in at least
one computer science class with John, but he probably doesn't remember me.</tangent>
So a lot of talented individuals work in building 42. I have the pleasure
of working with many of them day-to-day. But working on what?
Now that the
Orcas October CTP is out, I can finally talk about some of the stuff we've been
working on.
- A new high performance set collection.
HashSet is a new generic collection that has been added to the System.Collections.Generic
namespace. It is an unordered collection that contains unique elements. In addition
to the standard collection operations, HashSet provides standard set operations
such as union, intersection, and symmetric difference.
- New IO types that expose almost all pipe functionality provided by Windows.
Pipes can be used to achieve inter-process communication (IPC) between any process
running on the same machine, or on any other windows machine within a network.
We've added managed support for both anonymous pipes and named pipes. Anyone
familiar with streams should be comfortable using these new APIs to achieve
IPC.
- A new date time data structure that can specify an exact point in time relative
to the UTC time zone.
The current DateTime is insufficient at specifying an exact point in time. DateTimeOffset
represents a date time with an offset. It is not meant to be a replacement for
DateTime; it should be used in scenarios involving absolute points in time.
DateTimeOffset includes most of the functionality of the current DateTime API
and allows seamless conversion to DateTime as well.
- Support for time zone conversion, enumeration and serialization, including
cases where Daylight Saving Time rules change over time.
TimeZone2 actually made it into the Orcas September CTP, so this one has already
been public for over a month. Kathy blogged about TimeZone2
here and
here and put together a nice
starter guide to using it.
I'm personally very excited to finally get a set collection in the framework.
We will be talking more about these features this week on the
BCL Team blog, so head over there if
you're interested in hearing more about what the BCL team has been working on.
Posted on November 1, 2006 at 01:52 AM
|
Permalink
|
Comments (1)
.NET 2.0 makes it much easier to add settings to your application. If you're using Visual Studio 2005 to develop your .NET 2.0 application, adding settings to your app is even easier.
The Settings class generated by Visual Studio is a subclass of ApplicationSettingsBase which provides four events:
- SettingChanging - raised before a setting's value is changed.
- PropertyChanged - raised after a setting's value is changed.
- SettingsLoaded - raised after the setting values are loaded.
- SettingsSaving - raised before the setting values are saved.
A while back I needed an event that is raised after the setting values are saved, so I added a SettingsSaved event to the Settings class.
To add this event to your project's Settings class, add a file called Settings.cs to your project (if it doesn't already exist) and add the following code.
Settings.cs
using System;
using System.Configuration;
// Change "MyApplication" to the name of your project
namespace MyApplication.Properties {
internal sealed partial class Settings {
#region SettingsSaved Event
public event EventHandler<EventArgs> SettingsSaved;
private void OnSettingsSaved(EventArgs e) {
EventHandler<EventArgs> handler = SettingsSaved;
if (handler != null) {
handler(this, e);
}
}
public override void Save() {
base.Save();
OnSettingsSaved(EventArgs.Empty);
}
#endregion
}
}
Feel free to use this in your own projects.
Posted on September 9, 2006 at 10:24 PM
|
Permalink
|
Comments (0)
Over at Coding Horror,
Jeff Atwood talks about
Properties vs.
Public Variables. I agree with everything Jeff has to say except his first
point:
When is a property not a property? When it's a glorified public variable.
Why waste everyone's time with a bunch of meaningless just-in-case wrapper
code? Start with the simplest thing that works-- a public variable. You can
always refactor this later
into a property if it turns out additional work needs to be done when the
name value is set. If you truly need a property, then use a property.
Otherwise, KISS!
This is wrong. Wrong Wrong Wrong. You should never, ever, under any
circumstances, use public fields. The main reason for this is that fields
and properties are very different things. Jeff's advice that "you can
always refactor this later into a property" is just plain wrong. Changing
a public field to a property is a potential breaking change. A good description for why
this is the case can be found
here.
Using public fields is setting yourself up for failure. It limits what
you can do in the future. If for some reason you need to do some extra
work when the value is set, you're sore out of luck because you can't change the
public field to a property without potentially breaking other code.
I think the main reason Jeff brought this up is because using properties can
be verbose. Compare this...
// Public field
public int Age;
With this...
// Public property
private int m_Age;
public int Age {
get { return m_Age; }
set { m_Age = value; }
}
The public field above is much less verbose than the public property.
In the comments of Jeff's post, someone brought up the point that a shorter C# syntax
for properties might be in order and offered the following:
// Potential new public property syntax
public property int Age;
I've actually thought about this myself a great deal and arrived at the same
exact syntax a long time ago.
I'm willing to bet that
Anders Hejlsberg has
thought about including this syntax in the past but has rejected it as something
that's not truly necessary. Adding another way to make a property can also
make things more ambiguous. Having the separate getter and setter blocks
makes things very clear what is going on.
Still, this new syntax would be a nice little addition that shouldn't be too
hard to implement. It's basically just syntactic sugar.
Anders is actually an architect on one of the features I'm currently working
on, so I'll have to ask him about this the next time I see him.
Posted on August 9, 2006 at 01:15 AM
|
Permalink
|
Comments (3)

Today I went over to Marina Park to see if I could see the Blue Angels from there. Turns out I could! The air show was taking place much further down the lake than where I was, but I was still able to see a lot of what they were doing.
This was actually the second time I've seen the Blue Angels perform over Lake Washington. The first time I saw them was several years ago when I was visiting my aunt and attending a summer program at the UW. My aunt and uncle took me down to some park on the west side of the lake to see if we could see them. I don't remember actually seeing much of the show, but I do remember one Blue Angel flying right by us. It was incredible. The Blue Angels fly very low to the ground as part of the show, so it was amazing to see one fly by so close. It zipped by us practically without a sound, followed by a loud boom.
Even though I didn't get to experience a close flyby this time, it was still neat to be able to see most of the show from a distance. Enjoy the pictures.
Posted on August 6, 2006 at 11:55 PM
|
Permalink
|
Comments (0)

On Tuesday afternoon I was able to duck out of work for a few hours to attend the Tech Fair for new graduates and interns at Microsoft. The Tech Fair featured a free t-shirt, free food, exhibits of Microsoft's latest technologies, and a keynote by CEO Steve Ballmer. It was also a chance to meet up with some other new grads and interns.
Ballmer's keynote was pretty good. First he talked a bit about Microsoft and then he opened it up and took questions from the audience. A lot of the questions revolved around Microsoft's recently announced iPod killer: Zune.
As far as the tech exhibits go, there were booths for nearly every interesting product group at Microsoft. Most had demos of new products that will be coming out in the near future. From what I could tell, these exhibits were mainly for the benefit of interns—many of employees tending the booths were actively recruiting interns to join their teams full time.
I'm pretty glad to be on the team I'm on right now, so the recruiting aspect wasn't really applicable to me. But I did get to see some cool new technologies. I also got to hang out with a bunch of other new hires like me. Not to mention all the free stuff and getting to see Steve Ballmer (all the while during work hours). Good stuff.
Posted on July 28, 2006 at 12:16 AM
|
Permalink
|
Comments (0)
Friday night I drove down to Vancouver, WA to attend Portland Code Camp 2.0 on Saturday. My motivation for going was mainly just to meet a few people who were presenting.
First, I got to meet Scott Hanselman. I'm a big fan of Scott. He has an excellent blog and podcast and is a great public speaker. Scott's session on PowerShell was very good—I'm starting to see why Scott is so excited about it.
Second, I got to meet Chris Sells, who I'm also a big fan of.
Third, I got to see Rory Blyth (of .NET Rocks! fame) do a presentation on WCF. Rory is hilarious and he didn't disappoint.
I also got to meet Wilco Bauwer who gave an interesting talk on his current pet project: IronRuby. Wilco is from The Netherlands and is here interning as a developer at Microsoft. Turns out he works in the same building as me, albeit one floor above. I'm glad I got a chance to meet him, he really knows his stuff.
Lastly, even though I didn't attend any of his sessions, I got to sit around and talk with Rick Strahl. I wish I had attended one of his presentations because other attendees were raving about how good they were. I'll definitely have to sit in on one at next year's code camp.
Overall, Portland Code Camp was very worthwhile. Not only did I get to meet a bunch of really great people, I also learned a thing or two!
Posted on July 24, 2006 at 10:55 PM
|
Permalink
|
Comments (1)