December 2003 - Posts

A very Happy New Year to all of my readers (both of you)!

Looking forward to a lot of new things, both at home at work. I'm looking to ramp up my contracting (let me know if you know of anyone looking for a solid, experienced ASP.NET developer/architect), while keeping my hand in writing and conferences. I should have more articles coming out on the MSDN ASP.NET Developer Center this coming year, and plan to continue my work with the INETA Speakers' Bureau.

On the home front, the end of 2003 has been auspicious, as my 8-month old son chose today to both cut his first tooth (with very little fuss) and to start crawling for the first time (after rolling around like a madman for the last few weeks). Not a bad way to end the year. :-)

I wish you all health, happiness, and success in the new year!

with no comments
Filed under: ,

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.

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.

An important selling point, in my mind, is that a single-site version of the product is available for free. So you can evaluate the full feature set, or run the product on a single site, for as long as you want. No time-bomb, no cripple-ware. And unlike other stats products I've tried, this seems to be a pretty intuitive and easy-to-use tool.

I haven't decided yet whether I'm willing to drop the $200 for a 50-site license (I'm leaning towards it, though I wish they had a 10-site license that was a bit cheaper, since I have nowhere near 50 sites to track stats on), but the free 1-site license is a no-brainer. Sorry if I sound like a commercial for this vendor, but it's rare when I come across a product that impresses me this way, so I wanted to share.

with no comments
Filed under:

Michael Howard may not blog quite as often as some, but he's always worth reading, so if you haven't subscribed, and you care about security, you should.

In his latest post, Michael provides links to several sources of information on reducing the attack surface of an application, a crucial part of securing any system. This is good stuff, and it's because a guy like Michael Howard is working to improve the security situation at Microsoft that I'm confident that things will continue to get better. As an aside, if you have the opportunity to see one of his conference talks, make sure you don't miss it. It's definitely time well spent.

Also, a previous post mentions the availability of a monthly Security newsletter from Microsoft (Passport account required).

[Listening to: Inside - Toad the Wet Sprocket - Dulcinea (04:20)]
with no comments
Filed under:

Peter Brunone, in his latest article on ASPAlliance.com, shatters a commonly-held belief of web developers...that you can't use script to close a browser window you didn't open using script:

The Uncanny Disappearing Window

How do you programmatically close a browser window when you didn't open it? Of course, everybody knows you can't. If they don't know that, they're novice developers and some seasoned veteran will set them straight... gently or otherwise.

Well, this week one of my clients -- whose intranet app opens in a specially formatted window -- told me they didn't want two windows just to start one application. I had very little success removing the toolbars from an existing window, and my vast web development experience told me that I had no other option. Rather, I didn't until a suggestion from a fellow member of the LaTech JavaScript list altered my perspective and resulted in the script I'm about to show you.

Did you know that ASPAlliance.com has an RSS feed? Now you do. That's how I found this article, and I'm glad I subscribed.

[Listening to: Agent Orange - Depeche Mode - Strangelove [#2] (05:08)]
with 5 comment(s)
Filed under:

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.

One such case is when using the ASP.NET Community Starter Kit, which allows you to host multiple community sites using the same codebase, by resolving the requested domain and retrieving the specific content for that community, with that content stored in a database. Trouble is, the CSK isn't really set up for resolving sites based on subdirectories of a given server address, so testing a site before deploying it and pointing the DNS records for the domain at that site is a little tricky.

I ran into this recently when building a new Web server to run my CSK-based sites (and in the process finally upgrading to the 1.0 version of the CSK). I scratched my head for a little bit on how to test the new version of the sites, while still leaving the DNS pointing at the live sites, when I remembered the hosts file. The hosts file, which resides at %windir%\system32\drivers\etc\hosts, allows you to manually map domain names to IP addresses. The default hosts file looks like the following:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost

The advantage here is that the mappings in the hosts file take precedence over the records retrieved from DNS, so if you map your desired domain name to your local IP address, any requests from that machine to the domain will go to the test machine, not the server configured in DNS:

192.168.1.125       mysitename.com
192.168.1.125       www.mysitename.com
Voila! Local testing without messing up existing live sites. Note that you can use the # character to comment out a line, so you can leave your mappings in the hosts file for future use, if desired.

[Listening to: Forbidden World - The Pursuit of Happiness - The Downward Road (04:04)]
with 1 comment(s)
Filed under:

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.

with 1 comment(s)
Filed under:

Here's how I look in full-color ASCII (link via Brady Gaster):


            +hDDDDDDDDDhzsssss==+s<==<+sshhhDhhzzss.        
            <hDDDDDDhhzs+++=++<((<<+(-~=shhhDhhzhzz~        
            ~zhhhhzs=+<((((((--~~-(('--~<=hhhDhzzhzz        
           .<+hzs=<<(~~---'''..'''-'''''~<shhDhhhzzz-       
           (=<s=<(((~~---'-''....'''-''''-+zhhDhhhzz<       
           <<<<<<(~~~----'-'....'''''''''-~+zhDDhhhz=       
          .=(<+<(~~~~~-'-'--''..'.'..'''''~<shDhDhzss.      
          -s((+(((~~~-----'''.......'''''-~<=shhDhhzz'      
          -z(<+((~~~~~-'---'''.....'.'''''~<=szzhhhhh-      
          -s~<<((--~~~------''..'...'''-''~<=ssszhhhh-      
          -s~<<((~-------~~-''..'.'''''-'-~+szss=zzzh-      
          -=~<<<(----------'''..'''''''''-~+szzs=szzz-      
          -=-<<<((-~~-------'''''''''-''''~+szzz=sszz'      
          '=-<<<<((~~~------''''''''''''''-<shhzsszzz'      
          .(-<<<<((~(~-~~~~~~~~-~~~(-''''''~+szzzzzzz-      
           --++=s+<(((~-~(<+=ssss==+<(-'''''~=zzzzzsz'      
         . .(szhhhz+<<~-~<=sszzzzs+=++<-'''--(=zzzzzs'      
           '+hzzzzhzs+(-~(+===+<(~--~<<~-''''~=zszz+(.      
           .====szzhz=<-'-(++szhhhs+(~(<-'-''-+zss=(~'      
           .(=hhhBBDDz(''-(+=zs=DDhzzs<-~---''<ss=((<-      
            -zz==sssDz~''---~++<+(-'(++~--''''~=s+(--'      
            ~z=<<((<=z(''---~+++(~~-~-''-~-----+=<-'-'      
            ~+=+++=+=s~''-----(+++(-'''''-''''-(+=(''.      
           .~(~~~~~(==-''--'-'''---''''''---''-~(<+~'.      
           .(~~---~(++-''-''''-'---''.''''''---~''~-'.      
           .(~~---~(+<-''-'-'-'---'''.''--------'''-.       
           .~(~-~-~<=<''-'---~---'''..'''-------'-.''       
           .((~~~-(++(-''----(+(~-''''''''------''.'.       
           .<((~(<++<(-''----~+s+(-----''--------'''        
           .+(((<=s+((-'.----(-<s+(~------------'''.        
           .<<<<+===+(--~---(--~+z=(~~-~--'-----'''.        
           .<+++=szzs+<(<+ss(~--~=z=<~~~--------~-(~        
           .<+++=szzhzs=zz=~~~-~~~=z=(~~~------~s(+s~.      
            <+=+=zzzzzhzss(~----(<<+z+~~~------~(-==+<-     
            (<++shszzzz+<(~---~((+sss=~~~--------'=((+~     
            -+<<=hDDhz=+<<<++sszzDh<++((~~---~---'+(-<-     
          ..'+<(+zhDhss=s(((('((<=-(<((~~----~----<s+.      
         '-~(<+<<szhh<-.-.....'-(--~<(~(----~~~-'-(+.       
     .'''(~-(<=++=sss='''...-'-~---((((~~-~~~-~-'--.        
    .--~<=<<<<+=+=ss=ss+<~~++~----~~~~(~~~~~~-~'-'.         
    -~(<+=+=<+++===s==+=s=+<'-~~~~~(~((~(~((-~~--.          
    ~((=====+======ss=+<<<<(((~~~~~~(((~(((~~~'-.           
    ~~(s===+(<+=+s=szs===++<(((~~~~((((((((~~~-....         
    ~~(z====+==+szs=zzzss==++<(~~~~(((((((~~(~'. ...        
    ~~(sss==+=+=szsshDhzzzzs=<(~~((((((((((((~.  ....       
    ~~(sssss==++s=szhhhzzzhz<~~~((((((((<(((<'.             
    -~(+=sss=+=sz+szszhzzhzs+(~<+<<<<<<<<<((+. ..           
    -~(+=zzss=zs=shzhzzzzzzs+<<===++<++++<<+(. .            
    '~((+zssszhs+szhhhzszzz==s==zzs===s==<+(~ .     ..      
    '~((=s=sshhs+shhhhhzzzzszzzhzhzzzzz+sD=.....    ..      

UPDATE: The CSS style attached to the ASCII art (yeah, I know, if it's ASCII, why would it need styles...don't ask me, ask the folks at typeorganism.com) does not work in SharpReader (and perhaps in other aggregators as well), so if you want to see the output as intended, you may want to check my blog directly.

with 1 comment(s)
Filed under:
More Posts