Friday, January 27, 2006

Becky's been starting to teach lessons again.  This time in the evenings so that I can watch Jenna.  It's been difficult for me to be "on display" for her students and sometimes their parents.  So, I've been experimenting with different things to try while she's teaching.  Yesterday, Andrew was able to come by after his tennis tournament in Georgetown, so we decided to take Jenna out on the town.

We took her to Fry's first, where I loaded her up in the Baby Bjorn, and we walked the isles looking at all varieties of wonderful things.  She did very well.  In fact, she slept some.  She loves that thing.  When all else fails, I know I can settle her down in the "bjorn".  She did so well that it didn't matter that we hadn't brought the diaper bag or ANYTHING except for the bjorn.

On the way home, we swung by Pei Wei and picked up some dinner for ourselves and Becky.  Yummy.  Hopefully there will be many more trips to Frys and Pei Wei in our future.

posted on Friday, January 27, 2006 10:17:34 AM (Pacific Standard Time, UTC-08:00)  #    Comments [1]
 Thursday, January 26, 2006

Back the the days of .NET 1.1, you'd use a Hashtable to store values with a fast lookup using a key.  Hashtable used a single array of "buckets", which stored the key, value, and a collision index.  The index to the the bucket array is a transform of the hashcode of the key (unless there's a collision).  Long story short, there was no stable ordering to the values in a Hashtable (technically, the order is super-important to the algorithm, but it's not useful on the outside).

Fast-forward to 2.0, we have the Generic Dictionary.  It's algorithm is quite a bit different.  It has an array of Entry<Key, Value>, a private nested class similar to bucket in the Hashtable.  But, the "bucket" data is stored in a separate array of int, which holds the index into the Entry array for that hash.  When you add something to a Dictionary, it is simply added to the Entry array, and the bucket array is the one that's updated and possibly re-ordered.  Long story short, there IS meaning to the order you get from a generic Dictionary (using the enumerator).  It's the order you added them.  This subtle change adds alot of value to Dictionary in my opinion.

It was just a very interesting realization to me, and I thought someone else might find it useful.

posted on Thursday, January 26, 2006 9:03:31 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Wednesday, January 25, 2006

I recently got mail at my domain working properly, and as a result, I've changed my main email address.  Of course, I'd like to get everything converted over.  One thing that's tied to my email address is my MS passport, which of course runs everything from my MSDN subscription to MSN Messenger to my XBox live account (and very well I might add).  Fortunately, you can change your email address from www.passport.com.  I had 2 issues when doing so.

First, I had tried out the windows live custom domains beta, which hooked my domain up with hotmail addresses.  It had some issues, so I had cancelled my service.  But, when I tried changing my email address, it said marklio.com was reserved and I couldn't use it.  Luckily, a few emails to passport and custom domains support cleared that up.

The second problem involves MSN Messenger. All passports have a unique ID underneath that is your actual "ID", even though you don't really see it anywhere.  This allows you to change the email address without changing "identities".  Most things migrated seamlessly (XBox360, etc).  And signing into messenger gave me my contacts list.  The problem was that none of my contacts were ever online.  As it turns out, the entries in the contacts list ARE tied to email addresses instead of the unique IDs, so everyone on my list has my old address in their list.

Booo.  So, if I'm on your MSN messenger contact list, please re-add me with my new email address.  It's mark at this domain (marklio.com).

posted on Wednesday, January 25, 2006 1:11:24 PM (Pacific Standard Time, UTC-08:00)  #    Comments [2]

Yes, the rumors are true.  Today is my birthday, and I am 30.

I know alot of people who got really depressed and overwhelmed when they turned 30.  I wasn't sure how I'd feel, but I can say now that I don't fell any different. That may have to do with Jenna being born last month.  That was such a huge change that 30 isn't that big of a deal.

I've gotten a monstrous barrage of silly e-Cards over the past few days... all from my dad.  Thanks.  And thanks to everyone else who has wished me well over the past few days.

posted on Wednesday, January 25, 2006 1:02:29 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Friday, January 20, 2006

No, I'm not talking about a BBS, although they are certainly obsolete as well. I'm talking about physical bulletin boards. I don't know about you, but where I work, there are tons of bulletin boards.  They just kind of blend into the walls.  Many have not been updated in years...YEARS!  For instance, the one closest to my cube has only a double-length sheet of paper on it with the following heading:

Employee Bulletin Board Ads

Sept 1, 2001

Whoa! 2001! As I walked around today, I looked at other boards and there was not a single one that had been updated in the last year.  This leads me to believe that bulletin boards are not only obsolete, they are dead.  Has anyone seen a working one anywhere?  I think the only place that might still see one is in a school.

posted on Friday, January 20, 2006 9:53:38 AM (Pacific Standard Time, UTC-08:00)  #    Comments [3]
 Wednesday, January 18, 2006

Whew! My blog's been down the last few days due to some weirdness.  This post is more or less to make sure everything's working again.

posted on Wednesday, January 18, 2006 1:31:24 PM (Pacific Standard Time, UTC-08:00)  #    Comments [2]
 Friday, January 06, 2006

As I mentioned earlier, I've been playing with WF.  When debugging in Visual Studio, a program running a workflow pretty much uses 99% of CPU the whole time.  I thought that was pretty scary, especially since I had alot of Delay activities in my workflow.  Well, not to worry, running the .EXE outside of devenv gives you what you expect, a very well-behaved program.

I suspect it has to do with the sweet debugging stuff that's built into the workflow designer surface.  You can add breakpoints to activities.  It's pretty cool, despite crashing on a regular basis.  Hopefully, they'll fix this before RTM.

posted on Friday, January 06, 2006 8:00:06 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]

Today is my mom's birthday.  She got the short end of the stick having her birthday so close to Christmas.  This is her first birthday as a grandmother, a role that she has taken with much vigor. She was in town here yesterday watching Jenna while Becky was out, but I didn't get to see her since I was at work.  Hopefully, we can see her this weekend and have some birthday festivities.

As usual, I'm not including a picture for her, for fear of some kind of demented payback since she doesn't like pictures.

posted on Friday, January 06, 2006 7:34:20 AM (Pacific Standard Time, UTC-08:00)  #    Comments [1]
 Thursday, January 05, 2006

I downloaded the Fight Night 3 demo on my 360 this evening, expecting to be wowed.  And wowed I was, but by two different things.

First, the graphics and presentation are amazing.  There are no health meters, no on-screen data at all, just two boxers...boxing.  It looks absolutely incredible.  It's a level of realism I had not yet experienced.

Second, I could not figure out how to play to save my life.  My character pretty much just stood there and got the crap beat out of him.  Several of the buttons appeared to all have the same function... the "brush some dust off your opponent by moving your glove in the general direction of your opponent, but without applying any force whatsoever" function.  Seriously, I thought something was wrong with my controller, so I fired up a second one.  Nothing I tried did the slightest amount of damage.  So, I looked for the control explanation.  Ahh, the right stick is the "total punch control".  That sounds good, right.  So, I tried just about everything I could think of to control my punches using the stick, but still nothing.

Can someone explain how that's supposed to work?  I'm sure their control mechanism is innovating, but I just can't figure it out. Does EA really expect people to be amazing by a game who's controls are so unintuitive?

[UPDATE:]  After some more playing, I've figured out a fairly successful strategy.  I was missing the fact that holding the left trigger let you "dodge" with your body with the left stick, while the right trigger allows you to block with the right stick.  I never got the right stick to do any successful punching.  But, using combinations of jabs and hooks, you can get pretty solid punches, especially when coming from a dodge.  I've gotten to where I can knock the other guy down without much trouble.  I doubt I will buy the game when it comes out, unless my friends get into it. I don't really like boxing that much.

posted on Thursday, January 05, 2006 6:33:45 PM (Pacific Standard Time, UTC-08:00)  #    Comments [3]

I've had a bit of time this week to dive into WF (formerly WWF... he he).  I'm very interested in utilizing this both professionally and personally.  In my experience, a HUGE amount of the software I interact with and write deals with workflow.  I need more than one hand to count the pieces of software I deal with at work that attempt to give the user a design surface to create workflow on.  Most of them fail pretty miserably.  That's why I was delighted that the WF designer was so extensible and reusable.

After orienting myself with the concepts of WF, I set out to extend the base SequentialWorkflow to wrap some custom behavior around the execution of the workflow.  I immediately ran into problems.  It seems that if you inherit from SequentialWorkflow, the project immediately thinks you are going to use the designer to create a workflow, rather than build a base type that will be used to build workflows in other projects.  It immediately starts throwing around validation messages like:

Activity 'BlahBlahBlah' validation failed: Property 'ID' not set.

Well, of course it's not set, I'm not even remotely trying to create one yet.  So, I add the following brain-dead code in the constructor:

if (this.DesignMode) {

      this.ID = "FakeID";

}

This gets rid of the validation error, but now it gripes that my class is not partial, so I slap a partial modifier on it and let it go.  Finally, it compiles.

Once I figure that out, I'm golden and things run fairly smoothly.

posted on Thursday, January 05, 2006 11:46:27 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
 Thursday, December 29, 2005

Despite my excitement, I managed to get some pictures of the out of box experience opening up the XBox 360 premium packaging.  I've got the photoset up on Flickr.  It was very well organized and easy to get into and get set up.  Once thing I thought was interesting was that the hard drive was pre-installed.

The AV cables have both component and composite connections for video, as well as analog stereo connections and an optical audio jack.  I've seen several people miss the HD/SD switch on the cable itself, which is nice when you've got the dashboard set up for 1080i, but you've taken it to grandma's who has a TV from the 40's.

I was pleased that I did not have to supply batteries for the remote or the controller.  And, when I picked up a second controller, it also came with the necessary AA's.  That's a nice touch.

Perhaps my only qualm with the hardware itself (which I should probably add to my review), is that the power supply is external, and it is enormous!  Seriously, it's really big.  And it has a large orange LED on it that gives off an eerie glow in the dark.  But, I had forgotten about it until I uploaded the pictures, so it must not be that bad.

posted on Thursday, December 29, 2005 10:02:31 AM (Pacific Standard Time, UTC-08:00)  #    Comments [1]