Marquee de Sells: Chris's insight outlet for category 'spout' via ATOM 1.0 csells on twitter

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.




Losing weight the old fashioned way: tonsilectomy

Today is my last day of time off work from a tonsillectomy a week ago Thursday. I'm down to about 20mg of OxyContin/day (from 60mg) and hope to have that down to nothing by Monday (although I still have half a jug for my next party : ).

Why would a grown man fresh off two SDRs and a BillG review feel the need to have his tonsils pulled? Well, I've been trying to talk someone into taking them for a coupla years now, even since the recurring strep throat started, but no luck. This time it was because I wasn't sleeping properly.

A few months ago at a routine checkup, my doctor was working her way down a standard questionnaire, asking me if I had this problem or that problem. I'd been swimming a lot and had lost a few pounds recently, so mostly I didn't have any health problems. Until she got to sleep:

"Are you having any trouble sleep?"

"Well, I've been waking up about 4am every morning, no matter when I go to bed."

"Any stress?"

"I work at Microsoft," I said, figuring that was answer enough.

She laughed. "I mean anything out of the ordinary?"

I couldn't think of anything that would explain it, so I said so.

"Have you ever had a sleep study?"

"Well, one time I recorded a chapter of my social studies text book and listened to it all night while I slept. I got an A on that test."

Now she was just tired of my lip, so she explained what she meant. And then she signed me up. And I went. And it sucked. Imagine trying to get sleep while tied up (and not in a good way!).

The diagnosis of my sleep study was "severe sleep apnea," as defined by more than 10 episodes an hour when I stop breathing and more than 10% decrease in oxygen to my brain. I was at 31 and 17% respectively, the sleep tech told me as they strapped me in for sleep study #2, this time with a C-PAP machine. Now imagine sleeping while being tied up and gagged.

Apparently the gag improved my sleep enough that it "cured" my sleep apnea so, without benefit of advice from an actual sleep doctor yet, I was set up with my own C-PAP machine, where I could gag myself every night before going to sleep. And not just gag myself, but strap on a hockey mask while someone blows into your mouth all night long. And now try to sleep while this is happening. My father got one and complained bitterly about it for a full year 'til he got used to it.

So, being even more stubborn than my father (which, if you knew my father, is stubborn on a Biblical scale), I asked for a second opinion. Or at least a first opinion from an actual sleep doctor (and not just a tech).

And I got one. There are other treatments besides C-PAP machines for sleep apnea, among them tonsillectomy (can work depending on the patient), some kind of dental appliance (generally not very successful) and, I kid you not, learning to play the digeridoo. This last one had me particularly interested as I've always wanted to do that anyway. (Come on! Breathing in and out at the same time and making weird noises! It's like sex without the mess!)

"Well, let's see if a tonsillectomy would help you," the doctor said, leaning in for a look down my throat. He shined his little light in and then started backward as if scared. "Oh, yeah... You'll want to have those looked at," he said, his eyes all big.

"What?" I asked, a little worried.

"Those are within the range where should talk to an ear-nose-throat doctor about having them removed," he said, hastily writing out a recommendation and stealing a look at my throat out of the corner of his eye as he did so.

And so I went to the ENT doctor, a young'un one step up from Doogie Howser (or maybe just having celebrated my 39th birthday, everyone is starting to look really young to me...). He explained how things worked inside the mouth and throat. He looked at my nose. He looked in my ears. He understood my dislike of the C-PAP machine. He described the four-point scale they used for measuring tonsils, asked me to open wide and, like the other doctor, started backward after a 500ms look.

"Those are huge!" Doogie said.

"Really?"

"Yeah!" I swear his pupils were dilated in some kind of fight or flight response.

"So, on the four-point scale?"

"4+. Huge!" he said. "Most people have a bunch of space around their tonsils to let he air in. How are you able to breath at all?"

"OK, doc. What do you think we should do?"

"We should take 'em out! Here's how it's going to work..." and he started describing the surgery, which was to include removing my tonsils, shaving back my uvula and fixing my deviated septum.

"Will I ever be able to sing?"

"Sure," he said. "That shouldn't be a problem."

"Great. I've always wanted to be able to sing!"

He laughed. "Well, no promises there." And then he started to describe the complications. Up until then, I was fine with him talking about permanent non-trivial surgery to correct a problem that I could be using an external (infernal!) machine to correct otherwise. But when he started talking about "uncontrolled bleeding" and "rushing to the emergency room as [my] stomach filled with blood," well, that was a bit much after no breakfast that morning.

"Are you OK?" he said, a concerned look on his face. "You've gone all white."

"Ah, no, actually, I'm not. I'm feeling a bit faint..."

So Doogie had me put my head between my knees and breath deeply. And when that didn't work, he popped some smelling salts under my nose. That hurts! But that didn't work either.

"Huh. That normally works," he said, dumbfounded at the giant man getting ready to pass out in his office. "Nurse! Bring me some juice!"

After recovering from the mere idea of uncontrolled bleeding down the back of my throat (which still makes me a little queasy just typing it), he said, "Well, let's not talk about that any more. You'll come in and I'll take care of it, OK?"

That sounded good to me, so I scheduled the surgery for 6/5, a week after the BillG and a few days after my birthday (my own gift to myself : ).

So, I had a few weeks to shutdown my work because the doctor said that I would be out for "at least" two weeks recovering. "And you'll be on heavy medications, too. Kids bounce back in a day or two, but this is *very* painful surgery for adults."

Great. Never had any surgery other than my wisdom teeth and now I get a doozy.

I started informing those around me of my impending doom. And then the advice started.

"The first week was really easy. It's the *second* week that's hard."

"My throat hurt so much that I just didn't eat for two weeks. I lost 30 pounds!"

"Those drugs will lower your IQ by like 30 points."

"I wonder if your voice will change? Mine did."

"I had a tonsillectomy as an adult and I still can't say my Ls properly."

As a professionally speaker, I didn't mind the idea of my voice changing a little (hopefully deeper), but losing my Ls? Good lord!

I was not to eat or drink starting midnight the night before my surgery, so I didn't. Normally the sleep deprivation has acted as an appetite suppressant, so that and the exercise has caused me to lose 43 pounds in the last 6 months. Missing a few coupla meals hasn't been an issue, but by 3pm the next morning, sitting on the hospital bed in a hospital gown, my ass hanging out while every nurse and doctor in the place asked me if I'd avoided food and water of any kind and I started to get damn hungry, hoping for the surgery just to have something else to do (although Melissa let me win a few hands of gin, which was nice).

Then the nice anesthesiologist came and slipped me a little something. I felt completely normal for about 10 minutes and then I woke up in the recovery room, the nurses asking me if I could help them move from the gurney to the bed. Seriously. That was my entire surgical experience. Melissa was there, making sure my stuff came with me and asking if I was OK.

Oh, and I was feeling no pain. I don't remember much from those first few hours. I could talk, which apparently was very unusual. I could walk. I remember my sister-in-law bringing my boys by for a visit and them waking me up every five minutes so I didn't spill my juice all over myself. I remember several pretty nurses waking me up every hour or so to adjust this sensor or give me that medication. I don't remember what I said to them, but I do remember making them laugh, which made the increasing pain of my throat more bearable.

We figured out my pain dosage that first night, 10mg of OxyContin every 4 hours mixed with intravenous morphine to take the edge off. I was disappointed that I didn't get any kind of "high," though. I just felt fuzzy headed and sleepy. Is that what Rush liked? I don't get it. I tell you though that the tennis elbow I'd given myself with the free weights in my garage was *completely* cured.

In that first 12 hours, it was my job to be able to walk, go to the bathroom on my own and manage my own pain via oral medications. And I did so. In fact, I was recovering so quickly, the doctor came by and gave me permission to go home hours early. I'd told him the night before that, if my voice had to change, could he push it toward Barry White? Oh, and I'd like to be able to say all my letters if possible. That morning, he asked, "Have you tried it? Can you still say your Ls?"

And then, because I couldn't not, I channeled A Christmas Story for demonstration purposes: "Fa ra ra ra ra ra ra ra ra!" willing to endure the pain in my throat for the cheap laugh. And I got it. : )

I came home a week ago Friday and have been largely ignoring my work, sleeping most of the time, getting up mainly for drugs every four hours and a little food (Top Ramen, Popsicles and water). The combo put me to sleep within an hour, giving me just time enough to send the random pathetic email or IM before collapsing again. Gradually I've been cutting back on pain meds and eating more, my throat just a minor annoyance at this point. It still hurts and my voice is still scratchy, but a quick chug of OC and I'm back in the game, mostly awake during the day and asleep at night.

I went in for my week check-in with the ENT guy yesterday. He was delighted to tell me about micro-pustules and puss inflammation that had riddled my tonsils. Not only where they "huge," but apparently my body's been fighting them off as a low level infection for who knows how long. While telling me this, the doctor put a bib around me and handed me a tray to hold as I looked at him questioningly.

"Oh, I don't think you're going to throw up," he said, rummaging for some instruments in a drawer. "I just need you to hold the splints when I take them out."

As part of fixing my deviated septum, Doogie had put splits in my nose so that things would heal open. At the mention of "splint," I thought of a little stick to hold my nostril open like the pole in the center of a tent. I thought he'd reach in, cut it in two and pull out a couple of tiny toothpicks. Well, he reached in, stretched my nostril to uncomfortable proportions, clipped the thread holding the split in and started pulling.

Have you seen the scene from Total Recall where Arnold reaches up into his nose and pulls out that giant tracking device? Yeah. Think that except the split was longer. The doctor kept pulling and it kept coming out until it fell with a thump into the tray.

"That was in my nose?!"

"Yep. And there's another one on the other side," he said, reaching for the other side.

"There is?!"

"Yeah. Didn't I tell you? Oh, I guess you were asleep when I put them in," he said, pulling another canoe out of my other nostril.

"Oh my god!" I said, looking down at the snot covered railroad ties in the tray I was holding.

"Are you OK? You look a little pale. OK, head back..." He was much more comfortable getting the color back into my face the second time, having practiced on me before.

"Nurse! Cold compresses!"

0 comments




The Next Generation

When I was in high school, "game programmer" meant at best BASIC or at worst 6502 assembly language, but either way, lots of text manipulation. These days, high school-age programmers are going to camps and programming competitions having spent their time in drag-n-drop programming environments like Game Maker. They've been doing work flow for 7 versions already!

Yesterday, I was a judge and the keynote speaker at a high school game programming contest. After asking a bunch of the 25 teams questions about their games, I was asked to speak about careers in software to 100 high school computer geeks. My people!

I started by introducing my youngest son as the "slide monkey" to warm applause and them myself as a Microsoft employee to... silence. So, I said: "How many of you think that Microsoft is..." and then I put my face down to the podium microphone and said in a voice from God, "EVIL?". Half of them raised their hands, all of them laughed and I had them engaged for the next 20 minutes.
 
Instead of listing various careers and their duties, I had dug through literally 13 years worth of bad Internet humor (641 emails) that I'd saved over the years and used all the silly, stupid, funny pictures to illustrate the various careers, like an x-ray of Homer's tiny brain (Architect), a picture of some hand puppets chasing a kitten (Legal), street signs that said "left turn" and "keep right" at the same time (User Assistance), etc. A couple pictures I had to clean up, like that one that said "Every time you masturbate, God kills a kitten," but even so, the pictures worked: they were listening to me.
 
While I had their attention, I told them two things. First, I told them that Microsoft was hiring. : )  Second, and most importantly, I told them not to worry about the money, but to pick a job that's going to get them excited every day. Pick the job that's the most *fun*. And when that one isn't fun anymore, pick another one! I tried to put every ounce of sincerity I had into it, because I believe it. I love my work, I love who I work with and I think everyone should have that. I know it's silly, but if I could inspire just one person to reject some high paying job that's going to make them miserable in favor of a starvation-wages job that they'll love, then I'm happy.
 
And to illustrate the downside of picking the wrong job, I closed my talk showing a little boy balling his eyes out (although in his case, it was because of Santa's tombstone behind him : )
 
What a good way to spend the day. Highly recommended.

0 comments




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.

0 comments




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.

0 comments




Programming WPF: "Programming Book of the Decade"

*blush*

0 comments




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.

0 comments




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.

0 comments




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

Wahoo!

0 comments




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?

0 comments




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!

0 comments




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...."

0 comments




"So easy to read, it should be illegal"

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

0 comments




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? : )

0 comments




Christmas Delight

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

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. : )

0 comments




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...

0 comments




465 older posts       45 newer posts