<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-5434440</id><updated>2009-06-21T10:52:25.441-04:00</updated><title type='text'>The Dustward</title><subtitle type='html'>&lt;strong&gt;code [ kode ]&lt;/strong&gt;&lt;br/&gt;
a system of letters, numbers, or symbols into which normal language is converted to allow information to be communicated secretly, briefly, or electronically</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.basementventures.com/blog/atom.xml'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default?start-index=26&amp;max-results=25'/><author><name>Ernie C.</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5434440.post-9104108423609257081</id><published>2009-06-21T10:45:00.003-04:00</published><updated>2009-06-21T10:52:20.874-04:00</updated><title type='text'>Lua Code Completion for Notepad++</title><content type='html'>I am 90% finished with a code completion XML file for the Lua 5.1 programming language. The XML is complete with functions and parameters, but I am still working on return types. I will release a beta version soon with installation instructions.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-9104108423609257081?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/9104108423609257081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=9104108423609257081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/9104108423609257081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/9104108423609257081'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2009/06/lua-code-completion-for-notepad.html' title='Lua Code Completion for Notepad++'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-3934871039838238073</id><published>2009-05-06T08:09:00.002-04:00</published><updated>2009-05-06T08:13:09.505-04:00</updated><title type='text'>Canceling MySpace Account</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dustward.com/blog/uploaded_images/Picture-1-772921.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 78px;" src="http://www.dustward.com/blog/uploaded_images/Picture-1-772919.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;I never use MySpace and never real had an attraction to the site. Tom, you made your money, but now it's time to clear the way for Facebook and Twitter. I enjoyed the three levels of confirmation I had to go through to cancel. It's interesting that even after multiple confirmations I still have check my email to finish the process. This is the Columbo of account cancellations.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-3934871039838238073?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/3934871039838238073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=3934871039838238073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/3934871039838238073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/3934871039838238073'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2009/05/canceling-myspace-account.html' title='Canceling MySpace Account'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-210287005889649371</id><published>2008-07-14T19:45:00.002-04:00</published><updated>2008-07-14T19:47:30.396-04:00</updated><title type='text'>iPhone post</title><content type='html'>I don't know everybody does this, but if just seems appropriate when you're 3Gizzin.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-210287005889649371?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/210287005889649371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=210287005889649371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/210287005889649371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/210287005889649371'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2008/07/iphone-post.html' title='iPhone post'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-2976129392028639901</id><published>2008-05-12T10:53:00.010-04:00</published><updated>2009-06-02T12:04:35.990-04:00</updated><title type='text'>CSS Horizontal Menu with Submenu</title><content type='html'>&lt;p&gt;I was playing with some CSS code over the weekend. My goal was to make a cross-browser compatible horizontally tabbed menu using HTML's unordered list tag. This concept has been beaten into the ground pretty well on the web, but none of the solutions I found fit my needs.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CSS menu file: &lt;a href="http://www.dustward.com/blog/menu.css"&gt;menu.css&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Sample HTML: &lt;a href="http://www.dustward.com/blog/cssExample.html"&gt;cssExample.html&lt;/a&gt;&lt;/ul&gt;&lt;p&gt;The code here has been successfully testing in Internet Explorer 6.0 and Mozilla Firefox 2.0. Notice I did not need to use CSS conditionals for IE compatibility. I though that was a nice touch :)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.dustward.com/blog/uploaded_images/menu-702060.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://www.dustward.com/blog/uploaded_images/menu-702019.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;CSS Code:&lt;br /&gt;&lt;/strong&gt;&lt;div class="csharpcode css"&gt;&lt;br /&gt;#menu ul {&lt;br /&gt;border-bottom: solid 1px #336699;&lt;br /&gt;font: normal normal bold 14px verdana;&lt;br /&gt;margin: 0;&lt;br /&gt;margin-top: .1em;&lt;br /&gt;padding: 4px 0; /* This typically corresponds to the padding-top value in '#menu li a' */&lt;br /&gt;text-align: left;&lt;br /&gt;}&lt;br /&gt;#menu li {&lt;br /&gt;list-style: none;&lt;br /&gt;display: inline;&lt;br /&gt;margin: 0;&lt;br /&gt;}&lt;br /&gt;#menu li a {&lt;br /&gt;background: #EFEFEF;&lt;br /&gt;border: solid 1px #336699;&lt;br /&gt;border-bottom: none;&lt;br /&gt;color: #336699;&lt;br /&gt;margin-right: 0em;&lt;br /&gt;padding: 4px 6px;&lt;br /&gt;text-decoration: none;&lt;br /&gt;}&lt;br /&gt;#menu li a:hover {&lt;br /&gt;background: #FFF;&lt;br /&gt;}&lt;br /&gt;#menu li a.last {&lt;br /&gt;border-right: solid 1px #336699;&lt;br /&gt;}&lt;br /&gt;#menu li a.selected {&lt;br /&gt;background: #FFF;&lt;br /&gt;border-bottom: solid 1px #FFF;&lt;br /&gt;}&lt;br /&gt;#submenu ul {&lt;br /&gt;height: 1em;&lt;br /&gt;list-style: none;&lt;br /&gt;padding: 3px 0;&lt;br /&gt;margin: 0;&lt;br /&gt;border-bottom: solid 1px #336699;&lt;br /&gt;}&lt;br /&gt;#submenu li {&lt;br /&gt;display: inline;&lt;br /&gt;}&lt;br /&gt;#submenu li a {&lt;br /&gt;float: left;&lt;br /&gt;padding: 3px 7px;&lt;br /&gt;margin: 0;&lt;br /&gt;font: normal normal bold 10px verdana;&lt;br /&gt;border-right: solid 1px #EEE;&lt;br /&gt;color: #336699;&lt;br /&gt;text-decoration: none;&lt;br /&gt;}&lt;br /&gt;#submenu li a:hover {&lt;br /&gt;text-decoration: underline;&lt;br /&gt;}&lt;br /&gt;#submenu li a.last {&lt;br /&gt;border-right: none;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;HTML Code:&lt;/strong&gt;&lt;br /&gt;&lt;div class="csharpcode html"&gt;&lt;br /&gt;&amp;lt;div id="menu"&amp;gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Home&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Client&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Download&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#" class="selected"&amp;gt;Support&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#" class="last"&amp;gt;Forum&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id="submenu"&amp;gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Live Chat&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#"&amp;gt;Phone&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;li&amp;gt;&amp;lt;a href="#" class="last"&amp;gt;Email&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Consider this the base code. You can easily manipulate the functionality with PHP, C#, and JavaScript.&lt;/p&gt;&lt;a href="http://www.dustward.com/blog/cssExample.html"&gt;cssExample.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-2976129392028639901?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/2976129392028639901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=2976129392028639901' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/2976129392028639901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/2976129392028639901'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2008/05/css-horizontal-menu-with-submenu.html' title='CSS Horizontal Menu with Submenu'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-1758504404852472602</id><published>2008-02-08T07:42:00.001-05:00</published><updated>2008-02-08T07:42:39.860-05:00</updated><title type='text'>Web-based Chat, AMPchat 2.0!</title><content type='html'>I created a web-based chat utilizing Web 2.0 technologies. It's the latest incarnation of the highly successful AMPchat platform which started over 7 years ago with it's initial release, AMPchat 1.0. Initially we used lots of Javascript and Javascript Remote Scripting to create a refresh-less web-based chat. Using .NET 2.0 technologies we were able to create a more robust, responsive, and reliable application. What's more, there is a .NET 3.5 version utilizing features like Linq and SQL Server 2005. Unfortunately, .NET 3.5 is still a bit too "green" for us to trust its security, hence the 2.0 version... for now ;)&lt;br /&gt;&lt;br /&gt;If you would like to try AMPchat 2.0 while in BETA for free. Please leave a comment and we'll get back to you.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-1758504404852472602?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/1758504404852472602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=1758504404852472602' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/1758504404852472602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/1758504404852472602'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2008/02/web-based-chat.html' title='Web-based Chat, AMPchat 2.0!'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-1046386637628956505</id><published>2008-02-08T07:32:00.001-05:00</published><updated>2008-02-08T07:35:28.456-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharing'/><title type='text'>Video Sharing Application</title><content type='html'>&lt;a href="http://www.pugclips.com"&gt;PugClips.com&lt;/a&gt; is a video sharing application developed using PHP5/MySQL. It is intended to act as a YouTube clone and utilizes opensource technologies like Smarty, mencoder and ffdencode. It also uses the excellent JW FLV Media Player 3.14 located at &lt;a href="http://www.jeroenwijering.com"&gt;jeroenwijering.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some of the features include "bumping" videos (a rating system), leaving comments, creating user profiles, sharing videos with friends, and more.&lt;br /&gt;&lt;br /&gt;Leave a comment if you would like to beta test the application for free, of course.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-1046386637628956505?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/1046386637628956505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=1046386637628956505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/1046386637628956505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/1046386637628956505'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2008/02/video-sharing-application.html' title='Video Sharing Application'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-8781649743917594690</id><published>2007-09-14T11:05:00.000-04:00</published><updated>2007-09-14T11:15:53.196-04:00</updated><title type='text'>Changing environments from VS.NET 2005 to Visual Web Developer 2005 Express</title><content type='html'>I have a project I have been messing around with on a USB key. At home I use Visual Studio .NET 2005 (VS.NET), but since I don't have a licensed copy of VS.NET on my work laptop, I have to use Visual Web Developer 2005 Express (VWD) there. I found that once I save my project at home I am unable to open it at work. When VS.NET 2005 saves a solution file (.sln), it will save it in 10.0 format. When VWD attempts to open the solution you get a message saying something like "...this is a solution file, but it was created using a newer version of Visual Studio." While this is true, it doesn't mean I can't fix it. VWD only parses the first line of the solution file to determine its version. By editing the file, I can get it to work in VWD. Just change "Microsoft Visual Studio Solution File, Format Version 10.00" to "Microsoft Visual Studio Solution File, Format Version 9.00" All will be once again be aligned in the universe.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-8781649743917594690?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/8781649743917594690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=8781649743917594690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/8781649743917594690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/8781649743917594690'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2007/09/changing-environments-from-vsnet-2005.html' title='Changing environments from VS.NET 2005 to Visual Web Developer 2005 Express'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-4806957245039267641</id><published>2007-09-14T08:29:00.000-04:00</published><updated>2007-09-14T11:17:01.007-04:00</updated><title type='text'>What makes a great gaming store?</title><content type='html'>&lt;p&gt;I was thinking what would make a good game store. Corporations have diluted the personal touch you used to get at games stores of old. The local GameStop of EB Games (now the same company) tend to have the usual, low paid, teens at the counter. They usually know some games, but don't know much about the more obscure games.&lt;br /&gt;&lt;br /&gt;Most of the stores make their living off of trade-ins. The trade-in value is extremely low becuase they know you are at their mercy. Markup is usually 100% or more on consoles, and I believe games are close to that. Take the GameCube for example. The trade-in value is currently 10 bucks, but if you go to buy one it's usually around $75. Not that anybody wants one anymore, but parents looking for a less costly alternative to the more popular systems find these prices quite attractive while purchasing them. I wonder if they feel ripped on when trading them in? What's more, who is setting the values for trade-ins? Is there a blue book for them?&lt;br /&gt;&lt;br /&gt;I think 3 things are key to a game store: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Knowledgeable staff. They still exist! Gaming is so mainstream now, most don't smell. The customers experience must be that the people know what they are talking about, and are excited about it. &lt;/li&gt;&lt;li&gt;Selection. Games, consoles, accessories... you better have them. &lt;/li&gt;&lt;li&gt;Demos. Being able to try out games before you buy them is ciritical. Everytime I read a good review still always wonder who wrote the review and if they like the sames things I do about games. Being able to try a console is another great way to help make your decision. I hear many people tell me they don't like what they ordered online. Well, don't be lazy and go try one out before you drop four or five hundred. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;What else would make a game store better?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-4806957245039267641?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/4806957245039267641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=4806957245039267641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/4806957245039267641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/4806957245039267641'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2007/09/what-makes-great-gaming-store.html' title='What makes a great gaming store?'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-3075896957381695286</id><published>2007-05-20T01:40:00.000-04:00</published><updated>2007-05-20T01:41:12.821-04:00</updated><title type='text'>16Mb Blast from Laptop Wireless-G</title><content type='html'>&lt;a href="http://www.speedtest.net"&gt;&lt;img src="http://www.speedtest.net/result/128523085.png"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-3075896957381695286?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/3075896957381695286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=3075896957381695286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/3075896957381695286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/3075896957381695286'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2007/05/16mb-blast-from-laptop-wireless-g.html' title='16Mb Blast from Laptop Wireless-G'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-708960606358952122</id><published>2007-04-27T07:46:00.000-04:00</published><updated>2007-04-27T07:46:14.754-04:00</updated><title type='text'>A Prostate Cancer Revolution? - Newsweek Health - MSNBC.com</title><content type='html'>&lt;a href="http://www.msnbc.msn.com/id/18328032/site/newsweek/"&gt;A Prostate Cancer Revolution? - Newsweek Health - MSNBC.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-708960606358952122?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='related' href='http://www.msnbc.msn.com/id/18328032/site/newsweek/' title='A Prostate Cancer Revolution? - Newsweek Health - MSNBC.com'/><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/708960606358952122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=708960606358952122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/708960606358952122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/708960606358952122'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2007/04/prostate-cancer-revolution-newsweek.html' title='A Prostate Cancer Revolution? - Newsweek Health - MSNBC.com'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-116300021844972101</id><published>2006-11-08T10:35:00.000-05:00</published><updated>2006-11-09T14:28:37.634-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET 2.0'/><title type='text'>DropDownList in GridView</title><content type='html'>&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/ }&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; }&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;p&gt;The problem I encountered was being able to use an updateable GridView using data from multiple tables. The two main tables are called Category and Forum. A forum can only belong to one category, but a category can contain multiple forums. To make things a bit more difficult, I used a associative table to relate the two called CategoryForum.&lt;/p&gt;&lt;p&gt;My goal is to be able to manage my forums without have to know the category ID of each category. It should be simple enough for a novice to use. My architectural solution had several components. Of course, I had the GridView. Then I had two ObjectDataSources using a web service to return forum and category data. The forum data includes a category ID via an INNER JOIN in the query. The category data is just the list of all categories.&lt;/p&gt;&lt;p&gt;First, I override the Page's OnInitComplete method to capture the update event:&lt;/p&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnInitComplete(EventArgs e)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnInitComplete(e);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;  gridView.RowUpdating +=&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;new&lt;/span&gt; GridViewUpdateEventHandler(gridView_RowUpdating);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Next, I wrote some code for the overridden method. This code will store my DropDownList's data in the updating data objects field:&lt;/p&gt;&lt;code&gt;void gridView_RowUpdating(Object sender, GridViewUpdateEventArgs e) {&lt;br /&gt;int index = gridView.EditIndex;&lt;br /&gt;GridViewRow row = gridView.Rows[index];&lt;br /&gt;DropDownList categoryDropDown =&lt;br /&gt;(DropDownList) row.FindControl("ddlCategoryName");&lt;br /&gt;e.NewValues["CategoryId"] =&lt;br /&gt;int.Parse(categoryDropDown.SelectedValue);&lt;br /&gt;}&lt;/code&gt; &lt;p&gt;That's all the code-behind code I needed. In design view I have two ObjectDataSources wired up to a web service that simply delivers a DataSet to each. One DataSet is my Forum data, and the other is Category data. Here's the EditItemTemplate code for the DropDownList. The datasource for the GridView is the ForumData. I used the Category datasource for the DropDownList.&lt;/p&gt;&lt;code&gt;&amp;lt;asp:TemplateField HeaderText="Category" SortExpression="CategoryName"&amp;gt;&lt;br /&gt;&amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;%# Eval("CategoryName") %&amp;gt;&lt;br /&gt;&amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;EditItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;asp:DropDownList runat="server"&lt;br /&gt;ID="ddlCategoryName" DataTextField="CategoryName"&lt;br /&gt;DataValueField="CategoryId" DataSourceID="objCategories" /&amp;gt;&lt;br /&gt;&amp;lt;/EditItemTemplate&amp;gt;&lt;br /&gt;&amp;lt;/asp:TemplateField&amp;gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-116300021844972101?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/116300021844972101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=116300021844972101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116300021844972101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116300021844972101'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/11/dropdownlist-in-gridview-c-net-20.html' title='DropDownList in GridView'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-116299993775814410</id><published>2006-11-08T10:30:00.000-05:00</published><updated>2006-11-09T12:32:38.316-05:00</updated><title type='text'>Encrypting/Decrypting QueryStrings In .NET</title><content type='html'>&lt;P&gt;I was messing around with a secure way to pass data via a querystring today. In business you sometimes don't have a choice. What I came up with was a secure two-way encryption/decryption class. I can now encode/decode any piece of data without having knowledge of the key.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;The Methods&lt;BR&gt;&lt;/STRONG&gt;I have an error page in an ASP.NET application. The page is basically going to act as a catch all page for errors in my forum application. I want to be able to send it exception strings without having to rely upon Server.GetLastError. I researched some of the System.Security.Cryptography namespace for a seed-based algorithm. DES seemed to fit that bill perfectly. MSDN even went so far as to write the Encrypt and Decrypt methods for me.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;DIV&gt;&lt;PRE style="BACKGROUND-COLOR: white; WORD-WRAP: break-word"&gt;&lt;DIV&gt;&lt;SPAN style="COLOR: #008080"&gt; 1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Encrypt the string.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 2&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[] Encrypt(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; PlainText, SymmetricAlgorithm key)&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 3&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 4&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Create a memory stream.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 5&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   MemoryStream ms &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; MemoryStream();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 6&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 7&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Create a CryptoStream using the memory stream and the &lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 8&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; CSP DES key.  &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 9&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   CryptoStream encStream &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; CryptoStream(ms, key.CreateEncryptor()  &lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;10&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;      CryptoStreamMode.Write);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;11&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;12&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Create a StreamWriter to write a string&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;13&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; to the stream.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;14&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   StreamWriter sw &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; StreamWriter(encStream);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;15&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;16&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Write the plaintext to the stream.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;17&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   sw.WriteLine(PlainText);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;18&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;19&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Close the StreamWriter and CryptoStream.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;20&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   sw.Close();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;21&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   encStream.Close();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;22&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;23&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Get an array of bytes that represents&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;24&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; the memory stream.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;25&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[] buffer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; ms.ToArray();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;26&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;27&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Close the memory stream.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;28&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   ms.Close();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;29&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;30&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Return the encrypted byte array.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;31&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; buffer;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;32&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;}&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;33&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;34&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Decrypt the byte array.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;35&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Decrypt(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[] CypherText, SymmetricAlgorithm key)&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;36&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;37&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Create a memory stream to the passed buffer.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;38&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   MemoryStream ms &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; MemoryStream(CypherText);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;39&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;40&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Create a CryptoStream using the memory stream and the &lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;41&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; CSP DES key. &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;42&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   CryptoStream encStream &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; CryptoStream(ms, key.CreateDecryptor(), &lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;43&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;      CryptoStreamMode.Read);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;44&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;45&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Create a StreamReader for reading the stream.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;46&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   StreamReader sr &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; StreamReader(encStream);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;47&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;48&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Read the stream as a string.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;49&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; val &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; sr.ReadLine();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;50&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;51&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt; Close the streams.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;52&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;   sr.Close();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;53&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   encStream.Close();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;54&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   ms.Close();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;55&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;56&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;   &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; val;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;57&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;This is a great start if I wanted byte arrays. I need to flatten this array out so I can use it like a string. I decided to write a couple more methods named EncryptToString and DecryptToString.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;DIV&gt;&lt;PRE style="BACKGROUND-COLOR: white; WORD-WRAP: break-word"&gt;&lt;DIV&gt;&lt;SPAN style="COLOR: #008080"&gt; 1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; EncryptToString(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; PlainText, SymmetricAlgorithm key)&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 2&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 3&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[] buffer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Encrypt(PlainText, key);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 4&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; temp &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Empty;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 5&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 6&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; i &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;; i &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; buffer.Length; i&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 7&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    {&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 8&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;        temp &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; buffer[i].ToString(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;x2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt; 9&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    }&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;10&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;11&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; temp;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;12&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;}&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;13&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;14&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; DecryptFromString(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; CypherText, SymmetricAlgorithm key)&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;15&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;16&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; arrayLen &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (CypherText.Length &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;17&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[] buffer &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;[arrayLen];&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;18&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;19&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; i &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;; i &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (CypherText.Length &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;); i&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;20&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    {&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;21&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;        buffer[i] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Convert.ToByte(Convert.ToInt32(CypherText.Substring(i &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;), &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;16&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;));&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;22&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    }&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;23&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;24&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;.Decrypt(buffer, key);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;25&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;These methods simply use the two that MSDN provided, but add some app-centric features. EncryptToString will get the byte array from the Encrypt method. Then it will create, and append to, a string while converting each item in the byte array to a two-digit hexadecimal number. The reason I converted to hex was to shorten the total length of the string. A handy byproduct was that it added yet&amp;nbsp;another layer of obfuscation to my data making that much more difficult to decrypt. DecryptFromString takes the encrypted string and essentially reverses the process.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;What about the key?&lt;BR&gt;&lt;/STRONG&gt;This is my favorite part of the entire solution. The key is generated as an application level variable in the Global.asax. I have to admit that I don't use the Global.asax that much, but it seemed like a reasonable place for the code to generate the key.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;DIV&gt;&lt;PRE style="BACKGROUND-COLOR: white; WORD-WRAP: break-word"&gt;&lt;DIV&gt;&lt;SPAN style="COLOR: #008080"&gt;1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Application_Start(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; sender, EventArgs e) &lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;2&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;3&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;     DESCryptoServiceProvider key &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; DESCryptoServiceProvider();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;4&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;     Application.Add(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SecureKey&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;, key);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;5&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;Of course, this could have been Session level, but I didn't need to change the key that frequently. When adding this code to your page be sure to import the namespace, &amp;lt;%@ Import Namespace="System.Security.Cryptography" %&amp;gt;.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;In Action&lt;BR&gt;&lt;/STRONG&gt;The final piece is how we would use this in the code. Another reason I went this route was to simplify what I needed to code when using this class. In this example, we have made reference to the class containing the encryption/decryption methods. I called mine, Crypto. We'll be encoding an Exception string and sending it to an error page.&lt;/P&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;DIV&gt;&lt;PRE style="BACKGROUND-COLOR: white; WORD-WRAP: break-word"&gt;&lt;DIV&gt;&lt;SPAN style="COLOR: #008080"&gt;1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;Crypto cryptKeeper &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Crypto();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;2&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; encryptedText &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; cryptKeeper.EncryptToString(&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;3&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Exception(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;The request could not be completed.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;).ToString(),&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;4&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    Application[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SecureKey&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;as&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; System.Security.Cryptography.SymmetricAlgorithm);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;5&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;6&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;Response.Redirect(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;~\\Error.aspx?msg=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; encryptedText);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;P&gt;&lt;/P&gt;&lt;br /&gt;&lt;P&gt;The encryptedText variable looks something like this, 6998d04ec523b093fe0ce9ce9994915a076199ef1f1663d3273e23&lt;BR&gt;72cb5b53dea83f931016f58dc9ae21a4f335de16038eecaee374cacc28. The error page takes the parameter and decrypts it.&lt;/P&gt;&lt;br /&gt;&lt;DIV&gt;&lt;PRE style="BACKGROUND-COLOR: white; WORD-WRAP: break-word"&gt;&lt;DIV&gt;&lt;SPAN style="COLOR: #008080"&gt;1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;Crypto cryptKeeper &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; Crypto();&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;2&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; (Request.Params[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;msg&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;null&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;3&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;{&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;4&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;    lblMsg.Text &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; cryptKeeper.DecryptFromString(Request.Params[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;msg&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;], &lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;5&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;        Application[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;SecureKey&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;] &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;as&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt; SymmetricAlgorithm);&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;6&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;br /&gt;&lt;P&gt;&lt;STRONG&gt;Notes&lt;BR&gt;&lt;/STRONG&gt;Because I made my key an Application variable, it will be the same for every user of the site and only change when the site is restarted. If I were to make it a Session variable, it would change for every user, and that may be the way to go for me in the future. &lt;/P&gt;&lt;br /&gt;&lt;P&gt;I think the possibilities with this are endless. You don't have to use it to pass secure data via a querystring. It can be used to securely store data in your database. You can code your app to generate and store the DES key daily, weekly, or monthly. Access levels to data should be setup to only allow authorized personnel access to the key table. It's not so much different than what my company spent $50,000 on.&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-116299993775814410?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/116299993775814410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=116299993775814410' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116299993775814410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116299993775814410'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/11/encryptingdecrypting-querystrings-in.html' title='Encrypting/Decrypting QueryStrings In .NET'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-116299961514596761</id><published>2006-11-08T10:25:00.000-05:00</published><updated>2006-11-09T12:32:38.179-05:00</updated><title type='text'>Error When Writing to Custom Event Log</title><content type='html'>&lt;p&gt;I was getting an error when attempting to write to a custom Event Log on Server 2003 from an ASP page. It looked something like this:&lt;/p&gt;&lt;p&gt;Cannot open log for source 'someSource'. You may not have write access.&lt;/p&gt;&lt;p&gt;The solution was to change the security descriptor on the custom event log's key. I did this by browsing to the custom log's folder in registry, HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\&amp;lt;Custom Event Log&amp;gt;. In that folder there will be a key named CustomSD. Double-click the key to open it up for editing.&lt;/p&gt;&lt;p&gt;O:BAG:SYD:&lt;span style="color:#ff0000;"&gt;(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)&lt;/span&gt;(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)&lt;/p&gt;&lt;p&gt;The section highlighted in red denies Read, Write, and Clear access to the log for Anonymous logons (AN) and Built-in guests (BG). This explicit deny overrode any other access I attempted to add to the string.&lt;/p&gt;&lt;p&gt;In order to grant my ASP permission to write to the log, I had to make some modifications. The IUSR account is part of two groups, Users and Guests. With Guests and Anonymous being denied, I now knew I needed to grant them access to this log. A couple of searches on &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/security_descriptor_definition_language.asp"&gt;MSDN&lt;/a&gt; brought up a full description of the SDDL (Security Descriptor Description Language). &lt;/p&gt;&lt;p&gt;Let's dissect the string (D;;0xf0007;;;AN). The 'D' that appears in the descriptor means 'Access Denied.' The 0xf00007 is hex that will basically deny any type of access currently available. I changed the string to explicitly grant write access to Anonymous logons, (A;;0x2;;;AN). The access rights are your cumulative rights where Read = 1, Write = 2, and Clear = 4. The hexadecimal value of 0x2 evaluates to 2 in decimal which is write access.&lt;/p&gt;&lt;p&gt;After making the change to that string and a similar one to (D;;0xf0007;;;BG) my string looked like:&lt;/p&gt;&lt;p&gt;O:BAG:SYD:&lt;span style="color:#ff0000;"&gt;(A;;0x2;;;AN)(A;;0x2;;;BG)&lt;/span&gt;(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO)(A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)&lt;/p&gt;&lt;p&gt;I refreshed my test ASP page and the error was gone. I didn't have to reboot or restart IIS.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthz/security/security_descriptor_definition_language.asp"&gt;MSDN&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-116299961514596761?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/116299961514596761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=116299961514596761' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116299961514596761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116299961514596761'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/11/error-when-writing-to-custom-event-log.html' title='Error When Writing to Custom Event Log'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-116299952816472842</id><published>2006-11-08T10:24:00.000-05:00</published><updated>2006-11-09T12:32:38.114-05:00</updated><title type='text'>Corporate Loyalty</title><content type='html'>How much loyalty do people have for their employers these days? How much should we have? Is loyalty earned?  &lt;br /&gt;&lt;br /&gt;The company I work for unceremoniously laid off a few people so we could start outsourcing. It's hard to see people go, and the right way to do it is to give them a few weeks notice, or even a few days for that matter. But no, they got about 15 minutes notice (after lunch) to clear out their cubes before getting escorted to the door. No severance, no notice, and no goodbyes. &lt;br /&gt;&lt;br /&gt;If I were offered a position tomorrow, I'm sure the company would expect two weeks notice. But, I can't help to ask why? Why should I extend that courtesy, when they couldn't do it for those laid off? Trust me, if they needed to lay off a few more people, I'm sure I'd be let go just like them. Yeah I'll hear, "you shouldn't burn bridges" or some other cliché. While that's true to a degree, I think you need to stand up for what you believe in morally and ethically. After all, you have to sleep! If the new company says they need me in two days, I can't say I would argue with them.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-116299952816472842?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/116299952816472842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=116299952816472842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116299952816472842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/116299952816472842'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/11/corporate-loyalty.html' title='Corporate Loyalty'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-115211783370646183</id><published>2006-07-05T12:43:00.000-04:00</published><updated>2006-11-09T12:32:38.016-05:00</updated><title type='text'>Framework Errors Thanks to the IIS LockDown Tool</title><content type='html'>I started getting the following error after running the IIS LockDown Tool on my development PC at work. It was on a virtual machine so there was no real damage done. Use this as an example of what could happen. &lt;br /&gt;&lt;br /&gt;“Cannot execute a program. The command being executed was "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe" /noconfig /fullpaths @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\sharedservices\8edd40bf\a4dccc9b\f8suefbe.cmdline".&lt;br /&gt;&lt;br /&gt;This was occurring for my 1.1 apps as well. After much searching and messing with permissions, I found the solution. A simple “repair” of the framework install does the trick and resets the permissions appropriately. I believe the reason I could not get the permissions correct is because the tool will reset registry persmissions for certain nodes. Depending on how many are change, you can see that this could become a tedious task if done manually.&lt;br /&gt;&lt;br /&gt;If this post helps you, let me know an post a comment. - E&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-115211783370646183?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/115211783370646183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=115211783370646183' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/115211783370646183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/115211783370646183'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/07/framework-errors-thanks-to-iis.html' title='Framework Errors Thanks to the IIS LockDown Tool'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-115038720209719657</id><published>2006-06-15T12:00:00.000-04:00</published><updated>2006-11-09T12:32:37.956-05:00</updated><title type='text'>Project REAL</title><content type='html'>This is a cool project to develop Business Intelligence standards using Microsoft SQL Server solutions.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/sql/solutions/bi/projectreal.mspx"&gt;http://www.microsoft.com/sql/solutions/bi/projectreal.mspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-115038720209719657?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/115038720209719657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=115038720209719657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/115038720209719657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/115038720209719657'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/06/project-real.html' title='Project REAL'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-114979957887766485</id><published>2006-06-08T16:46:00.000-04:00</published><updated>2006-11-09T12:32:37.895-05:00</updated><title type='text'>Updating a Database Using a DataSet With EntLib 2.0</title><content type='html'>&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode&lt;br /&gt;{&lt;br /&gt; font-size: 9pt;&lt;br /&gt; color: black;&lt;br /&gt; font-family: Courier New , Courier, Monospace;&lt;br /&gt; background-color: #ffffff;&lt;br /&gt; /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0px; }&lt;br /&gt;.rem { color: #008000; }&lt;br /&gt;.kwrd { color: #0000ff; }&lt;br /&gt;.str { color: #006080; }&lt;br /&gt;.op { color: #0000c0; }&lt;br /&gt;.preproc { color: #cc6633; }&lt;br /&gt;.asp { background-color: #ffff00; }&lt;br /&gt;.html { color: #800000; }&lt;br /&gt;.attr { color: #ff0000; }&lt;br /&gt;.alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0px;&lt;br /&gt;}&lt;br /&gt;.lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;div style="width:100%; border:1px solid #CCCCCC; overflow:scroll; padding:3px"&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; partial &lt;span class="kwrd"&gt;class&lt;/span&gt; StateDisclaimer : UserControl&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; Database db;&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; DataSet ds;&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; DbCommand cmd;&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; strConfigParameters;&lt;br /&gt;   &lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; StateDisclaimer()&lt;br /&gt;   {&lt;br /&gt;      InitializeComponent();&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; StateDisclaimer_Load(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;   {&lt;br /&gt;      LoadDataGrid();&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; LoadDataGrid()&lt;br /&gt;   {&lt;br /&gt;      &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;      {&lt;br /&gt;         &lt;span class="rem"&gt;// Create the Database&lt;/span&gt;&lt;br /&gt;         db = DatabaseFactory.CreateDatabase(&lt;span class="str"&gt;"dbConnection"&lt;/span&gt;);&lt;br /&gt;         &lt;span class="rem"&gt;// Retrieve the initial DataSet&lt;/span&gt;&lt;br /&gt;         ds = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataSet();&lt;br /&gt;         cmd = db.GetStoredProcCommand(&lt;span class="str"&gt;"sp_getMiniMirandaInfo"&lt;/span&gt;);&lt;br /&gt;         strConfigParameters = &lt;span class="str"&gt;"ConfigParameters"&lt;/span&gt;;&lt;br /&gt;         db.LoadDataSet(cmd, ds, strConfigParameters);&lt;br /&gt;         dataGridView1.DataSource = ds.Tables[0];&lt;br /&gt;         dataGridView1.Columns[0].Visible = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;         dataGridView1.Columns[1].ReadOnly = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;         dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending);&lt;br /&gt;         dataGridView1.AutoResizeColumns();&lt;br /&gt;      }&lt;br /&gt;      &lt;span class="kwrd"&gt;catch&lt;/span&gt; (DbException ex)&lt;br /&gt;      {&lt;br /&gt;         MessageBox.Show(ex.ToString());&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;      &lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnApply_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;   {&lt;br /&gt;      &lt;span class="kwrd"&gt;if&lt;/span&gt; (ds.HasChanges())&lt;br /&gt;      {&lt;br /&gt;         DbCommand updateCommand = db.GetStoredProcCommand(&lt;span class="str"&gt;"sp_UpdateConfigParametersDataValue"&lt;/span&gt;);&lt;br /&gt;         db.AddInParameter(updateCommand, &lt;span class="str"&gt;"Category"&lt;/span&gt;, DbType.String, &lt;span class="str"&gt;"Category"&lt;/span&gt;, DataRowVersion.Current);&lt;br /&gt;         db.AddInParameter(updateCommand, &lt;span class="str"&gt;"KeyValue"&lt;/span&gt;, DbType.String, &lt;span class="str"&gt;"KeyValue"&lt;/span&gt;, DataRowVersion.Current);&lt;br /&gt;         db.AddInParameter(updateCommand, &lt;span class="str"&gt;"DataValue"&lt;/span&gt;, DbType.String, &lt;span class="str"&gt;"DataValue"&lt;/span&gt;, DataRowVersion.Current);&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; rowsAffected = db.UpdateDataSet(ds, &lt;span class="str"&gt;"ConfigParameters"&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, updateCommand, &lt;span class="kwrd"&gt;null&lt;/span&gt;, UpdateBehavior.Standard);&lt;br /&gt;         MessageBox.Show(rowsAffected.ToString());&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnCancel_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;   {&lt;br /&gt;      &lt;span class="kwrd"&gt;if&lt;/span&gt; (ds.HasChanges())&lt;br /&gt;      {&lt;br /&gt;         &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;         {&lt;br /&gt;            ds.RejectChanges();&lt;br /&gt;            dataGridView1.Refresh();&lt;br /&gt;         }&lt;br /&gt;         &lt;span class="kwrd"&gt;catch&lt;/span&gt; (DbException ex)&lt;br /&gt;         {&lt;br /&gt;            MessageBox.Show(ex.ToString());&lt;br /&gt;         }&lt;br /&gt;      }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-114979957887766485?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/114979957887766485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=114979957887766485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114979957887766485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114979957887766485'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/06/updating-database-using-dataset-with.html' title='Updating a Database Using a DataSet With EntLib 2.0'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-114909353609797163</id><published>2006-05-31T12:38:00.000-04:00</published><updated>2006-11-09T12:32:37.613-05:00</updated><title type='text'>A Day of Mourning</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'&gt;Today is a day of mourning. A once great man has succumbed to the pressures of life. Wait, that&amp;#8217;s a typo. He has succumbed to the pressures of WIFE, and went out and bought a minivan. Here&amp;#8217;s to you, and your recently detached testicles. Godspeed!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'&gt;You know who you are ;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-114909353609797163?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/114909353609797163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=114909353609797163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114909353609797163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114909353609797163'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/05/day-of-mourning.html' title='A Day of Mourning'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-114902216217004842</id><published>2006-05-30T16:49:00.000-04:00</published><updated>2006-11-09T12:32:37.546-05:00</updated><title type='text'>MSDN Magazine HTML Help (.CHM) Index</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/htmlhelp.aspx"&gt;http://msdn.microsoft.com/msdnmag/htmlhelp.aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-114902216217004842?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/114902216217004842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=114902216217004842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114902216217004842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114902216217004842'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/05/msdn-magazine-html-help-chm-index.html' title='MSDN Magazine HTML Help (.CHM) Index'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-114665828457283335</id><published>2006-05-03T08:07:00.000-04:00</published><updated>2006-11-09T12:32:37.485-05:00</updated><title type='text'>ModTool Gets a Name Change</title><content type='html'>Based upon beta-tester feedback I have decided to change the name of ModTool to WoW Mod Manager. This new name will be part of the next beta release due May 9, 2006.&lt;br /&gt;&lt;br /&gt;Thanks for the great feedback!&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-114665828457283335?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/114665828457283335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=114665828457283335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114665828457283335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114665828457283335'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/05/modtool-gets-name-change.html' title='ModTool Gets a Name Change'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-114632691401579420</id><published>2006-04-29T12:01:00.000-04:00</published><updated>2006-11-09T12:32:37.369-05:00</updated><title type='text'>ModTool Goes to Beta</title><content type='html'>&lt;p&gt;ModTool is a World of Warcraft UI modification management tool. It allows you to completely manage the mods you have installed. What's more, it will allow you to select which mods to enable/disable on a per character basis.&lt;/p&gt;&lt;p&gt;Select the mods you wish to manage and right-click to display a menu of options. Multiple mods can quickly be enabled, disabled, or deleted. You can also check for an updated version of a mod by right-clicking it, and selecting &lt;span style="font-style:italic;"&gt;Update Mod&lt;/span&gt;. This action will load your default web browser and search for the latest version.&lt;/p&gt;&lt;p&gt;This release is beta so please post any comments to this blog entry.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Requirements&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Windows 98 or better&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;displaylang=en"&gt;Microsoft .NET Framework 2.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A Pulse&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.dustward.com/download/ModTool_0.1_Beta.rar"&gt;Download it here.&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-114632691401579420?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/114632691401579420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=114632691401579420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114632691401579420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114632691401579420'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/04/modtool-goes-to-beta.html' title='ModTool Goes to Beta'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-114383479153445922</id><published>2006-03-31T14:53:00.000-05:00</published><updated>2006-11-09T12:32:37.310-05:00</updated><title type='text'>ASP.NET, PHP, ASP Performance Matrix</title><content type='html'>&lt;p&gt;I was reading an article online   comparing PHP to ASP.NET the other day. The author, an Oracle employee, had some   valid claims regarding PHP’s advantages when it comes to costs and flexibility,   but he also had some unfounded claims that PHP was more efficient and faster. I   beg to differ, so I ran some tests using a similar function for all three   languages.&lt;/p&gt;&lt;strong&gt;Test   Platform&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;The test was run on an AMD Athlon   XP 2800+ with 2 GB of ram running Windows XP Professional SP2. We used a   standard install of Internet Information Services and gave PHP the added benefit   of installing Zend Optimizer v2.6.2. We used the php5isapi.dll to map and   execute our PHP scripts.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;AMD Athlon XP 2800+   (2.08 GHz) &lt;/li&gt;&lt;li&gt;2 GB   Ram &lt;/li&gt;&lt;li&gt;Windows XP   Professional SP2 &lt;/li&gt;&lt;li&gt;Internet Information   Services v5.1 &lt;/li&gt;&lt;li&gt;Zend Optimizer v2.6.2 &lt;/li&gt;&lt;li&gt;PHP   5.1.2 &lt;/li&gt;&lt;li&gt;ASP   3.0 &lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Test   Methodology&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;We wrote a similar script to test   each language. It was a simple for loop that was programmed to loop &lt;span style="font-weight: bold;"&gt;80 million&lt;/span&gt;   times. You might need to increase the max execution settings in the php.ini file   for PHP, or increase it programmatically. We chose to do it in the php.ini to   make sure it was set correctly. The same holds true for ASP. You may need to   increase the Server.ScriptTimeout value. &lt;/p&gt;Some lines below might wrap, so be   sure to check that before attempting to execute the   code.&lt;br /&gt;&lt;p&gt;&lt;em&gt;ASP Code&lt;/em&gt;&lt;br /&gt;&lt;blockquote style="padding:3px; border: 2px solid #CCCC99; font-family:'courier new',sans-serif,arial; font-size:9pt; background-color:#FFFFCC"&gt;&lt;br /&gt;  &lt;p&gt;&amp;lt;% &lt;br&gt;&lt;br /&gt;    'Server.ScriptTimeout = 360 &lt;br /&gt;    &lt;br&gt;&lt;br /&gt;    'Response.Buffer = False &lt;br /&gt;  &lt;br /&gt;  &lt;br&gt;&lt;br /&gt;    &lt;br&gt;&lt;br /&gt;    Dim i&lt;br&gt;&lt;br /&gt;    Dim startTime  &lt;br /&gt;    &lt;br&gt;&lt;br /&gt;    Dim endTime&lt;br&gt;&lt;br /&gt;    Dim totalTime&lt;br&gt;&lt;br /&gt;    &lt;br&gt;&lt;br /&gt;    For x = 1 To 10    &lt;br /&gt;    &lt;br&gt;&lt;br /&gt;&amp;nbsp; startTime = Now &lt;br&gt;&lt;br /&gt;&amp;nbsp; Response.Write("Start Time: " &amp; startTime &amp;amp; "&amp;lt;br /&amp;gt;") &lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;For i = 1 To 80000000&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If i &amp;gt; 0 Then &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  End If&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Next&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;endTime = Now &lt;br /&gt;     &lt;br&gt;&lt;br /&gt;&amp;nbsp;    totalTime = endTime - startTime&lt;br /&gt;     &lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Response.Write("End Time: " &amp;amp; endTime &amp;amp; "&amp;lt;br /&amp;gt;")&lt;br /&gt;     &lt;br&gt;&lt;br /&gt;&amp;nbsp;    Response.Write("Total time: " &amp;amp; Minute(totalTime) &amp;amp; ":" &amp; Second(totalTime) &amp;amp; "&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;")&lt;br&gt;&lt;br /&gt;Next&lt;br /&gt;  &lt;br&gt;&lt;br /&gt;  %&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/p&gt;&lt;em&gt;PHP Code&lt;/em&gt;&lt;br /&gt;&lt;blockquote style="padding:3px; border: 2px solid #CCCC99; font-family:'courier new',sans-serif,arial; font-size:9pt; background-color:#FFFFCC"&gt;&lt;br /&gt;  &lt;p&gt;&amp;lt;?php &lt;br /&gt;&lt;br /&gt;            function getmicrotime()&lt;br&gt;&lt;br /&gt;  { &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;list($usec, $sec) = explode(&amp;quot; &amp;quot;,microtime()); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return ((float)$usec + (float)$sec); &lt;br /&gt;&lt;br /&gt;            }&lt;br&gt;&lt;br /&gt;            &lt;br&gt;&lt;br /&gt;            for ($x=0; $x &amp;lt; 10; $x++)&lt;br&gt;&lt;br /&gt;            { &lt;br /&gt;    &lt;br&gt;&lt;br /&gt;            &lt;font face="Courier New, Courier, mono"&gt;&amp;nbsp;&amp;nbsp;$number = 0;&lt;br /&gt;&lt;br /&gt;      &amp;nbsp;&amp;nbsp;$time_start = getmicrotime();&lt;br /&gt;&lt;br /&gt;      &lt;br&gt;&lt;br /&gt;      &amp;nbsp;&amp;nbsp;for ($i=0; $i &amp;lt; 80000000; $i++)&lt;br&gt;&lt;br /&gt;    &amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (&amp;quot;hello&amp;quot; == &amp;quot;world&amp;quot;) { }&lt;br /&gt;&lt;br /&gt;      &amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;      &lt;br&gt;&lt;br /&gt;    &amp;nbsp;&amp;nbsp;$time_end = getmicrotime();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      &amp;nbsp;&amp;nbsp;$time = $time_end - $time_start;&lt;br&gt;&lt;br /&gt;      &lt;br&gt;&lt;br /&gt;            &lt;/font&gt;&amp;nbsp;&amp;nbsp;echo &amp;quot;Did 80M &lt;br /&gt;              additions in $time seconds&amp;quot;;&lt;br /&gt;&lt;br /&gt;              }&lt;br&gt;&lt;br /&gt;    ?&amp;gt;&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/p&gt;&lt;em&gt;ASP.NET (VB.NET) Code&lt;/em&gt;&lt;br /&gt;&lt;blockquote style="padding:3px; border: 2px solid #CCCC99; font-family:'courier new',sans-serif,arial; font-size:9pt; background-color:#FFFFCC"&gt;&lt;br /&gt;  &lt;p&gt;&amp;lt;%@ Language="VB" %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script runat="server" language="vb"&amp;gt;&lt;br&gt;&lt;br /&gt;Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Dim i As Long &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Dim x As Int16 &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Dim startTime As Decimal &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Dim endTime As Decimal &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Dim totalTime As Decimal &lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;For x = 1 To 10 &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;startTime = Convert.ToDecimal(DateTime.Now.ToString("ss.fff")) &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Write("Start Time: " &amp;amp; startTime.ToString() &amp;amp; "&amp;lt;br /&amp;gt;") &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For i = 1 To 80000000 &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If "hello" Is "world" Then &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End If &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Next &lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;endTime = Convert.ToDecimal(DateTime.Now.ToString("ss.fff")) &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalTime = endTime - startTime &lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Write("End Time: " &amp;amp; endTime.ToString() &amp;amp; "&amp;lt;br /&amp;gt;") &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Write("Total time: " &amp;amp; totalTime.ToString() &amp;amp; "&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;") &lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;Next &lt;br&gt;&lt;br /&gt;End Sub&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;It’s no surprise that ASP.NET is   the clear winner. The results that did surprise me were that Zend Optimizer   consistently increased PHP’s performance by nearly 50%. That is a huge number.   It is nonsense not to use PHP with the Optimizer according to our   study.&lt;/p&gt;The PHP results were roughly   double of the numbers listed below without the Zend Optimizer running. And, as   you can see, ASP’s performance is just plain bad.&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="1" cellspacing="0" width="75%"&gt;&lt;br /&gt;  &lt;tbody&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom" width="33%"&gt;&lt;div align="center"&gt;&lt;strong&gt;ASP.NET&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom" width="33%"&gt;&lt;div align="center"&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom" width="33%"&gt;&lt;div align="center"&gt;&lt;strong&gt;ASP&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.14&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.58716&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;33&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.125&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.92204&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;33&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.157&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.58681&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;35&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.124&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.58992&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;35&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.125&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.59410&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;33&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.125&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.93063&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;34&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.141&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.60623&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;33&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.125&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.60107&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;33&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.14&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;15.60247&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;34&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;    &lt;tr&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;0.125&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap" valign="bottom"&gt;&lt;div align="right"&gt;16.14546&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;      &lt;td nowrap="nowrap"&gt;&lt;div align="right"&gt;35&lt;/div&gt;&lt;/td&gt;&lt;br /&gt;    &lt;/tr&gt;&lt;br /&gt;  &lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span class="style2"&gt;Results are in   seconds&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;We welcome and performance   enhancements and/or your own results. Just post your thoughts, results and any   suggestions. I want to extend special thanks to Rufus Harvey for   his technical prowess in helping put this test   together!&lt;br /&gt;&lt;p&gt;- Ernest Carroll&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-114383479153445922?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/114383479153445922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=114383479153445922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114383479153445922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/114383479153445922'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2006/03/aspnet-php-asp-performance-matrix.html' title='ASP.NET, PHP, ASP Performance Matrix'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-112673590587039802</id><published>2005-10-25T08:14:00.000-04:00</published><updated>2006-11-09T12:32:36.572-05:00</updated><title type='text'>Ajax or JavaScript Remote Scripting?</title><content type='html'>We are supporting a Microsoft&amp;trade; Remote Scripting (MSRS) application at work. It's been an absolute nightmare. I am nearly two years into this application and the shear amount of patches that must go in prevent us from being able to replace the MSRS code. What's more, the MSRS code is nearly impossible to efficiently debug especially when the original developer was a hack. It's like trying to piece together a grenade after it goes off.&lt;br /&gt;&lt;br /&gt;There are quite a few options out there since my first foray into remote scripting. When I say remote scripting I mean &lt;em&gt;real&lt;/em&gt; remote scripting using JavaScript Remote Scripting. I first learned about his from Brent Ashley's site at &lt;a href="http://www.ashleyit.com/rs/" target="_new"&gt;Ashley IT&lt;/a&gt; around four years ago. It was powerful then and still is. Microsoft&amp;trade;'s recent release of Atlas has harnessed the potential that JSRS began. &lt;br /&gt;&lt;br /&gt;There a some great examples of remote scripting that are worthwhile to review. These include: &lt;a href="http://www.gmail.com"&gt;Google Mail&lt;/a&gt;, &lt;a href="http://www.live.com"&gt;Hotmail Beta&lt;/a&gt;, and &lt;a href="http://www.live.com"&gt;Microsoft's Live Office&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-112673590587039802?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/112673590587039802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=112673590587039802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/112673590587039802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/112673590587039802'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2005/10/ajax-or-javascript-remote-scripting.html' title='Ajax or JavaScript Remote Scripting?'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-113021136420860630</id><published>2005-10-24T23:36:00.000-04:00</published><updated>2006-11-09T12:32:37.046-05:00</updated><title type='text'>SharePoint Web Parts Development Guide</title><content type='html'>I built my SharePoint Web Parts development environment. I will get into why I am building this in a future post, but for now, you should just follow along and stop asking questions =)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br /&gt;There are a couple tools you need to get Visual Studio .NET 2003 setup. The first is to get a copy of the Microsoft.SharePoint.dll assembly and copy it to your development PC. You can find the DLL on your SharePoint server located, by default, in C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\ISAPI. Put it in a location you will not forget but can easily recognize its importance. I chose C:\Development\SharePoint\WebParts for mine. The second tool you will need is really not a tool, but if you want an idea about what you are developing with, get the less-than-robust &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=aa3e7fe5-daee-4d10-980f-789b827967b0&amp;amp;DisplayLang=en"&gt;SharePoint Products and Technologies 2003 Software Development Kit&lt;/a&gt; that Microsoft provides. Hey, some documentation is always better than none! Finally, download the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CAC3E0D2-BEC1-494C-A74E-75936B88E3B5&amp;amp;displaylang=en"&gt;Web Part Templates for Visual Studio .NET&lt;/a&gt;. This will get VS.NET ready with some nice templates to see some code in action.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ready for Action&lt;/strong&gt;&lt;br /&gt;When you open VS.NET you can select File &amp;gt; New &amp;gt; Project. You will see a new option for Web Part Library. If you installation of the Web Part Templates went well your new project will load.&lt;br /&gt;&lt;a href="http://www.basementventures.com/blog/uploaded_images/clip_image002-766527.png" target="_top"&gt;&lt;img style="float:none; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.basementventures.com/blog/uploaded_images/clip_image002-765844.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Otherwise, you might see an error saying that the Microsoft.SharePoint.dll could not be found and that you should reinstall the templates. In fact, I received that error. I chose to ignore and just added the dll to the project&amp;rsquo;s references.&lt;br /&gt;&lt;br /&gt;Stay tuned for my next post...&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-113021136420860630?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/113021136420860630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=113021136420860630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/113021136420860630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/113021136420860630'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2005/10/sharepoint-web-parts-development-guide_24.html' title='SharePoint Web Parts Development Guide'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434440.post-112916841682907774</id><published>2005-10-12T21:52:00.000-04:00</published><updated>2006-11-09T12:32:36.980-05:00</updated><title type='text'>Questions for C# Component Developers</title><content type='html'>&lt;ul&gt;&lt;li&gt;Juxtapose the use of override with new. What is shadowing? &lt;ul&gt;&lt;li&gt;Override redefines an inherited method which was marked as virtual or abstract,and its access level must be the same as the method it overrides. New allows you to completely hide an inherited member and create a different implementation of it with whatever attributes you choose. Shadowing is another name for disabling an inherited method and redefining it.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Explain the use of virtual, sealed, override, and abstract. &lt;ul&gt;&lt;li&gt;Virtual marks a method as overridable. Sealed marks a class as uninheritable. Override redefines a method declared as virtual. Abstract defines a class which cannot be instantiated, or a method which must be overriden in any derivedclasses.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Explain the importance and use of each component of this string: Foo.Bar,Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d &lt;ul&gt;&lt;li&gt;Assemblyname -- used for loading. Assembly version -- also used for loading.Culture -- defines culture settings used for string translation andother locale-specific settings. PublicKeyToken -- used to uniquely identifythis assembly and prevent collisions.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Explain the differences between public, protected, private and internal. &lt;ul&gt;&lt;li&gt;Public:accessible from any class. Private: accessible only from within the same class. Protected: like private, but derived classes may also access. Internal:like public, but accessible only by code within the same assembly.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;What benefit do you get from using a Primary Interop Assembly (PIA)? &lt;ul&gt;&lt;li&gt;APIA is a strongly-named assembly which defines COM interfaces for a component.Because it is strongly-named, it can be loaded into the GAC and verified against the COM component's own signature to give the component collision-protection and authorship-verification benefits when interacing with .NET code.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;By what mechanism does NUnit know what methods to test? &lt;ul&gt;&lt;li&gt;Readingattributes defined for classes and methods via reflection.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;What is the difference between: catch(Exception e){throw e;} and catch(Exceptione){throw;} &lt;ul&gt;&lt;li&gt;Both statements will catch and throw exception, butthe latter will preserve the original exception stack.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;What is the difference between typeof(foo) and myFoo.GetType()? &lt;ul&gt;&lt;li&gt;The first returns the object's type at compile time; the second returns itat runtime. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Explain what&amp;rsquo;s happening in the first constructor:public class c{ public c(string a) : this() {;}; public c() {;} } How is this construct useful?&lt;ul&gt;&lt;li&gt;The first constructor invokes the base constructor in addition to its own functionality; this wouldbe useful if your base initialized basic field values or had other code that all other constructors would utilize.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;What is this? Can this be used within a static method?&lt;ul&gt;&lt;li&gt;The "this" reference refers to the current object context. Static methods have no context,so it is not valid.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;Ernest Carroll&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434440-112916841682907774?l=www.dustward.com%2Fblog'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/112916841682907774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=5434440&amp;postID=112916841682907774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/112916841682907774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434440/posts/default/112916841682907774'/><link rel='alternate' type='text/html' href='http://www.dustward.com/blog/2005/10/questions-for-c-component-developers.html' title='Questions for C# Component Developers'/><author><name>Ernie C.</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='05853074436449682328'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>