<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Intrepid Studios, Inc. Blog - Full Posts</title>
    <image>
      <url>http://www.intrepidstudios.com/lib/img/logo-white-bg.gif</url>
      <title>Intrepid Studios, Inc.</title>
      <link>http://www.intrepidstudios.com/</link>
    </image>
    <link>http://www.intrepidstudios.com/blog/</link>
    <description><![CDATA[Articles, tips & tricks, news, and more from Intrepid Studios. Topics include ASP.NET, jQuery, web design, and other web topics.]]></description>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/IntrepidStudios" /><feedburner:info uri="intrepidstudios" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <title><![CDATA[A C# PrettyJson Extension Method [Gist]]]></title>
      <description><![CDATA[<p>I wrote this for my <a href="https://github.com/kamranayub/.JSON">.JSON</a> module:</p> <script src="https://gist.github.com/846861.js"></script>  <p>Here is the <a href="https://gist.github.com/846861">gist page</a>, if it doesn't show up here.</p>  <p>It seems to work pretty well and it's pretty simple, as long as it receives valid JSON.</p>]]></description>
      <pubDate>Fri, 04 Mar 2011 00:18:56 GMT</pubDate>
      <guid isPermaLink="false">post-103</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/Ky6Khs7b7wQ/a-c-prettyjson-extension-method-gist.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2011/3/4/a-c-prettyjson-extension-method-gist.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Introducing .JSON, 500 lines of dynamically typed JSON goodness]]></title>
      <description><![CDATA[<p><a href="http://github.com/kamranayub/.JSON"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/Introducing-.JSON-a_B514/image.png" width="425" height="346" /></a></p>  <p>Ever wish you could work with JSON in .NET as you normally do with regular old objects? Well, now you can:</p>  <pre class="brush: csharp; gutter: false; toolbar: false;">string url = &quot;https://github.com/api/v2/repos/show/kamranayub&quot;;
dynamic[] repos = JsonService.GetFrom(url).repositories;

return View(repos.OrderByDescending(r =&gt; r.watchers);</pre>

<p><a href="http://github.com/kamranayub/.JSON">Enter .JSON</a><strong></strong>, a single file that holds 2 classes you can use to manipulate JSON in a dynamic way, either from web services, strings, or objects.</p>

<pre class="brush: csharp; gutter: false; toolbar: false;">dynamic json = Json.Parse(&quot;{'foo':'bar','baz':['a','b','c']}&quot;);

string foo = json.foo;
string[] = json.baz;</pre>

<p>Inspired by <a href="https://github.com/robconery/massive">Massive</a>, I decided this would be a useful tool for the community, seeing as all the existing JSON libraries for .NET are not exactly what I'd want when dealing with JSON data.</p>

<p>I wanted several things from this:</p>

<ul>
  <li>Ease of use </li>

  <li>LINQ </li>

  <li>Dynamically typed </li>

  <li>GET, POST, and authentication support </li>

  <li>One file </li>

  <li>Minimal dependencies (there's <strong>one</strong> for using Microsoft's built-in serialization/deserialization of JSON but it's GAC'd at least). </li>
</ul>

<p>I am happy to say that as it stands, I've accomplished all of them. If you spot bugs, open an issue or patch it. I plan to refactor it a little to support a Fluent interface, but other than that, it pretty much <em>just works</em>.</p>

<p>Happy JSON'ing!</p>]]></description>
      <pubDate>Sun, 27 Feb 2011 19:11:43 GMT</pubDate>
      <guid isPermaLink="false">post-102</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/X5dvl59EZCg/introducing-json-500-lines-of-dynamically-typ.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2011/2/27/introducing-json-500-lines-of-dynamically-typ.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[You calling me fake, boy-o? [Spam]]]></title>
      <description><![CDATA[<p>I saw this comment on my <a href="http://codecanyon.net/item/web-application-template-c/92966">Code Canyon item</a> today (editorialized):</p>  <blockquote>   <p><font style="background-color: #ffffff">You stole this from so-and-so's book, it's almost exactly the template they provide, blah blah, more false accusations.</font></p> </blockquote>  <p>I offer you, accusation-spewing fiend, some proof that I own this code:</p>  <p><a href="http://www.intrepidstudios.com/blog/images/You-calling-me-fake-boy-o-Spam_14C43/image.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/You-calling-me-fake-boy-o-Spam_14C43/image_thumb.png" width="425" height="235" /></a></p>  <p>Is their template laid out exactly like this? Doubtful considering <strong>I made it</strong>.</p>  <p><a href="http://www.intrepidstudios.com/blog/images/You-calling-me-fake-boy-o-Spam_14C43/image_3.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/You-calling-me-fake-boy-o-Spam_14C43/image_thumb_3.png" width="425" height="331" /></a></p>  <p><strong>Yep, looks like my code alright…</strong></p>    <p><a href="http://www.intrepidstudios.com/blog/images/You-calling-me-fake-boy-o-Spam_14C43/image_4.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/You-calling-me-fake-boy-o-Spam_14C43/image_thumb_4.png" width="344" height="768" /></a></p>  <p><strong>Hey look, API documentation for everything I made?</strong></p>  <p>I don't know what template you were looking at, but I'll give you $1000 that it doesn't have any of those functions. All of these helpers have been functions I've made in the past during my years as a programmer. Hell, I probably can dig up a lot more.</p>  <p>Anyway, I don't need to prove myself to you. It's not fake, I worked on it for about a week, and I should really update it, thanks for reminding me. It's just a template that helps people get up and running a bit faster during development, the helpers are a useful add-on.</p>  <p>If you don't like it, use <a href="http://www.sharparchitecture.net/">Sharp Architecture</a>. It's probably more up-to-date now, anyway! I have been considering taking my template off Code Canyon anyway in favor of creating a new, free template on GitHub and keeping just packaged snippets to being sold. Mine is woefully out-of-date with best practices (LINQ to SQL??? No DI containers??? The horror!).</p>  <p>Good day to you, sir.</p>]]></description>
      <pubDate>Sun, 27 Feb 2011 05:54:40 GMT</pubDate>
      <guid isPermaLink="false">post-101</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/OewMgWIxYgI/you-calling-me-fake-boy-o-spam.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2011/2/27/you-calling-me-fake-boy-o-spam.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Making jQuery Play Nice with XML [Project]]]></title>
      <description><![CDATA[<p><strong>tl;dr</strong> I've made a plugin for jQuery that makes it easy to work with XML natively in jQuery. Get the code from my <a href="https://github.com/kamranayub/jQuery-XML-Helper">GitHub</a>.</p>  <p>I've been working on a project that has required me to parse and manipulate XML on the client-side. Since I was using jQuery on the project, it made sense to leverage its cross-platforminess and easy coding style to manipulate the XML.</p>  <p>Unfortunately, jQuery hasn't really buried its claws very deep in the XML realm because if you've tried <em>doing</em> anything with XML you've probably run into issues. If you don't care about IE, you'll probably have less issues, but in my case, I <strong>had</strong> to support IE and even with vanilla jQuery, some things still don't work in other browsers.</p>  <p>In plain old Javascript, you can manipulate XML in IE using ActiveX and the <a href="http://msdn.microsoft.com/en-us/library/ms766487%28v=VS.85%29.aspx">MSXML</a> object. However, it's IE-specific and it lacks the ease of use of jQuery. I wanted a way to leverage jQuery and also support multiple browsers.</p>  <p>So, I've created a helper function (plugin, really?) that helps jQuery deal with the XML and any nuances it has (such as text vs. CDATA nodes, etc.).</p>  <p>You use it just like you normally would with jQuery with one exception:</p>  <pre class="brush: js; gutter: false; toolbar: false;">var $xml = $.xml(&quot;&lt;your_xml_string /&gt;&quot;);</pre>

<p>You have to use the function I created to instantiate it.</p>

<p>Other than that, I've tried to make it as seamless as possible, though I have yet to test every use case. I got it far enough that it works for my project, even doing some advanced selectors and manipulation. <strike>Webkit has a bug with the appending but I'm hopeful when I sit down and look at it it'll be an easy fix.</strike> I seem to have fixed the Webkit bugs.</p>

<p>There are two XML-specific functions you can use when dealing with my plugin as well:</p>

<pre class="brush: js; gutter: false; toolbar: false;">// 1. .cdata()

// Get CDATA, which will return non-encoded data
$xml.find(&quot;mynode&quot;).cdata();

// .html() has been redirected to use CDATA on XML documents
$xml.find(&quot;mynode&quot;).html();

// To set CDATA, use the cdata function
$xml.find(&quot;mynode&quot;).cdata(&quot;&lt;strong&gt;html&lt;/strong&gt;&quot;);

// 2. .xml()

// Use .xml() to get the outer XML of the element
var wholeDocument = $xml.xml();

var nodeXml = $xml.find(&quot;mynode&quot;).xml();</pre>

<p>I've posted it on GitHub for a reason. I don't exactly plan to add anything extra unless it has a bug I directly deal with in my project (after all, I made it to get the job done). However, <strong>you</strong> can totally make it better if you feel like it and I'll merge your changes to the trunk. Fork it, pull it, whatever, I welcome any additions and help.</p>]]></description>
      <pubDate>Fri, 25 Feb 2011 04:32:17 GMT</pubDate>
      <guid isPermaLink="false">post-100</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/jg0ZPuBAvVA/making-jquery-play-nice-with-xml-project.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2011/2/25/making-jquery-play-nice-with-xml-project.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Site Updates and Bug Fixes (1/30/2011) [News]]]></title>
      <description><![CDATA[<p>I made some updates today to the site.</p>    <p><strong>Features</strong></p>  <ul>   <li>Added <a href="http://en.gravatar.com/">Gravatar</a> support for comments. Incredibly <a href="http://en.gravatar.com/site/implement/images/">easy to do</a> and really makes them pop!      <br />      <br /><a href="http://intrepidstudios.com/blog/images/Site-Updates-and-Bug-Fixes-News_A029/image.png"><img style="border-bottom: medium none; border-left: medium none; margin: ; padding-left: ; padding-right: ; display: inline; border-top: medium none; border-right: medium none; padding-top: " title="image" alt="image" src="http://intrepidstudios.com/blog/images/Site-Updates-and-Bug-Fixes-News_A029/image_thumb.png" width="380" height="234" /></a>      <br /></li>    <li>Added RSS for comments on blog posts so you can keep track of responses (instead of .aspx for the post, use .rss, or subscribe using the browser functionality or the link above the comments)     <br />      <br /><img style="border-bottom: ; border-left: ; margin: ; display: inline; border-top: ; border-right: " title="image" alt="image" src="http://intrepidstudios.com/blog/images/Site-Updates-and-Bug-Fixes-News_A029/image_3.png" width="214" height="97" />      <br />      <br /><img style="border-bottom: ; border-left: ; margin: ; display: inline; border-top: ; border-right: " title="image" alt="image" src="http://intrepidstudios.com/blog/images/Site-Updates-and-Bug-Fixes-News_A029/image_4.png" width="319" height="106" /></li> </ul>  <p><strong>Bug Fixes</strong></p>  <ul>   <li>URL parsing in comments fixed (case sensitivitity issue)</li>    <li>Converted UTC dates for posts back into local (server) time</li>    <li>Some blog API fixes</li> </ul>  <p>I have set up Web Deploy on Arvixe and it really makes it easy to push these kinds of updates out.</p>]]></description>
      <pubDate>Sun, 30 Jan 2011 17:26:18 GMT</pubDate>
      <guid isPermaLink="false">post-99</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/Yt7paT4e-V8/site-updates-and-bug-fixes-news.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2011/1/30/site-updates-and-bug-fixes-news.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[It's About Time I Let You Fix My Bugs [Social Coding]]]></title>
      <description><![CDATA[<p>Over the past months, I have gotten some feedback on some of my projects that there are bugs, feature requests, etc. etc. and while I am a busy person, some of it is that I am just lazy :)</p>  <p><a href="https://github.com/kamranayub"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/Its-About-Time-I-Let-You-Fix-My-Bugs-Soc_1434E/image.png" width="425" height="242" /></a></p>  <p>So, that's why <a href="https://github.com/kamranayub" target="_blank">I am leaving it up to you if you want</a>! You can pull my GitHub repos to your local computer and patch them. If you push them to your fork, I may even pull them into the main branch if your patches are awesome.</p>  <p>I've added:</p>  <ul>   <li>jQuery RTE</li>    <li>Image Grid Creator</li>    <li>Just Another Carousel</li> </ul>  <p>I am also thinking about releasing my WPF Black Jack application for anyone to fix. It's like 6 years old now but still pretty neat.</p>]]></description>
      <pubDate>Fri, 14 Jan 2011 05:03:01 GMT</pubDate>
      <guid isPermaLink="false">post-98</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/CK6Ye_QLuvI/its-about-time-i-let-you-fix-my-bugs-social-c.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2011/1/14/its-about-time-i-let-you-fix-my-bugs-social-c.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Happy New Year! Intrepid Studios Has Been Re-designed [Rejoice]]]></title>
      <description><![CDATA[<p><a href="http://www.intrepidstudios.com/blog/images/2319413bbe16_10D95/image_4.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/2319413bbe16_10D95/image_thumb_3.png" width="425" height="336" /></a></p>  <p>Remember way back <a href="http://intrepidstudios.com/blog/2010/4/2/new-version-of-intrepid-studios-en-route-stay.aspx">when I posted about the upcoming redesign</a>? It’s here! I figured it was a good time to spend a couple days and finish up the last few modifications to the site.</p>  <p>One of the big features I added was RSS support for many different types of things like projects, releases, tags, blog posts, designs, etc. You can keep up-to-date pretty easily now.</p>  <p>I don’t want to spoil anything for you, so just have a look around!</p>  <p>Other than this redesign, I hope to work more on my Code Canyon projects and release some new material. I may also play with some Android application development.</p>  <p>If you’ve been wondering what I’ve been up to, I currently work full-time at General Mills as a programmer analyst. I won’t be taking on any huge projects because of that, but if you have a small one, feel free to <a href="http://intrepidstudios.com/contact.aspx">pass it by me</a>.</p>]]></description>
      <pubDate>Tue, 11 Jan 2011 04:33:40 GMT</pubDate>
      <guid isPermaLink="false">post-97</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/eXIgyfWPHqQ/happy-new-year-intrepid-studios-has-been-re-d.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2011/1/11/happy-new-year-intrepid-studios-has-been-re-d.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Debug Your .NET Web Project With IIS Express [Tips & Tricks]]]></title>
      <description><![CDATA[<p><strong>Update:</strong> IIS Express has been <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=abc59783-89de-4adc-b770-0a720bb21deb">officially released</a> as a standalone installation.</p>  <p>For those of us too impatient to wait for Visual Studio SP1 to natively support IIS Express, I've done some digging and found a way to [fairly] easily setup a debugging environment for IIS Express and VS 2010 (should work for VS 2008 also, though!). This assumes you are at least an intermediate user of .NET/IIS and Visual Studio.</p>  <h3>Prerequisites</h3>  <ol>   <li>Download and <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=abc59783-89de-4adc-b770-0a720bb21deb">install IIS Express</a>.</li>    <li>Be using Visual Studio 2010 or 2008 and a web project to debug. </li> </ol>  <h3>Steps to Setup IIS Express</h3>  <p>It's actually quite simple to setup IIS express. Once IIS Express is done installing, go to &quot;My Documents\IISExpress8\config&quot;.</p>  <p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image_thumb.png" width="308" height="223" /></a> </p>  <p>Right-click &quot;applicationhost.config&quot; and open in your favorite text editor.</p>  <p>Go to line 145. Notice the &lt;sites&gt; element. This is where we can configure our website for IIS Express. Copy the site that is already there and add another entry below it. </p>  <p>Remove the &quot;autoStart&quot; attribute for the first site.</p>  <p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image_3.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image_thumb_3.png" width="720" height="318" /></a> </p>  <p>This should be self-explanatory, but in case it isn't, we are setting up a root site in IIS:</p>  <ul>   <li>&quot;name&quot; is what you want the website name to be. This can be whatever you want. </li>    <li>&quot;id&quot; is just the ID of the site for IIS Express. Increment it. </li>    <li>&quot;physicalPath&quot; is the directory your site files are located in, i.e. the root folder of the website. Mine is below:<a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image_4.png">        <br />        <br /><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image_thumb_4.png" width="589" height="190" /></a> </li>    <li>&quot;bindingInformation&quot; is where you set the host name and port you want the site to run in. This can be whatever you need it to be, perhaps if you have a static port set on your VS project. </li>    <li>&quot;applicationPool&quot; is the app pool to run under. <strong>This is important!</strong> If your site is .NET 4, you can use &quot;Clr4IntegratedAppPool&quot;. If you are .NET 3.5 or below, you <strong>must</strong> use &quot;Clr2IntegratedAppPool&quot;. Otherwise you will get config errors. </li> </ul>      <p>Let's test it out! Save the config file and close it.</p>  <p>Go to Run… and type in the following command:</p>  <p><strong>&quot;C:\Program Files (x86)\Microsoft WebMatrix\iisexpress.exe&quot; /site:{YOUR_SITE_NAME}</strong></p>  <p>Replace &quot;{YOUR_SITE_NAME}&quot; with the name you gave the site in the config file above. If you are on 32-bit windows, omit the &quot; (x86)&quot; part after Program Files.</p>  <p><strong>Side Note:</strong> You can get a list of command-line switches by going into Command Prompt and typing in &quot;iisexpress /?&quot;. You'll notice you can also directly launch any site by physical path and desired port.</p>  <p>Now open your browser and browse to the URL of your site! Voila, it should work (or not, in my case… but that's because this isn't my dev machine):</p>  <p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image_5.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/image_thumb_5.png" width="681" height="282" /></a></p>  <p>You might want to create a shortcut on your desktop to the run command I had you type in earlier. It will make it a lot easier to start IIS Express when you're developing. </p>  <p><strong>Note:</strong> Now that you've set up this web site, you could manage it from the WebMatrix GUI if you prefer that method for more advanced settings.</p>    <h3>Setting up Visual Studio 2010/2008</h3>  <p>Go ahead and open up your solution in Visual Studio.</p>  <p>Right-click on your web project and go to Properties, then the Web tab. Click the &quot;Start URL:&quot; radio button and put in the path to your site:</p>  <p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage.jpg"><img style="display: inline" title="SnipImage" alt="SnipImage" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage_thumb.jpg" width="646" height="310" /></a> </p>  <p>Then below it, click the &quot;Use Custom Web Server:&quot; radio button and again put the path to the URL:</p>  <p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage2.jpg"><img style="display: inline" title="SnipImage (2)" alt="SnipImage (2)" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage2_thumb.jpg" width="720" height="164" /></a> </p>  <p>Next, <strong>and this is important</strong>, uncheck everything below it. Visual Studio will try to attach to the non-existent IIS server otherwise and not let you debug. We're sort &quot;tricking&quot; it into using IIS Express.</p>  <p>Save and close the project's properties. Now hit Alt-F8 to open up Macro Explorer. Right-click on the My Macros –&gt; Module 1 node and click &quot;Add Macro.&quot;</p>  <p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/macro_explorer.png"><img style="display: inline" title="macro_explorer" alt="macro_explorer" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/macro_explorer_thumb.png" width="303" height="192" /></a> </p>  <p>Use the following macro:</p>  <p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage3.jpg"><img style="display: inline" title="SnipImage (3)" alt="SnipImage (3)" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage3_thumb.jpg" width="593" height="194" /></a> </p>      <p>Source:</p>  <pre class="brush: vb; toolbar: false;">Public Sub AttachToIISExpress()
    For Each process As EnvDTE.Process In DTE.Debugger.LocalProcesses
        If (process.Name.IndexOf(&quot;iisexpress.exe&quot;) &lt;&gt; -1) Then
            process.Attach()
        End If
    Next
End Sub</pre>

<p>&#160;</p>

<p>That is it. The process to follow is:</p>

<ol>
  <li>Start IIS Express using the run command/shortcut above. </li>

  <li>Hit F5 to start debugging. Visual Studio will enter debug mode and start the site in a browser window. </li>

  <li>Next, run the macro we created to attach to the IISExpress server. </li>

  <li>Voila, you now can debug not only your solution's code but also any scripts loaded by the browser! </li>
</ol>

<p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage4.jpg"><img style="display: inline" title="SnipImage (4)" alt="SnipImage (4)" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage4_thumb.jpg" width="720" height="58" /></a> </p>



<h3>Setting up a Keyboard Shortcut</h3>

<p>If you're like me, right-clicking and running the macro is too much work! So let's create a keyboard shortcut, shall we? How about 'F4'?</p>

<p>Go to Tools –&gt; Customize… then click the &quot;Commands&quot; tab. Select &quot;Debug&quot; in the &quot;Menu bar:&quot; drop-down.</p>

<p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage5.jpg"><img style="display: inline" title="SnipImage (5)" alt="SnipImage (5)" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage5_thumb.jpg" width="533" height="552" /></a> </p>

<p>Click &quot;Add Command…&quot; and click &quot;Macros&quot; in the left-hand list. Click the IISExpress macro.</p>

<p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage6.jpg"><img style="display: inline" title="SnipImage (6)" alt="SnipImage (6)" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage6_thumb.jpg" width="583" height="366" /></a> </p>

<p>Now just rearrange the list to your liking. You can click the newly added command and then click Modify Selection –&gt; Rename.</p>

<p>Click Close and close the customize dialog.</p>

<p>Go to Tools –&gt; Options. Click Keyboard in the left-hand list. Start typing &quot;view.prop&quot; to find the Properties Window keyboard shortcut (already assigned to F4). Hit Remove to get rid of the F4 shortcut.</p>

<p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage7.jpg"><img style="display: inline" title="SnipImage (7)" alt="SnipImage (7)" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage7_thumb.jpg" width="720" height="420" /></a> </p>

<p>Now type in &quot;iis&quot; to filter down to the IIS macro. In the shortcut keys box, hit F4, then Assign.</p>

<p><a href="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage8.jpg"><img style="display: inline" title="SnipImage (8)" alt="SnipImage (8)" src="http://www.intrepidstudios.com/blog/images/Deb.NETWebProjectWithIISExpressTipsTrick_C3C4/SnipImage8_thumb.jpg" width="720" height="418" /></a> </p>

<p>All done! Now instead of right-clicking the macro every time, you only need to hit F4 after you hit F5.</p>

<h3>Closing Comments</h3>

<p>Remember that this is just a temporary workaround until Scott and his ninja team release a hotfix for Visual Studio to enable native IIS Express integration. I needed this functionality this weekend while working on a project (due to how Cassini handled URL requests and because attaching to IIS 7 for debugging was not working for me).</p>

<p>I hope this helps some other fellow curious developers. As always, leave a comment if you have a suggestion to streamline this even more (I attempted to wrap the whole debug process into one macro with no success… maybe someone smarter than me can!).</p>]]></description>
      <pubDate>Sun, 11 Jul 2010 18:55:53 GMT</pubDate>
      <guid isPermaLink="false">post-95</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/TurPNp-sh0Y/debug-your-net-web-project-with-iis-express-t.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/7/11/debug-your-net-web-project-with-iis-express-t.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[You Say Goodbye WebHost4Life, I Say Hello Arvixe]]></title>
      <description><![CDATA[<p><a href="http://arvixe.com" target="_blank"><img style="margin: 0px 0px 5px 5px; display: inline" title="image" alt="image" align="right" src="http://www.intrepidstudios.com/blog/images/YouSayGoodbyeWebHost4LifeISayHelloArvixe_8D1A/image.png" width="291" height="69" /></a> Well, I guess <em>I'm</em> the one saying goodbye to Webhost4life. Yes, they had a decent run but all in all their service is not as good as I thought it was. Bar not being able to use the new control panel for <em>months</em> the site was slow and I was itching to convert the new Intrepid Studios to .NET 4.</p>  <p>I made the decision to switch to Arvixe after I couldn't get sub-domains to work on the new Webhost4life platform for the life of me. Their control panel was just abominably slow and didn't allow the control I needed.</p>  <p>I googled &quot;top rated asp.net web hosts&quot; and Arvixe was one of the top on the list. I searched other rating sites just to be safe. While their site was nothing much to look at in terms of design, their feature list was quite impressive (ahem, multiple MSSQL databases? Score!). It took me about 5 minutes to setup my account, another 5 to backup and restore my database to their server without a hitch, and not very long to transfer all my existing files over via FTP. I set up my mail accounts (and I use POP3, so I didn't worry about losing any mail) and pointed my domain's DNS name records to their server. All done in the span of a couple hours.</p>  <p>I must say, I am pretty pleased with the experience. Not only that, my site is way faster… and will be even better once I release the new site (it's coming soon!).</p>  <p>No host is perfect and I'm having some trouble setting up password protected folders but for now I use Forms authentication so it's not too big of a deal.</p>]]></description>
      <pubDate>Tue, 04 May 2010 15:03:57 GMT</pubDate>
      <guid isPermaLink="false">post-94</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/ViFgMYyDkaY/you-say-goodbye-webhost4life-i-say-hello-arvi.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/5/4/you-say-goodbye-webhost4life-i-say-hello-arvi.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[MinneWebCon 2010 – Informal User Testing]]></title>
      <description><![CDATA[<p>I just finished up with attending this year's <a href="http://minnewebcon.umn.edu">MinneWebCon</a>. I was excited because it was my first time being apart of a presentation at such a large event and I hope it's not the last. Our topic was about informal user testing and how that helps drive design and creating a usable application. The main speaker was my old supervisor, <a href="http://zachstronaut.com">Zach Johnson</a>, and then those of us who currently work at Student Unions &amp; Activities: Ken Loomis, Ethan Poole, and me.</p>  <h3>Presentation</h3>  <div style="width: 425px" id="__ss_3701980"><strong style="margin: 0px 0px 4px; display: block"><a title="Improve User Experience with Informal User Testing (Case Study)" href="http://www.slideshare.net/zachstronaut/improve-user-experience-with-informal-user-testing-case-study">Improve User Experience with Informal User Testing (Case Study)</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mwc2010f-100412152638-phpapp02&amp;rel=0&amp;stripped_title=improve-user-experience-with-informal-user-testing-case-study" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mwc2010f-100412152638-phpapp02&amp;rel=0&amp;stripped_title=improve-user-experience-with-informal-user-testing-case-study" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>    <div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/zachstronaut">zachstronaut</a>.</div> </div>]]></description>
      <pubDate>Mon, 12 Apr 2010 22:32:47 GMT</pubDate>
      <guid isPermaLink="false">post-93</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/3iAhr-fx4m0/minnewebcon-2010-informal-user-testing.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/4/12/minnewebcon-2010-informal-user-testing.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[New Version of Intrepid Studios En Route [Stay Tuned]]]></title>
      <description><![CDATA[<p>We are our own worst critics and I am no exception to that. Since I last released this initial version of Intrepid Studios a year or two ago, I've always been unhappy with a few parts of the site and some of the design in general. This last week, I've been motivated to change that and fix things around here.</p>  <p>This last new year, one of my resolutions was to become more a part of the developer community whether that included more articles, more projects, contributing to projects, etc. Unfortunately, school and work interfere with that but I have made progress. Recently I've released a <a href="http://codecanyon.net/user/kayub/portfolio">couple projects on CodeCanyon</a> (the &quot;app store&quot; for code snippets) and I've undertaken redesigning Intrepid Studios. I also have a few drafts of articles to submit when I get around to them.</p>  <p>Anyway, this post is a sneak peek at some of the new changes coming to the site. Hopefully, they are much better than what's currently on here.</p>  <h3>Give Me Feedback</h3>  <p>Before I show you the preview, I wanted you to know you can give me direct feedback on different UI designs at my public <a href="http://kamranayub.webslideapp.com/22/project/69/rev/93/">WebSlide revision</a>. Click on the comments link in the bottom right corner to post a comment to a specific slide.</p>  <h3>Stay Connected and Up-to-Date</h3>  <p>Right now, there's no easy way to keep up-to-date on my activity besides following the blog. Even then, I don't record everything I do here… to fix this, I've added RSS feeds to almost every aspect of the site including: all project activity, individual project activity, individual post activity, blog post archives, tags, and design activity. If you care, I created a neat little RssService that lets me transform (virtually) any LINQ query into an RSS feed using some basic mapping. Makes it a snap to create new RSS feeds for the site.</p>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image.png"><img style="display: inline" title="All Project Activity" alt="All Project Activity" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb.png" width="240" height="186" /></a> <a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_3.png"><img style="display: inline" title="Individual Project Activity" alt="Individual Project Activity" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_3.png" width="240" height="184" /></a> </p>  <p>I've also added RSS icons to various places of interest, as well as tied into the browser address bar like most sites do.</p>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_4.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_4.png" width="232" height="279" /></a> <a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_5.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_5.png" width="240" height="141" /></a> </p>  <h3>Major UI Overhaul</h3>  <p>Besides many back-end improvements, I've also spent a lot of time redesigning major portions of the site. I've also put some tender loving care into revamping parts of the site that currently aren't very… pretty (<font size="1">*cough*A lot of it*cough*</font>). The reason some pages were left behind was priority and general laziness. It's high time to fix that! Here are some previews:</p>  <h4>Main Designs Page</h4>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_6.png"><img style="display: inline" title="Main Designs Page" alt="Main Designs Page" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_6.png" width="720" height="281" /></a> </p>  <h4>Individual Design Pages</h4>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_7.png"><img style="display: inline" title="Individual Design Page" alt="Individual Design Page" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_7.png" width="720" height="443" /></a> </p>  <h4>Main Project Page</h4>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_8.png"><img style="display: inline" title="Main Project Page" alt="Main Project Page" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_8.png" width="720" height="242" /></a> </p>  <h4>Individual Project Page</h4>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_9.png"><img style="display: inline" title="Individual Project Page" alt="Individual Project Page" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_9.png" width="720" height="361" /></a> </p>  <h4>Blog Homepage</h4>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_10.png"><img style="display: inline" title="Blog Homepage" alt="Blog Homepage" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_10.png" width="720" height="333" /></a> </p>  <h4>Individual Blog Posts and Comment Section</h4>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_11.png"><img style="display: inline" title="Individual Blog Posts" alt="Individual Blog Posts" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_11.png" width="720" height="317" /></a> </p>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_12.png"><img style="display: inline" title="Comments" alt="Comments" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_12.png" width="720" height="361" /></a> </p>  <h4>Footer</h4>  <p><a href="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_13.png"><img style="display: inline" title="Footer" alt="Footer" src="http://www.intrepidstudios.com/blog/images/NewVersionofIntrepidStudiosEnRouteStayTu_FC79/image_thumb_13.png" width="720" height="170" /></a> </p>  <h3>   <p></p>    <p></p>    <p></p>    <p></p>    <p></p>    <p></p>    <p></p>    <p></p>    <p></p>    <p></p>    <p></p> No Images, Oh My!</h3>  <p>I am also a big proponent of standards-based web design. That's why all those cool transparency, shadow, layered backgrounds, and everything else except icons are <strong>all CSS-based</strong>. Yes, even those rotated tags (CSS 2D Transforms FTW!). Okay, the tags have one PNG background to them for that tag effect but still! The words in the background aren't CSS-based but I am thinking of it, since it is only Century Gothic.</p>  <h3>When's It Due?</h3>  <p>Soon. I just need to revamp a few more parts of the site and it will be ready to go live. Sometime this month I'll release it and I will also go through the improvements in a comprehensive blog post, letting you inside my mind and explaining why I made some changes that I did.</p>  <p>Until then, share your feedback from these glimpses, good or bad. I always look at feedback on my designs.</p>]]></description>
      <pubDate>Fri, 02 Apr 2010 22:59:09 GMT</pubDate>
      <guid isPermaLink="false">post-92</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/mseIq8gu2bo/new-version-of-intrepid-studios-en-route-stay.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/4/2/new-version-of-intrepid-studios-en-route-stay.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Jumpstart Your .NET Web Application Development - $12 [Marketplace]]]></title>
      <description><![CDATA[<p>I've been exploring the <a href="http://codecanyon.net" target="_blank">CodeCanyon</a> marketplace for a little while now and I am pretty impressed. It's an opportunity to monetize some ideas I've had and to gain some portfolio work and possibly more customers. I've been a proponent of free software (I provide some on this site) so I won't be selling everything I make, but I think it's nice to put some product out there as a web designer.</p>  <p><a href="http://codecanyon.net/item/web-application-template-c-net-4/92966"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/Jum.NETWebApplicationDevelopment12Market_ECA9/image.png" width="590" height="300" /></a> </p>  <p>I've just released my <strong><a href="http://codecanyon.net/item/web-application-template-c-net-4/92966" target="_blank">Web Application Template</a></strong> package for .NET web applications (and it's only <strong>$12</strong>). It's basically what I would prefer to start with every time I work on a new web site… in effect, a &quot;Web App in a Box.&quot;</p>  <p>It supports .NET 3.5 and .NET 4 and offers a slew of features (ELMAH integration, compression/minification of CSS and JS, etc), the to-do list ever growing. You can be sure I'll keep it updated because I will be using it myself! I'm already using it for a new version of Intrepid Studios (not a total redesign, more enhancement-like).</p>  <p>I was sick and tired of all my projects using different file/folder/solution layouts and having to duplicate code across them all the time. I wanted a way to easily get started without spending time configuring everything. While I was working on it, I thought it would be useful for other developers. Will it really save you six hours? Well, it took me a solid 6+ hours of development time to set it up… and then some. Six is a safe bet, possibly more if you aren't that familiar with some of the components I integrated.</p>  <p>As always, let me know if there are bugs and improvements you think of.</p>  <p>You can also check out my previous CodeCanyon release, <a href="http://codecanyon.net/item/google-picasa-gallery-api/88942" target="_blank">Google Picasa Gallery + API</a>.</p>]]></description>
      <pubDate>Fri, 02 Apr 2010 21:50:14 GMT</pubDate>
      <guid isPermaLink="false">post-91</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/OeDFqxsY_Uw/jumpstart-your-net-web-application-developmen.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/4/2/jumpstart-your-net-web-application-developmen.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Making UrlRewritingNet Ignore URLs [Fix]]]></title>
      <description><![CDATA[<p>I recently updated the Intrepid Studios site back-end to include ELMAH, the error reporting module. ELMAH is great and works great, except that it doesn't play nice with UrlRewritingNet.</p>  <p>There is a <a href="http://stackoverflow.com/questions/2328059/using-elmah-and-urlrewritingnet-together" target="_blank">StackOverflow discussion</a> about this with a workaround that ended up not using UrlRewritingNet at all unfortunately. In addition, there's a <a href="http://csharpin.blogspot.com/2009/03/using-urlrewritingnet-and-elmah.html" target="_blank">detailed post</a> about doing some voodoo and mixing potions to get UrlRewritingNet to work. Note that you can simply remove the <var>defaultPage</var> attribute on the <var>urlrewritingnet</var> config section to solve this, but it may cause other unintended consequences.</p>  <p>I thought to myself, there's gotta be a better way! And there is (well, it's a <em>hack</em> so I suppose it is not entirely the best, but it is the simplest so far). I simply added in a few lines of code to the UrlRewritingNet source code to allow you to ignore URLs. Without knowing much about how the component works, this is an easy &quot;patch.&quot; </p>  <h3>Download the Modified Binaries</h3>  <p>For those that don't care how I did it, I have uploaded the modified binaries you'll need to replace in your application. See below for an explanation of how to use it.</p>  <ul>   <li><a rel="outbound: urlrewritingnet-download" href="/files/urlrewritingnet-modified-by-kayub-v0.1.zip" target="_blank">Download the modified binaries</a> (v0.1) – 3/26/2010</li> </ul>  <h3>Getting the Source</h3>  <p>Head over to the <a href="http://www.urlrewriting.net/159/en/downloads/downloads.html" target="_blank">Downloads</a> section of UrlRewritingNet to get the source code.</p>  <p>Extract the files to a directory of your choice.</p>  <p>I opened and converted the solution with VS 2010, but you can use anything you wish.</p>  <h3>Modifying the Files</h3>  <p>We will modify 3 files. Follow along below.</p>  <p>In <strong>WebRewriteOption.cs</strong>, add another value to the enumeration like so:</p>  <pre class="brush: csharp; gutter: false; toolbar: false;">[Flags] 
public enum RewriteOption
{
    Application = 0x00,
    Domain = 0x01,
    None = 0x02 // KR: Ignore the URL
}</pre>

<p>In <strong>WebUrlRewriteModule.cs</strong>, around line 212, add the following underneath <code>if (rewrite.IsRewrite(requestUrl))</code>:</p>

<pre class="brush: csharp; gutter: false; toolbar: false;">//KR: ignore url
if (rewrite.Rewrite == RewriteOption.None)
{
    rewritten = true; // sure, we totally &quot;rewrote&quot; it, heh.
    break;
}</pre>

<p>In <strong>urlrewritingnet.xsd</strong>, change the <var>xs:simpleType</var> for RewriteOption to be:</p>

<pre class="brush: xml; gutter: false; toolbar: false;">&lt;xs:simpleType name=&quot;RewriteOption&quot;&gt;
  &lt;xs:restriction base=&quot;xs:NMTOKEN&quot;&gt;      
    &lt;xs:enumeration value=&quot;Application&quot; /&gt;
    &lt;xs:enumeration value=&quot;Domain&quot; /&gt;
    &lt;xs:enumeration value=&quot;None&quot; /&gt; &lt;!-- KR Ignore URL --&gt;
  &lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;</pre>

<p>Finally, in the same file, change the <code>use=&quot;required&quot;</code> attribute of <var>destinationUrl</var> to be optional, like so:</p>

<pre class="brush: xml; gutter: false; toolbar: false;">&lt;xs:attribute name=&quot;destinationUrl&quot; type=&quot;xs:string&quot; use=&quot;optional&quot; /&gt;</pre>

<p>Build the solution in Debug/Release and copy over the new DLLs to your project. Voila, all done! Now all you need to do to NOT rewrite a URL is the following:</p>

<pre class="brush: xml; gutter: false; toolbar: false;">&lt;add name=&quot;Elmah&quot;
  virtualUrl=&quot;^~/elmah.axd(.*)$&quot;
  rewrite=&quot;None&quot;
/&gt;</pre>

<p>I've tested it with Intrepid Studios and it seems to work just fine.</p>

<p>As always, feedback and improvements are much appreciated!</p>]]></description>
      <pubDate>Sat, 27 Mar 2010 04:02:34 GMT</pubDate>
      <guid isPermaLink="false">post-90</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/a-UdxYoPvZY/making-urlrewritingnet-ignore-urls-fix.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/3/27/making-urlrewritingnet-ignore-urls-fix.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Update: jQuery Rich Text Editor [New Version]]]></title>
      <description><![CDATA[<p><a href="http://www.intrepidstudios.com/blog/images/UpdatejQueryRichTextEditorNewVersion_D559/image.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/UpdatejQueryRichTextEditorNewVersion_D559/image_thumb.png" width="368" height="247" /></a> </p>  <p>A new <a href="http://www.intrepidstudios.com/projects/jquery-rich-text-editor/releases/src/0.5.1/" target="_blank">minor update has been released</a> to the jQuery Rich Text Editor with some new icons and an ASP.NET demo.</p>  <h4>Changes</h4>  <ul>   <li>Added Silk icons for a nicer look</li>    <li>Added ASP.NET demo solution to test the script</li>    <li>Added extra function &quot;$.rte.html&quot;. </li>    <li>Updated code to match latest changes in <a href="http://code.google.com/p/rte-light/source/list" target="_blank">Google Code repo</a>. </li>    <li>Note that this release contains <strong>BREAKING CHANGES</strong> because the options have all been renamed (see <a href="http://www.intrepidstudios.com/projects/jquery-rich-text-editor/documentation.aspx" target="_blank">Documentation</a>)</li> </ul>  <p>I tested the script with the latest jQuery release and it still works.</p>  <p>Let me know if you run into any trouble. I think it may still have some trouble with nested controls, which I will test soon, since my admin panel wasn't saving the text written in the control.</p>  <p><a href="http://www.intrepidstudios.com/projects/jquery-rich-text-editor/default.aspx" target="_blank">View the project homepage for the jQuery Rich Text Editor</a></p>]]></description>
      <pubDate>Fri, 26 Mar 2010 20:10:36 GMT</pubDate>
      <guid isPermaLink="false">post-89</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/DgLvAsynLW4/update-jquery-rich-text-editor-new-version.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/3/26/update-jquery-rich-text-editor-new-version.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Windows Phone 7 Quick Tip: Disable Hamachi [Tips & Tricks]]]></title>
      <description><![CDATA[<p>I ran into a problem while playing with the Windows Phone 7 CTP the other day. I was trying to use the Google data services via the <em>WebClient</em> object. It was throwing exceptions no matter what I did. I noticed it threw exceptions on ANY Google-hosted URI.</p>  <p>Long story short: <strong>disable Hamachi or any other potential virtual network adapters</strong>. VMWare seems to not interfere but Hamachi enjoys taking over connections sometimes and will hijack your phone emulator.</p>  <p>You can view the details of my adventure <a href="http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/a88a32a9-576d-40e1-a3dc-7463860800a3" target="_blank">right over yonder</a>.</p>]]></description>
      <pubDate>Fri, 26 Mar 2010 01:59:56 GMT</pubDate>
      <guid isPermaLink="false">post-88</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/X3aSv6j8YbM/windows-phone-7-quick-tip-disable-hamachi-tip.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/3/26/windows-phone-7-quick-tip-disable-hamachi-tip.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Release: ASP.NET Picasa Photo Gallery + API [Project]]]></title>
      <description><![CDATA[<p><a href="http://www.intrepidstudios.com/blog/images/ReleaseA.NETPicasaPhotoGalleryAPIProject_11B44/image.png"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/ReleaseA.NETPicasaPhotoGalleryAPIProject_11B44/image_thumb.png" width="720" height="406" /></a> </p>  <p>If you remember my short code snippet on <a href="http://blog.lib.umn.edu/ayubx003/dividebyzero/2008/08/08/how_to_integrate_google_picasa.html" target="_blank">creating a PHP Picasa photo gallery</a>, .NET developers were left in the dark. Since I needed to convert my PHP implementation to .NET, I decided to make it a pet project to test out the waters of the <a href="http://codecanyon.net" target="_blank">CodeCanyon</a> marketplace.</p>  <p>If you want a simple API and gallery all packaged up for you for a low price then <a href="http://codecanyon.net/item/google-picasa-gallery-api/88942" target="_blank">head on over to the project page</a>.</p>]]></description>
      <pubDate>Thu, 04 Mar 2010 02:08:53 GMT</pubDate>
      <guid isPermaLink="false">post-87</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/Jz79_uEZGjM/dot-net-picasa-photo-gallery-api.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/3/4/dot-net-picasa-photo-gallery-api.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[First Touch Screen Application [Touchy Feely]]]></title>
      <description><![CDATA[<p>At my student job over at the <a href="http://www.sua.umn.edu" target="_blank">Student Unions &amp; Activities</a> at the U of MN, we just completed a pretty big project. It was tons of fun and we're still improving it. It is a WebKit-based touch screen directory application. There is no Flash, there is no Silverlight. It was written using jQuery, PHP, MySQL, and cutting edge CSS3. The floor maps were done primarily in Google SketchUp and I modified some in Photoshop with extra information. The app runs on a Mac Mini and uses a webcam to detect movement and stop the screensaver so people can use it.</p>  <div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8c217a95-b973-4a2d-8bb3-42cc74368095" class="wlWriterEditableSmartContent"><div><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/_C8kP7PEAmI&amp;hl=en"></param><embed src="http://www.youtube.com/v/_C8kP7PEAmI&amp;hl=en" type="application/x-shockwave-flash" width="425" height="355"></embed></object></div></div>  <p>   <br />My primary responsibilities included overall graphic design and UI (Photoshop, HTML, CSS3), some JS work, and some PHP work.</p>  <p>Big thanks goes out to the team: Ellie for her astounding SketchUp work, <a href="http://www.zachstronaut.com/posts/2010/01/17/touch-screen-directory-web-app.html" target="_blank">Zach</a> for his managerial prowess, Ken for his awesome paging routines, <a href="http://www.lowter.com/" target="_blank">Ethan</a> for his JS ninja skills, Trent for his hardware expertise, and Sungho for getting the webcam working!</p>]]></description>
      <pubDate>Mon, 18 Jan 2010 16:56:20 GMT</pubDate>
      <guid isPermaLink="false">post-86</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/Na8bvtv06Gc/first-touch-screen-application-touchy-feely.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/1/18/first-touch-screen-application-touchy-feely.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Release: Measure Custom Clothing [Web Site]]]></title>
      <description><![CDATA[<p><a href="http://measurecc.com" target="_blank"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/ReleaseMeasureCustomClothingWebSite_C2B4/image.png" width="425" height="277" /></a> </p>  <p>We're proud to announce a new website we've developed for our client <a href="http://measurecc.com" target="_blank">Measure Custom Clothing</a>. They sell custom suits and shirts at low prices in the Twin Cities area.</p>  <p>The site was developed in .NET, programmed in C#. In addition to the public-facing pages, I also developed a custom sales order and customer management system. Managers and sales associates can create new sales orders, print them, email them, and keep track of their status with an administration panel.</p>  <p>If you're looking for a good suit (and I can vouch for their quality), please check them out!</p>]]></description>
      <pubDate>Fri, 08 Jan 2010 19:50:23 GMT</pubDate>
      <guid isPermaLink="false">post-85</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/HB30THm8DU8/release-measure-custom-clothing-web-site.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/1/8/release-measure-custom-clothing-web-site.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Live JavaScript Clock [jQuery]]]></title>
      <description><![CDATA[<p>For a project at work we wanted to show the time to the user (kiosk application) in real-time. I needed it to be super simple, just updating text every minute in a paragraph tag. I was about to write my own jQuery plugin, but someone has done it for me.</p>  <p>Here's what we ended up using, thanks Doug!</p>  <p><a title="http://github.com/dsparling/jclock" href="http://github.com/dsparling/jclock">http://github.com/dsparling/jclock</a></p>  <p>That has the latest version.</p>  <p>I would have preferred it using datejs's style format specifiers but it does the job aptly.</p>  <p>PS. I found it by Googling &quot;jClock,&quot; the name I was <em>going</em> to use for my plugin.</p>]]></description>
      <pubDate>Mon, 04 Jan 2010 22:19:50 GMT</pubDate>
      <guid isPermaLink="false">post-84</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/02nWno8_mt4/live-javascript-clock-jquery.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/1/4/live-javascript-clock-jquery.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Bypass SQL Server 2008 Install/Uninstall Rules]]></title>
      <description><![CDATA[<p>On Windows 7 RC1, I've had trouble with the rule check with SQL Server 2008. It would constantly say I needed to restart when I didn't need to.</p>  <p>Here's a quick fix to bypass that rule:</p>  <ol>   <li>Navigate via command line to the directory of the setup. When uninstalling, this is located in: <strong>C:Program FilesMicrosoft SQL Server@Setup BootstrapRelease</strong></li>    <li>Run this command:     <br />      <br />setup.exe /Action=<strong>[un]install</strong> /SkipRules=RebootRequiredCheck      <br /></li>    <li>Use &quot;uninstall&quot; and &quot;install&quot; where applicable.</li> </ol>  <p>Refer to <a href="http://weblogs.asp.net/toddanglin/archive/2009/07/08/another-solution-for-defeating-the-sql-server-2008-installer-with-visual-studio-2008.aspx" target="_blank">this blog post</a> for some other tips.</p>]]></description>
      <pubDate>Mon, 04 Jan 2010 05:57:08 GMT</pubDate>
      <guid isPermaLink="false">post-83</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/inZsvj4q6eE/bypass-sql-server-2008-installuninstall-rules.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2010/1/4/bypass-sql-server-2008-installuninstall-rules.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Playing a web video with an image overlay on top [CSS]]]></title>
      <description><![CDATA[<p>I just finished creating the new <a href="http://www.sua.umn.edu/events/filmfest" target="_blank">Film Fest 2010 site at SUA</a>. It features a FLV video being played with a theater overlay on top.</p>  <p>I made the video by taking a still image of the &quot;screen&quot;, plugging it into iMovie HD and applying the Aged Film effect. Then I kept it at 5 seconds, exported it as a MOV at my needed horizontal resolution (624 pixels). I used <a href="http://www.versiontracker.com/dyn/moreinfo/macosx/15473">ffmpegX</a> to convert the MOV to an FLV file and used its cropping feature to make the video the size I needed (624x356).</p>  <p>The specs on the FLV are as follows:</p>  <ul>   <li>100 bit data rate</li>    <li>12fps</li>    <li>Video size: 624x356 (Unconstrained)</li>    <li>Crop: 52 52 0 0 (top bottom left right)</li>    <li>No audio</li> </ul>  <p>That produced a 100KB FLV, which I still think is pretty high, but it's at least manageable. Here's how it all looks on the page:</p>  <p><a href="http://www.sua.umn.edu/events/filmfest"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/PlayingawebvideowithanimageoverlayontopC_ECBE/image.png" width="720" height="549" /></a> </p>  <p>For the FLV player, my requirements for were as follows:</p>  <ul>   <li>Auto start</li>    <li>Endless loop</li>    <li>No controls</li>    <li><strong>No watermark</strong></li>    <li>Ability to view without JS or Flash</li> </ul>  <p>As you can see, I've accomplished all of this (works in IE6+, FF, Opera, and Safari) except that the &quot;no controls&quot; part is a hack. The FLV player I am using, <a href="http://www.video-flash.de/flv-flash-fullscreen-video-player/" target="_blank">FLV Flash Fullscreen Video Player</a>, does not yet allow removing the control bar. However, because I am using an overlay it hides the control bar so the only time a user could see it is if they zoom in. It's not a big deal if that happens, as long as initially it shows correctly. The author is working towards allowing the control bar to be disabled.</p>  <p>Both <a href="http://flowplayer.org/" target="_blank">FlowPlayer</a> and <a href="http://www.longtailvideo.com/players/jw-flv-player/" target="_blank">JW Player</a>, while awesome, have watermarks. I just needed something <strong>simple</strong> that could serve my purpose. I could possibly get around that by adding padding to the video itself on the bottom, but I don't think that's cool to do. Additionally, JW Player showed the preloading graphic when it restarted the video, not cool.</p>  <p>You can view source to see what I did to make it all work, probably the most important part being that <strong>wmode</strong> for the object tag is set to <strong>transparent</strong> in order to see behind the video when it's loading (displaying the static background image). It also allows for z-index positioning so that the overlay appears above the video.</p>  <p>If you know of a player that <em>does</em> have all the features I need, please let me know in the comments!</p>]]></description>
      <pubDate>Fri, 04 Dec 2009 22:50:21 GMT</pubDate>
      <guid isPermaLink="false">post-82</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/4f2qNhGmOOI/playing-a-web-video-with-an-image-overlay-on.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/12/4/playing-a-web-video-with-an-image-overlay-on.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Space Reservations Revamp [Before & After]]]></title>
      <description><![CDATA[<p>One of the big projects I worked on at <a href="http://www.sua.umn.edu" target="_blank">Student Unions &amp; Activities</a> last spring thru this fall was to help revamp the entire <a href="http://www.sua.umn.edu/reservations" target="_blank">events &amp; conferences</a> part of the site. We analyzed the problems, we conducted usability tests, and we toiled a long time trying to achieve a usable web site.</p>  <p>My primary job was to design the new interface and program the back-end. I had never worked with MVC in PHP before and I can safely say that my code looked as good as my old ASP days. We are continually improving the code, though, so hopefully by this time next year the back-end won't be as convoluted. It was a good lesson in MVC design.</p>  <h3>Before &amp; After</h3>  <p>On the left, before, on the right, after:</p>  <p><a href="http://www.intrepidstudios.com/blog/images/SpaceReservationsRevampBeforeAfter_B07B/greathallbefore.png"><img style="display: inline" title="great-hall-before" alt="great-hall-before" src="http://www.intrepidstudios.com/blog/images/SpaceReservationsRevampBeforeAfter_B07B/greathallbefore_thumb.png" width="240" height="219" /></a> <a href="http://www.intrepidstudios.com/blog/images/SpaceReservationsRevampBeforeAfter_B07B/greathallafter.png"><img style="display: inline" title="great-hall-after" alt="great-hall-after" src="http://www.intrepidstudios.com/blog/images/SpaceReservationsRevampBeforeAfter_B07B/greathallafter_thumb.png" width="135" height="240" /></a> </p>  <h3>Big Features</h3>  <p>There were many features we added to the new site, some ideas from users others from my own observations and still others from the rest of the team.</p>  <p>Some of the big features and changes we added were:</p>  <ul>   <li><strong>Photo Slideshow:</strong> The space pages include a slideshow of all the photos of the space which includes layout photos. This was done using the jQuery Cycle lite plugin. Viewing the bigger photos was done in Lightbox-clone Colorbox.</li>    <li><strong>Detailed Layout Info:</strong> In the old site, visitors could see a tiny summary of the different layouts available. In the new version, we show thumbnails of the photo and floor map, as well as suggested events that the layout is optimized for. You can click a layout and a popout will come up with even more info.</li>    <li><strong>Features and Services:</strong> The old site included a bullet list of features of the space but didn't provide any more information than that. The new site does this and also has the ability to have tooltip information as well as links to separate pages.</li>    <li><strong>Personalized Rates:</strong> Finding out how much a room cost on the old site was a downright chore. We simplified this part by only showing the rate for who you are. If you're a student group, it will show student rates on the space page.</li>    <li><strong>Reserve Layouts</strong>: On the old site, if you clicked &quot;Reserve&quot; for a space it would only go to the inquiry page and you'd need to fill out everything yourself. On the new site, you can not only reserve a space, you can also directly reserve a specific layout.</li>    <li><strong>Revamped Inquiry Form:</strong> The old inquiry form was atrocious, a UI and usability disaster. We developed a custom form helper and standardized form styles to greatly improve the user interface. We also used some AJAX and jQuery to dynamically choose rooms to reserve.</li>    <li><strong>Progressive Enhancement:</strong> If you don't have JavaScript, you can still use the site fully. If you don't have styles, no problem. The whole site is usable in a bare-minimum environment.</li> </ul>  <p>These and more were where most of our work went, along with an entirely new back-end.</p>  <p>We were really happy with how it turned out and we're currently working on helping users actually find the right space for them. That will be the next big feature.</p>]]></description>
      <pubDate>Tue, 10 Nov 2009 18:33:37 GMT</pubDate>
      <guid isPermaLink="false">post-81</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/Q8hDeZXKDlY/space-reservations-revamp-before-after.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/11/10/space-reservations-revamp-before-after.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[GoDaddy ASP.NET Issues and Solutions]]></title>
      <description><![CDATA[<p>I am currently working with a client and we chose GoDaddy for the host of the site. What I did not know is that GoDaddy is pretty restrictive in terms of trust (Medium trust environment).</p>  <p>I ran into some hiccups and I want to share the solutions for others that have had similar problems:</p>  <h3>That assembly does not allow partially trusted callers.</h3>  <p>This took me awhile to figure out. Here's what I did to fix it:</p>  <p>I made sure all three assemblies in the Bin directory were strongly named and had the <code>[assembly: AllowPartiallyTrustedCallersAttribute()]</code> in the <strong>Assembly.cs</strong> files of each project.     <br />    <br /><strong>Note:</strong> All three DLLs were my own so I could edit them. If you are using 3rd party components, make sure they have the above attribute and are strongly named. Most big components should.     <br />    <br /><strong>Tip:</strong> When I added that attribute to <strong>Assembly.cs</strong> and built the projects, then copied the DLLs to the host, I still got the Security Exception. To fix it, I deleted both the <strong>bin</strong> and <strong>obj</strong> folders from each project, built them, <em>then</em> copied over the new DLLs to my web site application project and subsequently to the FTP site. I don't know why, but that worked.</p>  <h3>Failure sending mail</h3>  <p>This was a quick fix. I was using <strong>System.Net.Mail</strong> to send email. Using <strong>smtpout.secureserver.net</strong> and port 25 worked on my local server but not on GoDaddy's server. Instead you need to use <strong>relay-hosting.secureserver.net</strong>.</p>  <p>Example web.config section that I use (goes after <code>&lt;/system.web&gt;</code>):</p>  <pre class="brush: xml; gutter: false; toolbar: false;">&lt;system.net&gt;    
    &lt;mailSettings&gt;
        &lt;smtp from=&quot;mailbox@mydomain.com&quot;&gt;
            &lt;network host=&quot;relay-hosting.secureserver.net&quot; port=&quot;25&quot;
                userName=&quot;mailbox@mydomain.com&quot; password=&quot;myPassword&quot;/&gt;
        &lt;/smtp&gt;
    &lt;/mailSettings&gt;
&lt;/system.net&gt;</pre>

<p>It's a good idea to make sure <strong>mailbox@mydomain.com</strong> is a real account setup on GoDaddy.</p>]]></description>
      <pubDate>Tue, 20 Oct 2009 01:37:34 GMT</pubDate>
      <guid isPermaLink="false">post-80</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/EGb56fjv2bE/godaddy-aspnet-issues-and-solutions.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/10/20/godaddy-aspnet-issues-and-solutions.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Keep it Separated: Dashes or Underscores? [SEO]]]></title>
      <description><![CDATA[<p>At work we are reworking our coding guidelines to be more consistent and what not. We've standardized a lot of CSS classes, naming guidelines, etc. but we spent a bit of time discussing whether an underscore or a dash is better for separating words in our code.</p>  <p>After talking about it amongst ourselves and doing some quick Googling, this is what we decided:</p>  <p><strong>For file names and paths</strong>, use dashes because most search engines (Google included) treat dashes as separate words. So &quot;monkey_wrench&quot; gets indexed as &quot;monkey_wrench&quot; but &quot;monkey-wrench&quot; gets indexed as &quot;monkey wrench.&quot; Similarly, in code editors usually they will highlight the entire phrase if it includes underscores on a double-click while they will only highlight the selected word if it is dashed, which I prefer.</p>  <p><strong>For variables, or anything that does not really need to be indexed</strong>, you can use whatever you see fit (note: most languages don't allow dashes in variables/functions).</p>  <p>If you have any thoughts or disagree, please share it in the comments.</p>]]></description>
      <pubDate>Fri, 16 Oct 2009 15:35:46 GMT</pubDate>
      <guid isPermaLink="false">post-79</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/t5pfvpeCsrI/keep-it-separated-dashes-or-underscores-seo.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/10/16/keep-it-separated-dashes-or-underscores-seo.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Release: BeReasonableNow.com [Web Site]]]></title>
      <description><![CDATA[<p><a href="http://bereasonablenow.com" target="_blank"><img style="display: inline" title="image" alt="image" src="http://www.intrepidstudios.com/blog/images/ReleaseBeReasonableNow.comWebSite_140FB/image_3.png" width="425" height="317" /></a> </p>  <p>We just finished a new web site today, <a href="http://bereasonablenow.com" target="_blank">BeReasonableNow.com</a>, for a lifestyle guide. The web site was created for a friend of mine. I've seen the guide, there's nothing magical about it, it's totally practical and pretty funny. Check it out!</p>  <p>I decided since this was a one page deal that I'd try out a few design ideas I've seen lately including subtle radial gradients and larger text. I like how it turned out.</p>  <p>All the effects except the gradient and title image are CSS: border-radius, box-shadow, background gradient, and text-shadow primarily. I was also thinking of using the new @font-face but Arial didn't look that bad so I just left it.</p>  <p>To see what the site <em>should</em> look like, view it in Safari/Webkit. The only major difference is the background gradient on the submit button at the bottom. That's progressive enhancement for you!</p>]]></description>
      <pubDate>Thu, 15 Oct 2009 03:49:53 GMT</pubDate>
      <guid isPermaLink="false">post-78</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/VpOzyPH3Ch4/release-bereasonablenowcom-web-site.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/10/15/release-bereasonablenowcom-web-site.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Akismet to the Rescue [Spam]]]></title>
      <description><![CDATA[<p>I get a lot of spam comments on this blog and yesterday I finally got annoyed enough to setup <a href="http://www.codeplex.com/AkismetApi" target="_blank">Akismet</a> with my blog. It was really simple, only took 20 minutes or so to integrate it.</p>  <p>Now, hopefully, real comments will be un-moderated while spam comments will not be published. </p>  <p>With all the spam comment notifications I get, I miss real comments so it takes awhile to get around to approve them. I found about 4 real comments today while I deleted the spam ones, so I apologize for getting around to that so late. Hopefully it will be a non-issue now!</p>]]></description>
      <pubDate>Wed, 02 Sep 2009 15:42:03 GMT</pubDate>
      <guid isPermaLink="false">post-77</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/MOn49nA8qro/akismet-to-the-rescue-spam.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/9/2/akismet-to-the-rescue-spam.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Making Long Forms Easier [.NET]]]></title>
      <description><![CDATA[<p>If you have an unwieldy form, like I do, it can be a pain when you click an action button near the bottom of the page and have it scroll all the way up on PostBack.</p>  <p>There's an easy way around this and it works wonders for usability. In your LinkButton or Button controls, just modify the PostBackUrl property to point to an anchor in your form.</p>  <p>For example, let's assume this is a really long form with multiple ListViews, nested stuff, etc. My markup might look something like this:</p>  <pre class="brush: xml;">&lt;!-- Lots of other stuff --&gt;

&lt;asp:ListView id=&quot;foo&quot; runat=&quot;server&quot;&gt;
    &lt;LayoutTemplate&gt;
        &lt;div&gt;
            &lt;asp:placeholder id=&quot;itemPlaceholder&quot; runat=&quot;server&quot; /&gt;
        &lt;/div&gt;
    &lt;/LayoutTemplate&gt;
    &lt;ItemTemplate&gt;
        &lt;p&gt;
            &lt;%# Eval(&quot;Something&quot;) %&gt;
            &lt;asp:button id=&quot;btnEditFoo&quot; CommandName=&quot;Edit&quot; runat=&quot;server&quot; /&gt;
        &lt;p&gt;
    &lt;/ItemTemplate&gt;
    &lt;EditItemTemplate&gt;
        &lt;div&gt;
            &lt;!-- textbox --&gt;
            &lt;asp:button id=&quot;btnFooEdit&quot; runat=&quot;server&quot; /&gt;
        &lt;/div&gt;
    &lt;/EditItemTemplate&gt;
    &lt;InsertItemTemplate&gt;
        &lt;div&gt;
            &lt;!-- textbox --&gt;
            &lt;asp:button id=&quot;btnFooInsert&quot; runat=&quot;server&quot; /&gt;
        &lt;/div&gt;
    &lt;/InsertItemTemplate&gt;
&lt;/asp:ListView&gt;</pre>

<p>
  <br />Well, when the user clicks Edit or Insert, on PostBack they're going to be returned to the top of the page. How can we fix this to make the UX (user experience) better? Here's how:</p>

<pre class="brush: xml;">&lt;!-- Lots of other stuff --&gt;

&lt;asp:ListView id=&quot;foo&quot; runat=&quot;server&quot;&gt;
    &lt;LayoutTemplate&gt;
        &lt;div id=&quot;foo-container&quot;&gt;
            &lt;asp:placeholder id=&quot;itemPlaceholder&quot; runat=&quot;server&quot; /&gt;
        &lt;/div&gt;
    &lt;/LayoutTemplate&gt;
    &lt;ItemTemplate&gt;
        &lt;p&gt;
            &lt;%# Eval(&quot;Something&quot;) %&gt;
            &lt;asp:button id=&quot;btnEditFoo&quot; PostBackUrl=&quot;#foo-edit&quot; CommandName=&quot;Edit&quot; runat=&quot;server&quot; /&gt;
        &lt;p&gt;
    &lt;/ItemTemplate&gt;
    &lt;EditItemTemplate&gt;
        &lt;div id=&quot;foo-edit&quot;&gt;
            &lt;!-- textbox --&gt;
            &lt;asp:button id=&quot;btnFooEdit&quot; PostBackUrl=&quot;#foo-container&quot; runat=&quot;server&quot; /&gt;
        &lt;/div&gt;
    &lt;/EditItemTemplate&gt;
    &lt;InsertItemTemplate&gt;
        &lt;div id=&quot;foo-insert&quot;&gt;
            &lt;!-- textbox --&gt;
            &lt;asp:button id=&quot;btnFooInsert&quot; PostBackUrl=&quot;#foo-container&quot; runat=&quot;server&quot; /&gt;
        &lt;/div&gt;
    &lt;/InsertItemTemplate&gt;
&lt;/asp:ListView&gt;</pre>

<p>So what have I done? I've added IDs to the containers in the ListView and added <strong>PostBackUrl</strong> to my buttons and pointed them to the IDs (using regular HTML anchor syntax). Now when someone clicks Edit to edit something, it will PostBack to <strong>MyPage.aspx?q=whatever&amp;moreq=foo#foo-edit</strong>. How nice! It even preserves your querystring.</p>

<p>Hope that helps you!</p>]]></description>
      <pubDate>Wed, 22 Jul 2009 18:05:13 GMT</pubDate>
      <guid isPermaLink="false">post-76</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/suCSwpsNTfI/making-long-forms-easier-net.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/7/22/making-long-forms-easier-net.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Power Tip: Convert a string to an array of Integers]]></title>
      <description><![CDATA[<p>Here are two extension methods that can convert a string (delimited by anything of your choosing) into an array of integers. Successfully handles any non-Integer data smoothly as well.</p>  <pre class="brush: vb;">Public Module TypeExtensions

    &lt;Extension()&gt; _
    Public Function ToArrayOfInts(ByVal str() As String) As IEnumerable(Of Integer)
        Dim intRef As Integer
        Return str _
        .Where(Function(s) Not String.IsNullOrEmpty(s) AndAlso Integer.TryParse(s, intRef)) _
        .Select(Function(s) Integer.Parse(s))
    End Function
    
    &lt;Extension()&gt; _
    Public Function ToArrayOfInts(ByVal str As String, ByVal delimeter As String) As IEnumerable(Of Integer)
        Return str.Split(delimeter).ToArrayOfInts()
    End Function

End Module</pre>

<p>You can use it like this:</p>

<pre class="brush: vb; gutter: false; toolbar: false;">foo.Text = &quot;093,s,44g,sj38,87,6&quot;.ToArrayOfInts(&quot;,&quot;).Count().ToString()</pre>]]></description>
      <pubDate>Tue, 21 Jul 2009 18:34:33 GMT</pubDate>
      <guid isPermaLink="false">post-75</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/WYZiz0Yy52Q/power-tip-convert-a-string-to-an-array-of-int.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/7/21/power-tip-convert-a-string-to-an-array-of-int.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Using GUIDs in LinqDataSource Controls]]></title>
      <description><![CDATA[<p>This was a small tip I learned searching across the web. In order to use a Guid DataType (from the DB) in a Where attribute on a LinqDataSource you have to do it like this:</p>  <pre class="brush: xml;">&lt;asp:LinqDataSource id=&quot;MyDS&quot;
    Where=&quot;MyGuidColumn.ToString() == @StringGuid&quot;
    ...&gt;
    &lt;WhereParameters&gt;
        &lt;asp:QueryStringParameter QueryStringField=&quot;Id&quot;
            Type=&quot;String&quot; Name=&quot;StringGuid&quot; /&gt;
    &lt;/WhereParameters&gt;
&lt;/asp:LinqDataSource&gt;</pre>

<p>If you use a Session or some other parameter that returns the Guid itself, you have to have Type=&quot;Object&quot; in your parameter, like in my project:</p>

<pre class="brush: xml; gutter: false; toolbar: false;">&lt;asp:SessionParameter SessionField=&quot;ColumnId&quot; Type=&quot;Object&quot; Name=&quot;ColumnId&quot; /&gt;</pre>]]></description>
      <pubDate>Thu, 16 Jul 2009 03:47:07 GMT</pubDate>
      <guid isPermaLink="false">post-74</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/tjN6an9wTH4/using-guids-in-linqdatasource-controls.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/7/16/using-guids-in-linqdatasource-controls.aspx</feedburner:origLink></item>
    <item>
      <title><![CDATA[Maintaining Checked State On Radio/Checkbox Controls On Post Back]]></title>
      <description><![CDATA[<p>I had a unique problem today. Here's the scenario:</p>  <p>You have a ListView that <a href="http://msdn.microsoft.com/en-us/magazine/cc500643.aspx" target="_blank">dynamically loads different ItemTemplates</a> depending on a specific criteria (in my case, a category). You load this user control template into the ItemTemplate and create some radio and checkbox buttons. If you set GroupName on the controls to a group name, .NET <strong>will not</strong> associate all the different buttons across the templates because they have different naming containers.</p>  <p>I have a dynamically generated form where the user selects from a multitude of options (i.e. each ListViewItemTemplate contains an input control), so this default behavior doesn't work so well. Some might say to scrap the custom ListView and create a composite control that inserts different controls depending on a parameter but then you get into a lot of databinding issues and viewstate tracking issues. I wanted to avoid all of that. <strong>Note:</strong> If someone has a good way of doing this, please let me know!</p>  <p>Here's what I came up with. It derives from a RadioButton (but a CheckBox would work too) and adds two custom properties, Name and Value, allowing you to specify the value of the input and name of the input. It overrides the Render event and outputs custom HTML depending on if the button was checked on PostBack. It works great!</p>  <p></p>  <pre class="brush: vb; collapse: true;">Public Class CustomRadioButton
    Inherits RadioButton

    Public Property Name() As String
        Get
            Dim o As Object = ViewState(&quot;Name&quot;)

            Return If(o Is Nothing, String.Empty, CStr(o))
        End Get
        Set(ByVal value As String)
            ViewState(&quot;Name&quot;) = value
        End Set
    End Property

    Public Property Value() As String
        Get
            Dim o As Object = ViewState(&quot;Value&quot;)

            Return If(o Is Nothing, String.Empty, CStr(o))
        End Get
        Set(ByVal value As String)
            ViewState(&quot;Value&quot;) = value
        End Set
    End Property

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        If Page.IsPostBack Then
            writer.Write(String.Format(&quot;&lt;input id='{0}' type='radio' name='{1}' value='{2}' {3} /&gt;&quot;, ClientID, Name, Value, If(Page.Request.Form(Name) = Value, &quot;checked='checked'&quot;, String.Empty)))
        Else
            writer.Write(String.Format(&quot;&lt;input id='{0}' type='radio' name='{1}' value='{2}' /&gt;&quot;, ClientID, Name, Value))
        End If
    End Sub
End Class</pre>

<p>And in the user control:</p>

<pre class="brush: xml;">&lt;MyControls:CustomRadioButton ID=&quot;radButton&quot; 
    Name='&lt;%#String.Format(&quot;rad_group_{0}&quot;, Eval(&quot;MyGroupId&quot;).ToString()) %&gt;' 
    Value='&lt;%# Eval(&quot;MyValue&quot;) %&gt;' 
    runat=&quot;server&quot; /&gt;

&lt;%-- You can also make it static text. --%&gt;</pre>]]></description>
      <pubDate>Thu, 16 Jul 2009 03:32:22 GMT</pubDate>
      <guid isPermaLink="false">post-73</guid>
      <link>http://feedproxy.google.com/~r/IntrepidStudios/~3/nrgckQrxxgU/maintaining-checked-state-on-radiocheckbox-co.aspx</link>
    <feedburner:origLink>http://www.intrepidstudios.com/blog/2009/7/16/maintaining-checked-state-on-radiocheckbox-co.aspx</feedburner:origLink></item>
  </channel>
</rss>

