Archives / 2003 / October
  • WSV 401 - Building Server Controls for ASP.NET Whidbey (Part 1)

    • Nikhil's demo slides and code are available at as well as on his blog at, where he will post samples of his demo controls that will work with the PDC build of Whidbey as well as with the forthcoming beta release.
    • Nikhil started with a demo of the finished control that he's using to demonstrate his points, an HTML Editor control.
    • A new base class has been added to the framework called CompositeControl, which encapsulates much of the work for composite controls. This class implements INamingContainer, so you don't have to do that manually anymore. Controls are still added by overriding CreateChildControls.
    • New notion is that you override the Render method in composite controls to render layout for your controls.
    • Cleaner APIs have been added for sending client-side script to the browser, including referencing a .js file, as well as for common tasks like setting focus on the client side.
    • Web resources are a new feature that allow you to package scripts, images, style sheets, and more as assembly resources. Using the Page.GetWebResourceUrl method, you can access these resources programmatically (uses an HttpHandler under the covers). This means that control developers no longer need to ship images, etc. and figure out how to get them installed on the control user's machine. Much less brittle model. Also automatically works at design-time, so images, etc. show up on the design surface in addition to working at runtime.
    • Another new feature is script callbacks. Script callbacks allow you to make requests back to the server to retrieve information from the page, without navigating away from the existing page. So you can now update a page seamlessly without postbacks. Script callbacks cause the target page to be instantiated, but it does not go through the entire page lifecycle, only the amount necessary to create and rehydrate its controls, and fire the scriptcallback event. It also solves two problems of postbacks: losing scroll position, and the back button. Because the browser never navigates away from the current page, the user can't use the back button to re-play the interaction.
    • Improvements in State Management - Addressing the limitations/issues with ViewState. New feature is Control State...used to store essential information about that control. Control State is separate from ViewState, allowing ViewState to be disabled without breaking controls. Control State is opt-in, so controls must register their interest in maintaining Control State with the page (call Page.RegisterRequiresControlState). Important to keep the information stored as small as possible. The idea is to avoid having Control State become as bloated as ViewState sometimes becomes (such as when using a DataGrid with many rows and columns).
    • Adaptive Rendering - Whidbey will provide support for helping control developers to target their controls to multiple browsers and/or devices, using different HtmlTextWriter types and/or Adapters. Nikhil hinted that one possible use of this feature would be to generate XAML from ASP.NET (see, I told you XAML was ASP.NET for Windows guys!). You can write your own custom adapters for devices/browsers you wish to target, if existing adapters don't meet your needs.


  • WSV 360 - ASP.NET Tips and Tricks

    Scott Guthrie shows off ASP.NET Whidbey Tricks

    • Cross-page posting - In Whidbey, you will be able to post Web Forms to pages other than the page on which the input is entered. Postback target is chosen based on the PostTargetUrl (interim name) attribute of a control that causes a postback. On the target page, you will be able to access all of the controls, viewstate, etc. of the page that caused the web form post. Whidbey hangs a PreviousPage object off the current page to provide access to the controls, etc. of the posting page. Because it's based on postback controls, you can have a page that both posts back to itself, and also posts to another page, depending on which control is clicked.
    • Validation Groups - The new feature validation groups allows you to logically group a set of validation controls, and only validate the fields that are in the group to which belongs the postback control that the user clicks. Uses the ValidationGroup attribute to implement in declarative tags. The key here is that you can have two sets of form fields that aren't typically used together, and implement validation on both sets of fields, without the non-used fields causing the page to fail validation.
    • Wizard UI - New <asp:wizard> control that enables step-by-step wizard UI, for example for gathering multiple pages of input for a single purpose before saving or processing the input. The Wizard control defaults to a Next/Previous UI, but is also templated, so you can customize the UI to your needs. In combination with the Personalization and Membership providers, you can use the Wizard control to very easily create a UI for registering new users for a web site, etc.
    • Image Generation - New feature for generating images in Whidbey. Includes an HttpHandler (.asix) providing a custom handler and base class for image generation, including support for downlevel rendering. Also includes a new DynamicImage control that uses callbacks with the image generation handler to pull down dynamically generated files.
    • .asix files use the @ Image directive and inherit from System.Web.UI.Image.ImageGenerator. Does not require registering your own custom HttpHandler for image generation. Just write the code.
    • The <asp:dynamicimage> control supports databinding. You can bind its imagebytes property to a data column that contains binary image data.
    • URL Rewriting/Mapping - new built-in module for rewriting paths. Allows the use of "vanity" urls, instead of ugly querystrings, and also makes it easy to move content without breaking existing links. Perf tip: - This feature makes it possible to use kernel-level caching in IIS 6 for pages that would otherwise need querystring or form fields to perform the mapping.
    • Site Counters - Provides a service and API for efficient logging and tracking of site visitors. Can also be accessed through attributes (CountClicks, CounterGroup, etc.) on declarative tags, as well as through web.config.
    • Client Script Goodies - Server buttons now have an OnClientClick attribute for client-side handling. Focus mechanisms are now built into the page and controls. A page can also have a default button and a default focused control. All these features emit the appropriate client-side script. There will also be automatic scroll position maintenance in the beta release of Whidbey (not in the PDC bits).
    • Whidbey adds support for custom build providers. ASP.NET allows you to register to receive notification of files needing dynamic compilation. Whidbey uses this feature to support dynamic compilation of .wsdl, .xsd, and .resx files in the /code directory of an ASP.NET application.
    • No-compile Pages - You can configure at the page and folder level whether pages can be compiled after they've been deployed. If compilation is disabled, any change to the page after the page or directory has been locked down will throw an exception.
    • File System Provider - allows Web content (both compiled and non-compiled) to be stored in non-filesystem locations such as databases or CMS, and even use Sql Cache invalidation to output cache stored content, while always getting the updated content if it changes. Pretends to be the filesystem and provides an interface into whatever storage location the content is actually stored in. Cannot store assemblies, but can store just about any other content.
    • Securing non-ASP.NET Content - Requires IIS 6.0, using its ExecuteUrl feature. This allows forms authentication to work with static files like .jpg, .gif, etc.
    • RSS Reader - Combine an XmlDataSource control and a DataList control to read and render any RSS feed.


  • Programming with Data Controls in ASP.NET (Part 2)

    Improved Data Source caching:

    • Exposed via properties on datasource controls (EnableCaching="True", CacheDuration="5", etc.). Greatly simplifies the use of caching with data, as simple or simpler than output caching.
    • Added SQL Cache Invalidation - automatically purges cached output or data when the underlying data is changed. Again, this is exposed via properties on the datasource controls (can be configured in the @ Page directive of ASP.NET pages as well).
    • Caching also allows you to pull more data, and use the filtering functionality of the datasource controls to view subsets of data, without incurring the expense of pulling the data from the database on each request.
    • New configuration section in web.config for Connection Strings. MMC Snap-in for configuring ASP.NET allows GUI access to this config section, and you can also access them via the configuration API. In declarative code, it uses a

         <%$ connectionname:tablename %>

      syntax for accessing a given connection.
    • New DetailsView control, provides a more intuitive way of providing the details portion of a master-detail relationship, with the GridView control handling the master portion of the relationship. DetailsView provides an easy UI for inserting/updating data.
    • Added new syntax for databinding in templates:

      <%# Eval("field") %> 'for one-way binding

      <%# Bind("field") %> 'for two-way binding

    • Both GridView and DetailsView support two-way databinding (this feature is not in the PDC build of Whidbey).
    • Templated databinding supports drag and drop of controls to be databound within, for example, a DetailsView control that is in template editing mode.
    • New hierarchical DataSource controls - provide access to XML files and ASP.NET site maps, for example, and integrate with new controls designed to render hierarchical data, such as the TreeView control.
    • All templated controls now also support databinding to XML, using XPath databinding expressions.


  • Kent Sharkey

    Finally got a chance to meet Kent Sharkey, who's responsible for the MSDN ASP.NET Developer Center. Kent works very, very hard to make sure that MSDN supplies the best and freshest content for ASP.NET developers, so if you see him, say “thanks”...he definitely deserves it. Kent got a whole raft of Whidbey-related ASP.NET articles launched on MSDN even in the midst of the travel nightmare that getting from Seattle to LAX became this week thanks to the wildfires here.


  • IDE improvements in VS.NET Whidbey for ASP.NET Development - TLS341

    Improved Project System

    • No need for FrontPage
    • Supports file system webs, allowing ASP.NET development even when IIS is not installed locally (Whidbey ships with its own lightweight Web server)
    • Build and debug without being an Admin
    • Directory-based project system (reduces contention for project files)
    • Makes it easy to do single-file editing, with complete IntelliSense support.
    • When you create a project, very few files or folders are created automatically. When the IDE needs to add something (such as a web.config to enable debugging), the user is provided with a notification before the file is added.
    • Debugger visualizers allow you to hover over an object at debug time and get an expanded view of the state of that object.

    Remote Site Publishing

    • Support for UNC, FTP, SharePoint, IIS (IntelliSense works for all of these scenarios)
    • Publish all files or individual files, and keep local and remote sites in sync easily
    • Logging is built into the Remote Publishing Wizard

    Source Editor Improvements

    • Intellisense Everywhere - in inline code and codebehind, in script blocks, in CSS styles, in web.config (yay!), and in XML files.
    • Added tools to navigate your code - view at a glance the hierarchy of tag relationships.
    • Outlining is available to allow you to expand or collapse on a tag-by-tag basis
    • Code formatting (which can be turned off completely...really completely) can be customized based on tag categories (server vs. client) and even on a per-tag basis, allowing you to format upper/lower case, self-closing or paired tags, line breaks, etc. Formatting options for the client also determine what the server controls render to the client, making it very easy to write XHTML-compliant code.
    • Cleaner code-behind. Based on partial classes, removes the requirement for separate control declarations in code-behind, and other "generated goop".
    • If you select text in Source view, then switch to Design view (or vice versa) your selection is preserved, so selecting an element in Design view makes it easy to locate the tags for that control.
    • Drag and drop is supported in Source view.
    • Formatting us supported at the page level, as well as at the selection level, and does not automatically introduce whitespace when formatting.
    • The formatter also supports automatic word-wrapping of tags.
    • Tag formatting can be customized based on whether the tag contains content or is a self-contained tag, in addition to the parameters discussed above.
    • The IDE supports exporting and importing of your desired formatting settings, so it's easy to share formatting across a development team to enforce a standardized format.
    • Everything built in the design surface is validated to XHTML 1.1, and can optionally be validated against various browsers, and even accessibility standards.
    • IntelliSense is now even supported in the @ Page directive, as well as in all inline code, including in <% %>blocks.

    Whidbey Design Surface

    • Never, ever, EVER, modify your code (without your asking)
    • 100% XHTML 1.1 compliant and uses styles for formatting.
    • Master pages provide shared layout, and provides visual representation of both the master page, and the customized content
    • User Controls are rendered on the design surface
    • Added smart tags to expose common control tasks (databinding, autoformatting, etc.)
    • Improved table editor, with both pre-existing table templates, and/or editable table attributes.
    • Added visual feedback for resizing templates, including display of the changes in pixel measurements (or percent, depending on how you defined the table) as you resize.

    Faster Web Development

    • No builds, save and refresh and see your changes.
    • Faster project open time.
    • Build Page feature - Allows you to locate compilation errors and validation problems on a page-by-page basis.
    • New Code directory that provides dynamic compilation and linking for class files, including Intellisense support.
    • Easier for teams to develop together since a compiler error on a single page doesn't prevent others from working on different pages.
    • Pre-compiler allows you to compile your entire application (including HTML and other tags) into a single assembly, which runs just like an app deployed with source code.

    Seamless Upgrades

    • Allows you to upgrade a v1.1 application to Whidbey seamlessly.
    • You can choose in-place upgrade, or make a copy to modify to the new version.

    IMPORTANT! Not all of these features are in the PDC bits...about 2/3rds are there, and the rest will be in the beta coming in the spring.


  • Eric Rudder Keynote

    Eric Rudder's keynote is focused on coding for current technology and Whidbey. "What we hear from you" was an early theme:

    • I need more code samples (in my language)
    • How do I support different languages?
    • etc.


  • In the keynote...

    BillG's talking about how Moore's law, and the rapid increase in availability of computing power has helped with the advances in OS (GUI, thanks to x86 processing, etc), and how increases in hardware performance enable more features in the OS.


  • LAX is, it's Open!

    Been hearing a lot this morning about the fact that LAX was closed, due to the wildfires that are going madly here in the L.A. area.

    According to Scoble, LAX is now open, but there's going to be a lot of unhappy travellers as they get the backups un-backed. One more reason to schedule your travel early.

    If you're planning to travel to L.A. in the next couple of days, it's probably a really good idea to call your airline before you leave for the airport.


  • PDC Tip from Jeff Prosise

    From his ASP.NET Security Pre-Conference talk: Knowing the default accounts under which the ASP.NET worker process is run (ASPNET on IIS 5.0, Network Service on IIS 6.0) allows you to set ACLs on resources that your application may need, so as to allow ASP.NET to read, write, or take other actions on these resources. You can also use the element in machine.config to change the account under which the ASP.NET worker process is run. Note that you should always encrypt any passwords stored in machine.config (you can use aspnet_setreg.exe utility to store credentials in the registry and then refer to them from machine.config...see KB article #329290 for more details)


  • Turned it over to Jeff

    Finished our pre-lunch ASP.NET overview talk. Jeff Prosise followed my overview with a good drill-down on data-bound controls.

    If you run into Jeff at the conference (or elsewhere), be sure to ask him about his comic collection, especially "Rainbow Batman" (and Fantastic Four #1).


  • 45 Minutes to go...

    Slides...check. Demo code...check. Looks like I'm just about ready. It's pretty clear that some people forgot to set their clocks back last night, as we've had several people come in before 9am (I start at 10) thinking that they were running late. Of course, if I hadn't had reminders from the hotel, the conference manager, and several other bloggers, I probably would've forgotten myself. :-)


  • Help me give away books

    Thought that would get your attention. :-)

    I'm planning to give away copies of each of my books at my PDC pre-conference sessions, and I need your help. See, giving stuff away at conferences is sometimes challenging. Not that there aren't more than enough people who want free stuff, but rather the challenge is in how to give stuff away without just having people charge the stage and mob you (I once saw a presenter offer a box of books at the end of a conference, and she literally had to drop the box and jump out of the way to avoid being trampled).

    I've tried holding drawings with business cards, but unfortunately, too many people don't bring them (or run out). So I'm hoping that some of the fine folks who read this blog can help me come up with some clever ideas. I need them soon, because my presentation is on Sunday, so as an added incentive, the person who comes up with the cleverest workable idea (in my sole judgement) will get a free copy of one of my books (their choice).

    So how about it? I need something that:

    • Distributes freebies fairly (or at least randomly)
    • Doesn't take a lot of time
    • Doesn't result in injury to my person
    Let's hear the ideas!

    UPDATE: If you want to be in the running for a book, please leave your email address...if you don't want to leave it in a comment, you can use the contact link to email me your idea.


  • Just bought a Motorola SmartPhone...

    ...running Windows Mobile 2002 (thanks to Scoble for the link to Amazon's page for the phone, complete with a $150 rebate). It was time for a new phone for my wife, and since I can also use the phone to test out SmartPhone development, this one made a lot of sense. And given the rebate, the price was right. Unfortunately, Windows Mobile 2002 does not appear to support .NET, but hopefully Motorola will eventually support an upgrade to WM 2003, which does. If not, well, I've used the eMbedded tools before...

    The only bummer is that it won't arrive in time for me to take it with me to PDC. What fun is it getting a new toy (ahem...a new phone for your wife) if you can't show it off? :-)

    Anybody else have a SmartPhone in their future? Let me know via the comments...

    [Listening to: Dam Would Break - Toad the Wet Sprocket - Coil (04:05)]


  • Question for PDC and other conference attendees...

    Working with the samples for my upcoming pre-conference talk on ASP.NET for the PDC, I got to wondering whether there's a dominant preference among conference attendees regarding how presenters work with code. Do you prefer to have a presenter write the code live, or do you prefer to have the presenter show a pre-written example, and explain how the important parts work?

    For example, live demos take a lot more work to get right, but I can see some advantage to walking attendees through a process, rather than reviewing code with them. On the other hand, using pre-written demos generally allows for more demos within a given presentation, since inevitably some of the code that would need to be written for a live demo is really not relevant to the concepts being explained.

    I'd like to hear what you think. Let me know in the comments, or via the contact link, as I'm eager to base my demo style on what real attendees want, rather than what I assume they want or what works best for me as a presenter. The reality is that I'm likely to end up with somewhat of a hybrid style, but to the extent that I can accommodate attendee's desires, I want to do that.

    [Listening to: Dangerous [Hazchemix] [Hazchemix] - Depeche Mode - Personal Jesus [#3] (05:37)]


  • What NOT to do with Process Explorer (another lesson learned...the hard way)

    For those of you who've never heard of them, there's a couple of guys by the name of Mark Russinovich and Bryce Cogswell who run a site called Sysinternals. Sysinternals provides some of the most useful utilities available for Windows (NT, 2000, XP, etc. - don't tell anyone, but they've also got some for Linux, too). Developers and admins alike should definitely keep this site in their favorites list.

    But I'm not blogging just to suck up to Sysinternals. After all, their utilities are free (though they do have another site, Winternals, that provides more full-featured utilities that are commercial software), so sucking up really won't get me anything anyway. No, I'm blogging to share my experience with one of their cool tools, called Process Explorer. Process Explorer allows you to look at all of the processes running on your machine, and drill down into the resources being used by those processes, find out quickly which program is responsible for a given process or processes, and (among other things) kill or change the priority of a process.

    It's that last bit that tripped me up earlier this evening. While continuing the prep work for my pre-conference session at PDC, I noticed that for some unknown reason, Powerpoint was sucking up all the CPU cycles on my laptop. Other programs kept working, so I just killed off PP using the Task Manager, in hopes that when I restarted it, it would behave itself. No such luck. Each time I restarted Powerpoint, it hung. So I decided to fire up Process Explorer and take a look at what was going on to see if there was an obvious cause. So far, so good.

    Once I've got Process Explorer open, I use it to kill off Powerpoint again, to see if any other processes go with it (in case some child process was causing the problem), and then fire it up again, only to have it hang once again. Then (and here's the good part) without really thinking about it, I decided to try changing the priority of the Powerpoint process, to see if perhaps there's something it's working on that I can get to finish more quickly. In fact, I'm so not thinking about it that I change the process priority to the highest level, Realtime. D'OH!!!

    To make a long story short...DON'T DO THAT! By taking a process that was hanging and assigning it Realtime priority, I instantly hung my entire system. Fortunately, I was able to recover by simply powering down the laptop and restarting, and also fortunately, I didn't lose any data because Powerpoint had auto-saved my most recent notes, but it could easily have been much worse.

    Bottom line is that there are some very powerful tools available from the folks at Sysinternals...but like woodshop power tools (I do carpentry as a hobby), if used improperly you can run into big problems really fast. Even if you know what you're doing, it's sometimes easy to space out for a minute and do something...well, stupid (let's be honest here). If you're using a power tool in a woodshop, you can lose a finger. If you're using a tool like Process Explorer, you can lose data, time, and perhaps worse. Don't learn that lesson the hard way.


  • Presentation Tips

    In the process of preparing for my PDC pre-conference session with Jeff Prosise (we're doing sort of a tag-team approach throughout the day), I've been keeping a list of presentation tips from some of the folks who I know to be the best speakers in the business (either from personal experience or based on their reputation). Here's a list of links to stuff that I've found. I hope that I'm able to live up to the confidence that Microsoft has shown in having me present, and I'm sure that these tips will help.

    • First up, some useful tips from the man himself...Don Box (update: the previous link appears to be broken at the moment, so you can find these tips for the entry entitled “My Way“). Don's presenting style is very different from mine, but he has a way with an audience like no one else I've seen. Definitely someone whose advice on speaking is worth paying attention to.
    • Jon Honeyball makes a simple recommendation: “Have passion...“ Simple, but very true, and a good reminder. Even if you're an expert with great technical chops, it won't matter if you're dull and dry.
    • Matevz Gacnik recommends keeping demos simple (in response to Brad Abrams).
    • Brad's tips also merit their own bullet.
    • And Brad links to another invaluable resource: Scott Hanselman’s Tips for a Successful MSFT Presentation. This one contains a TON of good info.
    • Eric Gunnerson, who I've had the privilege to listen to on a number of occasions, offers his list of tips.
    • Scoble has some advice of his own for PDC speakers. Good tips, especially the one about demoing early. No speaker wants to get shot. :-)
    • And finally (for now), Chris Anderson demonstrates humility and the recognition that we've all got room to improve. And provides probably the most important tip of all ... “My plan - practice.“

    That's it for now. If I come across any more good ones, I'll update this page with them so you (and I) can find them all in the same place. And if you have any tips of your own (or links to those of others that I missed), please pass them along in the comments section or via the Contact link. I definitely want to do everything I can to make sure that the folks who come for the Web pre-con session go away glad that they came early.

    UPDATE: Here are some additional resources:

    • Julie Lerman has some good beginner's tips (many of which are applicable to speakers at any level).
    • Some tips for academic speakers, many of which are applicable in our industry as well (via Roy Osherove).


  • IIS Lockdown Tool tip

    From recent experience...

    Use extreme caution when using the Undo feature of the IIS Lockdown Tool. The lockdown tool provides a very simple wizard for securing a machine running IIS, and it's great for getting a machine locked down quickly. But note what the help file has to say about the Undo feature:

    The Undo operation restores the system settings that were in effect immediately before running the IIS Lockdown Tool. If you run the tool, then make additional configuration changes, then run the tool again and choose to undo, the effect could be to undo some of the configuration changes you made after running the tool. Therefore, it is important to test the system promptly and, if an undo is required, perform it immediately. [emphasis mine]

    Bottom line is that if you have made any manual changes (adding new vroots, etc.) to your IIS setup since running the IIS lockdown tool, you should avoid using the Undo feature. Otherwise, you will need to manually restore all configuration changes made since the lockdown tool was run.

    Also, unlike me, you should probably read the dialog (shown below) before clicking any buttons. :-)


  • OT: Windows Media Player tip

    I'm in the process of digitizing a whole mess of Christmas albums that my wife had growing up. This involves hooking up a turntable to my laptop (I'm using a new Audio-Technica AT-PL50 that I picked up for just $99, which includes a built-in preamp so you don't need a receiver or mixer to record from it), and using the Analog Recorder tool from Plus! Digital Media Edition to record the audio, split it into tracks, name the album/tracks, and filter out pops and hissing. The Analog Recorder creates WMA files at whatever bitrate you choose.

    Once the files are in WMA format, you can use Windows Media Player to burn them to an audio CD. But that's not the tip yet...

    In order to keep as much info as possible from the original albums, I decided to use my Nikon Coolpix 4500 to take photos of the front and back covers, then use those for the CD inserts. The only thing missing at this point is having the album art show up in Windows Media Player. For some albums, it's possible to find the album info online, which automatically downloads the album art for you. But for more obscure albums, like the ones I'm currently digitizing, you probably won't find them online. Instead, you can simply copy the image you wish to use (JPG format) to the folder containing the audio tracks, and rename it to AlbumArtSmall.jpg. Your image will now show up in Windows Media Player when you are playing tracks from that album. If you want the same image to show up as the folder image in Thumbnail view, simply make a copy of the file, and rename it to Folder.jpg (this is not specific to WMP).

    Note that all of the above is specific to Windows XP, and may not work on any other OS. YMMV. :-)


  • VB.NET Resource Kit 404 fix

    Duncan MacKenzie writes about a reader's comment that URLScan causes 404 errors when attempting to browse the .aspx pages installed by the VB.NET Resource Kit, because by default URLScan does not allow paths that contain dots (the resource kit has such a path). To solve this problem, follow these steps:

    1. Open urlscan.ini (located in the %WINDIR%\System32\Inetsrv\URLscan folder) in notepad.
    2. Look for the AllowDotInPath item under the [options] section, and change it from 0 (the default) to 1.
    3. Save urlscan.ini.
    4. Restart IIS using IISReset (run iisreset /restart at a command prompt).

    NOTE: This technique requires administrative permissions to successfully edit urlscan.ini and to restart IIS. Since this fix potentially leaves you open to security exploits that use malformed URLs with extra dots, you should probably avoid using this technique on production machines or machines directly exposed to the internet (i.e. - not behind a firewall). But then, you wouldn't be installing a resource kit or other sample code on a production machine, now would you? ;-)



  • Smart Displays

    I'm trying to decide whether there's a case to be made for the utility of the Smart Displays being marketed by ViewSonic and Philips, among others. Smart Displays are essentially an LCD monitor that runs a customized OS that allows you to connect wirelessly to a Windows XP-based desktop (or laptop, one assumes) PC.

    Now I can see a number of uses for this, from the obvious...browsing the web anywhere in the house without dragging around a bulky laptop (yes, I know they make light ones, but mine is a monster, and I'm not willing to give up the features to lose the weight) the geeky, like attempting to use it to write and/or test ASP.NET code or articles, etc. in bed.

    But at a price anywhere from $799 for a 10” display to $1349 for a 15” display with dock, I have to wonder whether the usefulness that Smart Displays offer would be worthwhile compared to using a lightweight laptop and Terminal Services.

    Given the limitations of laptops in terms of hard drive and bus speed, and the attendant lack of performance relative to desktop machines, I've been considering buying a nice workstation, and using Terminal Services to use that box remotely from an inexpensive laptop. But the Smart Displays have me intrigued, too.

    Has anyone used one of these? What do you think about the price/value of these devices?

    Here's a thought...wouldn't it be cool if you could connect to your desktop at home over the internet while on the road? You could use it to take notes at the PDC, and not have to lug around a full-size laptop. Of course, at that point you might as well start looking at a Tablet PC, since those are more optimized for note-taking (and don't get me started on how those are priced!).