<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>~mkw</title><link>http://weblogs.asp.net/kwarren/default.aspx</link><description>Average guy, above average luck...the blog of M. Keith Warren</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Three things I learned while not in college</title><link>http://weblogs.asp.net/kwarren/archive/2007/06/30/three-things-i-learned-while-not-in-college.aspx</link><pubDate>Sat, 30 Jun 2007 04:18:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:2981918</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=2981918</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2007/06/30/three-things-i-learned-while-not-in-college.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;&lt;A class="" href="http://www.hanselman.com/blog/ThreeThingsILearnedAboutSoftwareWHILENOTInCollege.aspx" mce_href="http://www.hanselman.com/blog/ThreeThingsILearnedAboutSoftwareWHILENOTInCollege.aspx"&gt;&lt;STRONG&gt;Scott brought up the subject &lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;so I thought I would take a stab at it since I skipped college as well...&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;You’re not ever actually going to go back and fix that code you quickly threw together, even if you put a TODO comment saying this was a hack and needs to be fixed, you will not have the time because in most cases there will be more immediate concerns…so do it right the first time&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Quality is a measure of functionality and reliability over time…building new functionality is usually fun, making existing functionality more reliable is usually not…but in the long run, the latter can be more valuable&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;You will suck at estimating time for tasks, there is no great lesson here – just fundamental truth…accept it and adapt for it&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;&lt;EM&gt;And now folks for the bonus round...four things I learned while working on my own (nearly 6 years now)...these may seem like simple truths but some things bear repeating again and again&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;No contract or gig is ever real until you actually go through the process of signing it; even if it seems like a sure thing…don’t hold your breath&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Take the Net payment terms part of your contract (and the due by portion of your invoices) and use it when you run out of toilet paper…I don’t think I have ever had a client who actually paid on time&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Save money, lots of money….figure out what you need to get by and double it…most people look at the cash flow issues and think about the time between gigs when they may be ‘on the bench’ and plan around that. The truth is that you can be on the bench for 2 months then start working but never get your first invoice paid for 4 months into the project…it sucks, but it happens.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Know as much as you can about what is going on with your client – Bankruptcy is an evil thing and it can and likely will happen to you….in six years 2 clients have done it to me and it is not pleasant when you realize you are an unsecured creditor and will get nothing at all.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=2981918" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/kwarren/archive/tags/General+Software+Development/default.aspx">General Software Development</category></item><item><title>ASP.NET solves cellular coverage issues !?</title><link>http://weblogs.asp.net/kwarren/archive/2006/12/30/asp-net-solves-cellular-coverage-issues.aspx</link><pubDate>Sat, 30 Dec 2006 22:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:1338815</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=1338815</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2006/12/30/asp-net-solves-cellular-coverage-issues.aspx#comments</comments><description>&lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Well, not really but it is playing its part. Last year I did some work for a company who makes some wickedly cool technology that &lt;a href="http://www.engadget.com/2006/12/30/nyc-taxis-to-map-out-dead-zones-in-mobile-networks/" target="_blank"&gt;got some Engadget love today.&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;The company is a division of Ericsson and yes they have built their system using ASP.NET, I have helped to snuff out performance and scale issues on the site which is only the surface of an intense amount of engineering and development.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;br /&gt;In 5 years on my own I have worked on a couple dozen different projects including things for the Department of Defense but nothing has been as cool as this project which will have a practical effect on so many people&amp;hellip;I mean, who hasn&amp;rsquo;t had a call dropped!&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=1338815" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/kwarren/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/kwarren/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/kwarren/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/kwarren/archive/tags/General+Software+Development/default.aspx">General Software Development</category></item><item><title>Making us all look bad...</title><link>http://weblogs.asp.net/kwarren/archive/2006/05/31/Making-us-all-look-bad_2E002E002E00_.aspx</link><pubDate>Wed, 31 May 2006 21:42:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:450154</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=450154</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2006/05/31/Making-us-all-look-bad_2E002E002E00_.aspx#comments</comments><description>right now there is some CIO/CTO type at Verizon swearing to never again use ASP.NET because in his mind it just cant handle the big show...(&lt;a href="http://weblogs.asp.net/kwarren/archive/2006/05/31/Making-us-all-look-bad_2E002E002E00_.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=450154" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/kwarren/archive/tags/.NET/default.aspx">.NET</category></item><item><title>Does adding developers increase the hours?</title><link>http://weblogs.asp.net/kwarren/archive/2006/04/27/444213.aspx</link><pubDate>Thu, 27 Apr 2006 17:24:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:444213</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=444213</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2006/04/27/444213.aspx#comments</comments><description>I am working on a project timeline this week and my customer called me after review. They were pretty amused by the timeline because I had increased the total hours after adding another development resource to the project. I think this is hard for most people to understand, they imagine a pure labor project, building a swing set for instance. One man could do it in 6 hours but add a second equally capable man and they may complete the project in 2 hours. I think this is due to the fact that some tasks can be approached differently with varying multiples. I don’t believe this anecdote to make the leap into software development. Development methodologies aside I think adding a second developer adds a tax of time to the project, the guy once working by himself now has to communicate with another, tactics get questioned, he has to wait on things from the other guy and vice versa. There are also benefits, having someone else dependent on your delivery in the short term can make for a good motivating factor. In this case though, we are talking about man hours and not delivery date. &lt;br /&gt;&lt;br /&gt;I estimated the project to take 600 hours on my own and was asked what it would look like to add another developer. Looking at the tasks I chose some which would be best to be worked on independently and tried to avoid overlap in needs (don’t want someone building an interface if the underlying business objects aren’t complete). In the end I put the hours at 750, but the benefit is that the project gets done sooner in calendar days. This means I added about 25% more man hours due to the changes in approach wrought by the resource addition. This worked under the assumption that the second developer had skills commensurate with mine and that the project tasking stayed the same. I believe this number slides down with time and other factors such as whether or not the two resources were in the same location, had worked together before etc. &lt;br /&gt;&lt;br /&gt;My question is this – is 25% overkill? &lt;br /&gt;&lt;br /&gt;Not enough? What other factors am I not considering? &lt;br /&gt;&lt;br /&gt;Does this number go down with longer projects? &lt;br /&gt;&lt;br /&gt;What does a third person do? &lt;br /&gt;&lt;br /&gt;Any advice would be appreciated. &lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=444213" width="1" height="1"&gt;</description></item><item><title>Origami Hype == Success</title><link>http://weblogs.asp.net/kwarren/archive/2006/03/09/439919.aspx</link><pubDate>Thu, 09 Mar 2006 14:03:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:439919</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=439919</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2006/03/09/439919.aspx#comments</comments><description>&lt;p&gt;It is one thing to be a regular item on Engadget, wholly another to be the headline on Drudge.&lt;/p&gt; &lt;p&gt;As 'official' news about the Origami project begins to pour out it appears Microsoft has pulled off something Apple has gotten pretty good at, generating mainstream media hype. AP published a story which I saw on at least 3 major news sites. Paul Harvey was talking about it on the radio this morning and Matt Drudge had it as his centerpiece headline. If you don't know who Drudge is then this could possibly be the first time you have used the internet...talk to anyone in a major media outlet and they will tell you that his page is either their home page or is visited multiple times daily. He is a harbinger for what will be the major news story in the coming hours.&lt;/p&gt; &lt;p&gt;Now if the guys in Redmond can just figure out who at Time Magazine Steve Jobs has compromising pictures of then maybe we can get some of those fancy cover stories.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=439919" width="1" height="1"&gt;</description></item><item><title>OT: Office 12 Beta</title><link>http://weblogs.asp.net/kwarren/archive/2006/01/18/435860.aspx</link><pubDate>Wed, 18 Jan 2006 21:55:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:435860</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=435860</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2006/01/18/435860.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;If there is one tool I use more than Visual Studio it is certainly Outlook, I have been an Outlook fan since Outlook 2003 (before that it was just ok) and have not looked back since. I decided recently to give the Office 12 Beta a try and while I tend to shy away from beta 1 stuff for actual usage I was quite pleased with the relative stability. Now after having spent a few weeks mainly in Outlook and Word I have to say that this has got to be the best Office release by a long shot. &lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font face="Tahoma" size="2"&gt;I know people get into arguments about whether there is some killer 'must have' feature and whether the new features justify the upgrade cost and on the surface I could not name just one that makes it worth while but this thing is truly a starting to shine as I dig more. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;If you have the opportunity I really suggest playing with it for a bit, it is going to knock your socks off in a lot of respects.&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=435860" width="1" height="1"&gt;</description></item><item><title>Vista UI - Blah</title><link>http://weblogs.asp.net/kwarren/archive/2006/01/09/434906.aspx</link><pubDate>Mon, 09 Jan 2006 21:12:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:434906</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=434906</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2006/01/09/434906.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Via neowin.net (&lt;/font&gt;&lt;a href="http://www.neowin.net/index.php?act=view&amp;amp;id=32020&amp;amp;category=main"&gt;&lt;font face="Tahoma" size="2"&gt;http://www.neowin.net/index.php?act=view&amp;amp;id=32020&amp;amp;category=main&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Apparently the current Vista UI in 5270 is going to be the final look. I had really high hopes for MSFT and truly believed (and even tried to convince my OSX loving friends) that Vista would be revolutionary.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I can recall a &lt;/font&gt;&lt;a href="http://www.longhornblogs.com/scobleizer/archive/2003/10/27/777.aspx"&gt;&lt;font face="Tahoma" size="2"&gt;certain Scoble post&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt; which has kept me thinking that this cant be it, this cheesy upgrade of the XP look is certainly not the real deal. Revolutionary has got to be something Stardock cant mimic.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Not quite sure what I was looking for, but with what is arguably one of the most prevalent and profitable products in the world I was hoping for something more than new colors and a transparency effect. I know there is much more than that, I know...but will my mother?&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=434906" width="1" height="1"&gt;</description></item><item><title>micro.isv - a detour</title><link>http://weblogs.asp.net/kwarren/archive/2005/11/16/430730.aspx</link><pubDate>Wed, 16 Nov 2005 17:07:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:430730</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=430730</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/11/16/430730.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;For over a year now I have been working in my spare time on a digital asset management system, I have been very serious about this and did quite a bit of competitive research out of the gate which I have refined over time. It got the to point where Outlook notes and scratch pads hobbled together where getting out of hand so I spent a few hours throwing something together to manage the information. made changes, spent more hours (big for loop here) and after way too many hours had something respectable for managing the information. I have showed this to a few people and got a pretty curious reaction, instead of "that’s nice" or "good idea" the response was more like, "why aren’t you selling that?"&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I am a big fan of &lt;a href="http://software.ericsink.com/"&gt;Eric Sink&lt;/a&gt;, I love his writings on the &lt;a href="http://software.ericsink.com/bos/Business_of_Software.html"&gt;business of software&lt;/a&gt; and the insight I get from him is very often one of those things where you sit back and think that you&amp;nbsp;knew that deep inside but just couldn't express it (in other words: I’m a fan) So I am going to take some clues from life and my lessons from the &lt;a href="http://www.notalegend.com/notalegend.html"&gt;dotnetredneck&lt;/a&gt; himself and am going to make a detour from my asset management system for awhile and see if this competitive intelligence thing I have built can be something. It is not too big and may just fit a niche market that is out there waiting to happen; the problem scope is limited and I think I can invest the time and resources to take a stab at this without breaking the bank or pissing off my wife. Bottom line, if it fails then I have wasted little money and not much time. If it kinda sort of succeeds then I can buy some toys (Xbox360, highdef tv, etc) and if it really works out I may be able to stop consulting, let this pay some bills and spend more time on my asset management system.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Couple points to ponder; I really don’t want to deal with software distribution and all that jazz, so I going with a service provider model, the software will be subscription based. Unless something about my potential market changes my mind, this is my path. I am going to build on .NET V2 with SQL 2005 because I like it number one and more importantly I have already spent time building something out in those technologies.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I think I will blog this adventure, I am pretty close hold on my consulting practice and since most of my work is defense related I am sure you can understand why but this thing is totally open for public consumption...&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;And as always I hope you comment to give me some advice.&lt;br /&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=430730" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/kwarren/archive/tags/MicroISV/default.aspx">MicroISV</category></item><item><title>OT: JibJab</title><link>http://weblogs.asp.net/kwarren/archive/2005/10/14/427500.aspx</link><pubDate>Fri, 14 Oct 2005 15:41:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:427500</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=427500</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/10/14/427500.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Noticed today that the &lt;a href="http://www.jibjab.com"&gt;JibJab site&lt;/a&gt; is running ASP.NET and they have a hilarious new video out. Check it out sometime.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Oh yeah, and they need to hire an admin who knows what he/she is doing because last I checked the site was showing raw ASP.NET errors (right now it is returning Server too busy)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Oh well.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=427500" width="1" height="1"&gt;</description></item><item><title>New Rule and Old Rule</title><link>http://weblogs.asp.net/kwarren/archive/2005/10/03/426453.aspx</link><pubDate>Mon, 03 Oct 2005 18:11:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:426453</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=426453</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/10/03/426453.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;New Rule (for blogging on this site):&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;A href="http://weblogs.asp.net/jgaylord/archive/2005/10/03/426447.aspx"&gt;Posts&lt;/a&gt; &lt;A href="http://weblogs.asp.net/cfrazier/archive/2005/10/03/426446.aspx"&gt;which&lt;/a&gt; &lt;A href="http://weblogs.asp.net/Plip/archive/2005/10/03/426444.aspx"&gt;allude&lt;/a&gt; &lt;a href="http://blogs.ipona.com/davids/archive/2005/10/03/3386.aspx"&gt;to&lt;/a&gt; some great technical silver bullet or really cool demo and say nothing more than 'it was cool' are not allowed. Unless you say something specific you are just making noise and frustrating those of us who aren't in the knowledge loop. Saying you cannot talk due to an NDA is even more ridiculous because a basic tenet of secrecy would lead the keeper of such secret to avoid divulging they even know the secret.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;(read: this sucks, I want&amp;nbsp;to know what you guys know...)&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Old Rule (for life and development):&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Verdana" size="2"&gt;Bullets will almost always kill you, or hurt really bad...even if they appear silver.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=426453" width="1" height="1"&gt;</description></item><item><title>VS2005 RC is here</title><link>http://weblogs.asp.net/kwarren/archive/2005/09/12/424912.aspx</link><pubDate>Mon, 12 Sep 2005 17:23:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:424912</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=424912</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/09/12/424912.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I just noticed that the Release Candidate for Visual Studio 2005 is on MSDN downloads!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Let the bandwidth drain begin!&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" color="#ff0000" size="2"&gt;UPDATE: It has suddenly disappeared...ARGHHH&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" color="#008000" size="2"&gt;OK, up and moving now @ 100K&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=424912" width="1" height="1"&gt;</description></item><item><title>Where is the real interface?</title><link>http://weblogs.asp.net/kwarren/archive/2005/07/31/421152.aspx</link><pubDate>Sun, 31 Jul 2005 21:53:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:421152</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=421152</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/07/31/421152.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;OK, I went and downloaded Vista Beta 1 and played for a while. There are some nice things but all in all incremental improvements over XP. My beef though is with the interface and the hype. For years I heard about this super secret 3d interface being developed, it was supposed to make OSX users jealous and makes users want to run out and buy the product when released. &lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;font face="Trebuchet MS" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;Someone please tell me that this is not it, is that seriously the best you got? I work with OSX almost every day and tell people that Longhorn should have a UI that makes &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Cupertino&lt;/st1:place&gt;&lt;/st1:City&gt; shake but this makes me look like an idiot.&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Trebuchet MS" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;Scoble? Someone? Please tell me the goods are still hiding in &lt;st1:City w:st="on"&gt;&lt;st1:place w:st="on"&gt;Redmond&lt;/st1:place&gt;&lt;/st1:City&gt; and you are going to pull some last second, “Oh yeah, here is the fancy stuff”&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Trebuchet MS" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;font face="Trebuchet MS" size="2"&gt;&amp;nbsp;&lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=421152" width="1" height="1"&gt;</description></item><item><title>443 &lt;--&gt; 80 - Seamlessly moving requests in and out of SSL</title><link>http://weblogs.asp.net/kwarren/archive/2005/07/08/418541.aspx</link><pubDate>Fri, 08 Jul 2005 15:35:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:418541</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=418541</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/07/08/418541.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Sometimes you feel secure, sometimes you don’t. Better put, sometimes a page needs to be secured and sometimes it does not.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;One of the things I wanted to do on a recent project was avoid unnecessary page encryption when the content did not require it to be. This may sound like a silly problem but when you consider that in the logical click stream of a user they may go from a page with sensitive data to a non-sensitive page and then back a forth between pages that contain secret information, you can see where you are wasting cycles encrypting pages that don’t need it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;This seemed to me like a common problem and I expected that the IIS would have an easy way to deal with this problem and while IIS does allow you to require SSL for a specific file it does not fail with elegance. By that I mean that when you visit the page which requires SSL using a normal HTTP session, you get a server error (Http status codes 403.4, 403.5 I think) that tells you this page must be viewed securely. While for some users this is not a big deal, just make the change to the URL – most people get really confused at this point; and heck if the darn thing knew it needed to be secure then why not just become secure. Furthermore, when considering this challenge outside my personal scope I knew that going the IIS route for this solution did not seem the best path because in lots of cases developers don’t have access to make IIS changes. So as I venture to find a way to make my application do this I am quite sure that ASP.NET has some great, built-in functionality which will do for me what I am attempting; after much searching I came to the conclusion that Request.IsSecureConnection is as good as it gets in the framework.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Other people have proposed solutions in the past, today I even ran across one which prompted me to write this; &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsdebuggerstepthroughattributeclasstopic.asp"&gt;Matt Sollars has an excellent two part article on Code Project&lt;/a&gt; which details his solution to this problem involving httpModules and extending the configuration of asp.net. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;I actually rolled a solution similar to Matt’s but was unhappy with the general complexity of it; I wanted something simple and the problem scope seemed so limited that there had to be some way to achieve this in a relatively performant manner without having to write a lot of code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;OK, that is a lot of build up, now to the point…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;I found a way by extending the Page class that you can automatically move people in and out of secure pages with as little as one line of code per page! Here is how you do it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;First thing you will need to do is add some code to your base Page class; almost every single ASP.NET tips/tricks/good practices/yada/yada/yada article tells you that you should extend System.Web.UI.Page with common functionality; if you are not doing this already, shame on you.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;To the base page class add a private boolean field to store the data indicating whether a page is secure&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New" color="blue"&gt;&lt;span style="COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;private&lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="FONT-FAMILY: 'Courier New'"&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;&lt;/font&gt; _RequireSSL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Also add a property which wraps this field&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[Browsable(&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;&lt;/font&gt;)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[Description("Indicates whether or not this page should be forced into or out of SSL")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;public&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;virtual&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;bool&lt;/span&gt;&lt;/font&gt; RequireSSL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;get&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;return&lt;/span&gt;&lt;/font&gt; _RequireSSL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;set&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_RequireSSL = &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;value&lt;/span&gt;&lt;/font&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-STYLE: italic; mso-bidi-font-style: normal"&gt;Note: You will notice that the property is decorated with a couple of attributes, the first, “Browsable” tells VS.NET to show this property in the design time property window allowing you to indicate in that window what the value of the property would be, doing this can make things a bit easier and save you even needing to write the single line of code per page needed to implement the functionality; setting the property effectively writes the code for you. The “Description” attribute tells VS.NET what text should show at the bottom of the Properties window when this property is selected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/i&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Next, we are going to add the actual method to our code which will do the magic. You will notice that this method has two other attributes, the first will tell VS.Net when debugging to skip over this part, no need to see it; it works. The second attribute indicates that we only want to run this code when we have compiled with a SECURE compilation constant defined, this saves us having to deal with SSL certs and such on development machines as we can define that constant only in build configurations that will be deployed to an environment with the certificate such as staging or production.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[System.Diagnostics.DebuggerStepThrough()]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[System.Diagnostics.Conditional("SECURE")]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;void&lt;/span&gt;&lt;/font&gt; PushSSL()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;const&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;/font&gt; SECURE = "https://";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;const&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;string&lt;/span&gt;&lt;/font&gt; UNSECURE = "http://";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="green"&gt;&lt;span style="COLOR: green"&gt;//Force required into secure channel&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt;&lt;/font&gt;(RequireSSL &amp;amp;&amp;amp; Request.IsSecureConnection==&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;false&lt;/span&gt;&lt;/font&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Redirect(Request.Url.ToString().Replace( UNSECURE , SECURE ));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="green"&gt;&lt;span style="COLOR: green"&gt;//Force non-required out of secure channel&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;if&lt;/span&gt;&lt;/font&gt;(!RequireSSL &amp;amp;&amp;amp; Request.IsSecureConnection==&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;&lt;/font&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Response.Redirect(Request.Url.ToString().Replace( SECURE , UNSECURE ));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;The logic here is quite simple, if the RequireSSL property is set to TRUE and the Request is not a secure connection then we need to perform a redirect. That redirect will take the Request.Url which is the full URL of the request, convert it to a string and then replace http:// with https:// and send the user on to the https version of the page. The second conditional statement does the same thing only in reverse, taking a user out of SSL if the page is not required to be secure. You could toy with the actual string replacement if you wish, for example you might want to only analyze the first few characters of a string in the case the some form of "http" is embedded later in your URL (maybe you have other URLs; in your URL)&amp;nbsp;that is up to you – for the sake of making it as easy to understand as possible I chose the simplest route.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Now we have our field, our property and our method, the only thing left is the implementation. To make this work for our pages we need to override OnInit in our page class…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;protected&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;override&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;void&lt;/span&gt;&lt;/font&gt; OnInit(EventArgs e)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;base&lt;/span&gt;&lt;/font&gt;.OnInit(e);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;PushSSL();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;As you can see from the code above we are really only adding to OnInit, not changing the behavior any as the first thing we do is call the base member. Our second line of code calls our method which will run the process of checking our page is moving it in and out of the secure channel.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Now we have all of the pieces in place, to implement this on an actual page there is really only one line of code which you can write of let VS.NET write for you; an un-initialized boolean is by default false so unless you are trying to make a page secure there is really no reason you will need to do this. In the case you do need to make a page secure you should set the RequireSSL property equal to True on the page; this should be done in the InitializeComponent method…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;private&lt;/span&gt;&lt;/font&gt; &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;void&lt;/span&gt;&lt;/font&gt; InitializeComponent()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;this&lt;/span&gt;&lt;/font&gt;.RequireSSL = &lt;font color="blue"&gt;&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;&lt;/font&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="mso-tab-count: 2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;font color="green"&gt;&lt;span style="COLOR: green"&gt;//Other initialization code would be here also &lt;/span&gt;&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;The setting of this property can also be achieved by pulling up the design time properties of your page, navigating to the Page member in the property drop down list and setting the property manually. This will write the line of code for you.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Normally this is where professional writers recap and wrap up but I have pretty much said all there is to say, it works…it is not perfect but it does the job, if you are into this kind of thing I would also suggest looking at Matt’s article and deciding what solution is best for you.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;/span&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;related stuff to check out:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsconditionalattributeclasstopic.asp"&gt;MSDN on Conditional Attributes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemComponentModelBrowsableAttributeClassTopic.asp"&gt;MSDN on the Browsable Attribute&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemComponentModelDescriptionAttributeClassTopic.asp"&gt;MSDN on the Description Attribute&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;A href="http://weblogs.asp.net/kwarren/archive/2003/07/10/9916.aspx"&gt;The Debugger Step Through Attribute&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsdebuggerstepthroughattributeclasstopic.asp"&gt;Matt Sollars solution @ Code Project&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/Protocols/HTTP/HTRESP.html"&gt;HTTP Status Codes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/041305-1.aspx"&gt;Extending System.Web.UI.Page&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Trebuchet MS" size="2"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font face="Courier New" size="2"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=418541" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/kwarren/archive/tags/ASP.NET+Tips+and+Tricks/default.aspx">ASP.NET Tips and Tricks</category></item><item><title>AppleMatters: How Microsoft Will Die...</title><link>http://weblogs.asp.net/kwarren/archive/2005/07/01/417170.aspx</link><pubDate>Fri, 01 Jul 2005 18:06:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:417170</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=417170</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/07/01/417170.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://applematters.com/index.php/section/comments/423/"&gt;&lt;font face="Tahoma" size="2"&gt;http://applematters.com/index.php/section/comments/423/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Sometimes when I read stuff like this I seriously think it was originally written for “&lt;/font&gt;&lt;a href="http://www.theonion.com/"&gt;&lt;font face="Tahoma" size="2"&gt;The Onion&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;”&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Having a point to point argument with this guy would be like beating up a kid in a wheelchair but I thought I would bring up a few of the wackier points for good laughs.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;em&gt;“Shoddy software practices are forced on programmers due to incompetent managers which in turn produces the mess that is Longhorn.” &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;– Those terrible managers and shoddy practices, that’s the problem. Please tell me though, do you know any of these managers? Can you detail these bad practices? Have you even seen the “mess” that is Longhorn?&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;em&gt;“Then on the server side Microsoft has finally realized that they are fighting a losing war.”&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;– Yeah and the fact that so many people are tossing Windows 2003 for other things just amplifies this…&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;em&gt;“Now factor in the ITMS and how profitable it has been.” &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;– Forget the fact that Microsoft makes twice as much PROFIT in one month than ITMS has done in total revenue its entire lifetime.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;em&gt;“News flash! Longhorn is going to be drastically overshadowed by Leopard and Macs running Intel.”&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;- So everyone will be excited for the 200 people who still use Macs while no one will care the 200 million + users will be getting an upgrade.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;em&gt;“Throw all of the current Windows code away. All of it. Everything from 9x to XP to Longhorn, everything has to go. It’s all crap and its time to jettison those reeking piles of poorly written, buggy code.” &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;– I love proclamations from people who expose themselves in this way; I wonder how many lines of code this guy has written (hint: HTML does not count).&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;em&gt;“There is no need to make IE so deeply attached to your kernel. Bad things happen when you do stuff like that.” &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;– OK, can you even give me a salient definition of a kernel? IE has never been part of the kernel, it will not be in Longhorn either. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;And the one I like best is his suggestion for what Microsoft should do; suggestion number one, top of the list...&lt;strong&gt;Admit Defeat!&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Ha! I love a good laugh.&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=417170" width="1" height="1"&gt;</description></item><item><title>Will Atlas slow the move to smart clients…?</title><link>http://weblogs.asp.net/kwarren/archive/2005/06/28/416281.aspx</link><pubDate>Tue, 28 Jun 2005 19:27:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:416281</guid><dc:creator>mkeithwarren</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/kwarren/rsscomments.aspx?PostID=416281</wfw:commentRss><comments>http://weblogs.asp.net/kwarren/archive/2005/06/28/416281.aspx#comments</comments><description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;I have been building applications on the web for almost a decade now; real applications used everyday by real people, not web sites you touch every once in a while. In my experience I have learned many things but one important element can be summed up in two words – browsers suck. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;We have taken browsers and forced their square asses through round holes only to find that once we pushed it through there was another hole in a different shape waiting on the other side. Browsers are simply not an ideal platform for the presentation of data; they are certainly not ideal for the manipulation of that data. Don’t get me wrong we have come a long way since IE4 blew Netscape out of the water and ushered in an era more friendly to developers but let’s face it, the best of web applications are poor facsimiles of the real thing. What are we trying to do but merely mimic Windows.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;We get excited by things like OWA in Exchange 2K3 but when questioned about the excitement the answer tends to be something like “It is so much like Outlook 2003, it is really great.” Think about the absurdity of that, we are excited because it is a pretty good fake.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;&lt;A href="http://weblogs.asp.net/scottgu"&gt;ScottGu&lt;/a&gt; today &lt;A href="http://weblogs.asp.net/scottgu/archive/2005/06/28/416185.aspx"&gt;announced&lt;/a&gt; Microsoft’s attempt to up the AJAX ante with Atlas and while exciting and applause worthy (and something I will most certainly use) I question its effect on the long term migration to a platform which is technically more elegant and financially (to MSFT) more fruitful. I am speaking about ‘Smart Clients’, Windows based applications with a native understanding of the web and specifically web services. The value of the web is not how pretty we can make our HTML but the content described by it, this was difficult to explain to people but the growth of RSS has made it more clear – the value is the data and not the presentation. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;With the widespread adoption of managed run times like the .NET Framework and Java runtime some of the major challenges that gave rise to web based applications are being answered. Browsers and HTML in general gave us platform independent consistency. As the managed runtimes make their way on the nearly every new PC made and the majority of actively used existing ones this challenge is seceding. The runtime is becoming the consistent bedrock that developers need as a target for application development. Another great advantage wrought by the browser revolution was the obviation of the need for software distribution. Versioning issues and the physical act of installation on a client machine presented incredible engineering challenges and browsers simply did away with that. Today we are seeing more and more applications which update themselves and the Windows Forms team has served up a great piece of technology with ClickOnce deployment which will almost eliminate the original problem of distribution all together.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;If the value proposition of the web is distilled down to the broad availability of the value asset (the data) then one could argue our applications can and should move to a model that best exploits that data for useful purposes, a model that takes advantage of the power of the PC and richness of the Windows user experience to give the user the best model of data availability and manipulative functionality. This is the course plotted by people building smart client applications and it is most certainly the right course; why then are people still building new applications using methods that don’t make sense anymore? Will Atlas merely exacerbate the problem by taking us further down a road of “works good enough” and effectively slow the migration back to Windows based applications.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;My point is that we got in bed with browser based applications because of problems that are gone now (or very close to gone), will the continual advance and introduction of technologies that make life “more like” the real thing only delay to move back to the real thing? &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Tahoma" size="2"&gt;This is not to say that Scott’s team should not build Atlas, of course they should and they should do it in classic Microsoft style: better than everyone else. &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=416281" width="1" height="1"&gt;</description></item></channel></rss>