Scott Hanselman

My quest for the ultimate TabletPC

November 06, 2003 Comment on this post [0] Posted in Musings
Sponsored By

Matthieu Guyonnet-Duluc wrote me to tell me that a french Geek Site (apparently Geek is Geek everywhere) has a story on a mysterious Toshiba TabletPC M200 [Spéculations et vérités sur le M200 de Toshiba].  Use the Fish if you want to translate it to English, or ask Rory what it says.

Here's the juicy parts of a my lousy translation.  Note this strange news that doesn't jive with my previous scoop about Video RAM.  If this is true, it sucks, and I wonder if it's a heat thing?  I wonder if the Avalon team reads this and has a comment?

Can anyone confirm the release date on this baby?

...you know that Toshiba will leave its new generation TabletPC...used by Bill Gates to show OneNote 2003...

...a little more about the specifications of this Portegé M200...

- have a range of significant power in this model...
- the resolution would seem to be SXGA+ compared with the traditional XGA . In fact the two resolutions are announced in rumour on the Web also it is difficult to have an idea
- the 80 Gb will be with 5400 RPM, while the 60 Gb will be with 7200 RPM
- the video is a nVIDIA last generation with only 32 Mb of Video RAM  -the model with 128 Mb was a non-marketed prototype (Scott: bad news for Longhorn?)
- hardware button to automatically to launch OneNote
- the battery of almost 4 hours
- the bluetooth seems to be integrated
- a Secure Digital Slot

CPU - 1.4/1.5/1.6/1.7/1.8GHz
Memory - DDR333 256mb-2gb
LCD - 12.1"TFT SXGA+
Video - Ext. nVIDIA Map34-32/32MB
HDD - 40, 60, 80GB (5400rpm) 60GB (7200rpm) (Scott: Definitely the 60GB)
Ports - 2xUSB2.0, FIR, RGB, Mic, H.Phone, Rj-45, Rj-11
Communication - V.90/92 + Ethernet(10/100) + 802.11b, 11ab, 11g, 11ag + BT
Battery life - 3.9H W/Primary(4400mAh)
Dimension - 295x239x36(MAX)mm - TBD
Weight - 2kg (Scott: oy!)

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

Today's Minor Complaint...

November 06, 2003 Comment on this post [5] Posted in XML
Sponsored By

Why is this OK:

using (StringReader sr = new StringReader(response))
{
   try
   {
      retVal = xs.Deserialize(sr);
   }
    //yada yada yada

}

Why and this isnt?

using (XmlTextReader xr = new XmlTextReader(new StringReader(response), /*...yada yada...*/)
{
   try
   {
      retVal = xs.Deserialize(sr);
   }
    //yada yada yada

}

Because StringReaders derive from System.IO.TextReader which implements IDisposable and that's what the using keywords cares about.  XmlTextReader derives from the abstract XmlReader, and noone implements IDisposable. I suppose this has something to do with closing streams in the right order, blah blah.  Either way, it was a minor sadness today.

Poop.

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

Code Generation

November 04, 2003 Comment on this post [1] Posted in ASP.NET | Tools
Sponsored By

Patrick has made CodeSmith sing.  He used it to 'rewrite xsd.exe' to our ends.  Not to mention generate test data, weave in a few AOP-y things, and numerous other goodnesses. I've updated the Ultimate Tools List to reflect CodeSmith's new place in my heart.  Hyperbolic? Maybe, but that's just my style:

Oh, yes, it's much more than just a Strongly Typed Collection Generator. It's a complete code-generation engine with an ASP.NET-like syntax. Very extendable, very powerful, very free. And, only $199 for the source. And all is right with the world. I've used it to generate THOUSANDS of lines of code. There's a learning curve, but the benefits are immense. It's worth the download just for the Strongly Typed Collection code from Chris Nahr.

I'm thinking of drafting Patrick to join me in giving a presentation on said tool at an upcoming PADNUG.  Hm...

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

Tablet PCs and Math

November 04, 2003 Comment on this post [0] Posted in PDC
Sponsored By

There's so much potential around the TabletPC and Math.  Folks were buzzing after the keynote where ink was converted into physics animations and equations.  I ever heard people ask “Is it real“ and others insist that clearly it was faked.  Seems to me that while handwriting recognition is a little iffy these days, recognizing numbers and symbols that tend to be a) more varied in shape and therefore easier to recognize and b) used in a more finite domain like Math (as opposed to 100s of languages) would be easier.  The possibilities are endless.  Here's a great app called xThink Calculator (link in French).  Here's something that Loren did for his niece for practice long division.

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

Share Schema, not Type - Explained?

November 01, 2003 Comment on this post [0] Posted in PDC | Web Services | XML
Sponsored By

Steve Maine posted in my comments section in response to a fellow who asked “What do you [folks, Doug Purdy, Don Box] mean by 'Share Schema, not Type'?

Here's my answer:

Types are immutable and unique. Like, Scott.Hanselman.Corillian.Whatever.  That's a unique type, especially when you add the concept of public keys.  If you wanted to use it, I'd need to give you the Assembly.

If we share "schema" then you could consume some XML that you and I agreed
upon - like a contract.  Then you can have Phil.Whatever.Yahoo.SomeOtherType that can consume the SAME XML (the contract) and think about it some other way.  The Schema is shared, not the type.

Here's Steve's answer:

Good question. Certainly, XSD and the CTS (the .NET type system) are both things that you can use to define "types", and there's quite a lot of work that goes into marshalling data between those two different worlds. To get at the difference between schema and type, it's easiest to look at where we came from back in the olden days of COM.

In COM, two components communicated by sharing interface definition. COM interfaces defined a strict binary layout in memory. COM interfaces were uniquely identified by IID's and commonly defined in shared metadata via type libraries. The end result of this was that I could walk up to you and say "Here is an IFoo, its IID is XXX and it's defined in this .tlb file" and you would know *exactly* what the vtable layout of that interface would look like in memory.

Because they were based around this idea of a binary specification of vtable layout, COM interfaces could only define methods. That is, they presented a set of behaviors to a consumer. Some of those behaviors might be to manipulate an object's local state via methods like GetXXXValue and SetXXXValue, but they were still behaviors nonetheless. Thus, when I walk up to you with a COM interface, I'm essentially telling you "here's the set of things that I can do".

This lead to all sorts of problems. It was very difficult to ensure semantic consistency across interface implementations because there was no way to contractually specify what an interface method was actually supposed to do -- COM interfaces told you how to call methods, but they didn't tell you what effect calling those methods will have. Another problem with COM interfaces was that they were immutable once published. If you wanted to add a member to a published interface, you had to create a whole new interface. That's why we get things like IDispatch2Ex -- COM interfaces just didn't grow very nicely.

Web services attempt to solve these problems by communicating in terms of schemas and contract. A schema is a description of the legitimate contents of a message. It communicates only state, and says nothing about behavior. For example, a person schema allows to mechanically verify assertions like "I am expecting a Person, and that Person will at least have FirstName and a LastName." There is nothing in the schema that says what that person can *do*, because it really can't do anything -- it's just a blob of structured stuff. Furthermore, if these schemas are designed to take advantage of XML's intrinsic support for open content, people can evolve these schemas transparently without breaking old systems.

Contracts are the way that web services describe their behaviors. Contracts are used to define the legal patterns of messages that two services may exchange. For example, a contract for a purchase ordering system might be a mechanically verifiable expression of the idea that "if you send me a Purchase Order message(defined by the PurchaseOrder schema) and I can successfully process it, I'll send you back a Purchase Order Filled message (defined in the PurchaseOrderFilled schema). By contractually specifying the legal sets of inputs and outputs to a system, web services help ensure consistent semantics across services (which is something that COM could never do).

In summary, a type is a closed encapsulation of state+behavior. A schema is a potentially open description of state, while a contract is a description of the messaging patterns that define service behaviors.

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.