Archives

Archives / 2003
  • Longhornblogs.com status...

    Anyone happen to know what's up with Longhornblogs.com? Is it down temporarily, or dead? I noticed a couple days ago that my aggregator was choking on those feeds, so I checked the main URL manually, and it's not coming up. Any info would be welcome.

  • SmarterStats

    Thanks to a recommendation from Scott Watermasysk, the father of .Text, I just downloaded a web server log analyzer called SmarterStats, and gave it a try. This is a sharp tool, built with ASP.NET, and very useful, from the little I've played with it. You can try the online demo to get a feel for the kind of information you can get from your logs.

  • Testing CSK sites locally with domain names

    Have you ever needed to test a site using the site's actual domain name, before being able to actually point that domain name to the server on which you're developing the site? As most of you probably already know, testing a site using http://localhost/mysitename/ in many cases is less than ideal, and isn't even possible in some cases.

  • BlogShares RIP...

    It was fun while it lasted, but it looks like BlogShares, the fantasy stock market for blogs, has bit the dust. It was a cool idea that I'm sure helped both entertain and promote blogging, and its creator, Seyed Razavi, is to be congratulated for his efforts.

  • Welcome, Dino!

    For those who may not have noticed, in the frenzy to prepare for Thanksgiving here in the States, Dino Esposito, one of the foremost authors on all things ASP.NET (and a fellow MS Press author to boot!), has joined .NET Weblogs. Welcome, Dino, and subscribed!

  • Being sick stinks

    My son, my wife, and I have all come down with a stomach virus over the last week. Fortunately, my son's case was mild. My wife's ended up with a trip to the emergency room, a sonogram, and a CAT scan (fortunately the results were good...if, by good, you mean "just a virus that has you miserable for days"). My own case had me bed-ridden for the better part of 2 days, and still wishing that I was in bed now. The only reason I'm up and about is that we have family coming in tomorrow for the Thanksgiving holiday, and there's just too much to do to let stuff go any longer. So if I'm a little slower than usual in answering email, or other communications...now you know why.

  • What do YOU want from a Whidbey book?

    I've written a number of ASP and ASP.NET books over the last 5 years, and one of the challenges, particularly with .NET and ASP.NET, is deciding what gets covered, and what doesn't. With ASP.NET Whidbey, this challenge gets even harder, because of all of the new features that have been added. So I'd like to get some feedback on what the community thinks should be covered in a book on ASP.NET Whidbey. Would you like to see:

    • A smaller book that covers just new new features in Whidbey, with the features of 1.0 and/or 1.1 being covered by existing books remaining in print longer.
    • A smaller book that covers just new new features in Whidbey, with the features of 1.0 and/or 1.1 being covered by supplemental materials on CD-Rom and/or online.
    • A large book that covers all of the features, both those that exist in the current frameworks, as well as those in the new version, keeping in mind that such a book would likely cost more, due to the additional costs of publishing a larger book.
    • Something else?
    I'd like to hear your feedback in the comments, or via the contact link.

  • J2EE reliability and performance questioned

    eWeek, in an article posted yesterday, noted some pretty discouraging reliability numbers for enterprise Java applications, with survey results indicating an average uptime of just 88%. The article also raises questions about performance and meeting user expectations.

  • Bad news/good news

    • Bad News: Longhorn doesn't appear to like my video card (or at least the XP drivers), and either automatically reboots or blue screens when rebooting after installing the drivers.
    • Good news: The Last Known Good Configuration setting works, and got me back into Longhorn, with the video card set to use the generic drivers.
    • Even better news: The good performance I was crowing about in my previous post was without any hardware acceleration!
    • Bad news: I suspect my chances of finding Longhorn-compatible drivers for this card are slim to none.
    Ah, well. At least the performance is more than acceptable, even if I'm not taking full advantage of the card I bought for this machine. Guess I'll have to boot into Win2K3 to play HALO. :-)

  • Just installed Longhorn...again.

    OK, so I probably should've just gone to bed, but I figured what the heck, and went ahead and installed the Longhorn PDC preview on my new Dell PowerEdge 400sc. What a difference proper hardware makes! Not only did the install go much faster than when installing in a VM (no big surprise there, other than the extent of the improvement), the hardware detection phase only took a little longer than the 10 minutes it claimed (as opposed to the couple of hours reported by some). The install was certainly both easier and faster than any other version of Windows I've installed (including the Windows Server 2003 install I did last night).

  • Got my Dell PowerEdge 400SC

    Got the machine that I ordered for my longhorn, etc. experiments. I actually got it on Friday, but my wife told me in no uncertain terms that I needed to finish my latest article for the MSDN ASP.NET Developer Center before I opened the box. She was right, of course, as I proceeded to (as soon as the article was done and wending its way to Kent) stay up until 5am getting the server (mostly) set up.

  • Request Validation flaw

    I've long been a big proponent of the new Request Validation feature of ASP.NET v1.1 as a first level of defense against cross-site scripting attacks on your web applications, and have advocated leaving this feature enabled (it's on by default) unless you explicitly provide filtering and/or HTML encoding of all input to your application.

  • Bye-bye AT&T...almost

    Yesterday, my wife and I picked up a new SIM card for her MPx200 SmartPhone, and got signed up with T-Mobile for voice and data. While AT&T was never able to get the MPx functioning, after popping in the T-Mobile SIM, it immediately picked up the T-Mobile network, and I was able to dial customer care even before they had our mobile # assigned. Voice service was available within a half an hour. The folks at the T-Mobile store were very helpful, unlike the folks at AT&T Wireless, who required me to call no fewer than 4 different numbers, with several transfers, just to cancel my account (that is, once the systems were back up and they could cancel accounts at all...oops, never mind, I wasn't able to cancel tonight, after all!).

  • Fort Worth .NET User Group

    I'll be speaking next week (Tuesday the 18th, to be precise) at the Fort Worth .NET User Group, run by fellow blogger (though he's been slacking since summer), Stephen Swienton. I'm following on the heels of Rob Howard's kick-off of the ASP.NET RoadShow, which is a tough act to follow, but I'll let the technology do the talking, with an overview of some of the new features coming in ASP.NET "Whidbey".

  • SharpReader Bugfix

    A bugfix release for SharpReader has been released. If you downloaded 0.9.3, you want to get this fix ASAP (it was too late for me, and I lost some archived posts from a number of feeds, but you may have better luck!):

    Changes in 0.9.3.1 - released November 9 2003

    • Fixed a bug that could potentially delete all items in a feed upon refresh.
    • Fixed a NullReferenceException.

  • SIM Kudos and a message from AT&T Customer Service

    First, I'd like to say that whoever came up with the idea of using removable (and transferable) SIM (subscriber identity module) cards for storing account information for phones is brilliant, and the implementation works great. I know this because in response to the problems I've had getting my MPx200 smartphone activated by AT&T, I researched techniques for removing the SIM Lock (most phones are locked to the SIM card provided by the phone company from which you bought the phone), which would enable me to move the phone to a different wireless provider. Using a code purchased online, I unlocked the phone, removed the AT&T SIM and replaced it with the one from my Pocket PC Phone. With no additional configuration, I was able to make and receive calls using my existing service (T-Mobile). With the addition of a data connection to T-Mobile's proxy, I was also able to browse the web using the MPx200. The fact that the process was that simple is a testament to the sound planning that went into the SIM card and phones.

  • Well THAT didn't last long...

    I just deleted the virtual machine on which I'd installed the PDC build of Longhorn (last night), and uninstalled the Virtual PC 2004 beta. I'm not sure whether it was simply the fact of running such an early alpha on a beta VM, or if the fact that I was trying to do it on a laptop with a 4200 RPM hard drive and a slow bus (though a 2ghz P4 proc) had more to do with it, but despite having read reports of slow performance, I found running the alpha on Virtual PC to be completely unusable.

  • ASP.NET Road Show Announcement

    The team that created ASP.NET is coming to a city near you. This is your chance to learn from one of the creators of Microsoft’s web development platform. Get the knowledge you need to start developing secure ASP.NET Web applications with ASP.NET and Visual Studio .NET. After the introduction, we’ll dive deep into the product and help you bring your skills to the next level. Attendees to the event walk away with:

  • Were you at my pre-conference talk at PDC?

    Shawn Morrissey's suggestion that the PDC organizers provide a comments RSS feed from the PDC sessions reminded me of one shortcoming of the online evaluation forms provided for this year's PDC. There was only one text field, and it was earmarked for a specific question. I would've really liked for them to provide a general comments field, so that attendees could provide whatever freeform feedback they thought was important. It's great for me as a speaker to see these kinds of comments, as they tend to be much more helpful than numeric averages, good or bad.

  • AT&T needs a dose of the cluestick

    So, far, I'm fairly favorably impressed with the Motorola MPx200 SmartPhone. Unfortunately, it's impossible to tell whether that's an accurate impression because, thanks to some incredibly poor decision making on the part of AT&T, I HAVEN'T BEEN ABLE TO TEST MAKING PHONE CALLS WITH IT!!!

  • PDC Code Update

    Since one of the attendees at my PDC pre-con asked about this, I thought I'd pass it along. I've updated the sample code from my ASP.NET Overview pre-con session to add the necessary code for performing authentication when sending mail using an SMTP server that requires authentication (and requiring authentication for your SMTP server is a Good Thing®).

  • Understanding mail relaying

    If you run a mail server, it's important that you understand the concept of relaying. If you don't understand this concept, it's very likely that you will end up with an open relay, which will ultimately result in your mail domain being blacklisted once spammers find your server and start using it to send tons of UCE.

  • Got the new MPx200 SmartPhone

    No, it's not .NET, but it's the next best thing...a cool new Windows-powered gadget. It's in the process of charging up, but the first impression is that the screen is much nicer than I'd anticipated. It will be interesting to see how my wife likes using it (it's her phone), but she already loves how it looks.

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

    • Nikhil's demo slides and code are available at http://www.asp.net/whidbey/ as well as on his blog at http://www.nikhilk.net/, 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

    • 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.

  • 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)

  • 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. :-)

  • 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.

  • 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.

  • 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.

  • 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:

  • 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.

  • OT: Power back...finally

    I should've known better than to taunt Mother Nature. After we got our power back from Isabel (after 30 hours), I changed my MSN IM handle to include “(power's back...take THAT, Isabel!)”. Apparently, Mother Nature takes these things rather personally, because our power went out again Monday morning at around 5am. Unfortunately, this time around, it was us and about 5 or 6 other neighbors who were out, while the rest of the neighborhood had power.

  • Too good to be true...networking and Win2K3

    So I thought I had my network migration plan all set...just drop in a couple of new NICs, as Brian Desmond suggested in the comments for my last T1 post, and I should be good to go, right? Well, almost. The web server, which is running Windows 2000 Server, was no problem. Already had another NIC in the box, just enable it, run the cable, and it's good to go. My mail server, alas, is running Windows Server 2003, which doesn't like my Netgear FA310TX 10/100 nics very well. It's possible to make them run, but the result is lots of socket errors with my mail program.

  • T1 at last!

    For those who have patiently followed the ongoing saga of my quest to get a T1 installed in my home office, the T1 is now in and operational! And only two months and 10 days after it was ordered. :-)

  • Blasted Blaster

    I'm puzzled...practically at a loss for words. The cause? The fact that yet again, Microsoft finds and patches a vulnerability before an exploit is widely available, and still, hundreds of thousands of computers are infected. This is inexcusable.

  • OT: Getting it write when righting

    OK, so maybe it's not completely off-topic, since written communication is probably very important to bloggers in general, even .NET bloggers, but while I was putting together my previous blog entry, I did a Google search to ensure that I was using the phrase "hear, hear" correctly (it's not "here, here", as some write it). I ran across the following link, which lists this as well as a number of other common "homophone" errors, and also lists a variety of other common grammatical errors. If you write (and few of us don't), you should take a look. It also covers my personal pet peeve, "loose" vs. "lose":

  • Doug's got it right...your career is YOUR responsibility

    There has been a lot of talk on a lot of the blogs over going to PDC, the cost of PDC, etc.  There is an argument made that the cost of an event like PDC is prohibitive, preventing folks working at smaller employers, or even the self employed from attending.  This sort of begs a question:  Who is responsible for your career?

  • Get thee to PDC!

    Last week, I was fortunate enough to get to spend some time in Redmond with one of the product teams, hearing about upcoming stuff. I won't tease you by hinting at what it was, and saying I can't talk about it. I'll just say...if you're a developer using .NET, or planning to use .NET, or interested in finding out about .NET, you need to go to the Professional Developer's Conference (PDC) this year. This year's PDC boasts information on Yukon (the next version of SQL Server), Longhorn (the next version of Windows), and most importantly for developers, Whidbey (the next version of Visual Studio). The preliminary agenda for this year's PDC shows the variety of topics to be covered.

  • Thanks, CapArea.NET!

    My thanks to the Capital Area .NET User Group for their attentiveness and good questions at my talk this past Tuesday. I would have posted this earlier, but I'm still having problems with my DSL, and unfortunately, the T1 looks like it's going to take longer than expected (not to mention the fact that my local ILEC, Verizon, wants to charge me $600 in construction charges just to get the line set up).

  • T1, here I come...

    I've finally gotten so sick and tired of the reliability (or lack thereof) of DSL that I've just ordered a fractional T1 line from Speakeasy. DISCLAIMER: the previous link is a referral link...I don't have my line installed yet, so I can't speak to their line quality, but the pre-install service has been the best I've ever seen. If you want to see what Speakeasy has to offer without the referral, that's cool, too.

  • Sometimes, DSL sucks!

    After having gone through a complete DSL outage described here, my ISP was able to get the line back up in a couple of days. Unfortunately, since the line came back up (apparently my local telco had either cut or disconnected the line about a mile away from my house), it's been bouncing (dropping and reconnecting) erratically. This has been going on for days, and my ISP doesn't seem to have done a whole lot about it. Now the line is completely dead. So I called them up today, and got a nice person on the phone who asked me to disconnect and reconnect the line, and then to power-cycle the router (for only the bazillionth time), just like every other time I've called. Then they got Covad on the phone, and had me do yet another cycle of disconnect/reconnect/power-cycle.

  • Always learning something new...

    It's good to keep learning, whether it's about ASP.NET, or about something as mundane (how quickly we become blasé) as blogging. Thanks to fellow .NET Weblogger Patrick Steele, I found out about the ability to use CSS to get a pseudo-WYSIWYG view of a new blog entry before submitting it. Very nice. Not perfect, but definitely better than the default, and better than the design view of the integrated posting tool Scott put together for the site (Sorry, Scott!).

  • Defending .NET


    And then he gets really nasty. Now, I don't normally condone ad-hominem attacks on people who annoy us, but in this case, I might make an exception. The article Bellware discusses does seem to betray a boundless ignorance of .NET and Microsoft development in general. And Bellware's response is quite funny to boot.

  • Thanks, TriNUG!

    I just wanted to say a big THANK YOU to all the folks from the Triangle .NET User Group who showed up for my presentation on creating a custom Login server control last night. I had a great time, and the questions from the group were very good as well. I bumped into fellow MVP Cindy Weingarten, who I'd known of through MVP forums and such, but had not yet met, and met several other members of the group as well. Thank you all for making me feel so welcome! Also, thanks to INETA for arranging for me to speak at the UG meeting. If you run, or are a member of a .NET user group, and you aren't an INETA member, you should join now! They have tons of resources for user groups, including arranging for speakers such as myself to speak at your meetings. Best of all, INETA membership is free! And we all like free. ;-)

  • The Road to North Carolina...

    So I'm finally starting to recover from my drive from the Washington, DC area to Cary, NC (I'm in town to speak at the Triangle .NET User Group this week). What would normally be a 4-5 hour trip (around 270 miles) took more than 7 hours, thanks in part to torrential downpours that strafed the east coast yesterday. I think it was some of the worst rain I've ever driven in, sometimes so bad that I was down to 20mph on the freeway, with my hazard lights on, praying that the rain would let up enough for me to see more than 2 or 3 car lengths ahead. Not a fun drive. Fortunately, my 7-week old son, Joseph, slept through most of the drive, other than when we stopped to feed him.

  • Upcoming Server Control Talk

    This Wednesday evening at 5:00pm, courtesy of the INETA Speaker's Bureau, I will be speaking at the Triangle .NET User Group in Cary, North Carolina. I will be presenting a talk on creating a custom login server control. If you're in the Raleigh/Durham area, please come on by and say "hi!". As an added incentive, I've brought along a whole box of my books to give away at the event...so don't be late!

  • It figures...

    ...the first time Scoble links to my blog, and it's the one entry that fell victim to the recent migration (so anyone clicking on the link gets a nice generic ASP.NET error message). That's a little embarrasing.<sigh>

  • New Skin, thanks to Jesse...

    Jesse Ezell came up with a fairly clever way to add new styles to the .NET Weblogs without having access to the source code, by dint of a bit of javascript inserted in the news section that removes the stylesheets selected in configuration, and replaces it with a stylesheet specified by URL. Jesse's post on the subject includes instructions (in the comments) on how to take advantage of this technique.

  • Dr. GUI a compilation?

    Julia writes:

    via Chris Sells: MSDN's Dr. GUI, is now blogging. So I gotta figure out how that works. Dr. GUI is like a compilation of a bunch of MSDN folks, right? So who gets to do the blog? Is it a free for all? Well, I'm sure it will be fun, informative and full of all the silly puns we have become used to!

  • More on running as non-admin

    As folks who follow my blog already know, I've been trying to set a good example by running my main computer on a day-to-day basis with a plain vanilla user account, with no administrative privileges, in order to reduce the risk of providing elevated privileges to malicious code I might somehow accidentally run, as well as to ensure that any code I write installs and executes without requiring elevated privileges.

  • Now running w.bloggar from non-admin account

    All it took was copying the w.bloggar install directory to a directory in which the non-admin account has permissions. Again, not an ideal solution, especially since it demonstrates that the default install doesn't need to be the way it is, but I suppose I shouldn't complain too much about security in freeware. After all, you get what you pay for

  • More on w.bloggar...

    Sure, both of those solutions would probably work...but only if you know enough to know why the software's failing in the first place. If you don't know that going in, how are you going to know to install to a different directory? And like the suggestions made by Drew, these are workarounds, not true solutions. As such, they really don't address the larger issue of getting developers to test their software and make it run without elevated privileges, and without having to resort to workarounds or hacks.

  • Testing the WMP blog plug-in...

    Seems to work pretty well, with one caveat. Since I'm running w.bloggar using Run As... and an admin account, I have to run WMP with the same credentials in order to get the plug-in to work.

  • More on w.bloggar and admin permissions...

    Now, Drew is correct about the fix. But this only highlights my point. Applications aren't supposed to write user data to the Program Files tree in the first place. That's what the user's folder under the Documents and Settings folder is for. If w.bloggar wrote to the user's MyDocuments folder instead (or to the Application Data or Local Settings folders under the user's root folder), there would be no need for loosening the permissions on the w.bloggar install directory or running as admin to get it to work right.

  • Been out for a while...

    As I'm guessing some of you might have noticed, I've been absent from the blog world for a while. As Julia pointed out, this is because a couple of weeks ago, my son was born. His name is Joseph Andrew, and as one would expect, he's been taking up quite a lot of his daddy's time and attention of late. So if my blog entries are a little few and far between for a while, now you know why. :-) Cheeks!

  • First post from w.bloggar...

    Writing this post from w.bloggar. Nice UI, and good features (I especially like being able to easily post links to a new window, which has been a pain until now), but it breaks one of my primary pet peeves these days...it must be run using an administrator account in order for it to function properly.

  • Follow-up: BlogThis and SharpReader 0.9.0.1

    OK. I think I solved the problem I was seeing with BlogThis and SharpReader, thanks to some advice from Scott. The value for the "Key" key must be the value that you get from the URL for your own key. That is, you must:

  • BlogThis and SharpReader 0.9.0.1

    Scott wrote, of Luke writing:

    SharpReader 0.9.0.1 has been released. This version has the following changes:

    • Added a "File | Open" menu-item.
    • Added a "File | Subscribe" menu-item.
    • Mark updated items in italics.
    • Added a label before the address text box; ALT-D selects address text box.
    • Fixed KeepAlive bug that sometimes kept connections open too long.
    • Fixed bug in proxy authentication.
    • Better retry-mechanism for failed webrequests.
    • Fixed infinite post-threading.
    • Fixed unnecessary ListView refresh issue.
    • Added debug-statements at app-startup to find Win98/WinME problems. If you're running Win98 or WinME, please try to run SharpReader and send me the sharpreader.log file after it fails. Hopefully this will give me some more information that may help resolve this bug.
    • Open links in external browser now always goes to the system default browser.
    • implement Simon Fell's BlogThis plugin interface. If you save your plugin into a "plugins" subdirectory, SharpReader will find the plugin and make it available in the listview popup menu (shortcut ^B). Simon's last drop of Relaxer uses this plugin mechanism to post to RESTLog. Make sure you do NOT put IBlogThis itself in the plugins directory as this causes .NET to load this interface twice. Since SharpReader will use one copy of IBlogThis and your plugin another, SharpReader will not be able to find the plugin (because it will implement the wrong copy of IBlogThis)

  • Tip for ISO images from MSDN

    Finally got the VS.NET 2003 bits downloaded...even though I complain about the speed (or lack thereof), thank goodness for MSDN Universal. While the lack of an ISO image for VS.NET was a little puzzling, it's definitely faster installing from the hard drive, so I'm not going to complain too much about it.

  • Edit blogs from SharpReader? I'm doing it right now!

    For all those asking for the ability to edit your blog from within SharpReader, the ability is already there. Just subscribe to your own RSS feed, and when you're ready to add a new blog (or edit an old one) select your blog in the Subscription pane, then select an entry, and finally click the hyperlink that contains the title of your blog (not the title of an item, but the blog itself). You'll be taken to the home page for your blog, where you can click the Admin link and do all the normal stuff.

  • More reason to love the starter kits

    I just realized that I can, with the ASP.NET Community Starter Kit, easily create a new site for a given domain while the current site is still running at the same domain name, thanks to the magic of host headers, and the fact that the CSK allows communities to be configured at the subdomain level. So while the current production site is running at www.mysitename.com (and just mysitename.com), the new site can be set up at new.mysitename.com, allowing development and testing without requiring a lot of extra work, and without disabling the current site. When I'm ready to put the new site into production, all it will take is changing the target directory of the site in IIS, and changing the subdomain in the ISPAdmin section of the CSK from 'new' to '*'.

  • Aggregators

    OK, so perhaps I'm a little slow on the uptake. I've only been solidly in the blogging business for a couple of months now (although I maintained a pseudo-blog on the old version of my newly-refurbished company site), so I really didn't get what the big deal about RSS aggregators was. Folks like Julia, ScottW, and even ScottGu, were making such a fuss about aggregators, and I just didn't get it.

  • Community Starter Kit FAQ

    Earlier this week, I blogged about how cool I think the ASP.NET Starter Kits, and in particular, the Community Starter Kit, are, and how easy they make getting a site together quickly and painlessly. But as with any other software product, there are bound to be times when either it doesn't work as expected, or you don't quite understand what you need to do.

  • Running as Admin

    Over the weekend, I blogged about a variety of topics, including the practice of running as admin in one's day-to-day work, a practice which I had to admit I still was guilty of (with the exception of my development work). I've since pulled my regular login from the Administrators group, and while the process hasn't been painless, it's not been painfull either. Here are some of the things I've run into:

  • Guilt - A powerful motivator...

    My recent post on running as admin, and my admission that I was still doing it motivated me to reduce my shame quotient by removing my day-to-day account from the Administrators group once and for all.

  • More musings on the enhanced IE security in Win2K3

    One other cool thing included in the management recommendations for the Internet Explorer Enhanced Security Configuration (res://shdoclc.dll/IESechelp.htm#manage, on a Win2K3 machine), is a set of recommendations for browser security for servers. If all server admins followed these, that would certainly be an improvement. Unfortunately, many folks probably won't ever look at the docs for the Enhanced Security Configuration, which is why I'm reproducing these tips here:

  • Win2K3 Update

    Installation and testing of the samples from my latest book went very smoothly (as expected). So far my experience with the RTM version of Windows Server 2003 is as good as I've been hearing from others.

  • Almost entirely painless!

    OK, so not much more than an hour later, and my upgrade from RC2 of Windows Server 2003, Web Edition to the RTM version is complete, and seems to have gone almost entirely smoothly. I say almost, because despite the fact that I was upgrading rather than doing a fresh install, I still had to manually install the VMWare SVGA video driver. I also had a sudden shutdown of the VM, but I'm not sure yet whether that was just a VMWare hiccup, or something more ominous.

  • Crossing my fingers...

    ...and diving into upgrading my Windows Server 2003, Web Edition RC2 to RTM. I wouldn't be worried about it at all but for the fact that I'm running Win2K3 in a VMWare v3.1.1 virtual machine, and Windows Server 2003 is only provided experimental support in that version. It worked fine for RC1, but locked up hard when attempting a fresh install of RC2. I managed to get RC2 running under VMWare by installing RC1 and then upgrading RC1 to RC2, so I'm going to try the same trick with the RTM version. If that doesn't work, then I'll pave the VM and try installing from scratch.

  • Wrox

    I know I'm not the first to comment on the rumors that Wrox may be going under, but one of the first things I thought of is all of the folks that I've met who work for Wrox, and who depend on them for their livelihood. Authors like Alex Homer, Dave Sussman, and Rocky Lhotka, to name just a few, were the main reason that Wrox became such a prominent name in the tech book market.

  • Finished (well...almost)!

    Like my friend, Steve Smith, I've reached an important milestone in my latest writing project. The initial revisions of my books, Microsoft® ASP.NET Programming with Microsoft Visual Basic® .NET Version 2003 Step By Step and Microsoft® ASP.NET Programming with Microsoft Visual C#™ .NET Version 2003 Step By Step, are complete. This brings the books in line with Visual Studio .NET 2003 and version 1.1 of the .NET Framework. All that's left now is the editing passes, and the books will be complete.

  • It begins...

    The latest snowstorm to hit the mid-Atlantic region of the U.S. is now in full swing. It's some of the heaviest snow I've seen all winter (which is actually saying something this winter). I have to admit, that it looks pretty right now, but that doesn't make me any more enthusiastic about the shoveling I'm going to have to do tomorrow...ARGH!!!

  • More Snow!?!?!

    As anyone who's lived in or around Washington, DC can tell you...we've had a heck of a winter this year. Yes, I know people in more northern climes have it worse on a regular basis, but you're prepared for it. We got 2 feet of snow last week, which shut down schools for the whole week.

  • Oh, Great! Another scam...

    So I get a phone call from a nice lady who identifies herself as a transfer notification agent for the pseudo-official sounding Domain Support Group. She said she was calling to let me know about "changes on the Internet that could affect" my domain name.

  • A quick update...

    I wanted to note, while I'm thinking about it, that accessing the Amazon.com Web Services from ASP.NET is surprisingly easy. The only tricky part I found was dealing with the built-in limitation of 10 results per request.

  • Time to get started...

    So here I am trying to multi-task. I'm working on getting this blog set up (thanks to Scott W. for the great work on creating a rich ASP.NET blog tool!), while also working on a quick demo app for connecting to the Amazon.com Web Services through ASP.NET.