Scott Hanselman

Choose Your Own Adventure, HyperMedia, and the death of the permalink.

December 08, 2003 Comment on this post [4] Posted in XML | Gaming
Sponsored By

I went to a random book store this weekend for no reason.  One of those times where you're not sure why you pulled over.  Maybe just because I'd never been there before.  An hour later I had a $1 Grab Bag of Sci-Fi.  I'm a pretty avid reader, as avid readers go.  I've got a queue right now that is about 10 deep and includes everything from The Structure of Evolutionary Theory (Last Stephen J. Gould book) to Armageddon (Left Behind series). 

I'm a pretty big Science Fiction fan.  Not crap like the latest Star Wars paperback or TekWar, more like Heinlein, Asimov and any Ender books. 

I really like anthologies, things like The Science Fiction Century, and any Hugo Award winners

Anyway, in one of these random paperbacks was a section that wasn't fiction, but rather called 'Speculative Fact.'  One essay in particular stood out: How David's Sling Met HyperCard by Marc Stiegler.  It opens with this prophetic paragraph:

The media doesn't fully realize this yet, but Bellevue, Washington of the late '80's my be to computer software what Silicon Valley is to computer hardware.  For a software engineer it's an exciting place to live because there's something new every day; it's also scary because you can get so obsolete so fast.  At times it feels like a white-water rafting expedition - one of the recent series of rapids swirls around the evolution of the concept of hyper text into hypermedia.

Marc wrote a novel called David's Sling in 1988.  It was to be a complex book with lots of subplots, and basically he didn't like how his complex web of asychronous events had to be presented in the linear turn-to-the-next-page format 'imposed' by books.  A software engineer already, he knew of Ted Nelson's coining of the word 'hypertext' in the 60's.  He then came upon HyperCard at an Apple convention and created the world's first hypermedia novel.  He describe the ultimate information machine as having a 80386 with 4mb of RAM and a 300mb harddrive. :)

When I ask myself, 'When did I come upon HyperText for the first time,' I remember the Choose Your Own Adventure books of my youth.  I've got a pile of them, and I hope my kids enjoy them as much as I did.  I remember getting frustrated when I 'blew the stack' as I only had 10 fingers to act as bookmarks as I jumped around the book from ending to ending and plot to plot.

When I first saw Mosaic I was impressed, but not blown away.  I mean, my mind was hypertext, why shouldn't information in the physical world be the same way.  Certainly hypertext and hypermedia are and have always been an idea that was only held back by technology. 

Fifteen years after David's Sling, I read this essay with the same feeling I'd have if it were fifty years past.  What has been our progress?  With all that we have on the web as examples of HyperText, it's all held together by bailing wire and MLs (HTML, XML, children of SGML, etc). 

The real finger in the dike that is keeping the whole system from collapsing in a heap of useless information is truly Google.  The concept of a permalink, which SHOULD hold it all together, is weakened when the average life of a web page is less than 100 days

"I think of it like the library burning in Alexandria.  We've had all these hundreds of years of stuff available by interlibrary loan, but now things just a few years old are disappearing right under our noses really quickly."

Google insulates us from much of this through quick indexing, but it doesn't change the fact that information is being lost.  When a student publishes a useful paper or interesting research it's only there until some IT fellow at the college decides to yank a power cord, change a directory structure.

I shudder to think what would have happened to my fragile younger-self's psyche if I tried to turn to page 48 in my Choose Your Own Adventure book only to get a 404 'Page Not Found' error at the climax of the plot.

I look forward to WinFS as a way to organize my life's information.  I can Google the planet in < 1 second, but while I've been writing this entry, the little Windows XP Search Dog has been looking for *2port.sys.  It's been 9 minutes and it's search 350 gigs with ~75 gigs left.  Maybe a permalink has been broken or a folder moved. :)

What will organize the world's information?  Morality and 'civilized society' are held together by only the will of the people.  Chaos and anarchy is just under one's skin.  Can sheer will replace the PermaLink?  Certainly www.archive.org can try, but can't succeed by itself.

As an interesting footnote:  While David's Sling is still available in paperback on Amazon 15 years later, there isn't a copy of his HyperCard Stack to be found, nor a copy of HyperCard to run on the Mac Quadra in the garage.  It's a shame that his vision was ahead of it's time, but when the time came, the 'permalink' (and the platform, not to mention the data format) had rotted. 

If he re-printed his novel as HTML and assigned it a permalink, would it last longer than 15 years...?

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 bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

Longhorn Indigo Samples

December 06, 2003 Comment on this post [1] Posted in Longhorn | ASP.NET
Sponsored By

Thanks to everyone who attended my Longhorn Talk at PADNUG yesterday.  It turned out to be a very Avalon-y/WinFS-y night, so we didn't talk a lot about Indigo.  But, thanks to Yasser, I know now that you can download ALL the Sample Code for Indigo at the Longhorn MSDN SDK.

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 bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

How to mount ISO CDROM files as Virtual Drives - Virtual CD ISO Image Mounter

December 06, 2003 Comment on this post [3] Posted in XML | Tools
Sponsored By

I get a LOT of email about the missing link in my Ultimate Tools list wondering how to Mount ISO files.  Apparently, now it's distributable, and you can get it from Microsoft: Virtual CD-ROM Control Panel for Windows XP.  Damned useful, especially when you have 200+ Gigs of ISO files. :)

The following tool for Windows XP allows image files to be mounted virtually as CD-ROM devices. This tool is provided here for your convenience, and is unsupported by Microsoft Product Support Services.

(Via Mike Gunderloy on win_tech_off_topic - this tool is pointed to on the MSDN subscriptions FAQ page - click on "What are ISO image files and how do I use them?" and the link is near the bottom of that section.)
[Via Adrian Bateman (VisionTech)]

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 bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

PacMan written entirely in Excel...

December 05, 2003 Comment on this post [0] Posted in Gaming
Sponsored By

When you can write nearly perfect versions of PacMan and Space Invaders in your favorite productivity application, you know it's crossed the boundary. Of course, treating cells like pixels and implementing the game by changing the background colors probably wasn't what the Excel developers had in mind, but frankly, that's not much different than what the guys writing the original games had to deal with. Wow. [SellsBrothers]

This proves my point that 80% of the world's business logic runs in Excel.  Perhaps most of the Video Games also do...and we just never noticed?  Splinter ExCell anyone?

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 bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

XmlSerializer Madness: The Guts and the Conclusion

December 05, 2003 Comment on this post [1] Posted in XmlSerializer
Sponsored By

Looks like a little bit of wisdom from Kevin Dente has solved the mystery.

He sez:

A little Reflectoring into the XMLSerializer source shows that in .NET 1.1 it caches the temp assembly using both the type and default namespace as the key. However, 1.0 cached only on the type, and if you specified a namespace it ignored the cache. And it looks like even in 1.1 the other constructor overloads ignore the cache. Good to know.

And the reflectoring shows just that: (Note the Monitor.Enter [lock()] around their cache)

public XmlSerializer(Type type, string defaultNamespace){ 
  XmlReflectionImporter importer1;
  TempAssemblyCache cache1;
  this.events = 0;
  base..ctor();
  this.events.sender = this;
  this.tempAssembly = XmlSerializer.cache[defaultNamespace, type];
  if (this.tempAssembly == null){
    cache1 = XmlSerializer.cache;
    Monitor.Enter(XmlSerializer.cache);
    try{
       this.tempAssembly = XmlSerializer.cache[defaultNamespace, type];
       if (this.tempAssembly == null){
          importer1 = new XmlReflectionImporter(defaultNamespace);
          this.tempAssembly = XmlSerializer.GenerateTempAssembly(importer1.ImportTypeMapping(type));
          XmlSerializer.cache.Add(defaultNamespace, type, this.tempAssembly);
     }
}
finally{  Monitor.Exit(cache1); } } }

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 bluesky subscribe
About   Newsletter
Hosting By
Hosted on Linux using .NET in an Azure App Service

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