You've reached the internet home of Chris Sells, Developer Tools at Telerik. This site is targeted at the Windows developer. Enjoy.
Sunday, Mar 15, 2009, 10:34 AM in The Spout
I've had an iphone for the last coupla weeks and there are some things that drive me crazy about it!
- The battery life is crazy short. I can't make it more than 6 hours on a charge. Good lord!
- Pandora, an app I dearly love, can't run in the background like the ipod app, so I can't do SMS, email, check my calendar, etc. while I'm listening. Are you kidding me?
- There's no tactile feedback on the keyboard, although the auto-correct is amazing ("let go, let iphone!").
- There's no copy-paste. I've never used a smart phone that did, but I soooo want this feature!
- There's no free out-of-the-box app for using my iphone as a laptop modem, which is something I really loved about my T-Mobile Dash.
- I used to be able to use my T-Mobile account to get free wifi at Starbucks. Can I do the same with my AT&T account? I have the unlimited data option.
- There's no turn-by-turn directions on the map app and easy re-routing when I go off route. It's so close; let's go all the way!
And all of that pales in comparison to the single worst deficiency in the app-suite of the iphone for which I've found no good work-arounds; the calendar app is nearly worthless in a business environment:
- There is no snooze, so I can't set an alert for 15 minutes and then 5 minutes before, then at the time, etc. In a meeting driven environment like Microsoft, the lack of snooze means that I'm actually missing meetings.
- There is no way to invite other people to events. Further, if I create an event via Exchange so I can invite someone, I can't edit it on the iPhone.
- I can't do a Reply All to an event to ask a question or let folks know I'm running a little late.
- There is no detection of phone numbers or addresses in event locations or the body, which means I get no integration with the phone or map apps. This means that I'm memorizing phone numbers and addresses stored in events so I can enter them manually. I have a smart phone so I don't have to remember this stuff!
- My appointments don't show on the home screen, so I have to constantly check the calendar app to see what my day is going to look like.
The calendar app is the single thing that makes me miss my Dash. Someone please tell me there's a workaround to these issues! I'll pay!
The reason I list the things I hate about my iphone is because the list of things I love about it would be impossible to enumerate. I had a T-Mobile Dash for years and it went with me everywhere. It was as big a boost in my electronic lifestyle as my first laptop. After having a smart phone for contacts, email, music and surfing the web, I couldn't go back. Plus, I loved the Dash so much that I'd try a new phone every 6 months or so and then bring it back because it just didn't compare.
On the other hand, the iPhone replaced my Dash in 24 hours. I've been twittering iPhone development related apps. I've purchased iphone charing cables for everywhere in my life where I sit for more than 5 minutes. I want to integrate my iphone as closely into my car as possible.
They will pry my iphone out of my cold dead hands.
Saturday, Mar 14, 2009, 11:12 AM in The Spout
It took Scott 90 minutes and I fought him every step of the way, but I think I finally have a handle on what Twitter is. I've heard it described as a "24-hour virtual cocktail party," which always turned me off. I'll take a lake of fire any day over more than three strangers in a room with which I share no common task and with whom I'm expected to socialize. Making that into a 24-hour thing and including everyone in the world does not make this more attractive to me.
And while that is one valid way to describe Twitter, the more attractive way for me to thing about it is as a single global chat room with conventions and tools to pull out the bits and pieces you want, i.e. the people to which you want to listen, the topics you care about, etc.
Except that's not right, either.
Instead, it's more like a poetry reading in a hippy bar where you're up on stage saying whatever comes into your head and the audience is generally ignoring you (because they're also on their own stage) except occasionally when they holler "yeah man! right on!" back at the stage.
And why is that cool?
Well, I can't speak for anyone else, but until Scott turned the light on in my head, it wasn't. Now I check Twitter (via TweetDeck) half a dozen times a day looking for direct messages first, then replies, then new search results (I search on my name, Oslo and DSL right now), then whatever's on top of my "All Friends." When I find someone that says something interesting about a topic I like, I follow them for a while til I decide they're saying mostly stuff I'm not interested in and then I unfollow.
The whole thing feels very much like what we used to do in email ("Look! Cute kiddie pictures!") and then in blogs ("Look! I have a blog!") before we figured out how to use it and what it was really for. I can't say I really know what Twitter is for yet, although I've been following Scott's advice, i.e. bigger, permanent stuff goes into blogs, transient stuff to a few people goes into email and transient stuff that goes to the hippy bar audience (i.e. the world) goes into Twitter.
I'm still very much learning and hardly anyone is following me (@csells), but that's OK. I'm already finding out who's in the Oslo community and have had lots of useful stuff on personal topics, too, e.g. sharing my iPhone love/hate.
Also, I have to say that I really love the social aspect -- I'm working alone at my house a lot and it's nice to have the world listening to every fool thing that comes into my head. : )
Sunday, Jan 4, 2009, 4:47 PM in The Spout
A few years ago, I looked like the "before" picture to the right. I didn't look like that all the time, thank goodness -- this was some couples' party and I was doing the "ballerina dance" challenge -- but as you can tell, I was a tad overweight. Specifically, I weighed in excess of 100 pounds more than the top end of my idea weight range, which put me over 300 pounds.
I had been a skinny kid with a fast metabolism growing up. At 6'5" it takes a lot of food to get to full grown, even when I had only a medium build (I can't even claim to be "big boned"). In college, living in a fraternity served by a cook that believed fully in the benefits of meat and potatoes and having been born in the Midwest with a gravy ladle in my mouth, I got my "freshman 15" in the first semester and kept on going until I was the jolly fellow you see to your right (complete with the belly that shook like a bowl full of jelly).
I tried dieting. A few years ago, I was able to lose 50 pounds on The Geek Diet (it was a freely downloadable PDF file at the time), but gained it all back in a year. The problem was that that diet is fundamentally based on deprivation: you count calories and don't eat more than a certain amount based on your activity level. This made me hungry and crabby all the time. Then, one Christmas back in Fargo under the influence of my deep-fried meat, brownie, cinnamon roll and fudge pushing grandmother, I snapped. It was like a psychological rubber band, pulling me right back into my old habits. Also, I didn't exercise, so I'd plateau'd and my metabolism wasn't equipped to deal with even a few extra calories.
Over the last twelve months, I tried something different and as of a coupla week ago, I look like the guy on the left. I called it "eat right and exercise." It sounds revolutionary, I know, but I've lost 60 pounds over the last year and I've kept it off (even after the visit to my grandfather over the holidays!) The idea isn't to diet at all, but to change your habits. I can't say that I'm expert enough to recommend any of this to you, but here's what I did:
Stop Eating When You're Full. This was the hardest one to learn. In college, I learned up to drink and, most importantly, when to notice when it's time to stop drinking. However, it took me 'til I was 38 to learn how to tell when I was full. This involves eating slowly and being very ready to leave food on your plate (which I always try to do now).
There's Always More Later. This is the other key to stopping eating. As much as I might like something and want to finish it, I had to realize that there would always be more of whatever it was later. I learned to feel good about leaving food uneaten, no matter how good it was.
Eat Better Food. If you have to choose between eating 1000 calories of Doritos or of broccoli, I think we all know the right choice to make. The key is, making it. I've had to learn to like salad, fruits and vegetables, which I'm still working on. I'm always trying new things to learn to eat things that are better for me.
Don't Buy Grazing Food. If I'm doing something I don't like or am bored or reading or watching TV or any number of other things, I can easily eat chocolate or chips or any other manner of things that are bad for me, even if I'm not hungry. I have a hard time saying "no" to an unhealthy snack when I'm watching a movie, for example, so I don't buy them. Instead. I buy apples and applesauce and melons and other things that are good for me so that if I have to snack, there are only good things available.
Eat Lots of Meals. This one is counter-intuitive, but I find I do better if I eat a small amount every few hours than larger meals three times a day. In general, if I'm hungry, I eat and if I'm full, I stop. It's really just that easy.
Don't Deprive Yourself. If you want a piece of chocolate or a chip or whatever it is that you crave, then have it. Life is short and there is a variety of wonderful things to enjoy. Don't gorge yourself -- everything in motivation -- but don't make yourself crazy, either. I find it makes me feel good to eat a piece or two of my grandmother's famous fudge and it feels equally good to stop eating it.
Exercise Regularly. This is one of my major failings with The Geek Diet. I was depriving myself of calories, but I wasn't boosting my metabolism, so my body was just adapting to fewer and fewer calories. These days, I try to swim 2 miles/week and that seems to keep me at my fighting weight.
Mix It Up. I find I'm happiest eating a bunch of small portions than one or two large portions at a meal. I like variety, so I like a little bit of a few things. Also, to make sure that my body doesn't get used to my level of exercise (it's getting easier and easier to swim for distance), I try a variety of exercises. For example, I just did a 90 minute hot yoga class the other day (I thought I was gonna die) and I regularly do sprints in the pool, going as fast as I can. The latter's useful because it always sucks, no matter how fit I get, so it's almost more than I can handle.
Commit. The key to making anything happen is to decide it's going to happen and then route around obstacles until it does. The days I swim without resting or swim a mile when I normally go half are the days I decide to do so. The key to weight loss or any other accomplishment is first to commit.
Don't Beat Yourself Up. Didn't do as much exercise as you wanted this week? Had a few too many Twinkies? So what. You're human. Let it go. Don't give up. Do better today.
The whole point of all this is that it's not about a temporary diet, but about changing my habits permanently. I still have 40 pounds I'd like to lose, but I don't obsess about it. In fact, I haven't weighed myself in months. And even if I never do lose those pounds, I'm down from a 44 waist on my pants to a 38. If I do nothing but stay there, I'll be happy as hell with myself.
I love that most of these tips are just like Scott's newsflash -- gives me some validation. Do you have tips to contribute? Tell me about them.
Wednesday, Nov 12, 2008, 6:44 PM in The Spout
So, the other day, Windows XP SP2 destroyed my Windows Media Center Edition install that I've been using for years and absolutely loved. It let me record all my favorite shows on two separate tuners and I could watch them on the TV attached to my MCE box, from all the PCs in my house and from my XBOX 360. Losing it was a huge blow, especially since it was clear I'd need to repave and I was swamped with PDC and post-PDC work (damn those MSDN Magazine deadlines!).
A little research revealed the following facts:
- tvrss.net provides RSS feeds of every TV show I've ever heard of, whether it's on normal TV, cable or a premium channel like HBO and Showtime. The shows are available in HD with the commercials pre-edited out, so I wouldn't even have to do the 30-second fast-forward, 5-second rewind dance that MCE enables to skip them.
- uTorrent provides automatic downloads from RSS feeds, including fancy features like only downloading each new episode once, even if it's provided from multiple sources.
- My Verison FiOS pipe provides 20MBps downloads, so a 22 minute TV program (30 minutes - 8 minutes of commercials) even at HD would only take about 20 minutes to download, on average.
- My $500 Windows Home Server machine has 1.4TB of storage, so your average 22-minute sitcom, at 180MB, is only a tiny fraction of the storage. Put another way, I could store about 4000 hours of TV.
- My XBOX 360 supports the same format (XVID) that TV shows available from tvrss.net seem to be provided in. Further, my 360 has direct support from playing videos from shares on my home network (which is wired for 1GB Ethernet, but only run by a 100MB Ethernet router right now).
- The XVID codec is available, along with a ton of other useful codecs, from free-codecs.com (I'm partial to the K-Lite Codec Pack myself), which means that any videos that I download in XVID format can be played back on any PC in my house. Those PCs running Vista Ultimate that have a Media Center remote control on them can surf to videos on the network and pick them with an experience just like that of my XBOX 360.
- It's my understanding that the XBOX 360 menuing system will be updated this month to support Netflix streaming, so for the minimum subscription fee (1 DVD at a time, $8/month), I'll be able to get live, streaming movies directly from my XBOX 360 and all my PCs for the movies I don't yet own.
All of this means is that if I were to schedule episodes of say, Burn Notice, to be recorded by uTorrent and dropped into the Videos\TV\Burn Notice folder of my WHS box, I'd be able to access those and play them back on my XBOX 360 even more simply then I could access video from my MCE box, because I don't have to start up the Media Center software first -- access to shared folders is built right into the XBOX 360 menuing system. And I could have all of this in HD (no CableCard required) without commercials and without regard for how many tuners I have. This is all free and, if I don't want to watch live TV (the Superbowl was the last time I did), then I don't even need to spend $55/month on cable.
Plus, when combined with my photos, music and ripped DVDs, all of which are also stored on my WHS box, and streaming movies I don't yet own, I could access all of my digital media from my XBOX 360 (attached to my 46" LCD panel) and from all of my PCs simply and quickly.
Of course, I would never record my favorite TV programs like this, because it's very much a copyright violation and therefore highly illegal.
But if I did, wow, it would rock...
Why do I need cable again?
Tuesday, Sep 30, 2008, 7:27 AM in The Spout
Yesterday, the ASP.NET team announced that they were going to ship jQuery, a small, populate open source web client library. And not only is Microsoft going to ship this library, as is, but we're going to build support into Visual Studio for it, build future versions of our web components assuming it and support it via PSS like any other Microsoft product.
This is huge.
Of course, is it useful for developers using Microsoft tools, because they get another supported library out of the box for them to use to build their applications. But that's not what makes it huge.
What makes it huge is that, instead of seeing the functionality in jQuery and thinking to themselves, "Wow. jQuery is really great. Let's build something from scratch like that into our products," the ASP.NET team, in what is the first time in Microsoft history afaik, decided to reuse something from the world that was already working, adding only the thing we do better than anyone else: integration into a suite of libraries and tools.
"But isn't this just 'embrace and extend?'" I hear you asking. "Isn't Microsoft just going to absorb jQuery, thereby killing it for folks not using Microsoft products?"
There are two ways forward at this point. One, we could push on jQuery in a Microsoft-centric way until the project "owners" (which is a slippery concept with an OSS project anyway), decide to either give up and let Microsoft "own" it or they decide to fork jQuery, thereby creating jQuery-classic and jQuery-MS. This would not be good for the jQuery community.
The other way to go, and this is the way I hope it goes, is that Microsoft learns to play nicely in this world, submitting features, changes and bug fixes to the jQuery source tree in a way that's consistent with the vision from which jQuery sprang, making it work better for Microsoft customers and non-Microsoft customers alike.
If we can learn to do that second thing, then we've turned a corner at Microsoft. I'm keeping my fingers crossed.
Friday, Sep 5, 2008, 10:31 AM in The Spout
I've always liked the Mac vs. PC ads. They're clever, they make me laugh and I like both actors (Accepted is very under rated, IMO). Of course, I actually prefer my PC running Windows to a Macintosh (I had a Mac IIcx back in the day), I prefer Vista to XP and I'm a Microsoft employee, so I don't have any trouble seeing the exaggeration, but there's always a kernel of truth, which is what makes them funny. The part that kinda annoys me is that Apple seems to be claiming they have no such problems, which is, of course, not true.
The Mac vs. PC ads I understand: they're meant to put down the PC by having the PC guy look like an idiot, leaving the Mac guy to seem non-threatening and therefore better by comparison.
On the other hand, I can't say I understand the latest Windows ad with Jerry and Bill. I did enjoy it, however. Not only did Bill seem much friendlier and more approachable than I've ever seen him, but the image of someone in the shower with their shoes and socks on made me laugh, as did the image of Bill wiggling his butt in a Deep Throat sorta way.
And the commercials are having an effect: they're being talked about and folks are interested in the next one. How often do you hear about folks looking forward to a commercial? That in and of itself is an achievement.
Thursday, Sep 4, 2008, 5:00 PM in The Spout
Wednesday, Aug 27, 2008, 10:48 AM in The Spout
I've been using Word for a long time and my fingers knew where the commands were that I used even though my brain didn't. Most of the those commands I've mapped to the new Ribbon-enabled Word without a problem, but sometimes I still search. For those times, the Office guys have put up a cool tool that shows me where the new version of each command is located in the new Word. Enjoy.
Thursday, Aug 14, 2008, 10:50 PM in The Spout
I gave a talk to the Digigirlz yesterday and it was a blast. It was 25 high school girls that were on the Microsoft campus all week learning various technologies to promote women in IT. The girls are nominated by their teachers for aptitude and attitude and these girls had both in spades.
Vijaye Raji and I were giving the talk, me primarily the pretty front man while he drove the slides, typed the code and made sure I didn't get things very wrong (he knew the environment and the language far better than I). We were teaching general programming basics using a variant of BASIC that was especially well suited to new programmers. We spent two hours showing them how to do turtle graphics and how to write a game (Pong) all from scratch and we all had a blast doing it.
And these girls were sharp! I'm used to pacing material for rooms of adult software engineers, but I didn't have enough. I had to take feature requests from the audience and figure out how to implement them on the fly while they followed along, programming their own versions of the game as we went. They were hands on the whole time and eventually I enlisted their help to tell us what code to write. Mind you, this was a language they'd only learned minutes before, but they didn't have any trouble at all.
They laughed and asked questions and answered my questions and were engaged the whole time (well, most of them -- some were seduced by the siren song of the high speed internet connection : ). I figured I was doing OK when one of the girls asked me if I ever thought about being a teacher.
"Naw," I said. "I hate kids..."
They didn't buy it... : )
Monday, Jun 23, 2008, 5:52 PM in The Spout
When I was a teenager, some kids were sneaking out to get drunk or have sex. I was sneaking into my parents' record collection to listen to George Carlin. Unfortunately, unleashing my version of his brand of humor on my peers was one of the things that kept me from being invited for parties or sex, but I still dearly loved the man and was very sorry to hear that he passed away yesterday.
Certain situations still trigger George Carlin responses whether I want them to or not; he is permanently lodged in my brain. And of all the things he's done, his incomplete list of impolite words is stuck in there furthest (*not* safe for work!).
I'll miss you, George. Give whatever all-powerful being you run into in the next life a piece of your mind about the state they've left us in here on Earth.
Friday, Jun 13, 2008, 1:15 PM in The Spout
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."
"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.
"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.
"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!"
Sunday, May 18, 2008, 12:38 PM in The Spout
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!
Wednesday, Apr 30, 2008, 12:04 AM in The Spout
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?"
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.
Saturday, Mar 22, 2008, 9:38 AM in The Spout
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.
Monday, Mar 3, 2008, 12:33 PM in The Spout
Thursday, Feb 21, 2008, 7:35 AM in The Spout
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.
Wednesday, Feb 20, 2008, 12:28 PM in The Spout
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.
Thursday, Jan 17, 2008, 10:25 AM in The Spout
Tuesday, Jan 8, 2008, 11:46 AM in The Spout
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?
Sunday, Jan 6, 2008, 7:55 AM in The Spout
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!
Saturday, Jan 5, 2008, 5:37 PM in The Spout
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...."
Friday, Jan 4, 2008, 9:41 AM in The Spout
Thanks very much "ET" on the Canadian Amazon. I can think of no higher compliment. : )
Thursday, Jan 3, 2008, 3:57 PM in The Spout
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, Dec 27, 2007, 2:51 PM in The Spout
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. : )
Wednesday, Dec 26, 2007, 10:48 PM in The Spout
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...