Scott Hanselman

You Can't Teach Height - Measuring Programmer Competence via FizzBuzz

February 27, '07 Comments [48] Posted in Learning .NET | Programming
Sponsored By

The comments are abuzz over at Jeff's blog as he's aggreblogged the current discussion on the FizzBuzz problem. It started when Imran said that he has found so few programmers who can code that he, as Raganwald put it, "set the bar ridiculously low."

A FizzBuzz-style question is:

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

And for the sake of your immortal soul and your webutation, don't post the solution in the comments. You'll only die a little inside if you do.

Speaking of comments, there's some pretty choice comments on the various blogs that are worth looking at:

It's just performance anxiety.
Most people are terrified/stressed out during interviews.
Not "Can you X?" -
"Can you X whilst terrified?"

This is, to a point, reasonably valid, but I think that if you're hiring someone to sing, it's reasonable to have them sing at the interview. If you're being paid to write code for the better part of your week, and you're offended by being asked to write code at the interview, I say you're hypersensitive. If the interviewer pulls out a laptop and says, "let's write some code" at an interview, as the interviewee, I'd be happy to see that they mean business. I mean, we ARE writing code to solve business problems, right?  Seems like not having someone write any code until you've worked somewhere two or three weeks, gone through orientation and company training, could be a dangerous gamble.

Here's another:

However, I have never *once* used - or had call to use - recursion to solve a problem, since I learned about it at university.

Statements like this are kind of dodgy as well. I don't know this individual, but based solely on this one sentence I would surmise they are either, rather young (i.e. recently out of school, maybe the last 5 years) or they've been writing the same general kind of code in their career. Saying that I have never used X since school either means you haven't been out of school long, or that X is a totally useless thing.

What's really important isn't whether a person has used recursion since school, but:

  • Could they use recursion if they had to?
  • Would they recognize the opportunity to use it when it arose?

This can of course be make generic:

  • Could they use [insert well-known computer science dogma here] if they had to?
  • Would they recognize the opportunity to use it when it arose?

A few years back I kind of got some flack for posting on "What Great .NET Developers Ought to Know." I just wrote that post on a plane, brainstorming the general kinds of things I thought that someone who worked for me should be able to answer. It wasn't an exercise in trivia, I was literally writing it up to prepare to hire someone.

Some - very fervent - folks thought it was a manifesto, dictating that one had to know these things to be successful. Certainly this isn't the case.

But what can we ask folks who are being hired to code? What do you think they'll say if we ask:

  • Say, can you code?
  • Bug free, izzit?
  • Lots of Unit Tests?
  • You love Continuous Integration? Cool.
  • Work well with others? Easy going? Charming.
  • Drugs on the side? No. Good. Come to work on time?
  • You're not evil are you? One of Satan's minions? Good...
  • Got a degree of some kind? Yes, good.
    • Or: No? Being doing this a while though? Got good references?
  • Here solve this simply programming problem. Don't worry, it's not obscure or a trick. I just want to see how you think.

Surely these are all reasonable questions...I could go on. Here's the deal, when I hire someone, I'm looking for them to be tall. A boss told me once that he just wanted his programmers to be tall, because when you're putting together a basketball team, you have to remember that you can't teach height.

We're looking for folks who are excited about computers, who are lifelong learners, who are easy to get along with but willing to fight for what they know to be right. We want folks who will raise the quality of their own code with experience, and also raise the teams level of quality through a process of ongoing improvement and introspection. Seems reasonable to me.

One other thing that's amazing to me about this blogversation (look at me coining B.S. Web 2.0 words left and right!) is that some of the programmers who read these blogs feel the need to actually solve the FizzBuzz problem.

They've completely - no, I need a work with more oomph - utterly? missed the point.

The FizzBuzz exercise is an interesting one, but it certainly should only be considered as a single arrow in one's interviewing quiver. But, Imran ends his post with this, and I shall as well: "This sort of question won’t identify great programmers, but it will identify the weak ones."

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Enabling Aero Glass on Windows Vista with a Toshiba M200/M205

February 26, '07 Comments [22] Posted in Bugs | Gaming | Musings | Reviews | Tools
Sponsored By

I've been really disappointed that the lovely Toshiba M200/M205 series of notebooks has been so poorly supported by Toshiba. While these little workhorses will run Vanilla Vista just fine, none of the useful craplets will work and Toshiba seems to have abandoned this TabletPC for the sexier M400.

I've googled all over for this and found Microsoft blogs where the guy said "it's working great on internal drivers" but I can't get a straight answer from anyone. I figured it was time to solve it once and for all.

The NVidia Vista Drivers announcement says:

GeForce Go GPUs in notebooks are currently not supported in drivers from NVIDIA.com.
At this time, the drivers available on NVIDIA.com do not support notebook GPUs. Many NVIDIA notebook GPUs have Windows Vista drivers already built into the operating system and install the first time you run Windows Vista.

However, I refuse to give up on the Little Tablet That Could.

Even though the M205 isn't listed as supported, I threw caution to the wind and downloaded and installed the:

I also demand Vista Aero Transparent Glass on this laptop. So what that it has a crappy NVidia Fx5200 GX video card with 32megs of RAM? That was state of the art three years ago. Runs (some) 3D games just fine thank you, and Google Earth, too. Surely this POS can run some transparent windows, right? I mean, it did under XP running Windows Blinds. ;) (Yes, I know how the new desktop compositor works under Vista, no letters, please.)

There's a real Gold Mine over at LaptopVideo2Go.com. While NVidia seems not to care much about existing Laptop GPUs with their driver releases, the community at LaptopVideo2Go forces them to care by editing their INF files.

WARNING: You're on your own if you do this...don't come to me with problems. YMMV.

There's excellent step by step screen-shotted instructions on how to download the right drivers for your laptop and use a Modified INF driver file to fool/force/coerce the drivers to supporting your hardware, even when the manufacturer would really rather that you not.

I quaked in fear as Windows reported that this driver was not digitally signed. But, some how I worked past it.

This thread over at LaptopVideo2Go offers this great graphical table explaning the drivers vs. GPU chipset relationships. It's a little out of date, but it helps one get the idea.

 

I downloaded the NVidia 9802 driver for use on this Toshiba but 9719 and a few others. The 9708 driver seemed pretty snappy as well. This was actually a driver released for ASUS laptops. The modified INF is what gets it working for other GPUs. I've actually tried about 10 different versions.

You can poke around and make an educated decision. Many folks feel the 60xx series of drivers is a better choice for the 5200 GO Chipset, others say not to use any lower than 70xx. I went with a newer one based on comments in the forums.

I downloaded the modified INF, copied it over the existing one, and did the old "Update Driver | Have Disk" trick. Again, see the instructions.

After the driver installation, I saw this in my Properties Dialog...check out that Shared System Memory Value. Yikes. I've got 1.5Gigs on this laptop. If you're going to get this working you'll likely need at LEAST that much memory. 

But I loves my Glass. I'll charge onward and see if I can get this to work...

After rebooting, I didn't see any Aero Glass and was totally bummed. Then I went to the Start Menu and typed in "Performance" and ran Performance Information and Tools. I had originally a 1.0 for Graphics Perf, since I was using the out of the box, auto-detected Standard VGA driver.

I ran it again, and got some error that the Video Driver had some trouble and got restarted, but now my Gaming Graphics experience went from a 1.0 (horrific) to a 2.4 (marginally horrific.)

Hm...that's something, I guess, but I still haven't got Glass. Most times I run the Windows Experience Index tolol (by pressing Update my Score) I get this error:

So, there's actually no happy ending (yet) to this post...folks in the Forums insist they've gotten Aero to work on an M205, but I've tried literally 10 different driver versions and modded INF files and while my 3D score has increased, I'm still Glassless.

I'll update this post as information comes in or one of you M200/5 owners tries this and finds a success that you'll share with the rest of us.

  • UPDATE: I got a flash of Aero, then this message in the Event Viewer:
    The Desktop Window Manager did not start because an analysis of the hardware and configuration indicated that it would perform poorly. The Desktop Window Manager has encountered a fatal error (0x8876017c)

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Grandma

February 26, '07 Comments [14] Posted in Musings
Sponsored By

That's my Grandma at 19 on the Oregon Coast circa 1935. That fellow on the right isn't me, it's my Grandpa, whom I never knew. On day, maybe seven years before this picture she saw my Grandfather walking down the halls of her middle school and whispered to her lifelong friend "I'm going to marry that fellow John Hanselman."

And she did. They had three kids, my dad being the baby. Grandpa passed when my dad was 11 and Grandma was left to raise the kids alone, in the 50s and 60s when it wasn't fashionable to be a single mom. It certainly wasn't easy then, and I'm sure it still isn't.

Grandma Jean is the only Grandparent I've really known.

Grandma always apologizes (unnecessarily) for not being "a dainty grandmother type." She always says "I don't bake pies. I'm sorry, I just don't." But she did, and does, call my on my B.S. and tells me her opinion, pretty or not.

Grandma is kind. She's starting to lose her memory, but just the short term. She can tell you all the exquisite details of the Beach Trip in 1935, but can't quite remember if she saw you last week, or the week  before. But she is kind.

I know she is kind because sometimes when old folks start to fade away, who they really are comes out. Mean folks get really mean, and bitter folks become cruel. Not Grandma. She's what we call a "straight shooter."

Grandma has always believed in a kindness to all folks of all types. It's hard to understand after reading her father's (my great-grandfather) memoirs of his trip to the U.S. from Scotland. He was an unfortunate racist who essentially landed on the shores of this country as an immigrant, spun on his heals and announced "get out of my country" to whoever followed. Grandma would have none of this.

Grandma was nearly suspended in the 1920s for dancing with a Black kid - someone she was apparently quite taken with at the time - and sent to the Principal's Office. Grandma was a beard (female friend) for a Gay man in a lifelong committed relationship at company parties so he could keep his job in the 1950s and 60s. Grandma is neither liberal nor conservative, revolutionary nor reactionary, she just has what she terms "Common Sense and Common Courtesy." While visiting some family friends in Georgia, as I understand it, someone used the N-word over dinner, and Grandma quietly got up, left, and hasn't spoken to them since.

Grandma has welcomed my wife and her family into her family with grace and understanding without a word about color or culture She dotes on her great-grand-children and today, on her birthday, Grandma Jean met her latest great-grand-child, Isabel Jean.

Grandma was born in Portland, traveled the world in her later years with her eldest sister working as her sister's nurse, and returned to Portland where she is the benevolent matriarch over a brood of many grandkids and enough Great-Grand-Children to fill two hands. She is worldly and local, thoughtful and accessible, kind and irreverent.

And we aspire to be more like her. Happy 91st Birthday Grandma Jean Hanselman. Here's to many more while, as you say, Grandma, "I'm still having fun."

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Gerwiiatrics - Old People play the Wii

February 24, '07 Comments [4] Posted in Gaming
Sponsored By

According to this artcle at DailyTech, that borrows from articles at GameDaily and the Chicago Tribute old folks, may be the next big market segment for the Nintendo Wii.

We're already loving the Wii here at the Hanselman House (video) and I personally highly recommend it to anyone who's thought about getting a game system for their kids but was worried about the sedentary aspect of "twitch gaming."

While I was reading the article I noticed in the HTML source that the filename of the picture of the old gentleman bowling was named "gerwiiatrics.jpg."

Now that's funny. More power to the Wii.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Google GuestMap 2007 and adding Google Maps to your Site

February 23, '07 Comments [3] Posted in ASP.NET | Javascript | Musings
Sponsored By

Two years ago I asked you "where are my readers?" Today, I ask you again, where are you?

Go sign my Google Maps Guest Map, would you, Dear Reader? It'll just take a moment, no registration required.

UPDATE: Read the Guest Map GuestBook directly, without the map.

I did a demo site with Google Maps and the GoogleMaps API recently for work. It sure is a nice clean API if you've got the data. I was able to integrate a nice map a day. I'm sure with a weeks work (which I don't have, it's just a demo) one could do some great stuff.

You just visit the Google Maps API page and sign up for an API key. You're limited to like a billion views, so don't go over! You can read the API docs as much as I can, so I won't bore you too much, but here's a little of what I did to jumpstart my demo.

(There's LOTS of ways to do this, BTW, this is just one. The sample may not be "cutting edge" but it's accessible.)

I was actually integrating the Timeline Control and its XML format with a Google Map...so, let's just say you have an existing XML format:

<data>
<event
start="Feb 13 2007 09:00:00 GMT"
end="Feb 16 2007 09:00:00 GMT"
isDuration="true"
title="Some Window of Time">
Be sure to pay attention!</event>

<event
start="Feb 4 2007 10:04:00 GMT-0500"
title="Chipotle $4.58"
lat="45.483484" lng="-122.800026" >Food</event>

<event
start="Feb 7 2007 16:00:00 GMT-0500"
title="Jack in the Box $9.44"
lat="45.493112" lng="-122.805862"
>Food</event>

</data>

I can just add geographic data "along for the ride," made especially easy because this data doesn't have a schema (although I could put it in another namespace).

You add this line to your page:

<script src=http://maps.google.com/maps?file=api
&amp;v=2&amp;key=YOURAPIKEY
type="text/javascript"></script>

Then add a map somewhere:

<div id="map" style="height: 200px" ></div>

Then hook up your Load and Unloads:

<BODY onload="GLoad();" onresize="GUnload()">

Then add a little script like this to get your XML and yank the data you need. The interesting bits are in red.

<script type="text/javascript">

function GLoad() {
  if (GBrowserIsCompatible()) {
  var gmarkers = [];
  var htmls = [];
  var i = 0;

  // A function to create the marker and set up the event window
  function createMarker(point,name,html) {
    var marker = new GMarker(point);
    GEvent.addListener(marker, "click", function() {
      marker.openInfoWindowHtml(html);
    });
   // save the info we need to use later for the side_bar
   gmarkers[i] = marker;
   htmls[i] = html;
   // add a line to the side_bar html
   side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
   i++;
   return marker;
 }

  // This function picks up the click and opens the corresponding info window
  function myclick(i) {
  gmarkers[i].openInfoWindowHtml(htmls[i]);
 }

  // create the map
  var map = new GMap2(document.getElementById("map"));
  map.addControl(new GSmallMapControl());
  
  
//SCOTT - EXAMPLES OF OTHER STUFF YOU CAN DO
  //map.addControl(new GLargeMapControl  ());
  //map.addControl(new GMapTypeControl());
  // THE 10 is the ZOOM LEVEL
  map.setCenter(new GLatLng(45.519579, -123.004303), 10);

  // Read the data from example.xml
  var request = GXmlHttp.create();
  request.open("GET", "your.xml", true);
  request.onreadystatechange = function() {
  if (request.readyState == 4) {
    var xmlDoc = request.responseXML;
    // obtain the array of markers and loop through it
    var markers = xmlDoc.documentElement.getElementsByTagName("event");
    for (var i = 0; i < markers.length; i++) {
      // obtain the attribues of each marker...don't bother without lat data
      var latVar = markers[i].getAttribute("lat")
      if(latVar != null)
      {
        var lat = parseFloat(latVar);
        var lng = parseFloat(markers[i].getAttribute("lng"));
        var point = new GLatLng(lat,lng);
        var html = markers[i].getAttribute("title"); // or whatever you like
        var label = markers[i].getAttribute("title");
        // create the marker
        var marker = createMarker(point,label,html);
        map.addOverlay(marker);
       }
    }

  // put the assembled side_bar_html contents into the side_bar div
  // A Sidebar is optional, you can just comment this out,
  // or not have a side_bar element.
  document.getElementById("side_bar").innerHTML = side_bar_html;
  }
}
request.send(null);
}
else {
alert("Sorry, the Google Maps API is not compatible with this browser");
}
// This Javascript is based on code provided by the
// Blackpool Community Church Javascript Team
//
http://www.commchurch.freeserve.co.uk/
// http://www.econym.demon.co.uk/googlemaps/
}
//]]>
</script>

I can't show you the demo I did, because it's super-secret-financial stuff, but perhaps you'll think of a creative new way to include geographic data in the project you're currently working on!

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.