home & news
interviews
tools
the spout
writing
fun
colophon
contact
off topic

Google

Please consider ASP.NET hosting plans provided by HostMySite.com, a Microsoft Gold Certified Hosting Partner.

Microsoft

Software Legend

Windows Forms Coding Hero

Mensa

IEEE

         

You've reached the internet home of Chris Sells, Program Manager in the Distributed Systems Group at Microsoft. I've also written some tools and done some writing, both targeted at the Windows developer. Enjoy.

Marquee de Sells: Chris's insight outlet

 Consume the RSS 2.0 feed (or the RSS 0.91 feed)
 View the archive (may take a moment)

Why I Love My Tribe and Want You To Join It!

Recently, I went to lunch with some friends of mine from the DevelopMentor Software days (wow, *that* was a long time ago) and they accused me of "radio silence" for the last two years.

"What?" I said. "I blog all the time!"

"Oh yeah? What have you been working on again?"

"Uhhh..."

I've mentioned my work on this blog in passing as "model-driven" this or "data-driven" that, but never the details. And I still can't tell you those kinds of details.

But what I can tell you is how I spend my days, because they are *glorious* days.

Have you ever had one of those jobs where you're energized about coming to work every single day, because whatever you're doing, it *really* needs doing and it's going to be different than yesterday?

You might be pushing to finish writing a talk for an upcoming SDR (Software Design Review) or getting that last bit of code checked in before a big internal drop, digging into security threat modeling for the first time or complaining that the thing your team is building is too damn hard to use, only to be told, "fine, then, fix it!"

You could be holding the hand of a new Jr. PM just joining the team or busting the balls of some Sr. Architect that thinks he's all that and a box of Cracker Jacks, interviewing the next set of folks that are dying to be on your team and turning some away because as much work as you have to do, it's better to leave it undone than to lower the bar even an inch on the quality standards you're committed to living up to.

You could be building your own sub-system that we already have 8 of inside the company, but you need some source code you understand and that you can experiment with so that you can add the one or two features you think could really make a difference, only to find out you've just built the thing that your management wants to base the next-gen version of that very sub-system on.

You might be meeting your boss in the ProClub locker room when you're half naked or soaking in the hot tub laughing about some trick you pulled in a meeting, listing the customers that need special attention or cornering an executive in the elevator asking for a really cool thing we have to do for the PDC, damn the cost.

You're definitely going to be going into work with the smartest, nicest, most fun, more interesting, most sincerely quality-focused people you've ever known. After Don had first come to Microsoft for a while, he told me that he'd found his "tribe." I'd been at DevelopMentor during it's heyday, so I couldn't imagine ever finding another group of people I enjoy working with that much. I was wrong. My tribe (of which Don is one of the chiefs) gets so much accomplished because we lean on each other, we trust each other and we spend *so* much time laughing with each other (and *at* each other : ).

Most of you will be able to see the thing I've been working on with my tribe at the PDC. Or, if you'd like to help us build it, we're always looking for new tribe members.

Wednesday, April 30, 2008 12:04 AM  (3 Replies)

Nobody Knows Shoes: The Book -- Pure Genius!

I friend of mine dropped a book with a funny cover in my lap and said, "Hey, check this out." I threw it on my pile and didn't get back to it for a few days. When I did, I didn't know what to make of it. It was like The Grapes of Wrath by Rory Blyth, with illustrations by a drunk Salvador Dali.

It took a few pages, but I eventually figured out that "Shoes" was a cross-platform GUI framework for Ruby and this 52-page book was a tutorial for it. By page 15, I knew the major concepts. By page 20, I could write my first program. By the end, 30 minutes after I'd started reading, I knew the whole thing.

But it was page 24 that completely blew me away. The use of pictures of dominoes and matches to illustrate layout in stacks and flows was genius. This wasn't just a random collection of wacky illustrations and  non-traditional font choices -- the author of this book really knew how to tell a story.

It wasn't that I wanted to program Shoes, so went looking for a tutorial. It was the tutorial that made me want to program Shoes. Now *that's* writing.

P.S. This book is not from a publisher -- it's self-published through LuLu.com for cost. There is no bar code, copyright page, Table of Contents or index. It's just the stuff you actually need to get started programming a completely new thing. And, if you don't want to shell out the $8.72 to read a paper copy, you can read the HTML and PDF versions instead.

Saturday, March 22, 2008 9:38 AM  (4 Replies)

Anyone know anyone in the TV industry?

Don turned me onto the Walking Dead series of "graphic novels" (I'm too proud to call them "comic books!") and I loved them. I read volumes 1-4 in one day when I should've been doing other things.

Don thinks that they're good enough for a Lost-esque style 10pm cable TV show and I agree. The interplay of characters and watching them fall apart under the pressure is fascinating. The zombies are there, but it's mostly a background thing, like IRS agents when you forget to include the check (I wrote it! I swear I did!).

Anyone know anyone that needs the story for a new TV show? We'd watch and buy tons of advertisers' products!

Monday, March 17, 2008 4:24 PM  (1 Replies)

Do you want to host the WF workflow and rules designer?

If so, fill in this survey and tell the WF team what you want. They *really* want to know.

Friday, March 14, 2008 12:55 PM  (4 Replies)

On Beyond Unit Testing

Quetzal Bradley is a software development engineer (SDE) on my team with *tons* of experience in all manner of infrastructure stuff including the requirements of real-world software testing from the trenches at Microsoft.

Q gave a talk about what comes after unit testing to my team and I was blown away, so I sent him to tell Scott about it so that you could hear it, too.

Enjoy.

Saturday, March 08, 2008 2:02 PM  (1 Replies)

My Favorite Blog: Scott's computerzen.com

If I have time to read the web, I go to digg.com first, computerzen.com second and very little after that.

Just this morning, I enjoyed Six Months in the Inside - Am I evil yet?, Amazon Kindle and LINQ to Everything - LINQ to XSD adds more LINQiness. The Kindle review was especially enlightening because it was the first one I've read that actually a) covered the stuff I care about and b) pushed me off the fence about whether I want one (I do!).

Tuesday, March 04, 2008 7:15 AM  (1 Replies)

Programming WPF: "Programming Book of the Decade"

*blush*

Monday, March 03, 2008 12:33 PM  (2 Replies)

Programming WPF enters 2nd printing!

Wahoo! You love us, you really love us! : )

When a book goes to another printing, 100% of the time, there's a list of "errata" (aka "mistakes") that are fixed in the new printing. In this case, neither Ian nor I have any fixes to apply. So, it's official -- the book is perfect! : )

Thanks for reading.

Thursday, February 21, 2008 7:35 AM  (4 Replies)

Bridging object models: the faux-object idiom

My 1997 master's thesis came online today (he says, trying not to flinch). Here's the abstract:

Microsoft's Component Object Model (COM) is the dominant object model for the Microsoft Windows family of operating systems. COM encourages each object to support several views of itself, i.e. interfaces. Each interface represents a collection of logically related functions. A COM object is not allowed to expose multiple interfaces using multiple inheritance, however, as some languages do not support it and those that do are not guaranteed to do so in a binary-compatible way. Instead, an object exposes interfaces via a function called QueryInterface(). An object implements QueryInterface() to allow a client to ask what other interfaces the object supports at run-time.

This run-time type discovery scheme has three important characteristics. One, it allows an object to add additional functionality at a later date without disturbing functionality expected by an existing client. Two, it provides for language-independent polymorphism. Any object that supports a required interface can be used in a context that expects that interface. Three, it provides an opportunity for the client to degrade gracefully should an object not support requested functionality. For example, the client may request an alternate interface, ask for guidance from the user or simply continue without the requested functionality.

COM attempts to provide its services in as efficient a means as possible. For example, when an object server shares the same address space as its client, the client calls the functions of the object directly with no third-party intervention and no more overhead than calling a virtual function in C+ +. However, when using COM with some programming languages, this efficiency has a price: language integration. COM does not integrate well with a close-to-the-metal language like C+ +. In many ways COM was designed to look and act just like C + + , but C + + provides its own model of polymorphism, object lifetime control, object identity and type discovery. Of course: since C+ + is not language-independent or location transparent. it was designed differently. Because of these contrasting design goals, a C+ + programmer using COM often has a hard time reconciling the differences between the two object models.

To bridge the two object models, I have developed an abstraction for this purpose that I call a faux-object class. In this thesis, I illustrate the use of a specific instance of the faux-object idiom to provide an object model bridge for COM that more closely integrates with C+ +. By bundling several required interfaces together on the client side, a faux-object class provides the union of the operations of those interfaces, just as if we were allowed to use multiple inheritance in COM. By managing the lifetime of the COM object in the faux-object's constructor and destructor, it maps the lifetime control scheme of C+ + onto COM. And by using C+ + inline functions, a faux-object can provide most of these advantages with little or no additional run-time or memory overhead.

COM provides a standard Interface Definition Language (IDL) to unambiguously describe COM interfaces. Because IDL is such a rich description language, and because faux-object classes are well defined, I was able to build a tool to automate the generation of faux-object classes for the purpose of bridging the object models of COM and C+ +. This tool was used to generate several faux-object classes to test the usefulness of the faux-object idiom.

Enjoy.

Wednesday, February 20, 2008 12:28 PM  (9 Replies)

.NET Source Code Mass Downloader

On 1/16/08, Microsoft announced the ability to download some of the .NET Framework source code for debugging. This download process was only supported inside of a properly configured Visual Studio 2008.

21 Days Later: Kerem Kusmezer and John Robbins released a tool to download the source code en mass. Frankly, I'm surprised it took so long. : )

Wednesday, February 06, 2008 2:22 PM  (5 Replies)

I woke up today and decided to win the lottery

And so I did the only thing I could to do increase my odds -- I actually played the lottery. (I blame my inability to apply this strategy for my lottery losings in the past.)

I did a little research and then went to two local Plaid Pantries to purchase the Oregon Lottery "Trio."

At the first Plaid Pantry, an thin, stringy haired older lady behind the counter blinked in surprise when she saw me and then laughed to herself.

"I just saw your geek pin. It's so subtle... geek..." she said. "I wish I would've paid more attention to geeks when I was growing up. I only paid attention to the rockers."

"Well, that's pretty common," I said.

"But they're dumb and self-centered!"

"Yeah, but they get all the girls..."

"Well, I'm not a girl anymore and I prefer nerds. They're more stimulating!"

"Well," I said. "On behalf of the geek community, thank you."

She smiled, handed me my tickets and I left proud of my geek heritage.

At the second Plaid Pantry, a crowd had formed at the front desk. I got to the front of the line and a little old lady with a plastic tiara was cutting into a homemade chocolate fudge cake. The lady behind the counter said, "It's her birthday! And we love her!"

"Your birthday!" I said.

The birthday girl said, "Yep, don't you see my 65-year-old birthday crown?"

"Lovely," I said. "Happy birthday!"

The lady behind the counter said, "Well, no one was going to make a cake, so I did. That oughta be against the law."

I agreed and placed my Trio order. On the way out, I was happy to have been even a short part of that woman's birthday at the local convenience store where she was loved.

I decided to walk across the street to the locally owned coffee shop, tucked away off the main streets, fighting for survival against the Starbucks juggernaut. I walked in, said good morning to Ju, the owner and proprietor, who immediate started making my standard order. I haven't been there for months, but he still remembered what I wanted.

It's already been a good day. Think how much better it'll be after they announce my winning numbers? : )

Friday, February 01, 2008 9:20 AM  (7 Replies)

Poetry Proclivities

I'm not a big poetry fan in general, but notable exceptions are Poe's The Raven (especially the Simpson's version), Dr. Seuss and Shel Silverstein.

However, I have to admit a certain fondness for the lowly limerick. I've done some composing, but the subject matter is often not something I'd want to post on my blog ("Hi, Mom!"), so when I ran into the rare clean one, I had to share:

A Limerick packs laughs anatomical
In a space that is quite economical
But the good ones we've seen
Very seldom are clean
And the clean ones so seldom are comical

I've seen geek poetry, geek activities as song parodies, programs as songs (genius!), but I've never seen a geek limerick. Got any?

Wednesday, January 30, 2008 7:41 AM  (11 Replies)

Configuring VS08 to Debug .NET Framework Source

Shawn Burke has released the details to set up VS08 to debug into the .NET Framework source code, including the following assemblies:

  • mscorlib.DLL
  • System.DLL
  • System.Data.DLL
  • System.Drawing.DLL
  • System.Web.DLL
  • System.Web.Extensions.DLL
  • System.Windows.Forms.DLL
  • System.XML.DLL
  • WPF (UIAutomation*.dll, System.Windows.DLL, System.Printing.DLL, System.Speech.DLL, WindowsBase.DLL, WindowsFormsIntegration.DLL, Presentation*.dll, some others)
  • Microsoft.VisualBasic.DLL

Others are coming. Thanks, Shawn!

Friday, January 18, 2008 2:38 PM  (1 Replies)

Bookscan says "Programming WPF" is #3 .NET book!

Wahoo!

Thursday, January 17, 2008 10:25 AM  (0 Replies)

WPF Book Easter Egg

Does anyone have both the Anderson WPF book and the Griffiths/Sells WPF book? If so, have you read Don's forewords in both books?

Tuesday, January 08, 2008 11:46 AM  (9 Replies)

The Annotated Turing!

I just saw that Mr. Petzold is re-publishing the paper that started computer science and annotating it so that even I can understand it. I can't wait!

Sunday, January 06, 2008 7:55 AM  (6 Replies)

Time for some anti-social networking

OK, just after all my friends are on FaceBook, now I'm getting the requests to join Spock.com. I don't know what Spock.com is, but after the address-book thingie, MySpace, the high school alumni thingie, Friendster (?), the Google ork-something, the business thingie and most recently FaceBook, I'm all done. All I ever do on these sites is approve friends requests! Isn't there supposed to be some value to it other than that?

Oh, sure, I've had a few messages from people I haven't heard from in a while, but email works for that. In fact, email works for a helluva lot of the internet apps I see today. Plus, most of them just forward web form results to my email anyway! Why do I need a whole other thing when I've already got all my friends listed in my address book?

I declare the social network backlash officially started!

From now on, I'm going to be doing some anti-social networking around the ol' Casa de' Sells. If you want me, you know my email addresses, how to post comments on my blog and my phone number. That should be enough.

"*cough* When I was a boy, we didn't have these fancy social networks. *cough* *cough* We had email and we were happy to have it!"

"Yes, Grandpa. Shhhh...."

Saturday, January 05, 2008 5:37 PM  (15 Replies)

"So easy to read, it should be illegal"

Thanks very much "ET" on the Canadian Amazon. I can think of no higher compliment. : )

Friday, January 04, 2008 9:41 AM  (9 Replies)

WHS Continues to Rock My World

In the same way that .NET manages memory for you, Windows Home Server manages storage. All you have to do is tell it the names of shared folders you want it to have and which computers to back up and it will spread it and duplicate it across however many HDDs you have, without you worrying about which actual HDD your "Music" folder is on or where your wife's computer is being backed up to.

Plus, if you have more than one HDD and you have "Enable Folder Duplication" enabled for a shared folder, the data in that folder will be shared across multiple HDDs, effectively giving you the benefits of RAID without the config muss and fuss. (It's my understanding that this cross-HDD data duplication happens automatically for backed up data, but I don't know how to confirm that empirically without risking the data.  : )

Because a 750GB SATA HDD was $156 at newegg.com, it was a no-brainer to pick one up. It arrived today and it was mean-time of 10 minutes between tearing the tape off the box and the new HDD being used for data storage on my WHS. I didn't even have to turn off the HP MediaServer machine!

All I did was pull an empty drawer forward, place the new HDD into it and push the drawer closed. Seating the drawer also seated both the data and power connections on the HDD itself, no wires or plastic connectors needed. I want all HDDs to work this way!

10 seconds later, the little light went on that said my new HDD was ready to be added as storage to my WHS, which only took right-clicking in the WHS console (already updated to display the new HDD) and adding it as storage. Another 10 seconds and some additional settings changes to enable folder duplication on my shared folders and the new HDD is in active service, providing redundant storage for all the data I care about in the house.

Really, the only problem I have now is that I only have enough data to fill 14% of the 1.4TB of new storage space. Maybe we need a Windows Friends & Family Server and I could rent out the extra space? : )

Thursday, January 03, 2008 3:57 PM  (8 Replies)

Fingerling Potato Baby Jesus

This is what happens when my relatives get together and the wine flows freely... : )

Thursday, December 27, 2007 5:37 PM  (8 Replies)

Christmas Delight

Not all was gloom and blackness this XMas. Among the new things in our lives, several of them rocked*:

  • Our new HP MediaServer running Windows Home Server is awesome. As a Microsoft employee, I got a killer deal on this server appliance, but knowing what I now know, I'd have paid full price -- a whopping $550. In fact, I recently sunk another $200 into it for a memory upgrade and a 750GB HD, bringing it up to 1.25TB.

    WHS keeps all the computers in my house automatically backed up, keeps shared folders duplicated across multiple HDs which can be added via the slide-out drawers in the front of the unit (no muss, no fuss) and serves it all up over the web securely. Plus, it's platform for add-ins, so, for example, if I want offsite storage of everything on the WHS box in case of catastrophe, I can get KeepValue for a flat $100 year.

  • My youngest's new Zune 2 is the best MP3 player I've ever touched. We got the 4GB version, which is tiny, but still comes with amazing video playback, an FM radio and very intuitive controls. (I know I'm unusual in this regard, but when I first touched the iPod, I had no idea how to make it work and the manual didn't help.)

    The client software is also a joy to use. The look and feel is unique and simple. Both the client and Zune UIs make me hope that those guys actually are building a phone. I want it.

    Plus, we got a pair of the Altec-Lansing Zune speaker dock from woot.com for $40 and they sound great, worked instantly and come with the cutest remote control. Very nice package.

  • I can't wait to put my new portable Bosch 10" Table Saw with Gravity Rise Stand to use (thanks, Babe!). I've been remodeling my homes for years, doing as much of it myself as I have time for, but was missing a saw to do straight rips. I'm all set now!

  • My brother-in-law got Rock Band for his family and it *rocks*, especially the tone feedback on the microphone. (I love to sing, which you'll know if you're ever trapped in a car with me and Bohemian Rhapsody comes on the radio : )

  • My youngest also got a pair of the Killer Rabbit Slippers, which Chris picked up for me when he and his wife went to Spamalot. I'd covet my son's new slippers except I love the Goofy loafer Slippers I stole from him years ago. : )

What did Santa bring you this year? Anything you'd recommend or want to steer folks away from?

*Yes, I know I'm a Microsoft employee and biased. Feel free to take what I say with as much salt as your heart can take. : )

Thursday, December 27, 2007 2:51 PM  (3 Replies)

The Sidekick Phone Sucks

I brought my son a Sidekick Slide cell phone for XMas this year and I've come to the conclusion that it sucks, or at least the way T-Mobile sells it sucks.

When I purchased it, the T-Mobile salesman offered me unlimited data and text messages for an additional $20/month on that line. The phone was an upgrade on our existing family plan, which already has 3000 minutes/month and unlimited text messaging and I don't really need my son surfing the interweb during class, so I declined. He never mentioned that the phone wouldn't actually work without this extra money, or I never would've purchased it.

Then, XMas morning rolls around, my son is super-excited and plugs his SIM card into his new phone, turns it on and is greeted with the activation screen. This lasted for hours. Eventually, he found the magic key combination and was able to use the phone, but when it crashed, it lost all his contacts and pictures. Plus, the battery life sucked, lasting maybe four hours between charges. The boy swears it's because it's still trying to activate in the background.

Finally, we called T-Mobile "customer care." If I wanted to use the "full capabilities" of the phone, like save f-ing contacts, we pay the $20/month. The contacts are saved "on the network" *only*. That sucks. This was a $200 phone subsidized with a 2-year extension to the contract and it can't store f-ing phone numbers?!?

I was about ready to cram the phone back up the T-Mobile salesman's.... well, I would've returned it, but the boy was so enamored, he committed to ponying up the dough from his allowance.

And I have a sneaking suspicion that even though we now have the "Sidekick feature" package, that the battery life is *still* going to suck... Keep your fingers crossed.

P.S. I can't tell you how much my son loves this phone...

Wednesday, December 26, 2007 10:48 PM  (3 Replies)

Microsoft needs you to build Emacs.Net

Interested? Drop Doug a line.

Wednesday, December 26, 2007 8:42 PM  (3 Replies)

Posting from my OLPC PC

The form factor is cool, the OS is fine (although I'd prefer Windows) but the chicklet keyboard is worthless. I can literally type faster on my t-mobile dash smartphone. Anyone want an OLPC laptop PC for $200 + shipping?

Sunday, December 23, 2007 10:13 PM  (15 Replies)

XBOX 360 For Pennies a Day!

In 2006, I purchased an XBOX 360 bundle from CostCo for about $550, including the console, a game and two wireless controllers.

In April of 2007, my 360 caught the "red ring of death" ("Ring around the rosy, pockets full of posies, ashes, ashes, we all fall down!"), at which point I brought it back to CostCo and exchanged it for the bundle they had available at the time, which was $475. They refunded me the difference!

Net return: $75 in one year on an initial investment of $550.

Earlier this month, my new 360 also caught the plague and I returned it again to CostCo, where the holiday bundle now costs $400.

Net return: $75 in 7 months on an initial investment of $475 in 58% of the time from the last return of this amount.

If this continues, at this rate I'll have made my original investment back in another 9 months, at which point I'll have had the use of an XBOX 360 for 28 months for the opportunity cost of the original $550, which is approximately $50 at 7% over two years after taxes, $1.80/month or 6 cents/day.

What a deal! : )

P.S. The moral of the story: buy your electronics at CostCo.

Sunday, December 16, 2007 2:22 PM  (13 Replies)

   
  home & news   interviews   tools   the spout   writing   fun   colophon   news  contact  off topic 

This page is copyright (c) 1995-2005, Chris Sells. All rights reserved. No warranties extended. Some assembly required. Void where prohibited. You may link to this site freely from your own site. You may quote small excerpts from this site, but please include a link to the original source on this site.