Monday, December 11, 2006

Today is Jason Owens's birthday.  Jason is a buddy of mine from way back.  I believe we met before preschool sometime, but I honestly can't remember.  We shared all the years of school together, even through college.  I remember turning on the water hose in his backyard so we could try to turn it into Degoba (sp?) so we could play Star Wars properly.

Since college, we haven't been able to get together much.  We're supposed to get together over Christmas though, which I'm looking forward to.

Every year, it was a tradition for some of our closest friends to get together at Jason's house for his birthday.  We'd spend the night playing slaughter-ball, football 500, and topping it off with a viewing of "¡Three Amigos!".

Happy Birthday, man.  I was going to scan an old picture for this entry, but I haven't found the box with the old pictures in it yet, since moving.

posted on Monday, December 11, 2006 8:24:34 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Saturday, December 02, 2006

Today, my little girl turns 1 year old!  I've been teaching her to answer how old she is by pointing a finger in the air and saying "one!".  It's been an incredible year.  Jenna's been such a trooper over the past few months as we've moved across the country.

We got her a new forward-facing car seat, since she now meets that criteria.  We also got a cute little chair she can sit in that is electronic and does all kinds of fun-ness.  We made her a little cake and let her go at it.  She wasn't as destructive as I thought she might be, but it was fun.  Then we had a bubble bath, and I made lots of bubble hats for her that were hilarious.

For those wondering...  She walks excellently now, and chases the cats all over the house.  She's got 7 or 8 teeth.  I've lost track of all the things she can say. She'll repeat (or at least try) almost any word you ask her to say. She can ask for foods that she likes (apple, banana, broccoli, cheese).  She even says, "cheese, please".  She identifies the basic animals (kitty (sometimes referred to as "meow-meow"), puppy, bear, bird, bee, mouse, etc.  but horse is the cutest-sounding), and (when coaxed) she can tell you what sounds some of them make.  She can identify basic body parts.  She loves pointing at noses, even those of stuffed animals, but her favorite is "toes".  I went in one morning to wake her up, only to find her rolling around in her crib.  She looked at me with a big grin, grabbed her toes and said, "toes".  She dances to music, and plays peekabo (even with herself in the mirror). She will do things that you ask her to, like "go find a ball", "go find the kitties", "put on a hat", or "make Farmer Tad play the banjo".  She loves to hide, especially when you're trying to dress her.  She's cuckoo for bathtime.  I'm so proud of how well she's doing.  But,we wish she'd sleep better.  She's doing better than a month ago, but still gets up at least once during the night usually.

I've got lots of pictures and video from the day that will trickle in as I have time, but here's a cameraphone shot of her in her new car seat.

posted on Saturday, December 02, 2006 10:15:58 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Wednesday, November 29, 2006

Lots of snow - Blue skyMaking snow ice cream!It hasn't snowed any more. In fact, yesterday was a clear, beautiful day.  You can check out the photos I uploaded yesterday for all the snowy goodness, as well as some overdue photos since Halloween.  But, the temperature hasn't gone up, so all the snow is still here.  I even went outside, got some snow, and made some snow ice cream, which I haven't had in ages. (It doesn't snow enough in Central Texas to get clean snow)

the road this morning My smart card reader is broken, so I don't have remote access, which makes it hard to work from home.  I decided to go into work today to try to get another one.  It's supposed to snow more tonight, so I wanted to be ready, and not feel like I need to go in.  The way into work was interesting.  There were still lots of cars in ditches or stuck going up hills, etc.  But, I can't find a card reader, so I'll probably head home soon.  I don't want to risk getting stuck on the way home.  So, I'm going to queue up some work for the rest of the day and head out.

posted on Wednesday, November 29, 2006 10:12:20 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Monday, November 27, 2006

It snowed yesterday morning, and evening, resulting in quite the winter wonderland.  We didn't get as much as Jeff did up in Bellingham, but any snow to us is alot.

Also, last night while we were feeding Jenna, we heard what sounded like firecrackers going off.  Seconds later, the whole house shook with a huge thud.  It took me a few seconds to realize what had happened.  Several large branches had broken off one of the trees on the northeast side of the house, and one of them had hit the roof on the way down.  I believe the only damage was to the gutters, but I'll have to see.  There is still a large piece of the branch on the roof.

The branches don't look very big when they are way up in the tree, but when they get to the ground, they are small trees themselves by our Central Texas standards.

posted on Monday, November 27, 2006 10:15:14 AM (Pacific Standard Time, UTC-08:00)  #    Comments [1]
 Thursday, November 16, 2006

Today is my brother's birthday!  This is the first year in as long as I can remember that I haven't been able to be around close to his birthday.  We've missed he and his wife Sara quite a bit.

Happy birthday, bro.  This next year will be an amazing one for you.  We look forward to seeing you around the holidays.

posted on Thursday, November 16, 2006 8:21:51 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]

Today, we are closing on the sale of our house in Austin.  What a relief to have that over with.  She was a good house for many years.  In many ways, we'll always miss that house, but we're excited about the new things that God has planned for us in our new house, which we love so far.

posted on Thursday, November 16, 2006 8:16:16 AM (Pacific Standard Time, UTC-08:00)  #    Comments [2]
 Wednesday, November 15, 2006

Historically, when I gotten questions from friends and colleagues regarding performance, I've often sent them straight to Rico Mariani's blog.  It is a wonderful source of advice, guidance, rules and humor in the realm of performance.  His latest entry is another wonderful piece.

I've spoken with several individuals who have said things like, "Well, our goal was to be able to handle a request in X seconds, or handle Y amount of throughput, and we're too slow.  Any ideas?"  More than likely, they've done their design and implementation without any work to make sure they reach their performance goals, and by that time, my advice to "get rid of that dependency", or "redesign this component" is too late.  When factoring the performance goals into those design decisions would have raised the red flag immediately. 

I love his approaches because they tend to sound alot more like engineering (which is my background) than alot of guidance that tends to be thrown around.  Here's my favorite quote:

I get very worried when people say things like “Productivity and cleanliness always trump performance.”   Productivity is about creating product.  A “clean” design which fundamentally fails to address performance requirements is not an example of a productive enterprise, it is a looming disaster.  A developer productively engaged in creating a failure is uninteresting. 

Now that Rico and I work for the same company (across the street from each other) perhaps I can come up with a good excuse to meet him in person.

[UPDATE] After reading this, I thought it came off a little snobbish.  I think we've all been in the above situation.  Many times, through no fault of our own.  We're often the victims of process, bureaucracy or other external forces that often oppose success.  Please don't feel like I'm talking down to anyone.  Hindsight is 20/20.

posted on Wednesday, November 15, 2006 1:07:39 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Tuesday, November 14, 2006

Something that always bothered me at my previous job was having to install the framework SDK to get a copy of gacutil.exe.  I know the guys still there hate having to install the SDK on a server so they can manipulate the GAC.  Richard Lander gives some interesting information on the topic, but he doesn't go into why it's not included in the redist.

Since I've been at MS, I've learned a great deal more about the Global Assembly Cache (GAC) and the fusion APIs. Last night, I was taking a shower after cutting my hair, and the reason came to me.  That reason is... installers, or more importantly... uninstallers.

During a discussion recently, I heard an amazingly profound saying:

"It is better to fail to do, than to fail to undo"

I don't recall who said it, and they probably got it from someone else, but it is right on the money.

When programs uninstall, they have to correctly remove things they've placed in the GAC.  Let's make up an example.  Let's say I have some software company.  We've developed a magical managed library that makes it wicked easy to develop our software, so we use it in all our products.  Let's say that in our deployment model, it makes sense to deploy that library to the GAC.  So, uninstalling our software should remove it from the GAC, right?  We'll what if one of our other products is on the machine? We don't want to uninstall one and break the remaining one.

When you install an assembly into the GAC via the Fusion APIs, you do so with a traced reference.  That reference tells Fusion "who" installed it.  If 2 installers install the same assembly, it's smart enough to know not to remove the assembly until both uninstall.

GACUtil, as a management tool, enables you to  use traced references as well, but it also allows you to install without a traced references.  It also allows you to force uninstalls and do lots of other screwy things.  In other words, the tool is too powerful.  Devs need to be able to do screwy things.  Administrators need to be able to do screwy things.  Regular users don't.  Give them an install package that handles everything.  Otherwise, you're bound to have a support nightmare.

If I have time, or enough requests, we'll go into how to use the fusion APIs directly to manage the GAC.

posted on Tuesday, November 14, 2006 9:10:30 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Monday, November 13, 2006

Starting on Halloween (a couple of days shy of 11 months), Jenna passed my criteria for walking on her own.  Becky brought her up for some of the MS-sponsored Halloween fun, and to our surprise was totally capable of walking down the halls of building 42, grabbing candy that people had placed outside their doors.  Evidently, our house was simply too cluttered with the chaos of unpacking for her to be able to demonstrate it fully there.

To add to the hilarity, she was dressed as a monkey.  I've had pictures of this for quite some time, but I haven't uploaded them to Flickr yet.  They are awesome.

So, this weekend, we purchased and installed 3 hardware-mounted baby gates to keep her from getting into too much mischief so that poor Becky doesn't have to case her around all day to keep her from getting into trouble.

posted on Monday, November 13, 2006 12:55:19 PM (Pacific Standard Time, UTC-08:00)  #    Comments [1]

Several people have complained that I haven't made any entries in a while.  There are several reasons for this.  Aside from being generally busy, I'm signed up to do some posts about the CLR in general, and some from my ownership areas as part of my job.  This has resulted in several "half-baked" entries ranging from hosting the runtime to the Global Assembly Cache, to some other more general CLR-related entries.

In addition, MS has had several new products in the queue that were on the verge of releasing, and I've had entries waiting for them to release.  Of course, being on the safe side, I've waited for someone else to blog first, at which point an extra post from me doesn't make much difference.

And thirdly, Jenna is growing like a weed and it's hard to find time to sit down and formulate posts when you're chasing her around the house.

So, regarding technical content.  I'd like to get an idea of what people are interested in hearing about. So shoot me an email or leave a comment with suggestions for posts regarding the CLR in general or specifically within my areas of ownership:

  • The unmanaged hosting API's (CorBindToRuntime, etc.). These are what you'd use to host the CLR in your own app in order to more tightly control things, or provide additional isolation or escalation policies.
  • The global assembly cache
  • "automatic" CLR activation - what I mean by this is what happens when the runtime is spun up my a managed app, or via COM interop.  Things like how to decide which runtime to use, etc.

In addition, I'll try to keep the personal updates coming for those who are not looking for just technical content.

posted on Monday, November 13, 2006 12:49:21 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]