You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.
Thursday, Jun 5, 2003, 10:09 AM
I've got spurs...
Here. I'm walking down the hall this morning after a successful meeting in building 40. I'm wearing shorts 'cuz it's sunny in Seattle (!) and the shorts have 6 pockets, the two extras in front and below the two standard pockets. Because I'm away from home, my pockets are filled with my wallet, cell phone, keys, a few days worth of change, my sun glasses and a PAA (Personal Analog Assistant) that I'm carrying. Since most of the stuff is in my lower pockets, I'm more sauntering than walking. Also, at each step, I jingle, because of the change and the keys, ching-ching-ching... Then I realize that I'm humming. While this isn't unusual (I'm generally a happy fellow), after a few seconds, I realize the tune and bust out laughing. Follow the link for the tune...
Thursday, Jun 5, 2003, 8:34 AM in .NET
Ref-Counting + Rotor Status
Here. ChrisT got finalizers working. The wonder of the ref-counted programming model in .NET is coming into focus. Wahoo!
Thursday, Jun 5, 2003, 12:00 AM in The Spout
Ref-Counting + Rotor Status
I just got this email from Chris Tavares (who's doing the lion's share of the implementation work to add ref-counting to Rotor):
using System;
class FinalizerObj {
int n;
public FinalizerObj(int n) {
this.n = n;
Console.WriteLine("Created Finalizer object {0}", n);
}
~FinalizerObj() {
Console.WriteLine("Finalizing finalizer object {0}", n);
}
}
class TestApp {
public static void Main() {
for( int i = 0; i < 5; ++i ) LeakAnObj(i);
}
static void LeakAnObj( int i ) {
FinalizerObj obj = new FinalizerObj(i);
}
}Under the desktop CLR, I get this:
C:\Home\Chris\Projects\Rotor\src\tests>FinalizerTestBut when I run under Rotor, now I get this:
Created Finalizer object 0
Created Finalizer object 1
Created Finalizer object 2
Created Finalizer object 3
Created Finalizer object 4
Finalizing finalizer object 4
Finalizing finalizer object 0
Finalizing finalizer object 3
Finalizing finalizer object 2
Finalizing finalizer object 1C:\Home\Chris\Projects\Rotor\src\tests>clix FinalizerTest.exe
Created Finalizer object 0
Finalizing finalizer object 0
Created Finalizer object 1
Finalizing finalizer object 1
Created Finalizer object 2
Finalizing finalizer object 2
Created Finalizer object 3
Finalizing finalizer object 3
Created Finalizer object 4
Finalizing finalizer object 4
Finalizing finalizer object 4
Finalizing finalizer object 0
Finalizing finalizer object 3
Finalizing finalizer object 2
Finalizing finalizer object 1I obviously still need to figure out how to pull the object off the finalization queue, but that will have to wait until tomorrow night.
Even though they're being called by us and by the GC, this is the first time we've been able to get finalizers working. Wahoo!
Wednesday, Jun 4, 2003, 6:52 PM
My First API Review
Here. The one where I crash a Longhorn API review and get to help name a data structure.
Wednesday, Jun 4, 2003, 12:00 AM in The Spout
My First API Review
Wed, June 4, 2003
Maybe you're getting tired of my posting my "firsts" at MS, but that's the beauty of this medium. I get to say what I feel like and you get to listen or not, as you choose. Mostly this "Dear Diary" format helps me to digest the world around me. Many times, the writing itself has helped me to clear my head. If you haven't tried it yourself, I recommend it.
So, on with my next "first." Today I crashed an API review. I happen to be on a few internal Longhorn mailing lists and recently got an announcement of a new API that was going up for its first review. I didn't know what to expect, but I hoped at least to see some familiar faces and to introduce myself around.
Now, the way I work things, I try to really pack myself into meetings when I'm up in Redmond so that I can get the most out of my time away from home (I'm still based in Portland, OR). In this case, I had a meeting scheduled from 9am to 10am in building 5 and then had to truck across campus to building 42 for the API review at 10am. Needless to say, I was late (the only thing harder than finding parking in the sea of cars after 9am is finding your anonymous rental car when you come back for it). Luckily, MS meetings seem to start late as a matter of course, so I hadn't missed anything. However, I was a bit surprised that in more than a month of introducing myself around, there was a room full of 10+ people and no familiar faces. They glanced up at me when I came in the door and seemed a bit confused as to who I was, but didn't ask or toss me out on my butt (it's handy being 6'5" sometimes : ).
The process was pretty cool. Apparently the team building the API had answered a standard questionnaire from the review team, which included target users, potential security problems and representative sample code that users would be expected to construct. The review team had prepared by going over the questionnaire and prepared topics of discussion (the latter making this review process better than most I'd attended). The API team provided answers to the questions and took notes on how to fix their API.
I was impressed with the whole thing. The API team was very open to suggestions for improvement, even letting me put in my two cents (I couldn't help myself : ). And the design team gave out just the kind of advice I want all .NET APIs to follow, e.g. use best practice coding conventions in sample code, support IDisposable at a macro level instead of a micro level, expose collections from properties returning IEnumerable (not from the parent object itself), prefer properties over Get/Set methods (as appropriate), don't tack the name of the enumeration type onto the enumeration values themselves, prefer overloads to parameters that can be null, prefer typed parameters to object parameters, etc. In addition, where the API team had reinvented the wheel (they were experts in their problem domain, not the entire .NET Framework Class Library, after all), the review team pointed them at what to emulate and where to look for more guidance. The whole process gave me quite a bit of confidence in .NET maintaining the high degree of consistency that's it's achieved to date (the FCL consistency is not perfect, I admit, but it's a damn sight better than COM APIs ever were and don't even get me started on Win32).
After all that, I did finally get to introduce myself (the note taker on the API team wanted to know who was complaining : ), I helped name a Longhorn data structure and I met a General PM that I needed to talk to anyway, so it was a useful experience all around.
Tuesday, Jun 3, 2003, 3:54 PM
Submitting to Billg's ThinkWeek
Here. The one where I submit a paper to Billg's ThinkWeek and wonder what I heck I got myself into.
Tuesday, Jun 3, 2003, 10:37 AM in .NET
Launching NTD Apps. w/ Command Line Args.
Here. Easily one of the questions I get asked the most once folks start using no-touch deployment (NTD) applications, that is Windows Forms applications that can launched with an URL, is how they can pass command line arguments to them. This article lays out the client-side and server-side code needed to make this happen. Enjoy.
Tuesday, Jun 3, 2003, 10:10 AM in Tools
SQL Buddy
Here. I got turned onto this tool internally and I love it. It installs simply, works intuitively and allows for easy ad hoc queries and commands. Recommended.
Tuesday, Jun 3, 2003, 12:00 AM in The Spout
Submitting to Billg's ThinkWeek
As has been mentioned out in the world, every once in a while Billg takes time to back away from whatever he's working on to think big thoughts. Employees are allowed to influence those thoughts by sending in papers about whatever they want. I heard about this a few days before the deadline and, as I had an idea for something, I wrote up a quick treatment. In spite of the odds against me, I couldn't let such an opportunity pass by w/o even trying!
I sent my short piece around internally and, because of it's length (I only had time to put together 2.5 pages), I expected to get all kinds of feedback of the lack of depth. Surprisingly, I only got one of those and a bunch of positive feedback, including some useful tweaks.
After applying the tweaks and running into the limit of time I could spend on it (I did have any actual job to do, after all : ), I sent my paper to the screener that makes sure that Bill's not bothered by trivial things, expecting to hear where to file it. But I didn't hear that. In fact, I didn't hear anything at all 'til today when my own patron St. VP thanked me for my submission, being all kinds of vague about whether Bill will be handed my paper or not, but pointing me to some folks internally about making my idea happen. I took this as letting me down gently, but further emails indicated that my paper *had* been sent along to Bill.
Now I'm wondering what the heck Bill will do with it. Ignore it? Shred it? Send me an email with a single line, "Make it so, #1?" I'm not sure which one is scarier. After having survive my first encounter with a VP, I wonder if I'll survive my first encounter with it's commander and chief. Keep your fingers crossed. : )
Monday, Jun 2, 2003, 10:40 PM in The Spout
MSDN Article: No Touch Deployment
Here. From JosephCooney: Chris has a new MSDN article on passing command-line parameters to "No Touch Deployment" windows forms applications
Sunday, Jun 1, 2003, 5:25 AM in .NET
SmartConsult .NET
Here. From Sundaranarayanan Subramaniam: Binarymission offers SmartConsult .NET – a cost-effective custom component development programme! Are you in need of a custom .NET component to be developed? And you want it to be cost effective and at the same time be of the best possible quality? And above all, you just don’t have the time to develop it yourself? We can hear you say – "Absolutely!". You have just come to the right place! We have the right solution for you! Read on, to find out what our new SmartConsult .NET programme can do for you! What is this plan all about? In simple words - You get your custom .NET components developed for one simple flat fee! Period!
Saturday, May 31, 2003, 10:17 PM in .NET
Code Library for .Net 3.0
Here. From fish: Helps you to find and use the code snippet.
Saturday, May 31, 2003, 10:27 AM in .NET
Feature packed "Date Picker" control for .NET!
Here. From Sundaranarayanan Subramaniam: Binarymission proudly presents BinaryDatePicker .NET (Version 1.0) - An advanced Microsoft© Outlook© styled, date picker WinForms© .NET control. BinaryDatePicker .NET Ver. 1.0 is an advanced Microsoft .NET WinForms© Component, providing an Outlook© styled, feature-rich and highly configurable, calendar (date picker) functionality for Microsoft WinForms© .NET platform. Also checkout our newly released .NET component prodcut-line!
Friday, May 30, 2003, 7:40 AM
MSDN Security Developer Center
Here. Concerned about making your Windows code secure? Start here. Recommended.
Thursday, May 29, 2003, 8:27 AM
Software Legends Night in Greater Portland, OR
Here. David Chappell & I will be answering questions at the Borders on Cedar Hills Blvd in Beaverton, OR tonight. Things start at 7pm. As an added treat, my parents are in town for my wife's nursing school graduation and they'll be at Borders wondering what the hell people are all worked up about. : )