<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4040403942542573445</id><updated>2011-12-11T18:37:07.954-08:00</updated><category term='tricks'/><category term='tools'/><category term='sql'/><category term='opinion'/><category term='tips'/><category term='collaboration'/><category term='development'/><category term='.net'/><category term='fun'/><category term='productivity'/><category term='links'/><category term='lifelessons'/><category term='pdf'/><category term='tips tricks productivity excel'/><category term='oracle'/><title type='text'>Somerville's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://densom.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-2777521153776619440</id><published>2011-08-25T07:17:00.001-07:00</published><updated>2011-08-25T07:34:39.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips tricks productivity excel'/><title type='text'>Highlight Protected Cells in an Excel Worksheet</title><content type='html'>&lt;p&gt;Here is a quick way to see which cells are protected in an Excel worksheet.   This solution uses &lt;a href="http://office.microsoft.com/en-us/excel-help/demo-data-takes-shape-with-conditional-formatting-HA010165549.aspx" target="_blank"&gt;conditional formatting&lt;/a&gt; to do the highlighting.  It uses the  CELL function to get the protected property of the cell.&lt;/p&gt; &lt;p&gt;For this example, I have created a sample spreadsheet.   The cells containing  the “Please modify” text are the ones I unchecked the “protect” checkbox in the  Format Cells dialog.&lt;/p&gt;&lt;p&gt;&lt;img src="http://4.bp.blogspot.com/-mkX73FwSWUY/TlZZqJ-X-3I/AAAAAAAAAGo/KB-vQ4aBEKs/s400/2011-08-25%2B10h00_32.png" style="cursor:pointer; cursor:hand;width: 331px; height: 198px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5644797763722410866" /&gt;&lt;/p&gt;&lt;p&gt;Highlight the range you would like to format.  Go into conditional formatting,  and select “New Rule”.&lt;/p&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/-UrtUO13GSB0/TlZZ0292FwI/AAAAAAAAAGw/Iu2r3YAlxJ4/s1600/2011-08-25%2B10h02_24.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://2.bp.blogspot.com/-UrtUO13GSB0/TlZZ0292FwI/AAAAAAAAAGw/Iu2r3YAlxJ4/s400/2011-08-25%2B10h02_24.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5644797947598477058" style="cursor: pointer; width: 400px; height: 275px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1. Select “Use a formula to determine which cells to format”&lt;/p&gt; &lt;p&gt;2. Enter the following formula:   &lt;strong&gt;=CELL("protect",INDIRECT("R"&amp;amp;ROW()&amp;amp;"C"&amp;amp;COLUMN(),FALSE))&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;3. Click the “Format” button and choose how you would like to format  protected cells.  I chose a red fill and a bold font for my example.&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/-_Yr5P3Bh8Kw/TlZc-rR0djI/AAAAAAAAAHI/AKSOAZXhcHA/s1600/2011-08-25%2B10h05_22.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://3.bp.blogspot.com/-_Yr5P3Bh8Kw/TlZc-rR0djI/AAAAAAAAAHI/AKSOAZXhcHA/s400/2011-08-25%2B10h05_22.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5644801414794606130" style="cursor: pointer; width: 400px; height: 213px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Once applied, you can quickly see which cells are protected.&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/-FoDttGp-cKI/TlZagiOuuAI/AAAAAAAAAHA/cnW32DlYUK0/s1600/2011-08-25%2B10h08_16.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://1.bp.blogspot.com/-FoDttGp-cKI/TlZagiOuuAI/AAAAAAAAAHA/cnW32DlYUK0/s400/2011-08-25%2B10h08_16.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5644798697946396674" style="cursor: pointer; width: 359px; height: 201px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;h3&gt;Breakdown of the formula&lt;/h3&gt; &lt;p&gt;=CELL(“protect”,&lt;range&gt;)  --&amp;gt; Determines if the cell is protected or  not.&lt;/range&gt;&lt;/p&gt; &lt;p&gt;&lt;range&gt; = INDIRECT("R"&amp;amp;ROW()&amp;amp;"C"&amp;amp;COLUMN(),FALSE) –&amp;gt;  Specifies the range of the current row and column.&lt;/range&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-2777521153776619440?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/2777521153776619440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=2777521153776619440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2777521153776619440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2777521153776619440'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2011/08/highlight-protected-cells-in-excel.html' title='Highlight Protected Cells in an Excel Worksheet'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-mkX73FwSWUY/TlZZqJ-X-3I/AAAAAAAAAGo/KB-vQ4aBEKs/s72-c/2011-08-25%2B10h00_32.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-723809435657124113</id><published>2011-02-16T09:38:00.001-08:00</published><updated>2011-02-16T09:38:13.301-08:00</updated><title type='text'>Adobe, Reduce Your Update Frequency</title><content type='html'>&lt;p&gt;Adobe, pretty please with sugar on top, stop telling me there are new updates to install every week!&amp;#160; Me, along with 99.9% of everyone else out there, opens up PDF files to read and/or print, with an occasional CTRL+F search.&amp;#160; Let the 0.1% of Adobe Power Users figure out how to update themselves.&lt;/p&gt;  &lt;p&gt;Time for a &lt;a href="http://lifehacker.com/#!5328211/five-best-pdf-readers"&gt;PDF Reader Alternative&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-723809435657124113?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/723809435657124113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=723809435657124113' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/723809435657124113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/723809435657124113'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2011/02/adobe-reduce-your-update-frequency.html' title='Adobe, Reduce Your Update Frequency'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-6808485952468280736</id><published>2010-12-03T11:16:00.001-08:00</published><updated>2010-12-03T11:16:29.168-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>How To: Strong-Name a .NET Assembly Without the Source Code</title><content type='html'>&lt;p&gt;Sometimes you may reference a 3rd party assembly in a project that you need to sign with a code-signing certificate.&amp;#160; The signing will fail if all of the referenced assemblies do not have a strong name.&amp;#160; This is a quick solution to the problem.&lt;/p&gt;  &lt;h4&gt;Step 1 – Disassemble the assembly to IL code&lt;/h4&gt;  &lt;pre class="csharpcode"&gt;ildasm MyAssembly.dll /&lt;span class="kwrd"&gt;out&lt;/span&gt;:MyAssembly.il&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Step 2 – Reassemble the assembly with a strong name&lt;/h4&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;NOTE:&amp;#160; You will need a PFX (Personal Information eXchange) file for this step.&amp;#160; If you do not have one, you will need to &lt;a href="https://bytescout.com/support/index.php?_m=knowledgebase&amp;amp;_a=viewarticle&amp;amp;kbarticleid=296&amp;amp;nav=0,1,14" target="_blank"&gt;create a PFX file with the makecert utility&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;ilasm &lt;span class="str"&gt;&amp;quot;MyAssembly.il&amp;quot;&lt;/span&gt; /res:&lt;span class="str"&gt;&amp;quot;MyAssembly.res&amp;quot;&lt;/span&gt; /key:&lt;span class="str"&gt;&amp;quot;MyKey.pfx&amp;quot;&lt;/span&gt; /&lt;span class="kwrd"&gt;out&lt;/span&gt;:&lt;span class="str"&gt;&amp;quot;MyAssembly_Strong.dll&amp;quot;&lt;/span&gt; /dll&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "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: 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 &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "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: 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 &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-6808485952468280736?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/6808485952468280736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=6808485952468280736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6808485952468280736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6808485952468280736'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2010/12/how-to-strong-name-net-assembly-without.html' title='How To: Strong-Name a .NET Assembly Without the Source Code'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-5201764386658054413</id><published>2010-08-27T10:09:00.001-07:00</published><updated>2010-08-27T10:22:35.744-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Batch File that Uses Mage to Create a Microsoft ClickOnce Deployment</title><content type='html'>&lt;p&gt;If you are using an automated build tool, such as &lt;a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank"&gt;CruiseControl.NET&lt;/a&gt;, and signing applications for use via the Internet, the &lt;a title="Manifest Generation and Editing Tool" href="http://msdn.microsoft.com/en-us/library/acz3y3te(VS.80).aspx" target="_blank"&gt;Mage.exe&lt;/a&gt; tool will give you much more flexibility when you create a &lt;a href="http://msdn.microsoft.com/en-us/library/t71a733d(VS.80).aspx" target="_blank"&gt;ClickOnce&lt;/a&gt; deployment.&amp;#160; Here is a good &lt;a href="http://msdn.microsoft.com/en-us/library/xc3tc5xx.aspx" target="_blank"&gt;ClickOnce walkthrough&lt;/a&gt; for both methods.&lt;/p&gt;  &lt;p&gt;Here is a batch file you can use to create the deployment.&amp;#160; One of these days I will get around to learning &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx" target="_blank"&gt;PowerShell&lt;/a&gt; :)&lt;/p&gt;  &lt;pre style="white-space: nowrap; overflow: scroll"&gt;REM ****************************************************************&lt;br /&gt;REM * File: PublishClickOnceApp.bat *&lt;br /&gt;REM * Author: Dennis Somerville *&lt;br /&gt;REM * Description: This batch file will publish an application as *&lt;br /&gt;REM * a Microsoft ClickOnce deployment. This uses *&lt;br /&gt;REM * Mage.exe command-line utility to create the *&lt;br /&gt;REM * application and deployment manifests. *&lt;br /&gt;REM * Pre-req: .NET Framework 3.5, Windows SDK's *&lt;br /&gt;REM ****************************************************************&lt;br /&gt; &lt;br /&gt;@echo off&lt;br /&gt;REM Change these settings, or make them command-line parameters for the batch file.&lt;br /&gt;set version=1&lt;br /&gt;set major=0&lt;br /&gt;set minor=0&lt;br /&gt;set revision=0&lt;br /&gt;set applicationFileDir=Application Files\DelaySignTest_%version%_%major%_%minor%_%revision%&lt;br /&gt;set appName=MyApp&lt;br /&gt;set exeName=%appName%.exe&lt;br /&gt;set manifestName=%exeName%.manifest&lt;br /&gt;set applicationFileName=%appName%.application&lt;br /&gt;set exePath=%applicationFileDir%\%exeName%&lt;br /&gt;set certificate=mycert.pfx&lt;br /&gt;set certificatePassword=mypassword&lt;br /&gt;set publishDir=C:\inetpub\wwwroot\MyApp&lt;br /&gt;set publishBase=http://localhost/MyApp/&lt;br /&gt;set sourceDir=..\%appName%\bin\Release&lt;br /&gt;set publisherName=My Company Name&lt;br /&gt;set mageExe=&amp;quot;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mage.exe&amp;quot;&lt;br /&gt;set msbuildExe=&amp;quot;C:\windows\microsoft.net\framework\v3.5\msbuild.exe&amp;quot;&lt;br /&gt;@echo on&lt;br /&gt; &lt;br /&gt;REM Cleanup&lt;br /&gt;rd /s /q &amp;quot;.\Application Files\&amp;quot;&lt;br /&gt;del /s /q %publishDir%\*&lt;br /&gt; &lt;br /&gt;REM Build&lt;br /&gt;%msbuildExe% /target:Clean;Rebuild /property:configuration=RELEASE;PublisherName=&amp;quot;The Sherwin-Williams Company&amp;quot;;ProductName=&amp;quot;DelaySignTest&amp;quot; &amp;quot;..\DelaySignTest.sln&amp;quot;&lt;br /&gt; &lt;br /&gt;REM Copy source files to mage directory&lt;br /&gt;xcopy /y %sourceDir%\*.exe &amp;quot;%applicationFileDir%\&amp;quot;&lt;br /&gt;xcopy /y %sourceDir%\*.dll &amp;quot;%applicationFileDir%\&amp;quot;&lt;br /&gt;del /q &amp;quot;%applicationFileDir%\*.vshost.*&amp;quot;&lt;br /&gt; &lt;br /&gt;REM Signing executable&lt;br /&gt;&amp;quot;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\signtool&amp;quot; sign /f %certificate% /p %certificatePassword% &amp;quot;%exePath%&amp;quot;&lt;br /&gt; &lt;br /&gt;REM Creating Deployment&lt;br /&gt;%mageExe% -New Application -ToFile &amp;quot;%applicationFileDir%\%manifestName%&amp;quot; -FromDirectory &amp;quot;%applicationFileDir%&amp;quot; -Name &amp;quot;%appName%&amp;quot; -Version %version%.%major%.%minor%.%revision%&lt;br /&gt;%mageExe% -Sign &amp;quot;%applicationFileDir%\%manifestName%&amp;quot; -CertFile %certificate% -Password %certificatePassword%&lt;br /&gt;%mageExe% -New Deployment -Install false -ToFile &amp;quot;%applicationFileName%&amp;quot; -AppManifest &amp;quot;%applicationFileDir%\%manifestName%&amp;quot; -Name &amp;quot;%appName%&amp;quot; -ProviderURL &amp;quot;%publishBase%%applicationFileName%&amp;quot; -IncludeProviderURL true -Version %version%.%major%.%minor%.%revision%&lt;br /&gt;%mageExe% -Sign %applicationFileName% -CertFile %certificate% -Password %certificatePassword%&lt;br /&gt; &lt;br /&gt;REM Publishing&lt;br /&gt;xcopy /y .\%applicationFileName% %publishDir%&lt;br /&gt;xcopy /y /s /i &amp;quot;.\Application Files&amp;quot; &amp;quot;%publishDir%\Application Files&amp;quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Other useful links:&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/maximelamure/archive/2007/01/24/create-your-own-pfx-file-for-clickonce.aspx" target="_blank"&gt;Create your own .pfx file for ClickOnce&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms164294.aspx"&gt;GenerateBootstrapper Task&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://www.delicious.com/das01d/clickonce"&gt;Everything else…&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-5201764386658054413?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/5201764386658054413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=5201764386658054413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/5201764386658054413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/5201764386658054413'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2010/08/batch-file-that-uses-mage-to-create.html' title='Batch File that Uses Mage to Create a Microsoft ClickOnce Deployment'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-4131316496461406204</id><published>2010-04-22T12:02:00.001-07:00</published><updated>2011-03-11T10:50:16.393-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Oracle WHERE Clause to Select Last 12 Months</title><content type='html'>&lt;p&gt;Here is a quick Oracle WHERE Clause that allows you to select the last 12 months worth of data.  This is useful in reporting scenarios when you want to generate a report for a relative period of time, independent of what day of the week the report was actually run.&lt;/p&gt;  &lt;p&gt;[In my original post, I used a hard-to-read version of a query.  &lt;a href="http://www.linkedin.com/in/kramerpr/" target="_blank"&gt;Mr. Patrick Kramer&lt;/a&gt; set me straight.  I also needed to adjust the query to return the previous month, regardless of the current date the query was run.]&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: green; font-size: 10pt; mso-highlight: white"&gt;&lt;/span&gt;&lt;/i&gt;&lt;/h1&gt;  &lt;h4&gt;New Query&lt;/h4&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;SELECT&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; * &lt;/span&gt;    &lt;/p&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;FROM&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; MyTable &lt;/span&gt;    &lt;/p&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;WHERE&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; MyDateField &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;BETWEEN&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TRUNC&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(ADD_MONTHS&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(SYSDATE,&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;-&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: maroon; font-size: 10pt; mso-highlight: white"&gt;13&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;),&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'MM'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;)&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;    &lt;/p&gt;&lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                       &lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;AND&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TRUNC&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(LAST_DAY&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(ADD_MONTHS&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(SYSDATE,&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;-&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: maroon; font-size: 10pt; mso-highlight: white"&gt;1&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;))+1)&lt;/span&gt;&lt;/p&gt;  &lt;h4&gt; Old Query&lt;/h4&gt;  &lt;p&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;SELECT&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; * &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;FROM&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; MyTable&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;WHERE&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; MyDateField &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;BETWEEN&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TO_DATE&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TO_CHAR&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(ADD_MONTHS&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(SYSDATE,&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;-&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: maroon; font-size: 10pt; mso-highlight: white"&gt;13&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;),&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'MM'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;)&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                         &lt;/span&gt;|| &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'-01-'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                         &lt;/span&gt;|| &lt;/span&gt;&lt;u&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TO_CHAR&lt;/span&gt;&lt;/u&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(ADD_MONTHS&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(SYSDATE,&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;-&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: maroon; font-size: 10pt; mso-highlight: white"&gt;13&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;),&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'YYYY'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;),&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'MM-DD-YYYY'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;)&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;AND&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(LAST_DAY&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                          &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TO_DATE&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                                &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TO_CHAR&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(SYSDATE&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;-&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: maroon; font-size: 10pt; mso-highlight: white"&gt;1&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;,&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'MM'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;)&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                             &lt;/span&gt;|| &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'-01-'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p style="line-height: normal; margin-bottom: 0pt; mso-layout-grid-align: none" class="MsoNormal"&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                             &lt;/span&gt;|| &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;TO_CHAR&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;(SYSDATE&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;-&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: maroon; font-size: 10pt; mso-highlight: white"&gt;1&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;,&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'YYYY'&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;),&lt;/span&gt;&lt;span style="font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: black; font-size: 10pt; mso-highlight: white"&gt;&lt;span style="mso-spacerun: yes"&gt;                             &lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: red; font-size: 10pt; mso-highlight: white"&gt;'MM-DD-YYYY'&lt;/span&gt;&lt;span style="line-height: 115%; font-family: &amp;quot;MS Shell Dlg 2&amp;quot;,&amp;quot;sans-serif&amp;quot;; background: white; color: blue; font-size: 10pt; mso-highlight: white"&gt;)))&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-4131316496461406204?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/4131316496461406204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=4131316496461406204' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/4131316496461406204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/4131316496461406204'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2010/04/oracle-where-clause-to-select-last-12.html' title='Oracle WHERE Clause to Select Last 12 Months'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-8173110389448400376</id><published>2010-02-26T14:03:00.001-08:00</published><updated>2010-04-22T12:03:56.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><title type='text'>What is the Best New Laptop - Not an ASUS UL80VT</title><content type='html'>&lt;p&gt;This is a tale of my disappointing customer service experience with ASUS Computer International.&amp;#160; &lt;/p&gt;  &lt;p&gt;I was a huge fan of &lt;a href="http://www.asus.com" target="_blank"&gt;ASUS&lt;/a&gt; products until I had to speak with their customer service department.&amp;#160; Here is the scenario.&amp;#160; I went to my local &lt;a href="http://www.microcenter.com/index.html" target="_blank"&gt;Microcenter&lt;/a&gt; and purchased a brand-spankin’-new &lt;a href="http://www.microcenter.com/single_product_results.phtml?product_id=0327053" target="_blank"&gt;ASUS UL80VT laptop&lt;/a&gt;.&amp;#160; I came home and ripped open the box like a 5-year old opening a Christmas present.&amp;#160; Okay, the moment has arrived, plug in, power on and off we go.&amp;#160; This thing is great!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;-- 30 minutes later --&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Wait a minute, the battery is stuck at 40%!&amp;#160; Why isn’t the charge going up?&amp;#160; I removed the power cable and then the computer shut off??? WTMF?&amp;#160; Oh well, nobody’s perfect.&amp;#160; All the other products I have purchased have been fine.&amp;#160; Let’s get this puppy replaced.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Call #1&lt;/font&gt;, &lt;a href="http://www.asus.com" target="_blank"&gt;ASUS&lt;/a&gt; customer service not open because it is a weekend.&amp;#160; Darn it!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;-- Monday is finally here (yes, I am a dork and I get excited about this stuff…deal with it!)--&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Call #2&lt;/font&gt;, &lt;a href="http://www.asus.com" target="_blank"&gt;ASUS&lt;/a&gt; customer service not open because it is President’s Day.&amp;#160; Really??? President’s Day?&amp;#160; What are you a bank?&amp;#160; Come on!&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Call #3&lt;/font&gt;, opened the RMA and was told shipping would be covered.&amp;#160; I had the option to ship the whole computer back, or just the battery.&amp;#160; I chose the battery.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;-- 1 week later, the battery arrives --&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Call #4&lt;/font&gt;, they “completely understand my concern”, but they have to abide by the policy.&amp;#160; I requested this be escalated to a supervisor.&amp;#160; I was told a supervisor would call me back.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;-- 2 days later, no phone call --&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Call #5&lt;/font&gt;, Benjamin put me on hold to look for a supervisor, only to be disconnected after 10 minutes.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;-- 5 minutes later --&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;PRESENT TIME.&amp;#160; Call #6.&lt;/font&gt;&amp;#160; I am now sitting on hold during my SIXTH call to &lt;a href="http://www.asus.com" target="_blank"&gt;ASUS&lt;/a&gt; waiting for Germaine to track down a supervisor who can issue a shipping label.&amp;#160; I finally speak to supervisor Paula.&amp;#160; She repeated the policy states they do not cover shipping.&amp;#160; She also referred me to the document I was sent that states shipping is my responsibility.&amp;#160; And I quote…”Please note that it is your responsibility to ship the part to us in good condition”.&amp;#160; When I signed this, I agreed to ship it to them so it arrives “in good condition”, not “in bad condition”.&amp;#160; Nowhere does it state I am to cover the shipping charges!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_evGDBmfcnrQ/S4hFQ3_SsrI/AAAAAAAAAFA/l4kPYEHuLK8/s1600-h/2262010_44854%20PM%5B5%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="2262010_44854 PM" border="0" alt="2262010_44854 PM" src="http://lh3.ggpht.com/_evGDBmfcnrQ/S4hFRdqZcdI/AAAAAAAAAFE/AJGrxKJ4Xmk/2262010_44854%20PM_thumb%5B3%5D.jpg?imgmax=800" width="422" height="207" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Next steps:&lt;/h3&gt;  &lt;p&gt;1. Dispute the charge with my credit card company    &lt;br /&gt;2. Not buy any more &lt;a href="http://www.asus.com" target="_blank"&gt;ASUS&lt;/a&gt; products that will have the potential of requiring me to deal with &lt;a href="http://www.asus.com" target="_blank"&gt;ASUS&lt;/a&gt; customer service.     &lt;br /&gt;3. Taste the sweet justice!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-8173110389448400376?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/8173110389448400376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=8173110389448400376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/8173110389448400376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/8173110389448400376'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2010/02/what-is-best-new-laptop-not-asus-ul80vt.html' title='What is the Best New Laptop - Not an ASUS UL80VT'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_evGDBmfcnrQ/S4hFRdqZcdI/AAAAAAAAAFE/AJGrxKJ4Xmk/s72-c/2262010_44854%20PM_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-1695726996467848474</id><published>2009-10-07T13:20:00.001-07:00</published><updated>2010-04-22T12:04:15.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Launching a ClickOnce Application using JavaScript</title><content type='html'>&lt;p&gt;We wrote a web application which needs to launch a Microsoft ClickOnce application, while at the same time redirect the user to a new page.&amp;#160; The basic flow of the program is this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;User navigates to web application &lt;/li&gt;    &lt;li&gt;Unique GUID for transaction ID is generated for the ClickOnce application to use &lt;/li&gt;    &lt;li&gt;The user clicks the launch link and the GUID is passed to the ClickOnce application as a URL parameter      &lt;ol&gt;       &lt;li&gt;a) the ClickOnce app launches &lt;/li&gt;        &lt;li&gt;b) the user is taken to a “wait for the results screen” while the ClickOnce application is working &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;The ClickOnce application takes a measurement with a USB device &lt;/li&gt;    &lt;li&gt;The ClickOnce application calls a web service to store the measurement, using the passed-in GUID as the key &lt;/li&gt;    &lt;li&gt;The ClickOnce application closes itself &lt;/li&gt;    &lt;li&gt;The “wait for results screen” meta-refreshes until it sees the results in the underlying database &lt;/li&gt;    &lt;li&gt;The “wait for results screen” redirects the user back to the measurements list page &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The problem we were facing had to do with using a JavaScript window.open() function to launch the “.application” ClickOnce URL.&amp;#160; Basically, when we did this it opened a new browser window, which immediately closed without launching the ClickOnce application.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Use the JavaScript setTimeout() function.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  function LaunchApp() {&lt;br /&gt;    setTimeout(&amp;quot;location.replace('waitPage.htm')&amp;quot;, 2000);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="rem"&gt;&amp;lt;!-- the id below is generated by the code behind --&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;javascript:LaunchApp();&amp;quot;&lt;/span&gt;&lt;br /&gt;      &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;MyClickOnceApp.application?id=30F0D180-2CFC-3A80-F90922B0B31B656A&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;      Click here to launch application&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "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: 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 &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "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: 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 &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-1695726996467848474?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/1695726996467848474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=1695726996467848474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/1695726996467848474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/1695726996467848474'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/10/launching-clickonce-application-using.html' title='Launching a ClickOnce Application using JavaScript'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-2147965025489507431</id><published>2009-08-24T08:26:00.001-07:00</published><updated>2010-04-22T12:04:15.389-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>How to Parse a Query String without using the HttpUtility Class in System.Web</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;I wanted to remove the dependency on System.Web so that I could parse the query string of a ClickOnce deployment, while having the prerequisites limited to the &amp;quot;Client-only Framework Subset&amp;quot;. &lt;/p&gt;  &lt;p&gt;Here is a simple method that will accomplish this task.&amp;#160; I have also included some unit tests.&amp;#160; And, last but not least, I posted this on &lt;a href="http://stackoverflow.com/questions/68624/how-to-parse-a-query-string-into-a-namevaluecollection-in-net/" target="_blank"&gt;StackOverflow&lt;/a&gt;.&amp;#160; Thanks to &lt;a href="http://stackoverflow.com/users/2536/rp" target="_blank"&gt;rp&lt;/a&gt; for writing the initial method.&lt;/p&gt;  &lt;h4&gt;Code&lt;/h4&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:74381534-7c85-4590-b75a-50923de67fba" style="padding-right: 5px; padding-left: 5px; padding-bottom: 5px; padding-top: 5px"&gt;&lt;br /&gt;&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;&lt;br /&gt;&lt;div style="background: #fff; max-height: 500px; overflow: scroll; padding: 2px 5px"&gt;&lt;br /&gt;&lt;ol style="background: #ffffff; margin: 0 0 0 0; white-space: wrap"&gt;&lt;br /&gt;&lt;li&gt; &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;static&lt;/span&gt; &lt;span style="color:#2b91af"&gt;NameValueCollection&lt;/span&gt; ParseQueryString(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; s)&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;NameValueCollection&lt;/span&gt; nvc = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;NameValueCollection&lt;/span&gt;();&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#008000"&gt;// remove anything other than query string from url&lt;/span&gt;&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#0000ff"&gt;if&lt;/span&gt;(s.Contains(&lt;span style="color:#a31515"&gt;"?"&lt;/span&gt;))&lt;/li&gt;&lt;li&gt;             {&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;                 s = s.Substring(s.IndexOf(&lt;span style="color:#a31515"&gt;'?'&lt;/span&gt;) + 1);&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; vp &lt;span style="color:#0000ff"&gt;in&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Regex&lt;/span&gt;.Split(s, &lt;span style="color:#a31515"&gt;"&amp;amp;"&lt;/span&gt;))&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             {&lt;/li&gt;&lt;li&gt;                 &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[] singlePair = &lt;span style="color:#2b91af"&gt;Regex&lt;/span&gt;.Split(vp, &lt;span style="color:#a31515"&gt;"="&lt;/span&gt;);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;                 &lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (singlePair.Length == 2)&lt;/li&gt;&lt;li&gt;                 {&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;                     nvc.Add(singlePair[0], singlePair[1]);&lt;/li&gt;&lt;li&gt;                 }&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;                 &lt;span style="color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt;&lt;li&gt;                 {&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;                     &lt;span style="color:#008000"&gt;// only one key with no value specified in query string&lt;/span&gt;&lt;/li&gt;&lt;li&gt;                     nvc.Add(singlePair[0], &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;                 }&lt;/li&gt;&lt;li&gt;             }&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;return&lt;/span&gt; nvc;&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         \&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;  &lt;h4&gt;Unit Tests&lt;/h4&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1e23c719-a205-4ff7-b20c-3afce6266c24" style="padding-right: 5px; display: block; padding-left: 5px; float: none; padding-bottom: 5px; margin-left: auto; width: 399px; margin-right: auto; padding-top: 5px"&gt;&lt;br /&gt;&lt;div style="border: #000080 1px solid; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;&lt;br /&gt;&lt;div style="background: #fff; max-height: 500px; overflow: scroll; padding: 2px 5px"&gt;&lt;br /&gt;&lt;ol style="background: #ffffff; margin: 0 0 0 0; white-space: wrap"&gt;&lt;br /&gt;&lt;li&gt; [&lt;span style="color:#2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ParseQueryString_OneNameValueParameter()&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#008000"&gt;// TODO: Add test logic    here&lt;/span&gt;&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#008000"&gt;//&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#0000ff"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; queryString = &lt;span style="color:#a31515"&gt;"http://www.foo.com/testpage.htm?mykey=myvalue"&lt;/span&gt;;&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = &lt;span style="color:#2b91af"&gt;Helper&lt;/span&gt;.ParseQueryString(queryString);&lt;/li&gt;&lt;li&gt;             &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(1, result.Count);&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myvalue"&lt;/span&gt;, result[&lt;span style="color:#a31515"&gt;"mykey"&lt;/span&gt;]);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         }&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         [&lt;span style="color:#2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ParseQueryString_ThreeNameValueParameter()&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; queryString = &lt;span style="color:#a31515"&gt;"http://www.foo.com/?mykey1=myval1&amp;amp;mykey2=myval2&amp;amp;mykey3=myval3"&lt;/span&gt;;&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = &lt;span style="color:#2b91af"&gt;Helper&lt;/span&gt;.ParseQueryString(queryString);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(3, result.Count);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myval1"&lt;/span&gt;,result[&lt;span style="color:#a31515"&gt;"mykey1"&lt;/span&gt;]);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myval2"&lt;/span&gt;, result[&lt;span style="color:#a31515"&gt;"mykey2"&lt;/span&gt;]);&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myval3"&lt;/span&gt;, result[&lt;span style="color:#a31515"&gt;"mykey3"&lt;/span&gt;]);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;         [&lt;span style="color:#2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ParseQueryString_OneKeyWithNoValue()&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#0000ff"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; queryString = &lt;span style="color:#a31515"&gt;"http://www.foo.com/?mykey1"&lt;/span&gt;;&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = &lt;span style="color:#2b91af"&gt;Helper&lt;/span&gt;.ParseQueryString(queryString);&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(1,result.Count);&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty, result[&lt;span style="color:#a31515"&gt;"mykey1"&lt;/span&gt;]);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         }&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         [&lt;span style="color:#2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/li&gt;&lt;li&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ParseQueryString_MultipleKeysWithNoValue()&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         {&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; queryString = &lt;span style="color:#a31515"&gt;"http://www.foo.com/?mykey1=myval1&amp;amp;mykey2&amp;amp;mykey3=myval3"&lt;/span&gt;;&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = &lt;span style="color:#2b91af"&gt;Helper&lt;/span&gt;.ParseQueryString(queryString);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(3, result.Count);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myval1"&lt;/span&gt;, result[&lt;span style="color:#a31515"&gt;"mykey1"&lt;/span&gt;]);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty, result[&lt;span style="color:#a31515"&gt;"mykey2"&lt;/span&gt;]);&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myval3"&lt;/span&gt;, result[&lt;span style="color:#a31515"&gt;"mykey3"&lt;/span&gt;]);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;         }&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;         [&lt;span style="color:#2b91af"&gt;TestMethod&lt;/span&gt;]&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;         &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; ParseQueryString_NoUrlSpecifiedWithQueryString()&lt;/li&gt;&lt;li&gt;         {&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#0000ff"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; queryString = &lt;span style="color:#a31515"&gt;"mykey1=myval1&amp;amp;mykey2=myval2"&lt;/span&gt;;&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#0000ff"&gt;var&lt;/span&gt; result = &lt;span style="color:#2b91af"&gt;Helper&lt;/span&gt;.ParseQueryString(queryString);&lt;/li&gt;&lt;li&gt; &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(2, result.Count);&lt;/li&gt;&lt;li&gt;             &lt;/li&gt;&lt;li style="background: #f3f3f3"&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myval1"&lt;/span&gt;, result[&lt;span style="color:#a31515"&gt;"mykey1"&lt;/span&gt;]);&lt;/li&gt;&lt;li&gt;             &lt;span style="color:#2b91af"&gt;Assert&lt;/span&gt;.AreEqual(&lt;span style="color:#a31515"&gt;"myval2"&lt;/span&gt;, result[&lt;span style="color:#a31515"&gt;"mykey2"&lt;/span&gt;]);&lt;/li&gt;&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;&lt;li&gt;         \&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-2147965025489507431?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/2147965025489507431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=2147965025489507431' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2147965025489507431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2147965025489507431'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/08/how-to-parse-query-string-without-using.html' title='How to Parse a Query String without using the HttpUtility Class in System.Web'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-2569381468688332748</id><published>2009-07-30T03:44:00.001-07:00</published><updated>2010-04-22T12:04:34.749-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><title type='text'>Code should not need to be figured out</title><content type='html'>&lt;p&gt;Quote of the day…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“Code should not need to be figured out, it should be just read.”&amp;#160; -- Martin Fowler&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://www.martinfowler.com/" target="_blank"&gt;Martin Fowler&lt;/a&gt; mentions this at the end of his &lt;a href="http://martinfowler.com/bliki/ComposedRegex.html" target="_blank"&gt;ComposedRegex&lt;/a&gt; post.&amp;#160; Well put!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-2569381468688332748?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/2569381468688332748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=2569381468688332748' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2569381468688332748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2569381468688332748'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/07/code-should-not-need-to-be-figured-out.html' title='Code should not need to be figured out'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-6362362721336302329</id><published>2009-05-24T12:19:00.001-07:00</published><updated>2010-04-22T12:04:49.941-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Poker Tournament - Determine Initial Chip Count using Excel Solver</title><content type='html'>&lt;p&gt;Have you ever tried to pull off a poker tournament and struggled to determine the best way to distribute the initial chips to the players?&amp;#160; Well, here is an overkill solution to help you decide how many poker chips to start with.&amp;#160; It is an Excel spreadsheet that uses the Microsoft Excel Solver add-in.&amp;#160; Make sure you &lt;a href="http://office.microsoft.com/en-us/excel/HP011277251033.aspx" target="_blank"&gt;enable the Solver add-in&lt;/a&gt; for this to work.&lt;/p&gt;  &lt;p&gt;You can &lt;a href="http://office.microsoft.com/en-us/templates/TC300057131033.aspx" target="_blank"&gt;download this template from the Microsoft Office Template Gallery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The colors are used as guides to help you with the spreadsheet.&amp;#160; I chose not to protect the cells so you could view and modify the formulas.&lt;/p&gt;  &lt;p&gt;Blue = Modify values to meet your needs    &lt;br /&gt;Yellow = Targets that Solver will modify     &lt;br /&gt;Orange = Value Solver is trying to minimize&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_evGDBmfcnrQ/ShmdvlDRK7I/AAAAAAAAACs/Dx-gCF3dyiU/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/_evGDBmfcnrQ/ShmdwNUlCXI/AAAAAAAAACw/-cT58bJlEWU/image_thumb%5B2%5D.png?imgmax=800" width="556" height="219" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The first thing you should configure is the number of players, chip colors, per chip value and available chip counts.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_evGDBmfcnrQ/ShmdwD-wBOI/AAAAAAAAAC0/x7v3PfqcJ-g/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/_evGDBmfcnrQ/Shmdw2BVUhI/AAAAAAAAAC4/EyCw3MePem4/image_thumb%5B4%5D.png?imgmax=800" width="483" height="332" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then, set the chip distribution ratios.&amp;#160; This is used to make sure you have more chips of a certain denomination that others.&amp;#160; For example, if you want to have more lower denomination chips than higher denomination chips, set the lower denomination ratio higher than the lower value chips.&amp;#160; If you do not want to use this feature, set them all to 1.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_evGDBmfcnrQ/ShmdxFY-T4I/AAAAAAAAAC8/ZiPQnJObkRA/s1600-h/image%5B12%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh6.ggpht.com/_evGDBmfcnrQ/Shmdxt3-kkI/AAAAAAAAADA/phLNS9fFy20/image_thumb%5B6%5D.png?imgmax=800" width="502" height="193" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Finally, set the target chip count.&amp;#160; If you specify $1000, solver will try to come up with a distribution as close to $1,000 for each player as possible.&amp;#160; If you want to use as many available chips as possible, set the target chip count &amp;gt;= Max value per player.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_evGDBmfcnrQ/ShmdyfJ_29I/AAAAAAAAADE/wTOgDFhXeMA/s1600-h/image%5B16%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_evGDBmfcnrQ/Shmdy6KvFWI/AAAAAAAAADI/ok3XFtk9vOI/image_thumb%5B8%5D.png?imgmax=800" width="514" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To use solver, click the Data tab in the ribbon bar and choose Solver.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_evGDBmfcnrQ/Sh1T66LbC5I/AAAAAAAAADM/lKAzstFPXB8/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_evGDBmfcnrQ/Sh1T7SGhEzI/AAAAAAAAADQ/TcPCRzrbvYQ/image_thumb%5B2%5D.png?imgmax=800" width="380" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Solver Parameters dialog will appear.&amp;#160; Click the Solve button to see the solution.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_evGDBmfcnrQ/Sh1T7vAMDyI/AAAAAAAAADU/KzaYaQquPr8/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/_evGDBmfcnrQ/Sh1T8DeuiAI/AAAAAAAAADY/PvUjbfHF6NE/image_thumb%5B4%5D.png?imgmax=800" width="340" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Game on!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-6362362721336302329?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/6362362721336302329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=6362362721336302329' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6362362721336302329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6362362721336302329'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/05/poker-tournament-determine-initial-chip.html' title='Poker Tournament - Determine Initial Chip Count using Excel Solver'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_evGDBmfcnrQ/ShmdwNUlCXI/AAAAAAAAACw/-cT58bJlEWU/s72-c/image_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-2178581695106140980</id><published>2009-05-12T10:38:00.001-07:00</published><updated>2010-04-22T12:05:08.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Installing KB963027 on Vista 64-bit breaks Internet Explorer (and web browsing in general)</title><content type='html'>&lt;p&gt;In summary, after installing &lt;a href="http://support.microsoft.com/kb/963027" target="_blank"&gt;KB963027 update&lt;/a&gt; on a 64-bit Vista machine, it broke all ability to browse the Internet.&amp;#160; Even installing another browser would not work.&amp;#160; As soon as you uninstall the &lt;a href="http://support.microsoft.com/kb/963027" target="_blank"&gt;KB963027&lt;/a&gt;, everything works again.&lt;/p&gt;  &lt;p&gt;Other symptoms included &lt;a href="http://www.magicjack.com" target="_blank"&gt;MagicJack&lt;/a&gt; not being able to receive calls.&lt;/p&gt;  &lt;p&gt;Sure enough, &lt;a href="http://www.targetmediaent.com" target="_blank"&gt;Uncle Mark&lt;/a&gt; figured out the problem.&lt;/p&gt;  &lt;h4&gt;Solution&lt;/h4&gt;  &lt;p&gt;It turns out Norton had been previously installed and then uninstalled from the computer.&amp;#160; Even though Norton had been uninstalled, it was not completely gone.&amp;#160; &lt;/p&gt;  &lt;p&gt;We had to use the &lt;a href="http://service1.symantec.com/Support/tsgeninfo.nsf/docid/2005033108162039" target="_blank"&gt;Norton Removal Tool&lt;/a&gt; to get rid of it completely.&amp;#160; After that, the &lt;a href="http://support.microsoft.com/kb/963027" target="_blank"&gt;KB963027 update&lt;/a&gt; could be installed without an issue.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Uninstall the &lt;a href="http://support.microsoft.com/kb/963027" target="_blank"&gt;KB963027 update&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Remove Norton using the &lt;a href="http://service1.symantec.com/Support/tsgeninfo.nsf/docid/2005033108162039" target="_blank"&gt;Norton Removal Tool&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Reinstall the &lt;a href="http://support.microsoft.com/kb/963027" target="_blank"&gt;KB963027 update&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-2178581695106140980?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/2178581695106140980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=2178581695106140980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2178581695106140980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2178581695106140980'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/05/installing-kb963027-on-vista-64-bit.html' title='Installing KB963027 on Vista 64-bit breaks Internet Explorer (and web browsing in general)'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-8621821845390440965</id><published>2009-05-08T06:09:00.001-07:00</published><updated>2010-04-22T12:05:46.587-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifelessons'/><title type='text'>True Story: Car Allergic to Vanilla Ice Cream</title><content type='html'>&lt;p&gt;This story is a reminder that sometimes what appears to be the source of the problem has nothing to do with the problem at all…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;For the engineers among us who understand that the obvious is not always the solution, and that the facts, no matter how implausible, are still the facts ...&lt;/p&gt;    &lt;p&gt;A complaint was received by the Pontiac Division of General Motors:&lt;/p&gt;    &lt;p&gt;&amp;quot;This is the second time I have written you, and I don't blame you for not answering me, because I kind of sounded crazy, but it is a fact that we have a tradition in our family of ice cream for dessert after dinner each night. But the kind of ice cream varies so, every night, after we've eaten, the whole family votes on which kind of ice cream we should have and I drive down to the store to get it. It's also a fact that I recently purchased a new Pontiac and since then my trips to the store have created a problem. You see, every time I buy vanilla ice cream, when I start back from the store my car won't start. If I get any other kind of ice cream, the car starts just fine. I want you to know I'm serious about this question, no matter how silly it sounds: 'What is there about a Pontiac that makes it not start when I get vanilla ice cream, and easy to start whenever I get any other kind?'&amp;quot;&lt;/p&gt;    &lt;p&gt;The Pontiac President was understandably skeptical about the letter, but sent an engineer to check it out anyway. The latter was surprised to be greeted by a successful, obviously well-educated man in a fine neighborhood. He had arranged to meet the man just after dinner time, so the two hopped into the car and drove to the ice cream store. It was vanilla ice cream that night and, sure enough, after they came back to the car, it wouldn't start.&lt;/p&gt;    &lt;p&gt;The engineer returned for three more nights. The first night, the man got chocolate. The car started. The second night, he got strawberry. The car started. The third night he ordered vanilla. The car failed to start.&lt;/p&gt;    &lt;p&gt;Now the engineer, being a logical man, refused to believe that this man's car was allergic to vanilla ice cream. He arranged, therefore, to continue his visits for as long as it took to solve the problem. And toward this end he began to take notes: he jotted down all sorts of data, time of day, type of gas used, time to drive back and forth, etc.&lt;/p&gt;    &lt;p&gt;In a short time, he had a clue: the man took less time to buy vanilla than any other flavor. Why? The answer was in the layout of the store.&lt;/p&gt;    &lt;p&gt;Vanilla, being the most popular flavor, was in a separate case at the front of the store for quick pickup. All the other flavors were kept in the back of the store at a different counter where it took considerably longer to find the flavor and get checked out.&lt;/p&gt;    &lt;p&gt;Now the question for the engineer was why the car wouldn't start when it took less time. Once time became the problem-not the vanilla ice cream-the engineer quickly came up with the answer: vapor lock. It was happening every night, but the extra time taken to get the other flavors allowed the engine to cool down sufficiently to start. When the man got vanilla, the engine was still too hot for the vapor lock to dissipate.&lt;/p&gt;    &lt;p&gt;Moral of the story: even insane-looking problems are sometimes real.&lt;/p&gt;    &lt;p&gt;(collected at General Motors)&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-8621821845390440965?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/8621821845390440965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=8621821845390440965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/8621821845390440965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/8621821845390440965'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/05/true-story-car-allergic-to-vanilla-ice.html' title='True Story: Car Allergic to Vanilla Ice Cream'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-3316109013522944047</id><published>2009-01-23T12:56:00.001-08:00</published><updated>2010-04-22T12:06:20.842-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Convert Base64 text to ACSII text in an Inline Oracle SQL Statement</title><content type='html'>We store certain multilingual strings in Base64 in an Oracle Table.  In order to select from that table, I had to convert the field to an ASCII string.  Here is the syntax I used (Oracle 10g):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-- If null string, do not try to convert.&lt;br /&gt; -- Trim string to 2000 characters (limit of CAST_TO_RAW)&lt;br /&gt; SELECT DECODE(string_text,'','',UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW(substr(string_text,1,2000))))) AS first_2000_characters,&lt;br /&gt;          (case when length(string_text) &gt; 2000 then DECODE(string_text,'','',UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_DECODE(UTL_RAW.CAST_TO_RAW(substr(string_text,2001,2000))))) end) AS second_2000_characters&lt;br /&gt;     FROM my_table&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-3316109013522944047?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/3316109013522944047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=3316109013522944047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/3316109013522944047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/3316109013522944047'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/01/convert-base64-text-to-acsii-text-in.html' title='Convert Base64 text to ACSII text in an Inline Oracle SQL Statement'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-4819837262965294719</id><published>2009-01-23T08:21:00.000-08:00</published><updated>2010-04-22T12:06:06.041-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Script to Create Web Service Proxy and Assembly</title><content type='html'>We are working on a project where some developers have the full-blown Visual Studio 2008 Pro, and others are using the C# Express Web edition.  Because we are integrating with another .NET project that we do not own, we had to give our Express Edition users the ability to easily create proxies for web service calls.  Here is my solution:&lt;br /&gt;&lt;br /&gt;The following batch file will create the proxy .cs file, as well as compile it into an assembly.  Simple, but useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Prerequisites:&lt;/span&gt;&lt;br /&gt;Windows SDK for Windows Server 2008 and .NET Framework 3.5:&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Batch File:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;set path=C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;%PATH%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;wsdl.exe %1 /out:%2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;csc.exe /t:library /out:%3 %2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Usage:&lt;/span&gt;&lt;br /&gt;mybatchfile url .csFileName assemblyFileName&lt;urlofwebservice&gt; &lt;nameofcssourcefilegenerated&gt; &lt;nameofassemblytocreate&gt;&lt;/nameofassemblytocreate&gt;&lt;/nameofcssourcefilegenerated&gt;&lt;/urlofwebservice&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-4819837262965294719?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/4819837262965294719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=4819837262965294719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/4819837262965294719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/4819837262965294719'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2009/01/script-to-create-web-service-proxy.html' title='Script to Create Web Service Proxy and Assembly'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-7782328069974077600</id><published>2008-11-04T13:46:00.001-08:00</published><updated>2010-04-22T12:06:53.397-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><title type='text'>Go Obama!</title><content type='html'>Need I say more?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-7782328069974077600?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/7782328069974077600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=7782328069974077600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/7782328069974077600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/7782328069974077600'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/11/go-obama.html' title='Go Obama!'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-2743851811676319698</id><published>2008-10-16T13:59:00.000-07:00</published><updated>2010-04-22T12:07:53.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><title type='text'>Corrupt Properties Designer in Visual Studio 2005</title><content type='html'>I spent a few days troubleshooting why I my properties file in my Visual Studio 2005 Windows-Based Forms application seemed to be corrupted.  When I right-clicked on my project and selected "properties", I the properties designer window would appear for a second and then disappear.&lt;br /&gt;&lt;br /&gt;Right-clicking on the properties folder and clicking properties would give me an "Invalid pointer" error.  This seemed to happen after I did a ClickOnce deploy to a web server and closed my solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Solution&lt;br /&gt;&lt;span style="font-size:100%;"&gt;It turns out the problem is related to the &lt;a href="http://code.msdn.microsoft.com/sourceanalysis"&gt;Microsoft Source Code Analysis Tool for C#&lt;/a&gt;.  I also have ReSharper 4.1 installed.  I discovered this forum post that &lt;a href="http://www.jetbrains.net/jira/browse/RSRP-70935"&gt;recommend I uninstall the MS Source Code Analysis tool&lt;/a&gt;.  Turns out this solved my problem too. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-2743851811676319698?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/2743851811676319698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=2743851811676319698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2743851811676319698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/2743851811676319698'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/10/corrupt-properties-designer-in-visual.html' title='Corrupt Properties Designer in Visual Studio 2005'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-779424166557850996</id><published>2008-09-18T17:43:00.001-07:00</published><updated>2010-04-22T12:07:45.006-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><title type='text'>Windows Live Writer</title><content type='html'>&lt;p&gt; Although I do like the editing features available on the blogger.com web site, I just downloaded &lt;a href="http://writer.live.com/"&gt;Windows Live Writer&lt;/a&gt; to see what a client app is like.  This is the first blog I am writing with the tool.&lt;/p&gt;  &lt;p&gt;The download was very easy.  I really do not care for software that attempts to hijack your browser's home page, default search engine and also give you other tools that you did not originally intend to install.&lt;/p&gt;&lt;p&gt;A Plug-in is available for integrating with Flickr.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://lh3.ggpht.com/dennis.somerville/SNL1FVkb71I/AAAAAAAAAB4/yutDe2wUjHc/s576/CropperCapture%5B1%5D.jpg" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-779424166557850996?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/779424166557850996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=779424166557850996' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/779424166557850996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/779424166557850996'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/09/windows-live-writer.html' title='Windows Live Writer'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/dennis.somerville/SNL1FVkb71I/AAAAAAAAAB4/yutDe2wUjHc/s72-c/CropperCapture%5B1%5D.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-5039446239616998263</id><published>2008-08-22T19:14:00.000-07:00</published><updated>2010-04-22T12:07:38.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><title type='text'>How to Fix: iPhone Upgrade Corrupts Outlook Address Book</title><content type='html'>After upgrading an iPhone to 2.0.x, your Outlook Address Book may be corrupt.  I use the term corrupt loosely because the &lt;a href="http://support.microsoft.com/kb/287497"&gt;scanpst.exe utility&lt;/a&gt; will not detect the corruption.  In other words, I am not exactly sure what happened to the file, but here is how I went about fixing it.&lt;br /&gt;&lt;br /&gt;The error message I received was "The properties dialog box could not be displayed.  An invalid ENTRYID was passed in."  This happens when you go to Tools --&gt; Address Book and double-click a contact.&lt;br /&gt;&lt;br /&gt;To fix, close the address book dialog I mentioned above.&lt;br /&gt;&lt;br /&gt;Export your contacts as a tab delimited file.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_evGDBmfcnrQ/SK93a-zINxI/AAAAAAAAAAs/ht6el13RwkM/s1600-h/CropperCapture%5B1%5D.Png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_evGDBmfcnrQ/SK93a-zINxI/AAAAAAAAAAs/ht6el13RwkM/s400/CropperCapture%5B1%5D.Png" alt="" id="BLOGGER_PHOTO_ID_5237536197072926482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_evGDBmfcnrQ/SK93lG6gS0I/AAAAAAAAAA0/KqIRgLukOqo/s1600-h/CropperCapture%5B2%5D.Png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_evGDBmfcnrQ/SK93lG6gS0I/AAAAAAAAAA0/KqIRgLukOqo/s400/CropperCapture%5B2%5D.Png" alt="" id="BLOGGER_PHOTO_ID_5237536371050040130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Then, click on "Contacts" in the left hand navigation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_evGDBmfcnrQ/SK904_IKJQI/AAAAAAAAAAU/Kxw91xuss50/s1600-h/contacts.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_evGDBmfcnrQ/SK904_IKJQI/AAAAAAAAAAU/Kxw91xuss50/s400/contacts.png" alt="" id="BLOGGER_PHOTO_ID_5237533414022325506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Delete all of your contacts in there.  Then, import the contacts the same as you exported them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-5039446239616998263?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/5039446239616998263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=5039446239616998263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/5039446239616998263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/5039446239616998263'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/08/how-to-fix-iphone-upgrade-corrupts.html' title='How to Fix: iPhone Upgrade Corrupts Outlook Address Book'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_evGDBmfcnrQ/SK93a-zINxI/AAAAAAAAAAs/ht6el13RwkM/s72-c/CropperCapture%5B1%5D.Png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-4510990625919749602</id><published>2008-07-15T08:10:00.000-07:00</published><updated>2010-04-22T12:07:29.580-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><title type='text'>Message from Gen X</title><content type='html'>Glad I missed the punch card era. Can you imagine programming using a stack of these things?  No thank you.  Special thanks to &lt;a href="http://en.wikipedia.org/wiki/IBM_PC_keyboard"&gt;IBM&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Christopher_Sholes"&gt;Mr. Christopher "Qwerty" Sholes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_evGDBmfcnrQ/SHy-WSkrjtI/AAAAAAAAAAM/5Dkl6J3C8VE/s1600-h/punchcard.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_evGDBmfcnrQ/SHy-WSkrjtI/AAAAAAAAAAM/5Dkl6J3C8VE/s400/punchcard.gif" alt="" id="BLOGGER_PHOTO_ID_5223258957995019986" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-4510990625919749602?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/4510990625919749602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=4510990625919749602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/4510990625919749602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/4510990625919749602'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/07/message-from-gen-x.html' title='Message from Gen X'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_evGDBmfcnrQ/SHy-WSkrjtI/AAAAAAAAAAM/5Dkl6J3C8VE/s72-c/punchcard.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-3779275936617354345</id><published>2008-07-12T09:13:00.000-07:00</published><updated>2010-04-22T12:07:18.265-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Removing corrupt SharePoint site column</title><content type='html'>Recently I was using the &lt;a href="http://sharepointsolutions.blogspot.com/2006/11/free-custom-cross-site-lookup-column.html"&gt;cross-site lookup column&lt;/a&gt; feature for SharePoint.  Unfortunately, it ended up creating a corrupted site column.  Any time I went to edit an item in the list that used the column, I received an "Error occurred while processing request" message.  The worst part is, I could not delete the column either.  The page that had the delete button on it also threw the same error.&lt;br /&gt;&lt;br /&gt;To solve the problem, my good friends at &lt;a href="http://www.bennettadelson.com/"&gt;Bennett-Adelson&lt;/a&gt; gave me a solution.&lt;br /&gt;&lt;br /&gt;Create an asp.net page with the code at the bottom of this post and put it in your layouts directory.  By default, this is "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS".&lt;br /&gt;&lt;br /&gt;Then, browse the page by going to http://[your_sharepoint_domain]/sitename/_layouts/[whatever_you_called_the_page].aspx&lt;br /&gt;&lt;br /&gt;Find the column and remove it.&lt;br /&gt;&lt;br /&gt;Thanks Michael!&lt;br /&gt;&lt;div style="border: 1px dashed #999999; padding: 3px; background-color: #F6F6F6; text-autospace:none; font-size:9.0pt; font-family:'Courier New'"&gt;&lt;br /&gt;&amp;lt;%@ Assembly Name=&amp;quot;Microsoft.SharePoint.ApplicationPages, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; Inherits=&amp;quot;Microsoft.SharePoint.WebControls.LayoutsPageBase&amp;quot;&lt;br /&gt;MasterPageFile=&amp;quot;~/_layouts/simple.master&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.SharePoint.ApplicationPages&amp;quot; %&amp;gt; &lt;br /&gt;&amp;lt;%@ Import Namespace=&amp;quot;Microsoft.SharePoint&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;SharePoint&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.WebControls&amp;quot;&lt;br /&gt;    Assembly=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;br /&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;Utilities&amp;quot; Namespace=&amp;quot;Microsoft.SharePoint.Utilities&amp;quot; &lt;br /&gt;    Assembly=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:Content ContentPlaceHolderID=&amp;quot;PlaceHolderPageTitleInTitleArea&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;    Delete Column&lt;br /&gt;&amp;lt;/asp:Content&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;asp:Content ContentPlaceHolderID=&amp;quot;PlaceHolderMain&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;script runat=&amp;quot;server&amp;quot; language=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;        protected override void OnLoad(EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            base.OnLoad(e);&lt;br /&gt;&lt;br /&gt;            if (!IsPostBack)&lt;br /&gt;            {&lt;br /&gt;                LoadLists();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        private void LoadLists()&lt;br /&gt;        {&lt;br /&gt;            ListName.DataSource = SPContext.Current.Web.Lists;&lt;br /&gt;            ListName.DataTextField = &amp;quot;Title&amp;quot;;&lt;br /&gt;            ListName.DataValueField = &amp;quot;ID&amp;quot;;&lt;br /&gt;            ListName.DataBind();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        protected void ListName_OnSelectIndexChanged(object source, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            SPList selectedList = SPContext.Current.Web.Lists[new Guid(ListName.SelectedValue)];&lt;br /&gt;            FieldName.DataSource = selectedList.Fields;&lt;br /&gt;            FieldName.DataTextField = &amp;quot;Title&amp;quot;;&lt;br /&gt;            FieldName.DataValueField = &amp;quot;ID&amp;quot;;&lt;br /&gt;            FieldName.DataBind();&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        protected void Delete(object sender, EventArgs e)    &lt;br /&gt;        {&lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                SPList selectedList = SPContext.Current.Web.Lists[new Guid(ListName.SelectedValue)];&lt;br /&gt;                SPField selectedField = selectedList.Fields[new Guid(FieldName.SelectedValue)];&lt;br /&gt;&lt;br /&gt;                selectedField.Delete();&lt;br /&gt;                selectedList.Update();&lt;br /&gt;&lt;br /&gt;                EventMessage.Text = &amp;quot;Column Deleted!&amp;quot;;&lt;br /&gt;            }&lt;br /&gt;            catch (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                EventMessage.Text = ex.Message;&lt;br /&gt;            }&lt;br /&gt;            finally&lt;br /&gt;            {&lt;br /&gt;                LoadLists();&lt;br /&gt;                FieldName.Items.Clear();&lt;br /&gt;            }         &lt;br /&gt;        }&lt;br /&gt;     &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;SharePoint:FormDigest runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;asp:Label ID=&amp;quot;EventMessage&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;List Name: &amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&lt;br /&gt;            &amp;lt;asp:DropDownList ID=&amp;quot;ListName&amp;quot; OnSelectedIndexChanged=&amp;quot;ListName_OnSelectIndexChanged&amp;quot; AutoPostBack=&amp;quot;true&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;Column Name:&amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&amp;lt;asp:DropDownList id=&amp;quot;FieldName&amp;quot; runat=server /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;        &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt;&amp;lt;asp:Button ID=&amp;quot;Button1&amp;quot; runat=server OnClick=&amp;quot;Delete&amp;quot; text=&amp;quot;Delete&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;/table&amp;gt; &lt;br /&gt;&amp;lt;/asp:Content&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-3779275936617354345?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/3779275936617354345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=3779275936617354345' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/3779275936617354345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/3779275936617354345'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/07/removing-corrupt-sharepoint-site-column.html' title='Removing corrupt SharePoint site column'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-6218206848636632199</id><published>2008-07-10T06:02:00.000-07:00</published><updated>2008-07-11T05:52:16.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Some of my favorite links</title><content type='html'>I decided to scour through &lt;a href="http://del.icio.us/das01d"&gt;my delicious links&lt;/a&gt; and pick out a few of my favorites.  I promise, this is the last time I use the "D" word for a while.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Blogs&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.jpboodhoo.com/"&gt;Jean-Paul S. Boodhoo&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/default.aspx"&gt;Scott Guthrie&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://aspadvice.com/blogs/ssmith/"&gt;Steven Smith&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Development&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://cruisecontrol.sourceforge.net/"&gt;Cruise Control&lt;/a&gt; - Continuous Build Server &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jetbrains.com/resharper/"&gt;Resharper&lt;/a&gt; - Productivity/Refactoring tool for Visual Studio&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; - My absolute favorite source control software&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt; - Explorer shell extension for Subversion (no more command-line!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.visualsvn.com/"&gt;VisualSVN&lt;/a&gt; - Visual Studio plug-in for Subversion&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.campwoodsw.com/sourcemonitor.html"&gt;SourceMonitor&lt;/a&gt; - Source code management &amp;amp; monitoring with trends&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nunit.org/"&gt;NUnit&lt;/a&gt; - Unit testing framework for .NET&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ncover.com/"&gt;NCover&lt;/a&gt; - Test coverage reporting tool for .NET&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ayende.com/projects/rhino-mocks/downloads.aspx"&gt;RhinoMocks&lt;/a&gt; - Mocking framework for code tests&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://aspalliance.com/CacheManager/Default.aspx"&gt;Cache Manager for ASP.NET&lt;/a&gt; - Tool to manage ASP.NET Cache&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlite.org/"&gt;SQLite&lt;/a&gt; - Stand-alone, file based database management system&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/sqlitebrowser/"&gt;SQLite Manager&lt;/a&gt; - Admin GUI for SQLite&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.sqlite.org/sqlite.html"&gt;SQLite3&lt;/a&gt; - Deployable .NET assembly to access SQLite database without having to deploy the executable&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.axosoft.com/products/ontime.aspx"&gt;AxoSoft OnTime&lt;/a&gt; - Project organization and management tool&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.planningpoker.com/"&gt;Planning Poker&lt;/a&gt; - Task estimation tool&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://subsonicproject.com/"&gt;Subsonic&lt;/a&gt; - Automated Data Access Layer generation framework&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dnrtv.com/"&gt;DNR TV&lt;/a&gt; - Dot-NET-Rocks videos&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.huddletogether.com/projects/lightbox/"&gt;Lightbox&lt;/a&gt; - Javascript/Ajax based photo display&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Debugging/Troubleshooting&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/0e18b180-9b7a-4c49-8120-c47c5a693683.aspx"&gt;Sysinternals Tools&lt;/a&gt; - Various troubleshooting tools from Microsoft&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fiddlertool.com/fiddler/"&gt;Fiddler&lt;/a&gt; - Internet Explorer Plug-in for web-based development troubleshooting&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/60"&gt;Web Developer Plugin for Firefox&lt;/a&gt; - FireFox Plug-in for web-based development troubleshooting&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.charlesproxy.com/"&gt;Charles Web Debugging Proxy&lt;/a&gt; - Proxy-based SSL sniffer for debugging secure websites&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;SEO&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.google.com/analytics"&gt;Google Analytics&lt;/a&gt; - Web traffic analytic tool&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.quirk.biz/searchstatus/"&gt;SearchStatus&lt;/a&gt; - Extension for Firefox and Mozilla that allows you to see how any and every website in the world is performing&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Miscellaneous&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://maps.google.com/"&gt;Google Maps&lt;/a&gt; - Amazing mapping tool&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://reader.google.com/"&gt;Google Reader&lt;/a&gt; - Great RSS reader&lt;/li&gt;&lt;li&gt;&lt;a href="http://virtuawin.sourceforge.net/"&gt;VirtuaWin&lt;/a&gt; - Virtual desktop manager&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bayden.com/SlickRun/"&gt;SlickRun&lt;/a&gt; - Incredibly efficient keyword based application launcher&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/projects/itlu2/"&gt;iTunes Library Updater&lt;/a&gt; - Synchronizes your iTunes library by monitoring folders&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.piclens.com/"&gt;PicLens&lt;/a&gt; - Easlily browse through website images for sites that support this plug-in&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.pricegrabber.com/"&gt;PriceGrabber&lt;/a&gt; &amp;amp; &lt;a href="http://www.nextag.com/"&gt;NexTag&lt;/a&gt; - Shopping websites&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ophcrack.sourceforge.net/"&gt;Ophcrack&lt;/a&gt; - Password cracking/recovery tool&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gdgsoft.com/gsplit/"&gt;GSplit&lt;/a&gt; - Utility to split and reassemble large files&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt;Virtual Clone Drive&lt;/a&gt; - Mount ISO files as drives in Windows&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-6218206848636632199?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/6218206848636632199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=6218206848636632199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6218206848636632199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6218206848636632199'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/07/some-of-my-favorite-links.html' title='Some of my favorite links'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-6133974225549681208</id><published>2008-07-09T12:15:00.000-07:00</published><updated>2008-07-09T12:15:00.415-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><title type='text'>Team collaboration through RSS and Del.icio.us</title><content type='html'>It is no secret that &lt;a href="http://densom.blogspot.com/2008/07/what-makes-delicious-such-useful-tool.html"&gt;I am a huge fan of Del.icio.us&lt;/a&gt;.  Now that a good portion of my co-workers are using Del.icio.us as their primary means of bookmarking, I decided to start subscribing to each of their accounts in order to sponge off they great discoveries they have made on the www.&lt;br /&gt;&lt;br /&gt;As it turns out, this is much more valuable than I had ever anticipated.  In addition to learn more about each other, I have been introduced to some truly amazing web content as a result.  If you are looking for ways to collaborate with your co-workers, I recommend giving this a shot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-6133974225549681208?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/6133974225549681208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=6133974225549681208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6133974225549681208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/6133974225549681208'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/07/team-collaboration-through-rss-and.html' title='Team collaboration through RSS and Del.icio.us'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-5379228912253447119</id><published>2008-07-08T12:10:00.000-07:00</published><updated>2008-07-08T13:43:33.754-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><title type='text'>What makes Del.icio.us such a useful tool</title><content type='html'>When &lt;a href="http://www.linkedin.com/pub/4/25A/5B6"&gt;Jeff Crist&lt;/a&gt; first introduced me to &lt;a href="http://del.icio.us/"&gt;Del.icio.us&lt;/a&gt;, I admit, I was very skeptical.  It just seemed like too much work to save a bookmark.  Having access to the general public's bookmarks did not seem very useful either.&lt;br /&gt;&lt;br /&gt;Enter the &lt;a href="http://del.icio.us/"&gt;Del.icio.us&lt;/a&gt; add-in buttons.  Not only can I conveniently create a new bookmark, the tool even suggests keywords.&lt;br /&gt;&lt;br /&gt;Here's my top 10 list of why I love Del.icio.us:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Never have to re-organize bookmarks&lt;/li&gt;&lt;li&gt;Can locate bookmarks much more quickly than conventional "Favorites" or "Bookmarks" built into browsers&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Can share my bookmarks between multiple computers&lt;/li&gt;&lt;li&gt;Can subscribe to other people's bookmarks&lt;/li&gt;&lt;li&gt;Convenient add-ins for popular browsers&lt;/li&gt;&lt;li&gt;Allows me to be lazy&lt;/li&gt;&lt;li&gt;Can save EVERYTHING!&lt;/li&gt;&lt;li&gt;Can send a bookmark to another Del.icio.us user with a single click&lt;/li&gt;&lt;li&gt;Can access my bookmarks from someone else's computer&lt;/li&gt;&lt;li&gt;Can provide tech support to family &amp;amp; friends by saying "go to my Del.icio.us and search for '[keyword]'"&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The one and only complaint I have about Del.icio.us is how difficult it can be to find the add in buttons once you have already registered for a free account.  You have to click on &lt;a href="http://del.icio.us/help/"&gt;"Help"&lt;/a&gt; and sift through a page full of links to locate them.  After doing this a few times, I am now trained on where to find them.  But, for future reference, here are links to the &lt;a href="http://del.icio.us/help/firefox/extensionnew"&gt;Firefox add-on&lt;/a&gt; and &lt;a href="http://del.icio.us/help/ie/extensionnew"&gt;Internet Explorer add-on&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Give it a try.  Once you get used to it, you won't be able to do without it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-5379228912253447119?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/5379228912253447119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=5379228912253447119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/5379228912253447119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/5379228912253447119'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/07/what-makes-delicious-such-useful-tool.html' title='What makes Del.icio.us such a useful tool'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4040403942542573445.post-3485244267424879145</id><published>2008-07-03T09:25:00.000-07:00</published><updated>2010-02-24T09:40:45.753-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>Removing PDF Security</title><content type='html'>Have you ever needed to copy information from a PDF file only to find out it has been copyright protected?  Well, I have.  Getting around this is easy, &lt;a href="http://labnol.blogspot.com/2007/01/how-to-open-password-protected-pdf.html"&gt;legal&lt;/a&gt;, and free, if you can find the right tool.&lt;br /&gt;&lt;br /&gt;Here's how to do it:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download and install &lt;a href="http://www.brothersoft.com/free-pdf-unlocker-download-206381.html"&gt;Freeware PDF Unlocker&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Drag-n-drop the locked PDF file onto the "PDF unlocker, drop PDF files here" shortcut it creates on your desktop&lt;/li&gt;&lt;li&gt;Voila...an unlocked version of the PDF file appears next to the original file with a "_noPW" appended to the original filename.&lt;/li&gt;&lt;/ol&gt;Other unsuccessful approaches I tried:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Print to PDF with Acrobat (carries over security)&lt;/li&gt;&lt;li&gt;Print to generic PostScript printer and use Distiller (carries over security)&lt;/li&gt;&lt;li&gt;Print to MS XPS format (carries over security)&lt;/li&gt;&lt;li&gt;Scan &amp;amp; &lt;a href="http://en.wikipedia.org/wiki/Optical_character_recognition"&gt;OCR&lt;/a&gt; (too much cleanup in most cases; &lt;a href="http://www.treehugger.com/"&gt;kills trees&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Screen-based OCR - such as &lt;a href="http://www.download.com/Screen-OCR/3000-2347_4-10296064.html"&gt;Screen OCR&lt;/a&gt; (poor performance)&lt;/li&gt;&lt;li&gt;Purchase $30 utility to crack the PDF password (I am too cheap, and too proud)&lt;/li&gt;&lt;/ul&gt;Hope this saves you some Google-ing!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4040403942542573445-3485244267424879145?l=densom.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://densom.blogspot.com/feeds/3485244267424879145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4040403942542573445&amp;postID=3485244267424879145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/3485244267424879145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4040403942542573445/posts/default/3485244267424879145'/><link rel='alternate' type='text/html' href='http://densom.blogspot.com/2008/07/pesky-pdf-security.html' title='Removing PDF Security'/><author><name>densom</name><uri>http://www.blogger.com/profile/12816429837568383726</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_evGDBmfcnrQ/S1ISamAwLPI/AAAAAAAAAEc/3i9RyVIfoTA/S220/dennissomerville-small.jpg'/></author><thr:total>0</thr:total></entry></feed>
