Scott Hanselman

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

The Programmer Phases of Grief: or Language Translation is Harder Than It Looks

February 23, '07 Comments [25] Posted in Musings | Programming
Sponsored By

One's mind should be pretty clear when programming. I'm a decent enough programmer, but I'm not a bad-ass programmer. At least not anymore.

Back in the day, before marriage, before diabetes, before babies, when I was sleeping a full 8 hours, I could code some nice stuff. Now it's just a miracle it compiles. When it does.

I also tend to, um, not think. At all.

I have been looking into OpenID lately, and had the privilege of meeting the CEO of JanRain, Scott Kveton (pronounced 'k'-vee-ton', but real fast, like the first two syllables are one) and mentioned that I was pleased they had made a .NET compatible OpenID library available (Andrew Arnott has wrapped it in a nice ASP.NET 2.0 Web Control).

I was thinking I'd add OpenID support to Corillian's Voyager eFinance Server as a Proof of Concept, as our authentication system is pluggable. It'll be a nice demo, as our CardSpace one already works great.

I went and download the .NET OpenID Library preparing for a few hours of tedious work.

Tangent

The .NET OpenID library is written in Boo - I blogged about Boo in 2005 (I wonder if Ayende will update his Boo Reflector support for Reflector 5.0?) - which is a language that is damn-near Python. You can convert your code to Boo with this online tool if you want to play. Here's some Boo examples versus C# 2.0.

Right now the best and easiest way to write Boo is to use SharpDevelop, the Open Source IDE. Boo is a first-class language within SharpDevelop, along side VB and C#, and includes all the usual good stuff like debugging and what-not.

The OpenID .NET Library, as I said, is written in Boo, very likely because the original library was written in Python and Boo offered not only a clear porting direction, but also made the developer comfortable. More on this later.

I figured this evening I'd "port" the Boo source for this library over to a "proper C# library" so the masses wouldn't have to sweat Boo. This experience let me through the...

Phases of Programmer Grief*.

Shock

I was of course, like any religious zealot C# programmer, shocked and offended and looked on with disbelief that anyone would use any language that wasn't the One True Way® to produce perfectly viable and runnable IL. Microsoft's whole multi-language, single-runtime was just to prove a point to the Java guys right? I looked at the code with disdain

Shock is often accompanied by numbness...

No curly braces? Duck typing? Is this how these people live and code? Freaks. Toy Languages, man, toy languages.

Denial

At this point, I don't think it'll be hard to port this. The library includes NUnit Tests, but as the library is structured with a lot of things marked internal to the assembly, there's two libraries. The main one, and the test one - but the code is also compiled into the test assembly. I started marking things public, and separated the two.

I've already missed the forest for the trees here, and I'm happily stepping on butterflies in my quest for the big game.

My goal was to use the Test library, as is, to test my glorious new C# library - the one I hadn't started yet. If the same tests passed on my C# version, shiny. I started poking around the code, trying to get an idea on where to start. The library includes a Server and an Consumer, and since I just needed the Consumer in the short term, I figured I start there.

Bargaining

There's not THAT much code in the consumer, but there's not only a number of utility classes, but there's also a bunch of Boo language-specific collections and such. Also, as .NET 2.0 doesn't include Diffie-Hellman support (Orcas does, BTW), the OpenID library referenced Mono.Security to get there BigInteger class and Diffie-Hellman support.

ASIDE: Be aware that Mono is GPL'ed Mono Libraries are MIT X11. Mono produces IL, and Mono libraries are CLS compliant, you can reference them in your Windows .NET applications happily, and they'll work fine 99.9% of the time. Adding a Mono library to my Windows .NET CLR program doesn't make it run under Mono, it's just referencing a library. Some people, like myself (yesterday) look down on this like we look down on C# programs referencing Microsoft.VisualBasic.dll, but hey, it's tested code I didn't have to write...you'll no doubt see my own personal epiphany coming later in this post...

I thought I might write my own Diffie-Hellman...

Note that I'm getting totally off the main task-at-hand already here...but I've not noticed it...yet...

...or find one that was already done. If I could just remove that Mono.Security reference...

Guilt

I started to feel bad, who am I to remove this library? Someone's worked hard on it, it shipped, let's leave it be, and get to the real work. Maybe I can find a better way to port this...ah, yes, Reflector!

I'm completely delusional...lack of sleep?  Analysis paralysis or just complete lack of thought? Ah, too much soda, perhaps? High blood sugar?

I'll just reflector the assembly and decompile it into C#. Heh, maybe I'll use Denis Bauer's FileDisassembler. There's probably some Boo specific stuff, but I'll yank that, no problem. It might be sinful, but no one is looking.

Of course, Boo assemblies include dozens of anonymous generated types and adapters to make Boo's closures work (it was designed before Anonymous Delegates could be used for closures) as well as for type inference.

Gosh...this decompiled C# code isn't even close...this may express the intent to the computer, but it doesn't reflect the Programmer's Intent at all.

Anger

Stupid piece of crap Reflector! Man, Lutz can't even decompile to something I can freaking read!

Remember that IL is the applesauce on its way to becoming apple juice. Note that Stupid Scott is pissed here because Lutz's Reflector can't turn applesauce back into an apple. Darn Reflector and the Laws of Abstraction.

Shoot...this is going to take longer than I thought. Now I've got to just freaking write thing whole thing from scratch by actually thinking and understanding what the code is intending to do! Man, I wasn't planning to think tonight, I just wanted to get OpenID on my blog.

Depression

I'm not a good programmer! I've been coasting on charm for at least the last three years. I remember what closures were in college, but I've been using .NET 1.1 for the last five years and it dulls the senses...I might as well just give up and become a nurse.

Acceptance and Hope

Wait a second. I've already got a library that works. It's got unit tests. It depends on a tested and released Mono library and a 3 year old non-mainstream language, but it works. It's been used and implemented live before and someone has already wrapped it into an even better and more useful abstraction. Maybe it'll work after all. 

The moral of this story is that my time would have been better spent learning Boo, reading the source, and using the Library. The source came with a NAnt Task, but I just created a Boo Project in SharpDevelop - THAT wasn't wasted time.

After I'd learned enough Boo, if I really wanted a C# version, for whatever reason, I should have just written it from scratch using the public interface as a template and the Programmer Intent, written in Boo, as my algorithmic scaffolding. Hindsight is 20/20.

Now, how do I get my evening back?

* With Tongue Placed Firmly in Cheek.
** Image
stolen from here.

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.