growled on Tuesday, February 27, 2007 2:35:23 PM (Pacific Standard Time, UTC-08:00)
barked at ramblings

Over the weekend Stevens Pass and the Cascade mountains received several inches of fresh powder. It's been almost a month since I've been on my snowboard and I couldn't resist any longer. This morning I headed up to Stevens and spent a few hours listening to tunes on my Zune while riding Hog Heaven, Rock 'N Blue, Hog Wild, Skyline, Barrier Ridge and Marmot Meadows. What an awesome morning! :-D

~tod

tags: ,

growled on Monday, February 26, 2007 10:41:14 AM (Pacific Standard Time, UTC-08:00)
barked at parenthood

No, I'm not talking about that errant piece of gum in the parking lot that always seems to end up on my shoe. Or the leftover snacks that always seem to surround your child's mouth for hours after the actual meal. I'm talking about The Stickiness Factor as described by Malcolm Gladwell in The Tipping Point.

I'm in the middle of the book right now, but Gladwell's discussion of The Stickiness Factor (chapter 3) revolves around two insanely popular children's shows, the iconic Sesame Street and new kid on the block Blue's Clues. As the father of a 3 year old, I found it particularly interesting from the perspective of how children learn.

First of all, let's make sure we're on the same page. The Stickiness Factor is just how well someone remembers an idea...how well it sticks.  Be it a salesman's pitch for a vacuum cleaner, an algorithm from a software engineering textbook or a TV commercial for Dove's Real Beauty campaign. When looking at small children (ages 2-7) the stickiness factor Gladwell refers to revolves around learning and the children's ability to retain what we're trying to teach them, via TV in these instances.

Here's what he discusses with regard to Sesame Street:

  • Kids watch TV when they understand what's going on and look away when they are confused. This goes against the normal thinking of today that they watch when they are stimulated and look away when bored. Children do not just watch the flashes and loud noises on screen, but in fact, are less likely to watch a show if they cannot make sense of the story [page 101].
  • Children are excellent multi-taskers! In one experiment, two groups of five-year-olds were shown an episode of Sesame Street. One group had toys in the room with them and the other did not. The kids that had toys in the room watched the show 47% of the time while the kids without toys watched 87% of the show. But when they tested the two groups to see how much the kids remembered, the scores were exactly the same [page 101]!
  • Keep it simple! Research while creating Sesame Street led them to find that kids didn't like it when the adult cast got into contentious discussion or when more than one person was talking at once [a common tactic in adult television to hype scenes]. What adults see as exciting, young children see as confusing and tune it out [page 104].
  • At the time Sesame Street was created (1969), it was commonly accepted by child psychologists that you should not mix fantasy and reality thinking that it would confuse children. Research for the initial episodes found that children lost all interest when the muppets were removed from certain scenes. Attention levels would immediately pop back up when the muppet characters re-entered scenes. The producers went against the psychologists' theories and mixed the two. That's when Big Bird, Oscar the Grouch and Snuffleupagus were born [page 105]. Some of my favorites! :-)
  • Eye movement photography. This is research based on the idea that the human eye is capable of taking in only a very small area at one time. People who make television commercials are obsessed with eye tracking so they can see exactly what part of their ad is attracting the viewer's attention. When applying this to Sesame Street, the producers were able to determine what parts of the segments were really attracting the attention of the children and adjust accordingly to get the maximum attention in the right spots. For instance, to get the kids looking at the letters and numbers on the screen instead of just the muppets [page 108].

After all that, what else could there be? Well, Blue's Clues applied the lessons from the well-deserved success of Sesame Street and added a few more of their own:

  • Going back to the theory that children will watch what they understand, they don't like cleverness such as Sesame Street uses to also cater to adult viewers [at the time, stay-at-home mothers]. Kids just don't get the puns and plays on pop culture, in fact, those are times when they might even lose interest [page 112]. Blue's Clues presents stories in a perfectly literal way, without any word-play or comedy that will confuse pre-schoolers [page 121].
  • Children have a longer attention span then they are given credit for, if the material is presented at an appropriate pace and format. It was assumed that children had short attention spans, but since the 1960s it has been shown that children simply need plots to be told in the narrative form, stories. Kids remember things by telling stories of what happened and that is one way they deal with the complicated things they encounter in their daily lives [page 118].
  • Long pauses give kids an opportunity to interact. If you've watched Blue's Clues then you've seen how Joe and Steve ask questions of the viewer and then take very long pauses for responses. This is intentional as pre-schoolers take longer to process things and allows them an opportunity to participate [page 123]. A fairly obvious tactic once you've seen it in action.
  • Toddlers and small children (2-6) enjoy repetitive stories. According to Gladwell, Blue's Clues runs the same episode every day for a week. Their research showed that children actually became more interested in the episode on the fourth and fifth day! One of the researchers discusses how a child's driving force is not a search for novelty [like with older kids], but a search for understanding and predictability [page 125]. I have seen this in my own daughter. She will fixate on one or two specific movies for a few weeks and only be interested in watching those, but eventually moves on to another one or two. Right now she's into Shrek (1 & 2), before that it was Toy Story (1 & 2) and before that was Monsters Inc. This weekend she might have made the switch to Madagascar. ;-)

I took the liberty of paraphrasing several portions of the chapter and noted the pages where appropriate.

My thoughts on this? Well, I just found it very interesting to see how they performed the research for the shows and the results. Everything my daughter does corroborates their findings as well. She loves Dora the Explorer , "Go, Diego, Go" and the Little Einsteins, which seem to use the same methodology as Blue's Clues [a 20 minute story at a slow pace with the characters taking long pauses after interacting with the viewers]. Not only does she love the shows, but she really does learn from them. One day about 6 months ago, completely out of the blue, she counted to 10 in Spanish! I know for a fact she learned that from Dora.

The explanation behind repetition was quite enlightening. Once I read the concept it was very easy to see why my daughter is so insistent on watching the same movie for a week or two. The more she watches it the more comfortable she becomes with the story and the characters which allows her to take in other aspects of the movie. Like building blocks.

If you're a parent of a toddler/pre-schooler then I highly recommend you read Gladwell's chapter on The Stickiness Factor from The Tipping Point. If you read just this chapter some of the discussion will be lost without context, but only around how The Stickiness Factor works inside the concept of tipping points. The child-related stuff seems to stand on its own. I extracted most of the highlights and concepts, but his explanations go in depth without getting you lost in the details.

~tod

tags: , ,

growled on Friday, February 23, 2007 9:33:12 AM (Pacific Standard Time, UTC-08:00)
barked at technology

Zune music in WMP11?

Windows Media Player is my music/video player of choice. WMP10 seemed to make it really easy for me to find my purchased music. At least I don't remember struggling to find it, more like "oh cool, here's a list of my downloads from MSNMusic." I haven't had that same luck with WMP11. :-\

Note that MSN Music has been replaced by the Zune Marketplace for purchases, just in case you were wondering.

But where is my Zune music located in WMP11? Admittedly, it is pretty simple, but I seem to forget each time I upgrade to WMP11 on one of my multiple computers. [shrug] So here's where you can find it:

  1. Click on Library.
  2. Click on "Online Stores," over on the left side listed underneath Library (you might have to click on the + sign).
  3. In the right pane one of the options should be Zune. Double-click and away you go.

I believe you will still need the Zune software installed on the machine and to log in every so often for the DRM to authenticate. A pain yes, but necessary.

~tod

ps: Yes, that's Faith Hill on the top of my Zune pile. She can sing and she's hawt! ;-)

growled on Tuesday, February 20, 2007 10:41:19 AM (Pacific Standard Time, UTC-08:00)
barked at coding | technology

Rule #1 of deploying software: Expect it NOT to work!

I got to work this morning and after catching up on my reading I decided to check out some tunes on Zune Marketplace while I wrote up some documentation [I hate documenting stuff, but it's a necessary evil]. I fired up the Zune software, searched for Buckcherry [I'm on a kick with them right now] and lo-and-behold what did I see:

79 points to buy?

Where was my "download" option? I have a Zune Pass and should be able to download/stream 95+% of the music in the Marketplace. In fact, I was just listening to some of their stuff yesterday, so I know it's available and I can play it. WTF?

I checked my account settings and they looked fine. I went to Zune.net and there weren't any messages/warnings there. I finally went to an internal mail list and saw a thread titled "download option disabled with zune pass." Ah-ha, that looks familiar! Sure enough it directed me to Cesar Menendez's post from yesterday: Zune Marketplace: Down Between 2 and 5 AM PDT (Maintenance Only). But I'm sitting at my desk and it's about 9am PDT. A full four hours past the end of the maintenance timeframe. Oops. :-\

So I have a few suggestions for the Zune group...

1. Expect it NOT to work! Let me repeat this...expect it NOT to work! This is very important when running a service! I have spent enough years in Operations [7+] to know that deployments almost NEVER go as planned. If you think it will take 3 hours in the middle of the night you better actually plan for 6 or 9 or even 12. Not only will it probably take longer than you anticipated, but it probably won't work at all the first time.  So you better have a rollback plan [how to get back to the previous version that worked] and a timeframe where you're going to give up and just shoot it in the head [scrap the new release and rollback].

2. Tell me what's going on! Give me a notice/message in the Zune application when I first sign in. "We're performing maintenance right now. You will not be able download/purchase new music." If that's not possible [which I know it is, but for argument's sake...] then at least put a nice broad message on the front page of Zune.net. How many Zune subscribers know about or even read ZuneInsider? A small percentage I'm sure. Don't get me wrong, it's great that Cesar mentioned this, but it's not the right venue for the only message.

After writing this post it's now 10:30am, I have my download buttons back and am listening to Buckcherry, but a little more planning would have made this a much friendlier consumer experience.

~tod

tags: ,

growled on Monday, February 19, 2007 12:32:44 PM (Pacific Standard Time, UTC-08:00)
barked at microsoft | technology

Chalain

Microsoft's new operating system, Vista, seems to have inspired a programmer to be poetic, or at least entertainingly descriptive.  Check out Chalain's first reactions to Vista in So Beautiful, So Disturbing. A very good read! :-D

Found via Dare.

~tod

PS: Seriously, this is some really good stuff. Go. Read. Now.

tags: , ,

growled on Friday, February 16, 2007 12:54:40 PM (Pacific Standard Time, UTC-08:00)
barked at code [.net]

It's been a long time since I wrote my last how2 post, but this interesting little question was brought up to me recently and I figured why not throw it up here. How would you programmatically search a string to see if it contains another string? Of course I'm doing this in C#, but the logic would be applicable to any language.

[NOTE: If you just want the quick way to do this then scroll to the bottom.]

Here's a visual of what I mean...  We're looking to see if string1 (lookingFor) is contained anywhere within string2 (lookingIn). For example:

    lookingFor = abcd

    lookingIn = abcd OR efgh OR eabcdf OR eabfcd OR abceabfabcdghi

You can see that of all the options for lookingIn, lookingFor is found in #1, #3 and #5. Each of those options are of varying difficulty to traverse though.

    abcd : Easy enough, the strings are exactly the same.

    efgh : Easy enough, the string is nowhere to be found.

    eabcdf : Now lookingFor is present, but it's surrounded by other letters.

    eabfcd : A little more complicated...the individual letters from lookingFor are present, but the exact string is not present as there is another character between b and c.

    abceabfabcdghi : Ok, now we're getting really complicated. At first we get all the way to the 3rd character from lookingFor [c] before being faced with an incorrect character. Then we start over again and get to the 2nd character. Finally, we find the full string towards the end of lookingIn.

As you can see, the cases quickly go from simple to complicated. We have to handle multiple failures while traversing the string, lookingIn, and make sure that we're finding the whole of the string, lookingFor, not just bits and pieces.

Let's see if I can explain the logic behind the code below. First of all, we want to iterate through the string we are searching through (lookingIn) to see if we can match the first letter of the string we are looking for (lookingFor). If we find the first letter then we will increase a counter [integer j below] to denote how many characters in lookingFor we have found. We then check to see if the counter is equal to the number of characters in lookingFor [the .length property].  If so, then we have found the full string and break out of the for loop. If not, then we add 1 to the counter [integer j below] and continue on to the next character in the string, lookingIn, trying to match it to the next character in lookingFor. Here's the kicker, if at any point in time the current character from lookingIn does not equal the character at the position [integer j below] in lookingFor then we reset the counter to 0 so that we start over.  This is what allows case #5 above to work. It increases the counter by 1 for a, b and c then resets it to 0 when it reaches e.

Here's the full code for a console app [so you can copy/paste into your compiler and play with it]: 

using System;
using System.Collections;
using System.Text;

namespace StringInString
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isContained = FindString(args[0].ToLower(), args[1].ToLower());
            Console.WriteLine(isContained.ToString());
        }

        static bool FindString(string lookingFor, string lookingIn)
        {
            int j = 0;
            for (int i = 0; i < lookingIn.Length; i++)
            {
                if (lookingIn[i].Equals(lookingFor[j]))
                {
                    j++;
                    if (j.Equals(lookingFor.Length))
                        break;
                }
                else
                {
                    j = 0;
                }
            }
            if (!j.Equals(0))
                return true;
            else
                return false;
        } 
    }
}

Now having gone through that exercise in logic, here are two quick ways built in to .NET ;-) :

1. Regular Expressions.  Use the Regex.IsMatch method to determine if string1 is contained in string2. This method returns a boolean value. It would look like this [remember to add the using statement to the beginning of your class for System.Text.RegularExpressions]:

    bool isContained = Regex.IsMatch(lookingIn, lookingFor);
2. Strings have a property called IndexOf() that will search the string for the string2 provided and return the index of where string2 starts or -1 if it isn't found.
    int indexFound = lookingIn.IndexOf(lookingFor);

Given the choice, I'll pick either of the methods built into the .NET framework every single day of the week! Why try to rebuild the wheel, especially when theirs is probably optimized for speed, efficiency and to avoid memory overflows. But, it's still interesting to work through the logic and see how the functions work.

~tod

growled on Wednesday, February 14, 2007 1:13:40 PM (Pacific Standard Time, UTC-08:00)
barked at funnies | technology

A few weeks back, zefrank had a great bit about Ocean Beach [yeah, real original name], sand castles, surfers and waves. He actually does a freakishly good job of relating it back to technology. All I have to say is "dude, I wanna be a surfer!"

the show with zefrank: 02-05-07


~tod

growled on Wednesday, February 14, 2007 12:53:02 PM (Pacific Standard Time, UTC-08:00)
barked at ramblings

A few months ago I was driving home from my parent's house on a dark, easy-winding, country road. It was a little after 9 o'clock at night and the pavement in front of me put me in a sort of driving trance. I noted the tall trees blanketing each side of the road preventing the moon from giving us much guidance. Every few seconds a house would whiz by, most of them set way back off the road with a few lights on inside or maybe one of those big fluorescent yard lights that shines over the driveway and a barn. My daughter was sleepily nodding off in the backseat behind me, her poor head bobbing up and down because the car seat doesn't recline in a very comfortable position. I was lost in thought...where was my life going, how would I handle the hardships ahead, emotions I hadn't felt in years, all running through my mind like a river pushing the edges of its banks. I was just following the easy curves of the road at a comfortable speed. And then there were flashing lights behind me. Blue flashing lights. "Fuck!"

I walked away, well drove away, from that with my first speeding ticket in over 5 years. 50 in a 35. Fuck. 

Well, after talking with some friends and doing some research online [link] I discovered that Washington State judges have the ability to defer speeding tickets. Basically, if you have a clean driving record the judge can offer to not report your ticket [so it doesn't go on your driving record] if you don't commit any further driving infractions for the next year. This can be done only once every 7 years. If you do get another ticket in the next 12 months then both go on your record! Apparently, this is completely up to the judge.

Since I had a clean record I called the Evergreen Division court house and asked the clerk if the judges were likely to offer deferrals. She was very nice and told me that both of their judges were proponents of the deferral program. I also asked her exactly what I needed to do in order to start/go through the process. Easy enough, just return the ticket to the address specified with the box marked that you are contesting the citation.

A few months rolled by and the day of my court appearance popped up on my calendar. Gulp! I don't care what you say, it's nerve wracking just having to be there. :-\

I have to say, it couldn't have been any easier! I showed up at the courthouse a little early [good thing since I took a wrong turn!] and they let us [12 or so people] into the court room a few minutes early. At 9:30 the judge, Patricia L. Lyon, entered the court room and dealt first with the few people who had legal representation. These were the ones that had hired attorneys to fight the ticket. This only took about 10 minutes, but it was kind of funny. The judge made me laugh a few times...

One of the lawyers that was supposed to represent 3 clients had called in sick and someone else from his office was there to ask for a continuance [do it another day]. The District Attorney's office had brought in a speed radar specialist though and asked the court to make the defendants or their lawyer reimburse the DA's office [county I presume] for the cost. The judge had a little fun with the guy asking him "What if you had been sick today? Would you still be asking for reimbursement? Who should pay, the lawyer for being sick?  Or his clients for showing up when they were supposed to?" The DA was really squirming at that point and the judge knew she had made her point so she flat out said, "I'm giving you a hard time to make my point. People get sick and some things are just out of our control." I couldn't help but instantly like that judge! :-)

So then the lawyers leave the room and she explains to the rest of us sitting there that we have three options. If you want to contest the ticket then she'll hear your arguments and make a decision. If you just want to get the fine reduced then you need to change your plea to a mitigation hearing which should be done in another room. Or, if you have a clean driving record you can take a deferral so the ticket doesn't go on your record. That last sentence was music to my ears!

She called four of us up (in alphabetical order by last name) to sit in the seats where the lawyers/defendants sit. I just happened to be first. She said good morning to me, told me that I have a perfect driving record and asked if I would like to have my ticket deferred. I replied, "most certainly!" She told the clerk to give me the paperwork, said that I could pay my $85 at the front desk and ended it with "have a good day."

Long story short [yeah I know, too late]...I got my 'get out of jail free' card today! My speeding ticket won't go on my record. My insurance won't go up [um, unless they read this I suppose :-o]. And I can still drive for our CT vanpool. =)

~tod

growled on Tuesday, February 13, 2007 9:33:47 AM (Pacific Standard Time, UTC-08:00)
barked at parenthood

Then get them involved! Whatever you're doing, chances are pretty good that they want to be doing it with you.

Since my daughter was old enough to walk she has been getting into everything and following us around...like we're her parents or something. Not just us either, her Aunty Kim gets this at her house too along with her Meemaw and Papa when they baby sit. The girl has enough energy to put gas prices back under $1/gallon. Hell, she makes the Energizer Bunny look lazy. In fact, I think she could easily out-distance Shaun Alexander...although she might have trouble getting through the linemen. ;-)

Routing this energy hasn't always been easy. Sure, I'm guilty of using The Backyardigans, Toy Story or Dora the Explorer to get some peace and quiet or time to just do the dishes. Like most parents, I really don't want to over expose my child to the TV. I've found that sometimes the only way to get things done around the house is to let my daughter get involved with whatever I'm doing. The kicker...she LOVES it! Seriously, when I say "do you want to help me get the garbage?" she screams "GARBAGE!" and runs off to grab the closest one. I certainly don't remember having that reaction as a kid. Go figure. [shrug]

The key for me as the parent though, is to get into my 'patience mode.' It's almost guaranteed that anything I involve her in will take twice as long. Initially I will have to talk her through it and teach her what to do. In the long run though, it pays off. She has been helping me feed the dogs every night since she was about 1-1/2 years old. Now, she knows the routine and it doesn't take much extra time. Yeah, she's easily distracted and I have to keep her on task sometimes, but oh well...she's only 3. :-D

My advice to all you other parents out there with energetic toddlers is twofold...be patient and get them involved. Route that energy as best you can and encourage them. My daughter loves to do the dishes, help pick up [well, sometimes], vacuum the floors, take out the trash, feed the animals, carry stuff around and all sorts of typical household tasks. In fact, she entertained herself for over an hour the other night with a half dozen non-breakable dishes in the kitchen sink. She would fill the sink up with water and soap, wash the dishes I had given her, rinse them off, drain the water, over and over. All the time loudly proclaiming with a big smile on her face, "I'm washing dishes!" That smile is something that melts every parent's heart.

~tod

growled on Wednesday, February 07, 2007 8:38:09 AM (Pacific Standard Time, UTC-08:00)
barked at technology

Steve Jobs has an excellent letter, Thoughts on Music, where he discusses why iPod uses a proprietary DRM solution. The explanation isn't really anything new, but his comparison between CD sales and iTunes sales is an eye opener. Not to mention his request to the big four music companies to remove the DRM restrictions from online music. Go Steve! :-D

I agree wholeheartedly with him and his theory. I would gladly pay $1/song if it were free of restrictive software and I could play it anywhere. Right now, I'm using a Zune Subscription ($15/mo) and love it, but the flip side to that is if I ever move away from Zune then I lose all of my leased music. I certainly hope the big music companies pull their collective heads out of their collective asses sometime in the near future...I just want my music! ;-)

~tod

growled on Thursday, February 01, 2007 9:50:11 AM (Pacific Standard Time, UTC-08:00)
barked at microsoft

BillG on The Daily Show (full interview below)... I thought he did well and was pretty much his normal self. Somewhat quiet with a few subtle jokes in response to Jon's jabs. I wasn't too impressed with Jon's questions/jokes. He seemed a bit off his game, not his normal cut-to-the-quick style, but more like he was doing a top 10 of the Bill Gates Lame Joke List. Think about it, how many times a day does Bill get asked "what do you see in the future of computing?" The interactive TV question was pretty good, but the way Jon played it was kind of corny. Oh well, Jon on a bad day is still better than most others out there. ;-)

The crazy thing though was Bill's sudden departure. If you watch the show (or any talk show for that matter), you know that after the segment ends guests typically sit with Jon and chat about whatever [he probably just asks "watching the superbowl this sunday?" with a smile on his face] while the camera pans out and they roll the credits. Bill didn't have anything to do with that nonsense. As soon as Jon said thank you, Bill stood up, shook his hand and left the stage leaving poor Jon saying "where's he going?" This was somewhat shocking, but as Heather points out the Microsoft culture is pretty demanding and it's not unusual to see people [especially executives] jump up and leave a meeting as soon as it's over or even a few minutes before. They typically have meetings scheduled back-to-back and have to do this to make the most out of their day. I'm sure Bill was just thinking "thanks for your time now on to the next gig" without intending any insult.

What I have enjoyed is Jon's subsequent bits poking fun at Bill's exit stage left. :-D Tuesday night he played the Windows popup error bit (included below). Wednesday night he made fun of Bill walking through the production area pushing everyone out of his way on his way out (sorry I couldn't find that one on YouTube or Comedy Central, but I'll update the post as soon as I do). I especially liked the part where he tipped the guy's coffee up as he was taking a drink. ;-)

Here's the full interview:


[Part 1 & Part 2 @ Comedy Central]

Tuesday night's bit:


[@ Comedy Central]

Wednesday night's bit:


[I couldn't find this @ Comedy Central]

Update 2.2.2007: added Wednesday night's bit.

~tod